From 318429030374a908085f09770cf8627c280669ee Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 25 Jul 2025 14:22:53 +0200 Subject: [PATCH 001/236] Updated entities --- nullius/prototypes/entity/alignment.lua | 5 +- nullius/prototypes/entity/assembler.lua | 664 ++--- nullius/prototypes/entity/beacon.lua | 222 +- nullius/prototypes/entity/chemistry.lua | 1956 ++++++-------- nullius/prototypes/entity/chest.lua | 228 +- nullius/prototypes/entity/drone.lua | 67 +- nullius/prototypes/entity/energy.lua | 2680 ++++++++----------- nullius/prototypes/entity/environment.lua | 162 +- nullius/prototypes/entity/equipment.lua | 576 ++-- nullius/prototypes/entity/furnace.lua | 1179 ++++---- nullius/prototypes/entity/landing.lua | 123 +- nullius/prototypes/entity/logistics.lua | 374 +-- nullius/prototypes/entity/miner.lua | 690 ++--- nullius/prototypes/entity/pipe_graphics.lua | 288 +- nullius/prototypes/entity/plumbing.lua | 1775 ++++++------ nullius/prototypes/entity/power_pole.lua | 26 +- nullius/prototypes/entity/robot.lua | 317 +-- nullius/prototypes/entity/train.lua | 519 ++-- nullius/prototypes/entity/turbine.lua | 125 +- nullius/prototypes/entity/vehicle.lua | 75 +- nullius/prototypes/entity/vent.lua | 536 ++-- nullius/prototypes/entity/wind.lua | 73 +- 22 files changed, 5241 insertions(+), 7419 deletions(-) diff --git a/nullius/prototypes/entity/alignment.lua b/nullius/prototypes/entity/alignment.lua index 6352943..93df35a 100644 --- a/nullius/prototypes/entity/alignment.lua +++ b/nullius/prototypes/entity/alignment.lua @@ -23,7 +23,6 @@ radar.integration_patch = scale_image(radar.integration_patch, 2) radar.pictures = scale_image(radar.pictures, 2) radar.water_reflection = scale_image(radar.water_reflection, 2) radar.pictures.layers[1].tint = {0.6, 0.7, 1} -radar.pictures.layers[1].hr_version.tint = {0.6, 0.7, 1} radar.minable.mining_time = 1 radar.minable.result = "nullius-align-concordance-transmitter" radar.max_health = 600 @@ -149,11 +148,11 @@ data:extend({ { type = "tile", name = "nullius-stars", - collision_mask = {"ground-tile"}, + collision_mask = {layers = {ground_tile = true}}, layer = 234, map_color={r=8, g=8, b=32}, walking_speed_modifier = 0.2, - pollution_absorption_per_second = 0, + absorption_per_second = 0, variants = { main = { { diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index e1ba461..8d2bccf 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -23,29 +23,31 @@ data:extend({ fast_replaceable_group = "small-assembler", next_upgrade = "nullius-small-assembler-2", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1.png", - priority="high", - width = 108, - height = 114, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 2), - scale = 0.666 - }, - { - filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1-shadow.png", - priority="high", - width = 95, - height = 83, - frame_count = 1, - line_length = 1, - repeat_count = 32, - draw_as_shadow = true, - shift = util.by_pixel(8.5, 5.5), - scale = 0.666 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1.png", + priority="high", + width = 108, + height = 114, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, 2), + scale = 0.666 + }, + { + filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1-shadow.png", + priority="high", + width = 95, + height = 83, + frame_count = 1, + line_length = 1, + repeat_count = 32, + draw_as_shadow = true, + shift = util.by_pixel(8.5, 5.5), + scale = 0.666 + } } } }, @@ -55,9 +57,9 @@ data:extend({ "packaging" }, crafting_speed = 0.5, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=2, drain="1kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 2}, drain="1kW"}, energy_usage = "59kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -75,7 +77,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-medium-assembler-1", - order = "nullius-mcb", + order = "nullius-mcb", icon_size = 64, icons = data.raw.item["nullius-medium-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -93,69 +95,48 @@ data:extend({ production_type = "input", pipe_picture = assembler2pipepictures(), pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {0, -2} }}, + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0, -1}, direction = defines.direction.north }}, secondary_draw_orders = { north = -1 } }, { production_type = "input", pipe_picture = assembler2pipepictures(), pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {0, 2} }}, + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0, 1}, direction = defines.direction.south }}, secondary_draw_orders = { north = -1 } }, - off_when_no_fluid_recipe = true }, + fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "medium-assembler", next_upgrade = "nullius-medium-assembler-2", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1.png", - priority="high", - width = 108, - height = 114, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 2), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "assembling-machine-1/hr-assembling-machine-1.png", - priority="high", - width = 214, - height = 226, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 2), - scale = 0.5, - animation_speed = 0.5 - } - }, - { - filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1-shadow.png", - priority="high", - width = 95, - height = 83, - frame_count = 1, - line_length = 1, - repeat_count = 32, - draw_as_shadow = true, - shift = util.by_pixel(8.5, 5.5), - hr_version = { - filename = BASEENTITY .. "assembling-machine-1/hr-assembling-machine-1-shadow.png", - priority="high", - width = 190, - height = 165, - frame_count = 1, - line_length = 1, - repeat_count = 32, - draw_as_shadow = true, - shift = util.by_pixel(8.5, 5), - scale = 0.5 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1.png", + priority="high", + width = 214, + height = 226, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, 2), + scale = 0.5, + animation_speed = 0.5 + }, + { + filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1-shadow.png", + priority="high", + width = 190, + height = 165, + frame_count = 1, + line_length = 1, + repeat_count = 32, + draw_as_shadow = true, + shift = util.by_pixel(8.5, 5), + scale = 0.5 } } } @@ -166,9 +147,9 @@ data:extend({ "small-fluid-assembly", "large-fluid-assembly" }, crafting_speed = 1, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=5, drain="6kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 5}, drain="6kW"}, energy_usage = "144kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -186,7 +167,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-large-assembler-1", - order = "nullius-mdb", + order = "nullius-mdb", icons = data.raw.item["nullius-large-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 1.5, result = "nullius-large-assembler-1"}, @@ -203,49 +184,49 @@ data:extend({ production_type = "input", pipe_picture = assembler2pipepictures(), pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {0.5, -2.5} }}, + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, -1.5}, direction = defines.direction.north }}, secondary_draw_orders = { north = -1 } }, { production_type = "input", pipe_picture = assembler2pipepictures(), pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-0.5, 2.5} }}, + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, 1.5}, direction = defines.direction.south }}, secondary_draw_orders = { north = -1 } }, - off_when_no_fluid_recipe = true }, + fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "large-assembler", next_upgrade = "nullius-large-assembler-2", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-2/hr-assembling-machine-2.png", - priority = "high", - width = 214, - height = 218, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 4), - scale = 0.666, - animation_speed = 0.2 - }, - { - filename = BASEENTITY .. "assembling-machine-2/hr-assembling-machine-2-shadow.png", - priority = "high", - width = 196, - height = 163, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(12, 4.75), - scale = 0.666, - animation_speed = 0.2 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2.png", + priority = "high", + width = 214, + height = 218, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, 4), + scale = 0.666, + animation_speed = 0.2 + }, + { + filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2-shadow.png", + priority = "high", + width = 196, + height = 163, + frame_count = 32, + line_length = 8, + draw_as_shadow = true, + shift = util.by_pixel(12, 4.75), + scale = 0.666, + animation_speed = 0.2 + } } } }, @@ -255,9 +236,9 @@ data:extend({ "large-fluid-assembly", "huge-fluid-assembly" }, crafting_speed = 4, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=20, drain="50kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 20}, drain="50kW"}, energy_usage = "650kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -277,7 +258,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-small-assembler-2", - order = "nullius-mbc", + order = "nullius-mbc", icon_size = 64, icons = data.raw.item["nullius-small-assembler-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -293,20 +274,22 @@ data:extend({ fast_replaceable_group = "small-assembler", next_upgrade = "nullius-small-assembler-3", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2.png", - priority = "high", - width = 108, - height = 110, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 4), - scale = 0.666, - animation_speed = 0.8 - }, - data.raw["assembling-machine"]["nullius-small-assembler-1"].animation.layers[2] + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2.png", + priority = "high", + width = 108, + height = 110, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, 4), + scale = 0.666, + animation_speed = 0.8 + }, + data.raw["assembling-machine"]["nullius-small-assembler-1"].graphics_set.animation.layers[2] + } } }, crafting_categories = { @@ -315,9 +298,9 @@ data:extend({ "packaging" }, crafting_speed = 1, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=4, drain="2kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 4}, drain="2kW"}, energy_usage = "123kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -328,7 +311,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-small-assembler-3", - order = "nullius-mbd", + order = "nullius-mbd", icon_size = 64, icons = data.raw.item["nullius-small-assembler-3"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -343,30 +326,32 @@ data:extend({ selection_box = {{-1.0, -1.0}, {1.0, 1.0}}, fast_replaceable_group = "small-assembler", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3.png", - priority = "high", - width = 108, - height = 119, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, -0.3333), - scale = 0.666, - animation_speed = 0.6 - }, - { - filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3-shadow.png", - priority = "high", - width = 130, - height = 82, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(18.667, 2.6667), - scale = 0.666, - animation_speed = 0.6 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3.png", + priority = "high", + width = 108, + height = 119, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, -0.3333), + scale = 0.666, + animation_speed = 0.6 + }, + { + filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3-shadow.png", + priority = "high", + width = 130, + height = 82, + frame_count = 32, + line_length = 8, + draw_as_shadow = true, + shift = util.by_pixel(18.667, 2.6667), + scale = 0.666, + animation_speed = 0.6 + } } } }, @@ -376,9 +361,9 @@ data:extend({ "packaging" }, crafting_speed = 2, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=8, drain="5kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 8}, drain="5kW"}, energy_usage = "270kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -389,7 +374,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-medium-assembler-2", - order = "nullius-mcc", + order = "nullius-mcc", icon_size = 64, icons = data.raw.item["nullius-medium-assembler-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -406,50 +391,31 @@ data:extend({ fast_replaceable_group = "medium-assembler", next_upgrade = "nullius-medium-assembler-3", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2.png", - priority = "high", - width = 108, - height = 110, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 4), - animation_speed = 0.4, - hr_version = { - filename = BASEENTITY .. "assembling-machine-2/hr-assembling-machine-2.png", - priority = "high", - width = 214, - height = 218, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, 4), - scale = 0.5, - animation_speed = 0.4 - } - }, - { - filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2-shadow.png", - priority = "high", - width = 98, - height = 82, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(12, 5), - animation_speed = 0.4, - hr_version = { - filename = BASEENTITY .. "assembling-machine-2/hr-assembling-machine-2-shadow.png", - priority = "high", - width = 196, - height = 163, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(12, 4.75), - scale = 0.5, - animation_speed = 0.4 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2.png", + priority = "high", + width = 214, + height = 218, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, 4), + scale = 0.5, + animation_speed = 0.4 + }, + { + filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2-shadow.png", + priority = "high", + width = 196, + height = 163, + frame_count = 32, + line_length = 8, + draw_as_shadow = true, + shift = util.by_pixel(12, 4.75), + scale = 0.5, + animation_speed = 0.4 } } } @@ -460,9 +426,9 @@ data:extend({ "small-fluid-assembly", "large-fluid-assembly" }, crafting_speed = 2, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=10, drain="15kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 10}, drain="15kW"}, energy_usage = "285kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -473,7 +439,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-medium-assembler-3", - order = "nullius-mcd", + order = "nullius-mcd", icon_size = 64, icons = data.raw.item["nullius-medium-assembler-3"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -489,50 +455,31 @@ data:extend({ fluid_boxes = data.raw["assembling-machine"]["nullius-medium-assembler-1"].fluid_boxes, fast_replaceable_group = "medium-assembler", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3.png", - priority = "high", - width = 108, - height = 119, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, -0.5), - animation_speed = 0.3, - hr_version = { - filename = BASEENTITY .. "assembling-machine-3/hr-assembling-machine-3.png", - priority = "high", - width = 214, - height = 237, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, -0.75), - scale = 0.5, - animation_speed = 0.3 - } - }, - { - filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3-shadow.png", - priority = "high", - width = 130, - height = 82, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(28, 4), - animation_speed = 0.3, - hr_version = { - filename = BASEENTITY .. "assembling-machine-3/hr-assembling-machine-3-shadow.png", - priority = "high", - width = 260, - height = 162, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(28, 4), - scale = 0.5, - animation_speed = 0.3 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3.png", + priority = "high", + width = 214, + height = 237, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, -0.75), + scale = 0.5, + animation_speed = 0.3 + }, + { + filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3-shadow.png", + priority = "high", + width = 260, + height = 162, + frame_count = 32, + line_length = 8, + draw_as_shadow = true, + shift = util.by_pixel(28, 4), + scale = 0.5, + animation_speed = 0.3 } } } @@ -543,9 +490,9 @@ data:extend({ "small-fluid-assembly", "large-fluid-assembly" }, crafting_speed = 4, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=20, drain="30kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 20}, drain="30kW"}, energy_usage = "670kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -556,7 +503,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-large-assembler-2", - order = "nullius-mdc", + order = "nullius-mdc", icons = data.raw.item["nullius-large-assembler-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 2, result = "nullius-large-assembler-2"}, @@ -571,30 +518,32 @@ data:extend({ fluid_boxes = data.raw["assembling-machine"]["nullius-large-assembler-1"].fluid_boxes, fast_replaceable_group = "large-assembler", alert_icon_shift = util.by_pixel(-3, -12), - animation = { - layers = { - { - filename = BASEENTITY .. "assembling-machine-3/hr-assembling-machine-3.png", - priority = "high", - width = 214, - height = 237, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(0, -1), - scale = 0.666, - animation_speed = 0.15 - }, - { - filename = BASEENTITY .. "assembling-machine-3/hr-assembling-machine-3-shadow.png", - priority = "high", - width = 260, - height = 162, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(37.333, 5.3333), - scale = 0.666, - animation_speed = 0.15 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3.png", + priority = "high", + width = 214, + height = 237, + frame_count = 32, + line_length = 8, + shift = util.by_pixel(0, -1), + scale = 0.666, + animation_speed = 0.15 + }, + { + filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3-shadow.png", + priority = "high", + width = 260, + height = 162, + frame_count = 32, + line_length = 8, + draw_as_shadow = true, + shift = util.by_pixel(37.333, 5.3333), + scale = 0.666, + animation_speed = 0.15 + } } } }, @@ -604,9 +553,9 @@ data:extend({ "large-fluid-assembly", "huge-fluid-assembly" }, crafting_speed = 8, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute=40, drain="100kW"}, + energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute={pollution = 40}, drain="100kW"}, energy_usage = "1500kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -615,10 +564,8 @@ data:extend({ } }) -local nanofab_pipes = util.table.deepcopy( - data.raw["assembling-machine"]["crystallizer"].fluid_boxes[1].pipe_picture) -nanofab_pipes.south = util.table.deepcopy( - data.raw["pipe-to-ground"]["pipe-to-ground"].pictures.down.hr_version) +local nanofab_pipes = util.table.deepcopy(data.raw["assembling-machine"]["crystallizer"].fluid_boxes[1].pipe_picture) +nanofab_pipes.south = util.table.deepcopy(data.raw["pipe-to-ground"]["pipe-to-ground"].pictures.south) nanofab_pipes.south.shift = {0, -1} data:extend({ @@ -626,8 +573,8 @@ data:extend({ type = "assembling-machine", name = "nullius-nanofabricator-1", icons = data.raw.item["nullius-nanofabricator-1"].icons, - order = data.raw.item["nullius-nanofabricator-1"].order .. "b", - localised_description = {"entity-description.nullius-nanofabricator"}, + order = data.raw.item["nullius-nanofabricator-1"].order .. "b", + localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 2, result = "nullius-nanofabricator-1"}, max_health = 300, @@ -636,7 +583,7 @@ data:extend({ resistances = { { type = "impact", decrease = 50, percent = 80 } }, collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, selection_box = {{-2, -2}, {2, 2}}, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, crafting_categories = {"nanotechnology"}, fast_replaceable_group = "nanofabricator", @@ -645,11 +592,13 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 2, + emissions_per_minute = {pollution = 2}, drain = "30kW" }, energy_usage = "470kW", - animation = scale_image(data.raw["assembling-machine"]["crystallizer"].animation, 0.775), + graphics_set = { + animation = scale_image(data.raw["assembling-machine"]["crystallizer"].graphics_set.animation, 0.775), + }, vehicle_impact_sound = data.raw["assembling-machine"]["crystallizer"].vehicle_impact_sound, working_sound = data.raw["assembling-machine"]["crystallizer"].working_sound, fluid_boxes = { @@ -657,43 +606,36 @@ data:extend({ production_type = "input", pipe_picture = nanofab_pipes, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - pipe_connections = {{ type="input", position = {-2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -0.5}, direction = defines.direction.west }} }, { production_type = "input", pipe_picture = nanofab_pipes, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - pipe_connections = {{ type="input", position = {-0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "input", pipe_picture = nanofab_pipes, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - pipe_connections = {{ type="input", position = {0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = nanofab_pipes, pipe_covers = pipecoverspictures(), - base_area = 3, - base_level = 4, - pipe_connections = {{ type="output", position = {2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} }, - off_when_no_fluid_recipe = true - } + }, + fluid_boxes_off_when_no_fluid_recipe = true, } }) -data.raw["assembling-machine"]["nullius-nanofabricator-1"].animation.layers[1].tint = {0.6, 0.75, 0.75} -if (data.raw["assembling-machine"]["nullius-nanofabricator-1"].animation.layers[1].hr_version ~= nil) then -data.raw["assembling-machine"]["nullius-nanofabricator-1"].animation.layers[1].hr_version.tint = {0.6, 0.75, 0.75} -end +data.raw["assembling-machine"]["nullius-nanofabricator-1"].graphics_set.animation.layers[1].tint = {0.6, 0.75, 0.75} local mnf1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-nanofabricator-1"]) @@ -704,10 +646,10 @@ mnf1.placeable_by = {item = "nullius-nanofabricator-1", count = 1} mnf1.next_upgrade = "nullius-mirror-nanofabricator-2" mnf1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-nanofabricator-1"}} -mnf1.fluid_boxes[1].pipe_connections[1].position = {-2.5, 0.5} -mnf1.fluid_boxes[2].pipe_connections[1].position = {-0.5, -2.5} -mnf1.fluid_boxes[3].pipe_connections[1].position = {0.5, 2.5} -mnf1.fluid_boxes[4].pipe_connections[1].position = {2.5, -0.5} +mnf1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} +mnf1.fluid_boxes[2].pipe_connections[1].position = {-0.5, -1.5} +mnf1.fluid_boxes[3].pipe_connections[1].position = {0.5, 1.5} +mnf1.fluid_boxes[4].pipe_connections[1].position = {1.5, -0.5} data:extend({ mnf1, @@ -715,8 +657,8 @@ data:extend({ type = "assembling-machine", name = "nullius-nanofabricator-2", icons = data.raw.item["nullius-nanofabricator-2"].icons, - order = data.raw.item["nullius-nanofabricator-2"].order .. "b", - localised_description = {"entity-description.nullius-nanofabricator"}, + order = data.raw.item["nullius-nanofabricator-2"].order .. "b", + localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 2.5, result = "nullius-nanofabricator-2"}, max_health = 400, @@ -725,7 +667,7 @@ data:extend({ resistances = { { type = "impact", decrease = 50, percent = 80 } }, collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, selection_box = {{-2, -2}, {2, 2}}, - module_specification = { module_slots = 4 }, + module_slots = 4, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, crafting_categories = {"nanotechnology"}, fast_replaceable_group = "nanofabricator", @@ -733,11 +675,13 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 4, + emissions_per_minute = {pollution = 4}, drain = "60kW" }, energy_usage = "940kW", - animation = scale_image(data.raw["assembling-machine"]["crystallizer-2"].animation, 0.775), + graphics_set = { + animation = scale_image(data.raw["assembling-machine"]["crystallizer-2"].graphics_set.animation, 0.775), + }, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, fluid_boxes = { @@ -746,43 +690,35 @@ data:extend({ pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -0.5}, direction = defines.direction.west }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[4].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 3, - base_level = 5, - height = 2, - pipe_connections = {{ type="output", position = {2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} }, - off_when_no_fluid_recipe = true - } + }, + fluid_boxes_off_when_no_fluid_recipe = true, } }) @@ -790,31 +726,33 @@ data:extend({ { type = "assembling-machine", name = "nullius-mirror-nanofabricator-2", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-nanofabricator-2"}}, - icons = { + icons = { data.raw.item["nullius-nanofabricator-2"].icons[1], { icon = ICONPATH .. "flip1.png", icon_size = 64 } }, - order = data.raw.item["nullius-nanofabricator-2"].order .. "c", - localised_description = {"entity-description.nullius-nanofabricator"}, + order = data.raw.item["nullius-nanofabricator-2"].order .. "c", + localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 2.5, result = "nullius-nanofabricator-2"}, - placeable_by = {item = "nullius-nanofabricator-2", count = 1}, + placeable_by = {item = "nullius-nanofabricator-2", count = 1}, max_health = 400, corpse = "big-remnants", dying_explosion = "medium-explosion", resistances = { { type = "impact", decrease = 50, percent = 80 } }, collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, selection_box = {{-2, -2}, {2, 2}}, - module_specification = { module_slots = 4 }, + module_slots = 4, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, crafting_categories = {"nanotechnology"}, fast_replaceable_group = "nanofabricator", crafting_speed = 2, energy_source = data.raw["assembling-machine"]["nullius-nanofabricator-2"].energy_source, energy_usage = "940kW", - animation = data.raw["assembling-machine"]["nullius-nanofabricator-2"].animation, + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-nanofabricator-2"].graphics_set.animation, + }, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, fluid_boxes = { @@ -823,43 +761,35 @@ data:extend({ pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, -1.5}, direction = defines.direction.north }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"] ["nullius-nanofabricator-1"].fluid_boxes[4].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 3, - base_level = 5, - height = 2, - pipe_connections = {{ type="output", position = {2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} }, - off_when_no_fluid_recipe = true - } + }, + fluid_boxes_off_when_no_fluid_recipe = true, }, { @@ -873,17 +803,16 @@ data:extend({ dying_explosion = "steel-chest-explosion", collision_box = {{-0.25, -0.25}, {0.25, 0.25}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, - drawing_box = {{-0.52, -0.82}, {0.52, 0.52}}, result_inventory_size = 1, source_inventory_size = 1, crafting_categories = {"packaging"}, crafting_speed = 4, energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions_per_minute = 0.1, - drain = "5kW" - }, + type = "electric", + usage_priority = "secondary-input", + emissions_per_minute = {pollution = 0.1}, + drain = "5kW" + }, energy_usage = "395kW", vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.4 }, working_sound = { @@ -894,11 +823,10 @@ data:extend({ idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.5 }, apparent_volume = 0.5 }, - animation = scale_image(data.raw["assembling-machine"]["powder-mixer"].animation, 0.52) + graphics_set = { + animation = scale_image(data.raw["assembling-machine"]["powder-mixer"].graphics_set.animation, 0.52) + } } }) -data.raw["furnace"]["nullius-boxer"].animation.layers[1].tint = {0.88, 0.92, 1} -if (data.raw["furnace"]["nullius-boxer"].animation.layers[1].hr_version ~= nil) then - data.raw["furnace"]["nullius-boxer"].animation.layers[1].hr_version.tint = {0.88, 0.92, 1} -end +data.raw["furnace"]["nullius-boxer"].graphics_set.animation.layers[1].tint = {0.88, 0.92, 1} diff --git a/nullius/prototypes/entity/beacon.lua b/nullius/prototypes/entity/beacon.lua index 405c162..890faa3 100644 --- a/nullius/prototypes/entity/beacon.lua +++ b/nullius/prototypes/entity/beacon.lua @@ -3,6 +3,8 @@ local ENTICONPATH = "__nullius__/graphics/icons/entity/" local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" +data:extend({{ type = "collision-layer", name = "layer_42" }}) + data:extend({ { type = "beacon", @@ -16,7 +18,7 @@ data:extend({ collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, damaged_trigger_effect = data.raw.beacon["beacon"].damaged_trigger_effect, - drawing_box = {{-1.5, -2.2}, {1.5, 1.3}}, + allowed_effects = {"consumption", "speed", "pollution"}, resistances = { { type = "impact", decrease = 50, percent = 80 } @@ -26,18 +28,14 @@ data:extend({ water_reflection = data.raw.beacon["beacon"].water_reflection, radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, - supply_area_distance = 3.29, + supply_area_distance = 3, energy_source = { type = "electric", usage_priority = "secondary-input" }, vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "80kW", distribution_effectivity = 0.5, - module_specification = { - module_slots = 1, - module_info_icon_shift = {0, 0.5}, - module_info_multi_row_initial_height_modifier = -0.3 - }, + module_slots = 1, graphics_set = { module_icons_suppressed = true, @@ -56,7 +54,7 @@ data:extend({ animation = { layers = { { - filename = BASEENTITY .. "beacon/hr-beacon-bottom.png", + filename = BASEENTITY .. "beacon/beacon-bottom.png", width = 212, height = 192, scale = 0.4, @@ -64,7 +62,7 @@ data:extend({ tint = {0.8, 0.9, 0.7} }, { - filename = BASEENTITY .. "beacon/hr-beacon-shadow.png", + filename = BASEENTITY .. "beacon/beacon-shadow.png", width = 244, height = 176, scale = 0.4, @@ -78,7 +76,7 @@ data:extend({ render_layer = "object", always_draw = true, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-top.png", + filename = BASEENTITY .. "beacon/beacon-top.png", width = 96, height = 140, scale = 0.4, @@ -94,7 +92,7 @@ data:extend({ draw_as_light = true, always_draw = false, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-light.png", + filename = BASEENTITY .. "beacon/beacon-light.png", line_length = 9, width = 110, height = 186, @@ -119,7 +117,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-1.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-1.png", line_length = 4, width = 50, height = 66, @@ -132,7 +130,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-1.png", line_length = 3, width = 36, height = 32, @@ -145,7 +143,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-1.png", line_length = 3, width = 26, height = 12, @@ -159,7 +157,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, width = 56, height = 42, @@ -187,7 +185,7 @@ data:extend({ collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, damaged_trigger_effect = data.raw.beacon["beacon"].damaged_trigger_effect, - drawing_box = {{-1.5, -2.2}, {1.5, 1.3}}, + allowed_effects = {"consumption", "speed", "pollution"}, resistances = { { type = "impact", decrease = 50, percent = 80 } @@ -197,18 +195,14 @@ data:extend({ water_reflection = data.raw.beacon["beacon"].water_reflection, radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, - supply_area_distance = 3.29, + supply_area_distance = 3, energy_source = { type = "electric", usage_priority = "secondary-input" }, vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "150kW", distribution_effectivity = 0.4, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 0.5}, - module_info_multi_row_initial_height_modifier = -0.3 - }, + module_slots = 2, graphics_set = { module_icons_suppressed = true, @@ -227,7 +221,7 @@ data:extend({ animation = { layers = { { - filename = BASEENTITY .. "beacon/hr-beacon-bottom.png", + filename = BASEENTITY .. "beacon/beacon-bottom.png", width = 212, height = 192, scale = 0.45, @@ -235,7 +229,7 @@ data:extend({ tint = {0.9, 0.8, 1} }, { - filename = BASEENTITY .. "beacon/hr-beacon-shadow.png", + filename = BASEENTITY .. "beacon/beacon-shadow.png", width = 244, height = 176, scale = 0.45, @@ -249,7 +243,7 @@ data:extend({ render_layer = "object", always_draw = true, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-top.png", + filename = BASEENTITY .. "beacon/beacon-top.png", width = 96, height = 140, scale = 0.45, @@ -265,7 +259,7 @@ data:extend({ draw_as_light = true, always_draw = false, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-light.png", + filename = BASEENTITY .. "beacon/beacon-light.png", line_length = 9, width = 110, height = 186, @@ -290,7 +284,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-1.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-1.png", line_length = 4, width = 50, height = 66, @@ -303,7 +297,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-1.png", line_length = 3, width = 36, height = 32, @@ -316,7 +310,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-1.png", line_length = 3, width = 26, height = 12, @@ -330,7 +324,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, width = 56, height = 42, @@ -346,7 +340,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-2.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-2.png", line_length = 4, width = 46, height = 44, @@ -359,7 +353,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-2.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-2.png", line_length = 3, width = 36, height = 26, @@ -372,7 +366,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-2.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-2.png", line_length = 3, width = 24, height = 14, @@ -386,7 +380,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-2.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-2.png", line_length = 3, width = 66, height = 46, @@ -414,7 +408,7 @@ data:extend({ collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, damaged_trigger_effect = data.raw.beacon["beacon"].damaged_trigger_effect, - drawing_box = {{-1.5, -2.2}, {1.5, 1.3}}, + allowed_effects = {"consumption", "speed", "pollution"}, resistances = { { type = "impact", decrease = 50, percent = 80 } @@ -423,18 +417,14 @@ data:extend({ water_reflection = data.raw.beacon["beacon"].water_reflection, radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, - supply_area_distance = 3.29, + supply_area_distance = 3, energy_source = { type = "electric", usage_priority = "secondary-input" }, vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "250kW", distribution_effectivity = 0.5, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 0.5}, - module_info_multi_row_initial_height_modifier = -0.3 - }, + module_slots = 2, graphics_set = { module_icons_suppressed = true, @@ -453,14 +443,14 @@ data:extend({ animation = { layers = { { - filename = BASEENTITY .. "beacon/hr-beacon-bottom.png", + filename = BASEENTITY .. "beacon/beacon-bottom.png", width = 212, height = 192, scale = 0.5, shift = util.by_pixel(0.5, 1), }, { - filename = BASEENTITY .. "beacon/hr-beacon-shadow.png", + filename = BASEENTITY .. "beacon/beacon-shadow.png", width = 244, height = 176, scale = 0.5, @@ -474,7 +464,7 @@ data:extend({ render_layer = "object", always_draw = true, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-top.png", + filename = BASEENTITY .. "beacon/beacon-top.png", width = 96, height = 140, scale = 0.5, @@ -490,7 +480,7 @@ data:extend({ draw_as_light = true, always_draw = false, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-light.png", + filename = BASEENTITY .. "beacon/beacon-light.png", line_length = 9, width = 110, height = 186, @@ -515,7 +505,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-1.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-1.png", line_length = 4, width = 50, height = 66, @@ -528,7 +518,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-1.png", line_length = 3, width = 36, height = 32, @@ -541,7 +531,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-1.png", line_length = 3, width = 26, height = 12, @@ -555,7 +545,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, width = 56, height = 42, @@ -571,7 +561,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-2.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-2.png", line_length = 4, width = 46, height = 44, @@ -584,7 +574,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-2.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-2.png", line_length = 3, width = 36, height = 26, @@ -597,7 +587,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-2.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-2.png", line_length = 3, width = 24, height = 14, @@ -611,7 +601,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-2.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-2.png", line_length = 3, width = 66, height = 46, @@ -638,9 +628,9 @@ data:extend({ dying_explosion = "beacon-explosion", collision_box = {{-1.7, -1.7}, {1.7, 1.7}}, selection_box = {{-2, -2}, {2, 2}}, - collision_mask = {"layer-42", "item-layer", "object-layer", "player-layer", "water-tile"}, + collision_mask = { layers = {layer_42 = true, item = true, object = true, player = true, water_tile = true}}, damaged_trigger_effect = data.raw.beacon["beacon"].damaged_trigger_effect, - drawing_box = {{-2, -3}, {2, 1.8}}, + allowed_effects = {"consumption", "speed", "pollution"}, resistances = {{ type = "impact", decrease = 40, percent = 75 }}, fast_replaceable_group = "large-beacon", @@ -648,17 +638,14 @@ data:extend({ water_reflection = data.raw.beacon["beacon"].water_reflection, radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, - supply_area_distance = 12.29, + supply_area_distance = 12, energy_source = { type = "electric", usage_priority = "secondary-input" }, vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "600kW", distribution_effectivity = 1, - module_specification = { - module_slots = 1, - module_info_icon_shift = {0, 0.65} - }, + module_slots = 1, graphics_set = { module_icons_suppressed = true, @@ -677,7 +664,7 @@ data:extend({ animation = { layers = { { - filename = BASEENTITY .. "beacon/hr-beacon-bottom.png", + filename = BASEENTITY .. "beacon/beacon-bottom.png", width = 212, height = 192, scale = 0.6, @@ -685,7 +672,7 @@ data:extend({ tint = {0.9, 0.8, 1} }, { - filename = BASEENTITY .. "beacon/hr-beacon-shadow.png", + filename = BASEENTITY .. "beacon/beacon-shadow.png", width = 244, height = 176, scale = 0.6, @@ -699,7 +686,7 @@ data:extend({ render_layer = "object", always_draw = true, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-top.png", + filename = BASEENTITY .. "beacon/beacon-top.png", width = 96, height = 140, scale = 0.6, @@ -715,7 +702,7 @@ data:extend({ draw_as_light = true, always_draw = false, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-light.png", + filename = BASEENTITY .. "beacon/beacon-light.png", line_length = 9, width = 110, height = 186, @@ -740,7 +727,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-1.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-1.png", line_length = 4, width = 50, height = 66, @@ -753,7 +740,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-1.png", line_length = 3, width = 36, height = 32, @@ -766,7 +753,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-1.png", line_length = 3, width = 26, height = 12, @@ -780,7 +767,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, width = 56, height = 42, @@ -807,26 +794,23 @@ data:extend({ dying_explosion = "beacon-explosion", collision_box = {{-1.7, -1.7}, {1.7, 1.7}}, selection_box = {{-2, -2}, {2, 2}}, - collision_mask = {"layer-42", "item-layer", "object-layer", "player-layer", "water-tile"}, + collision_mask = { layers = {layer_42 = true, item = true, object = true, player = true, water_tile = true}}, damaged_trigger_effect = data.raw.beacon["beacon"].damaged_trigger_effect, - drawing_box = {{-2, -3}, {2, 1.8}}, + allowed_effects = {"consumption", "speed", "pollution"}, resistances = {{ type = "impact", decrease = 40, percent = 75 }}, fast_replaceable_group = "large-beacon", water_reflection = data.raw.beacon["beacon"].water_reflection, radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, - supply_area_distance = 12.29, + supply_area_distance = 12, energy_source = { type = "electric", usage_priority = "secondary-input" }, vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "1.5MW", distribution_effectivity = 1, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 0.65} - }, + module_slots = 2, graphics_set = { module_icons_suppressed = true, @@ -845,14 +829,14 @@ data:extend({ animation = { layers = { { - filename = BASEENTITY .. "beacon/hr-beacon-bottom.png", + filename = BASEENTITY .. "beacon/beacon-bottom.png", width = 212, height = 192, scale = 0.665, shift = util.by_pixel(0.5*1.33, 1*1.33) }, { - filename = BASEENTITY .. "beacon/hr-beacon-shadow.png", + filename = BASEENTITY .. "beacon/beacon-shadow.png", width = 244, height = 176, scale = 0.665, @@ -866,7 +850,7 @@ data:extend({ render_layer = "object", always_draw = true, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-top.png", + filename = BASEENTITY .. "beacon/beacon-top.png", width = 96, height = 140, scale = 0.665, @@ -882,7 +866,7 @@ data:extend({ draw_as_light = true, always_draw = false, animation = { - filename = BASEENTITY .. "beacon/hr-beacon-light.png", + filename = BASEENTITY .. "beacon/beacon-light.png", line_length = 9, width = 110, height = 186, @@ -907,7 +891,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-1.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-1.png", line_length = 4, width = 50, height = 66, @@ -920,7 +904,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-1.png", line_length = 3, width = 36, height = 32, @@ -933,7 +917,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-1.png", line_length = 3, width = 26, height = 12, @@ -947,7 +931,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-1.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, width = 56, height = 42, @@ -963,7 +947,7 @@ data:extend({ has_empty_slot = true, render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-slot-2.png", + filename = BASEENTITY .. "beacon/beacon-module-slot-2.png", line_length = 4, width = 46, height = 44, @@ -976,7 +960,7 @@ data:extend({ apply_module_tint = "primary", render_layer = "lower-object", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-box-2.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-box-2.png", line_length = 3, width = 36, height = 26, @@ -989,7 +973,7 @@ data:extend({ apply_module_tint = "secondary", render_layer = "lower-object-above-shadow", pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-mask-lights-2.png", + filename = BASEENTITY .. "beacon/beacon-module-mask-lights-2.png", line_length = 3, width = 24, height = 14, @@ -1003,7 +987,7 @@ data:extend({ draw_as_light = true, draw_as_sprite = false, pictures = { - filename = BASEENTITY .. "beacon/hr-beacon-module-lights-2.png", + filename = BASEENTITY .. "beacon/beacon-module-lights-2.png", line_length = 3, width = 66, height = 46, @@ -1024,14 +1008,14 @@ data:extend({ if mods["reskins-bobs"] then data.raw.beacon["nullius-beacon-1"].graphics_set.animation_list[1].animation.layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-bottom.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-bottom.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.8, 1*0.8), scale = 0.5*0.8 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-bottom-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-bottom-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.8, 1*0.8), @@ -1039,7 +1023,7 @@ data.raw.beacon["nullius-beacon-1"].graphics_set.animation_list[1].animation.lay scale = 0.5*0.8 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-bottom-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-bottom-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.8, 1*0.8), @@ -1049,7 +1033,7 @@ data.raw.beacon["nullius-beacon-1"].graphics_set.animation_list[1].animation.lay data.raw.beacon["nullius-beacon-1"].graphics_set.animation_list[1].animation.layers[2] } data.raw.beacon["nullius-beacon-1"].graphics_set.animation_list[2].animation = { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-top.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-top.png", width = 96, height = 140, repeat_count = 45, @@ -1060,14 +1044,14 @@ data.raw.beacon["nullius-beacon-1"].graphics_set.animation_list[2].animation = { data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list[1].animation.layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-2-bottom.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-2-bottom.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.9, 1*0.9), scale = 0.5*0.9 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-2-bottom-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-2-bottom-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.9, 1*0.9), @@ -1075,7 +1059,7 @@ data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list[1].animation.lay scale = 0.5*0.9 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-2-bottom-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-2-bottom-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.9, 1*0.9), @@ -1085,7 +1069,7 @@ data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list[1].animation.lay data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list[1].animation.layers[2] } data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list[2].animation = { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-2-top.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-2-top.png", width = 96, height = 140, repeat_count = 45, @@ -1097,7 +1081,7 @@ table.insert(data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list, { render_layer = "transport-belt-circuit-connector", always_draw = true, animation = { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-2-bottom-slot-overlay.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-2-bottom-slot-overlay.png", width = 212, height = 192, shift = util.by_pixel(0.5*0.9, 1*0.9), @@ -1107,14 +1091,14 @@ table.insert(data.raw.beacon["nullius-beacon-2"].graphics_set.animation_list, { data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list[1].animation.layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom.png", width = 212, height = 192, shift = util.by_pixel(0.5, 1), scale = 0.5 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5, 1), @@ -1122,7 +1106,7 @@ data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list[1].animation.lay scale = 0.5 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5, 1), @@ -1132,7 +1116,7 @@ data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list[1].animation.lay data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list[1].animation.layers[2] } data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list[2].animation = { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-top.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-top.png", width = 96, height = 140, repeat_count = 45, @@ -1145,14 +1129,14 @@ table.insert(data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list, { always_draw = true, animation = { layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-slot-overlay.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-slot-overlay.png", width = 212, height = 192, shift = util.by_pixel(0.5, 1), scale = 0.5 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-slot-overlay-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-slot-overlay-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5, 1), @@ -1160,7 +1144,7 @@ table.insert(data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list, { scale = 0.5 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-slot-overlay-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-slot-overlay-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5, 1), @@ -1172,14 +1156,14 @@ table.insert(data.raw.beacon["nullius-beacon-3"].graphics_set.animation_list, { data.raw.beacon["nullius-large-beacon-1"].graphics_set.animation_list[1].animation.layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-bottom.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-bottom.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.2, 1*1.2), scale = 0.5*1.2 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-bottom-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-bottom-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.2, 1*1.2), @@ -1187,7 +1171,7 @@ data.raw.beacon["nullius-large-beacon-1"].graphics_set.animation_list[1].animati scale = 0.5*1.2 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-bottom-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-bottom-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.2, 1*1.2), @@ -1197,7 +1181,7 @@ data.raw.beacon["nullius-large-beacon-1"].graphics_set.animation_list[1].animati data.raw.beacon["nullius-large-beacon-1"].graphics_set.animation_list[1].animation.layers[2] } data.raw.beacon["nullius-large-beacon-1"].graphics_set.animation_list[2].animation = { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-1-top.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-1-top.png", width = 96, height = 140, repeat_count = 45, @@ -1208,14 +1192,14 @@ data.raw.beacon["nullius-large-beacon-1"].graphics_set.animation_list[2].animati data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_list[1].animation.layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.33, 1*1.33), scale = 0.5*1.33 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.33, 1*1.33), @@ -1223,7 +1207,7 @@ data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_list[1].animati scale = 0.5*1.33 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.33, 1*1.33), @@ -1233,7 +1217,7 @@ data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_list[1].animati data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_list[1].animation.layers[2] } data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_list[2].animation = { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-top.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-top.png", width = 96, height = 140, repeat_count = 45, @@ -1246,14 +1230,14 @@ table.insert(data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_li always_draw = true, animation = { layers = { { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-slot-overlay.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-slot-overlay.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.33, 1*1.33), scale = 0.5*1.33 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-slot-overlay-mask.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-slot-overlay-mask.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.33, 1*1.33), @@ -1261,7 +1245,7 @@ table.insert(data.raw.beacon["nullius-large-beacon-2"].graphics_set.animation_li scale = 0.5*1.33 }, { - filename = "__reskins-bobs__/graphics/entity/modules/beacon/hr-beacon-3-bottom-slot-overlay-highlights.png", + filename = "__reskins-bobs__/graphics/entity/modules/beacon/beacon-3-bottom-slot-overlay-highlights.png", width = 212, height = 192, shift = util.by_pixel(0.5*1.33, 1*1.33), @@ -1326,9 +1310,10 @@ data:extend({ icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, order = "cb", - flags = {"placeable-neutral", "player-creation", "not-on-map", "hidden"}, + flags = {"placeable-neutral", "player-creation", "not-on-map"}, + hidden = true, collision_box = {{-8, -6}, {8, 6}}, - collision_mask = {"layer-42"}, + collision_mask = { layers = {layer_42 = true}}, render_layer = "wires-above", selectable_in_game = false, random_animation_offset = false, @@ -1346,9 +1331,10 @@ data:extend({ icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, order = "cc", - flags = {"placeable-neutral", "player-creation", "not-on-map", "hidden"}, + flags = {"placeable-neutral", "player-creation", "not-on-map"}, + hidden = true, collision_box = {{-6, -8}, {6, 8}}, - collision_mask = {"layer-42"}, + collision_mask = { layers = {layer_42 = true}}, render_layer = "wires-above", selectable_in_game = false, random_animation_offset = false, diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 2a8b8f1..ea6b4a6 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -5,15 +5,12 @@ local BASEENTITY = "__base__/graphics/entity/" local function hydro_animation(basename, newtint) local baselayer = scale_image( - data.raw["assembling-machine"][basename].animation.layers[1], 0.725) + data.raw["assembling-machine"][basename].graphics_set.animation.layers[1], 0.725) baselayer.tint = newtint - if (baselayer.hr_version ~= nil) then - baselayer.hr_version.tint = newtint - end local vertical = { layers = { { - filename = "__angelsrefining__/graphics/entity/hydro-plant/hr-hydro-plant-pipe-connections.png", + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", priority = "extra-high", width = 200, height = 100, @@ -24,7 +21,7 @@ local function hydro_animation(basename, newtint) shift = {-0.98, -2.12} }, { - filename = "__angelsrefining__/graphics/entity/hydro-plant/hr-hydro-plant-pipe-connections.png", + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", priority = "extra-high", width = 200, height = 100, @@ -70,11 +67,12 @@ data:extend({ }, fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-hydro-plant-2", - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - animation = hydro_animation("hydro-plant",{0.77, 0.77, 0.68}), - working_visualisations = scale_image( - data.raw["assembling-machine"]["hydro-plant"].working_visualisations, 0.725), + graphics_set = { + animation = hydro_animation("hydro-plant",{0.77, 0.77, 0.68}), + working_visualisations = scale_image(data.raw["assembling-machine"]["hydro-plant"].graphics_set.working_visualisations, 0.725), + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["hydro-plant"].working_sound, fluid_boxes = { @@ -82,35 +80,29 @@ data:extend({ production_type = "input", pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {-1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} } }, pipe_covers = pipecoverspictures(), @@ -139,13 +131,14 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-hydro-plant-3", - animation = hydro_animation("hydro-plant-2",{0.8, 0.8, 0.9}), - working_visualisations = scale_image( - data.raw["assembling-machine"]["hydro-plant-2"].working_visualisations, 0.725), + graphics_set = { + animation = hydro_animation("hydro-plant-2",{0.8, 0.8, 0.9}), + working_visualisations = scale_image(data.raw["assembling-machine"]["hydro-plant-2"].graphics_set.working_visualisations, 0.725), + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["hydro-plant-2"].working_sound, fluid_boxes = { @@ -153,37 +146,29 @@ data:extend({ production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = -2, - pipe_connections = {{ type="input", position = {-1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = -2, - pipe_connections = {{ type="input", position = {1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = 4, - pipe_connections = {{ type="output", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = 4, - pipe_connections = {{ type="output", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} }, }, pipe_covers = pipecoverspictures(), @@ -210,12 +195,13 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", - animation = hydro_animation("hydro-plant-3"), - working_visualisations = scale_image( - data.raw["assembling-machine"]["hydro-plant-3"].working_visualisations, 0.725), + graphics_set = { + animation = hydro_animation("hydro-plant-3"), + working_visualisations = scale_image(data.raw["assembling-machine"]["hydro-plant-3"].graphics_set.working_visualisations, 0.725), + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["hydro-plant-3"].working_sound, fluid_boxes = { @@ -223,49 +209,41 @@ data:extend({ production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 2, - base_level = -3, - pipe_connections = {{ type="input", position = {-1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 2, - base_level = -3, - pipe_connections = {{ type="input", position = {1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 3, - base_level = 5, - pipe_connections = {{ type="output", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 3, - base_level = 5, - pipe_connections = {{ type="output", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} }, }, pipe_covers = pipecoverspictures(), } }) -data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_visualisations[4] = nil -data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_visualisations[5] = nil -data.raw["assembling-machine"]["nullius-hydro-plant-2"].working_visualisations[4] = nil -data.raw["assembling-machine"]["nullius-hydro-plant-2"].working_visualisations[5] = nil -data.raw["assembling-machine"]["nullius-hydro-plant-3"].working_visualisations[4] = nil -data.raw["assembling-machine"]["nullius-hydro-plant-3"].working_visualisations[5] = nil +data.raw["assembling-machine"]["nullius-hydro-plant-1"].graphics_set.working_visualisations[4] = nil +data.raw["assembling-machine"]["nullius-hydro-plant-1"].graphics_set.working_visualisations[5] = nil +data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set.working_visualisations[4] = nil +data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set.working_visualisations[5] = nil +data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set.working_visualisations[4] = nil +data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set.working_visualisations[5] = nil local mhp1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-hydro-plant-1"]) @@ -275,10 +253,10 @@ mhp1.placeable_by = {item = "nullius-hydro-plant-1", count = 1} mhp1.next_upgrade = "nullius-mirror-hydro-plant-2" mhp1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-hydro-plant-1"}} -mhp1.fluid_boxes[1].pipe_connections[1].position = {1, -3} -mhp1.fluid_boxes[2].pipe_connections[1].position = {-1, -3} -mhp1.fluid_boxes[3].pipe_connections[1].position = {-1, 3} -mhp1.fluid_boxes[4].pipe_connections[1].position = {1, 3} +mhp1.fluid_boxes[1].pipe_connections[1].position = {1, -2} +mhp1.fluid_boxes[2].pipe_connections[1].position = {-1, -2} +mhp1.fluid_boxes[3].pipe_connections[1].position = {-1, 2} +mhp1.fluid_boxes[4].pipe_connections[1].position = {1, 2} data:extend({ mhp1, @@ -306,12 +284,11 @@ data:extend({ energy_usage = "480kW", ingredient_count = 4, resistances = data.raw["assembling-machine"]["nullius-hydro-plant-2"].resistances, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-mirror-hydro-plant-3", - animation = data.raw["assembling-machine"]["nullius-hydro-plant-2"].animation, - working_visualisations = data.raw["assembling-machine"]["nullius-hydro-plant-2"].working_visualisations, + graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["hydro-plant"].working_sound, @@ -320,37 +297,29 @@ data:extend({ production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = -2, - pipe_connections = {{ type="input", position = {1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = -2, - pipe_connections = {{ type="input", position = {-1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = 4, - pipe_connections = {{ type="output", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 10, - height = 2, - base_level = 4, - pipe_connections = {{ type="output", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, } }, @@ -382,11 +351,10 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", - animation = data.raw["assembling-machine"]["nullius-hydro-plant-3"].animation, - working_visualisations = data.raw["assembling-machine"]["nullius-hydro-plant-3"].working_visualisations, + graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["hydro-plant"].working_sound, @@ -395,37 +363,29 @@ data:extend({ production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 2, - base_level = -3, - pipe_connections = {{ type="input", position = {1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "input", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 2, - base_level = -3, - pipe_connections = {{ type="input", position = {-1, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 3, - base_level = 5, - pipe_connections = {{ type="output", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, pipe_covers = pipecoverspictures(), - base_area = 15, - height = 3, - base_level = 5, - pipe_connections = {{ type="output", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, }, pipe_covers = pipecoverspictures(), @@ -444,14 +404,14 @@ data:extend({ corpse = "oil-refinery-remnants", collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - drawing_box = {{-2.5, -2.8}, {2.5, 2.5}}, + scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 1, energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 6, + emissions_per_minute = {pollution = 6}, drain = "20kW" }, energy_usage = "280kW", @@ -464,108 +424,86 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - height = 2, - base_area = 4, - pipe_connections = {{ type="output", position = {-2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - height = 2, - base_area = 4, - pipe_connections = {{ type="output", position = {0, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - height = 2, - base_area = 4, - pipe_connections = {{ type="output", position = {2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, -2}, direction = defines.direction.north }} } }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", next_upgrade = "nullius-distillery-2", - working_visualisations = { - { - apply_recipe_tint = "primary", - constant_speed = true, - north_position = {1, -3.85}, - east_position = {-1.7, -3.8}, - south_position = {-1.85, -4.4}, - west_position = {1.7, -3.65}, - render_layer = "wires", - animation = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 90, - height = 188, - animation_speed = 0.25, - scale = 0.7 - } - }, - }, - - animation = make_4way_animation_from_spritesheet({ - layers = { + graphics_set = { + working_visualisations = { { - filename = BASEENTITY .. "oil-refinery/oil-refinery.png", - width = 337, - height = 255, - frame_count = 1, - shift = {2.515625, 0.484375}, - tint = {0.77, 0.77, 0.66, 1}, - hr_version = { - filename = BASEENTITY .. "oil-refinery/hr-oil-refinery.png", - width = 386, - height = 430, - frame_count = 1, - shift = util.by_pixel(0, -7.5), - scale = 0.5, - tint = {0.77, 0.77, 0.66, 1} + apply_recipe_tint = "primary", + constant_speed = true, + north_position = {1, -3.85}, + east_position = {-1.7, -3.8}, + south_position = {-1.85, -4.4}, + west_position = {1.7, -3.65}, + render_layer = "wires", + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", + frame_count = 47, + line_length = 16, + width = 90, + height = 188, + animation_speed = 0.25, + scale = 0.7 } }, - { - filename = BASEENTITY .. "oil-refinery/oil-refinery-shadow.png", - width = 337, - height = 213, - frame_count = 1, - shift = util.by_pixel(82.5, 26.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "oil-refinery/hr-oil-refinery-shadow.png", - width = 674, - height = 426, - frame_count = 1, - shift = util.by_pixel(82.5, 26.5), - draw_as_shadow = true, - force_hr_shadow = true, - scale = 0.5 + }, + + animation = make_4way_animation_from_spritesheet({ + layers = { + { + filename = BASEENTITY .. "oil-refinery/oil-refinery.png", + width = 386, + height = 430, + frame_count = 1, + shift = util.by_pixel(0, -7.5), + scale = 0.5, + tint = {0.77, 0.77, 0.66, 1} + }, + { + filename = BASEENTITY .. "oil-refinery/oil-refinery-shadow.png", + width = 674, + height = 426, + frame_count = 1, + shift = util.by_pixel(82.5, 26.5), + draw_as_shadow = true, + force_hr_shadow = true, + scale = 0.5 } } - } - }) + }) + } } }) @@ -578,10 +516,10 @@ md1.placeable_by = {item = "nullius-distillery-1", count = 1} md1.next_upgrade = "nullius-mirror-distillery-2" md1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-distillery-1"}} -md1.fluid_boxes[1].pipe_connections[1].position = {1, 3} -md1.fluid_boxes[2].pipe_connections[1].position = {-1, 3} -md1.fluid_boxes[3].pipe_connections[1].position = {2, -3} -md1.fluid_boxes[5].pipe_connections[1].position = {-2, -3} +md1.fluid_boxes[1].pipe_connections[1].position = {1, 2} +md1.fluid_boxes[2].pipe_connections[1].position = {-1, 2} +md1.fluid_boxes[3].pipe_connections[1].position = {2, -2} +md1.fluid_boxes[5].pipe_connections[1].position = {-2, -2} data:extend({ md1, @@ -598,23 +536,22 @@ data:extend({ corpse = "oil-refinery-remnants", collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - drawing_box = {{-2.5, -2.8}, {2.5, 2.5}}, + scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 2, energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 12, + emissions_per_minute = {pollution = 12}, drain = "50kW" }, energy_usage = "550kW", resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].working_visualisations, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", next_upgrade = "nullius-distillery-3", @@ -623,88 +560,67 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - height = 2, - base_area = 5, - pipe_connections = {{ type="output", position = {-2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - height = 2, - base_area = 5, - pipe_connections = {{ type="output", position = {0, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - height = 2, - base_area = 5, - pipe_connections = {{ type="output", position = {2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, -2}, direction = defines.direction.north }} } }, - animation = make_4way_animation_from_spritesheet({ - layers = { - { - filename = BASEENTITY .. "oil-refinery/oil-refinery.png", - width = 337, - height = 255, - frame_count = 1, - shift = {2.515625, 0.484375}, - tint = {0.8, 0.8, 1, 1}, - hr_version = { - filename = BASEENTITY .. "oil-refinery/hr-oil-refinery.png", - width = 386, - height = 430, - frame_count = 1, - shift = util.by_pixel(0, -7.5), - scale = 0.5, - tint = {0.8, 0.8, 1, 1} - } - }, - { - filename = BASEENTITY .. "oil-refinery/oil-refinery-shadow.png", - width = 337, - height = 213, - frame_count = 1, - shift = util.by_pixel(82.5, 26.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "oil-refinery/hr-oil-refinery-shadow.png", - width = 674, - height = 426, - frame_count = 1, - shift = util.by_pixel(82.5, 26.5), - draw_as_shadow = true, - force_hr_shadow = true, - scale = 0.5 + graphics_set = { + animation = make_4way_animation_from_spritesheet({ + layers = { + { + filename = BASEENTITY .. "oil-refinery/oil-refinery.png", + width = 386, + height = 430, + frame_count = 1, + shift = util.by_pixel(0, -7.5), + scale = 0.5, + tint = {0.8, 0.8, 1, 1} + }, + { + filename = BASEENTITY .. "oil-refinery/oil-refinery-shadow.png", + width = 674, + height = 426, + frame_count = 1, + shift = util.by_pixel(82.5, 26.5), + draw_as_shadow = true, + force_hr_shadow = true, + scale = 0.5 } } - } - }) + }), + working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].graphics_set.working_visualisations, + } }, { type = "assembling-machine", name = "nullius-distillery-3", - order = "z-nullius-cdb", + order = "z-nullius-cdb", icons = data.raw.item["nullius-distillery-3"].icons, localised_description = {"entity-description.nullius-distillery"}, flags = {"placeable-neutral", "player-creation"}, @@ -714,67 +630,59 @@ data:extend({ corpse = "oil-refinery-remnants", collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - drawing_box = {{-2.5, -2.8}, {2.5, 2.5}}, + scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 4, energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 24, + emissions_per_minute = {pollution = 24}, drain = "100kW" }, energy_usage = "1100kW", resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].working_visualisations, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", - animation = data.raw["assembling-machine"]["oil-refinery"].animation, + graphics_set = { + animation = data.raw["assembling-machine"]["oil-refinery"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].graphics_set.working_visualisations, + }, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 3, - pipe_connections = {{ type="output", position = {-2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 3, - pipe_connections = {{ type="output", position = {0, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 3, - pipe_connections = {{ type="output", position = {2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} } } } @@ -784,21 +692,21 @@ data:extend({ { type = "assembling-machine", name = "nullius-mirror-distillery-2", - order = "z-nullius-ccc", - icons = { - data.raw.item["nullius-distillery-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + order = "z-nullius-ccc", + icons = { + data.raw.item["nullius-distillery-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-distillery"}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.8, result = "nullius-distillery-2"}, - placeable_by = {item = "nullius-distillery-2", count = 1}, + placeable_by = {item = "nullius-distillery-2", count = 1}, max_health = 500, dying_explosion = "medium-explosion", corpse = "oil-refinery-remnants", collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - drawing_box = {{-2.5, -2.8}, {2.5, 2.5}}, + scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 2, @@ -806,52 +714,43 @@ data:extend({ energy_usage = "550kW", resistances = data.raw["assembling-machine"]["nullius-distillery-2"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-distillery-2"].working_visualisations, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", next_upgrade = "nullius-mirror-distillery-3", - animation = data.raw["assembling-machine"]["nullius-distillery-2"].animation, + graphics_set = data.raw["assembling-machine"]["nullius-distillery-2"].graphics_set, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - height = 2, - base_area = 5, - pipe_connections = {{ type="output", position = {2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - height = 2, - base_area = 5, - pipe_connections = {{ type="output", position = {0, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - height = 2, - base_area = 5, - pipe_connections = {{ type="output", position = {-2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} } } }, @@ -873,67 +772,59 @@ data:extend({ corpse = "oil-refinery-remnants", collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - drawing_box = {{-2.5, -2.8}, {2.5, 2.5}}, + scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 4, energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 24, + emissions_per_minute = {pollution = 24}, drain = "100kW" }, energy_usage = "1100kW", resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].working_visualisations, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", - animation = data.raw["assembling-machine"]["oil-refinery"].animation, + graphics_set = { + animation = data.raw["assembling-machine"]["oil-refinery"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].graphics_set.working_visualisations, + }, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-1, 3} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 3, - pipe_connections = {{ type="output", position = {2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 3, - pipe_connections = {{ type="output", position = {0, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 3, - pipe_connections = {{ type="output", position = {-2, -3} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} } } }, @@ -942,7 +833,7 @@ data:extend({ type = "assembling-machine", name = "nullius-surge-electrolyzer-1", icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.8, 0.6} }}, @@ -963,7 +854,7 @@ data:extend({ crafting_speed = 1, energy_source = { type = "electric", - emissions_per_minute = 0.5, + emissions_per_minute = {pollution = 0.5}, drain = "10kW", output_flow_limit = "0kW", usage_priority = "tertiary", @@ -974,55 +865,57 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.8, b=0.6} - }, - east = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.8, b=0.6} - }, - south = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.8, b=0.6} - }, - west = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.8, b=0.6} + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.8, b=0.6} + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.8, b=0.6} + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.8, b=0.6} + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.8, b=0.6} + } } }, vehicle_impact_sound = data.raw["assembling-machine"]["angels-electrolyser"].vehicle_impact_sound, working_sound = { - sound = { filename = "__angelspetrochem__/sound/electrolyser.ogg", volume = 0.15 }, + sound = { filename = "__angelspetrochemgraphics__/sound/electrolyser.ogg", volume = 0.15 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.4 }, audible_distance_modifier = 0.75 }, @@ -1030,34 +923,26 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -3, - height = 3, - pipe_connections = {{ type="input", position = {-1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {-1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} } }, pipe_covers = pipecoverspictures() @@ -1069,7 +954,7 @@ data:extend({ type = "assembling-machine", name = "nullius-priority-electrolyzer-1", icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.68, 0.51} }}, @@ -1090,57 +975,59 @@ data:extend({ crafting_speed = 0.5, energy_source = { type = "electric", - emissions_per_minute = 0.5, + emissions_per_minute = {pollution = 0.5}, drain = "10kW", usage_priority = "secondary-input" }, energy_usage = "990kW", resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].fluid_boxes, - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.68, 0.51} - }, - east = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.68, 0.51} - }, - south = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.68, 0.51} - }, - west = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.68, 0.51} + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.68, 0.51} + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.68, 0.51} + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.68, 0.51} + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.68, 0.51} + } } }, vehicle_impact_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].vehicle_impact_sound, @@ -1151,7 +1038,7 @@ data:extend({ type = "assembling-machine", name = "nullius-surge-electrolyzer-2", icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.9, 1} }}, @@ -1172,7 +1059,7 @@ data:extend({ crafting_speed = 2, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "15kW", output_flow_limit = "0kW", usage_priority = "tertiary", @@ -1183,50 +1070,52 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.9, b=1} - }, - east = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.9, b=1} - }, - south = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.9, b=1} - }, - west = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {r=0.8, g=0.9, b=1} + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.9, b=1} + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.9, b=1} + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.9, b=1} + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {r=0.8, g=0.9, b=1} + } } }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1235,34 +1124,26 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -5, - height = 4, - pipe_connections = {{ type="input", position = {-1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 4, - height = 3, - pipe_connections = {{ type="output", position = {-1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 4, - height = 3, - pipe_connections = {{ type="output", position = {1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 4, - height = 3, - pipe_connections = {{ type="output", position = {1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} } } } @@ -1277,10 +1158,10 @@ mse1.placeable_by = {item = "nullius-electrolyzer-1", count = 1} mse1.next_upgrade = "nullius-mirror-surge-electrolyzer-2" mse1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-surge-electrolyzer-1"}} -mse1.fluid_boxes[1].pipe_connections[1].position = {1.5, -2.5} -mse1.fluid_boxes[2].pipe_connections[1].position = {1.5, 2.5} -mse1.fluid_boxes[3].pipe_connections[1].position = {-1.5, -2.5} -mse1.fluid_boxes[4].pipe_connections[1].position = {-1.5, 2.5} +mse1.fluid_boxes[1].pipe_connections[1].position = {1.5, -1.5} +mse1.fluid_boxes[2].pipe_connections[1].position = {1.5, 1.5} +mse1.fluid_boxes[3].pipe_connections[1].position = {-1.5, -1.5} +mse1.fluid_boxes[4].pipe_connections[1].position = {-1.5, 1.5} local mpe1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-priority-electrolyzer-1"]) @@ -1300,7 +1181,7 @@ data:extend({ type = "assembling-machine", name = "nullius-priority-electrolyzer-2", icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.76, 0.85} }}, @@ -1321,57 +1202,59 @@ data:extend({ crafting_speed = 1.5, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "25kW", usage_priority = "secondary-input" }, energy_usage = "2915kW", resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].fluid_boxes, - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.76, 0.85} - }, - east = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.76, 0.85} - }, - south = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.76, 0.85} - }, - west = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78, - tint = {0.8, 0.76, 0.85} + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.76, 0.85} + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.76, 0.85} + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.76, 0.85} + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78, + tint = {0.8, 0.76, 0.85} + } } }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1381,11 +1264,11 @@ data:extend({ { type = "assembling-machine", name = "nullius-mirror-surge-electrolyzer-2", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-surge-electrolyzer-2"}}, icons = { { - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.9, 1} }, @@ -1412,41 +1295,33 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_source, energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_usage, resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].resistances, - animation = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].animation, + graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -5, - height = 4, - pipe_connections = {{ type="input", position = {1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 4, - height = 3, - pipe_connections = {{ type="output", position = {1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 4, - height = 3, - pipe_connections = {{ type="output", position = {-1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 4, - height = 3, - pipe_connections = {{ type="output", position = {-1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} } } } @@ -1460,7 +1335,7 @@ data:extend({ {"entity-name.nullius-priority-electrolyzer-2"}}, icons = { { - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.76, 0.85} }, @@ -1487,7 +1362,7 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_source, energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_usage, resistances = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].resistances, - animation = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].animation, + graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-2"].fluid_boxes @@ -1496,7 +1371,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-surge-electrolyzer-3", - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, order = data.raw.item["nullius-electrolyzer-3"].order .. "d", localised_description = {"entity-description.nullius-surge", @@ -1514,7 +1389,7 @@ data:extend({ crafting_speed = 4, energy_source = { type = "electric", - emissions_per_minute = 2, + emissions_per_minute = {pollution = 2}, drain = "25kW", output_flow_limit = "0kW", usage_priority = "tertiary", @@ -1525,46 +1400,48 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78 - }, - east = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78 - }, - south = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78 - }, - west = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = {0, 0}, - animation_speed = 0.5, - scale = 0.78 + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78 + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78 + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78 + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + shift = {0, 0}, + animation_speed = 0.5, + scale = 0.78 + } } }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1573,34 +1450,26 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -8, - height = 6, - pipe_connections = {{ type="input", position = {-1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 5, - height = 4, - pipe_connections = {{ type="output", position = {-1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 5, - height = 4, - pipe_connections = {{ type="output", position = {1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 5, - height = 4, - pipe_connections = {{ type="output", position = {1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} } } } @@ -1614,7 +1483,7 @@ data:extend({ {"entity-name.nullius-surge-electrolyzer-3"}}, icons = { { - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32 }, { @@ -1639,41 +1508,33 @@ data:extend({ energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_usage, energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, - animation = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].animation, + graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -8, - height = 6, - pipe_connections = {{ type="input", position = {1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 5, - height = 4, - pipe_connections = {{ type="output", position = {1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 5, - height = 4, - pipe_connections = {{ type="output", position = {-1.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = 5, - height = 4, - pipe_connections = {{ type="output", position = {-1.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} } } } @@ -1684,7 +1545,7 @@ data:extend({ type = "assembling-machine", name = "nullius-priority-electrolyzer-3", icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {1, 0.85, 0.85} }}, @@ -1705,52 +1566,54 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 2, + emissions_per_minute = {pollution = 2}, drain = "100kW" }, energy_usage = "7650kW", resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].fluid_boxes, - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - animation_speed = 0.5, - scale = 0.78, - tint = {1, 0.85, 0.85} - }, - east = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - animation_speed = 0.5, - scale = 0.78, - tint = {1, 0.85, 0.85} - }, - south = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-north.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - animation_speed = 0.5, - scale = 0.78, - tint = {1, 0.85, 0.85} - }, - west = { - filename = "__angelspetrochem__/graphics/entity/electrolyser/electrolyser-east.png", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - animation_speed = 0.5, - scale = 0.78, - tint = {1, 0.85, 0.85} + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + animation_speed = 0.5, + scale = 0.78, + tint = {1, 0.85, 0.85} + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + animation_speed = 0.5, + scale = 0.78, + tint = {1, 0.85, 0.85} + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-north.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + animation_speed = 0.5, + scale = 0.78, + tint = {1, 0.85, 0.85} + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/electrolyser-east.png", + width = 224, + height = 224, + frame_count = 36, + line_length = 6, + animation_speed = 0.5, + scale = 0.78, + tint = {1, 0.85, 0.85} + } } }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1766,7 +1629,7 @@ data:extend({ {"entity-name.nullius-priority-electrolyzer-3"}}, icons = { { - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {1, 0.85, 0.85} }, @@ -1793,7 +1656,7 @@ data:extend({ energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].energy_usage, resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-3"].fluid_boxes, - animation = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].animation, + graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound }, @@ -1802,7 +1665,7 @@ data:extend({ type = "assembling-machine", name = "nullius-chemical-plant-1", icons = data.raw.item["nullius-chemical-plant-1"].icons, - order = "z-nullius-bbb", + order = "z-nullius-bbb", localised_description = {"entity-description.nullius-chemical-plant"}, flags = {"placeable-neutral","placeable-player", "player-creation"}, minable = { mining_time = 1.2, result = "nullius-chemical-plant-1"}, @@ -1811,266 +1674,160 @@ data:extend({ dying_explosion = "medium-explosion", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -1.9}, {1.5, 1.5}}, + fast_replaceable_group = "chemical-plant", next_upgrade = "nullius-chemical-plant-2", - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - animation = make_4way_animation_from_spritesheet({ layers = - { - { - filename = BASEENTITY .. "chemical-plant/chemical-plant.png", - width = 108, - height = 148, - frame_count = 24, - line_length = 12, - shift = util.by_pixel(1, -9), - tint = {0.75, 0.75, 0.6, 1}, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant.png", - width = 220, - height = 292, - frame_count = 24, - line_length = 12, - shift = util.by_pixel(1.5, -9), - scale = 0.52, - tint = {0.75, 0.75, 0.6, 1} - } - }, - { - filename = BASEENTITY .. "chemical-plant/chemical-plant-shadow.png", - width = 154, - height = 112, - repeat_count = 24, - frame_count = 1, - shift = util.by_pixel(28, 6), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-shadow.png", - width = 312, - height = 222, - repeat_count = 24, - frame_count = 1, - shift = util.by_pixel(27, 6), - draw_as_shadow = true, - scale = 0.52 - } - } - }}), - working_visualisations = { + graphics_set = { + animation = make_4way_animation_from_spritesheet({ layers = { - apply_recipe_tint = "primary", - north_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-north.png", - frame_count = 24, - line_length = 6, - width = 32, - height = 24, - shift = util.by_pixel(24, 14), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-liquid-north.png", - frame_count = 24, - line_length = 6, - width = 66, - height = 44, - shift = util.by_pixel(24, 15), - scale = 0.52, - animation_speed = 0.5 - } - }, - east_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-east.png", - frame_count = 24, - line_length = 6, - width = 36, - height = 18, - shift = util.by_pixel(0, 22), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-liquid-east.png", - frame_count = 24, - line_length = 6, - width = 70, - height = 36, - shift = util.by_pixel(1, 22), - scale = 0.52, - animation_speed = 0.5 - } - }, - south_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-south.png", - frame_count = 24, - line_length = 6, - width = 34, - height = 24, - shift = util.by_pixel(0, 16), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-liquid-south.png", + { + filename = BASEENTITY .. "chemical-plant/chemical-plant.png", + width = 220, + height = 292, frame_count = 24, - line_length = 6, - width = 66, - height = 42, - shift = util.by_pixel(0, 17), + line_length = 12, + shift = util.by_pixel(1.5, -9), scale = 0.52, - animation_speed = 0.5 - } + tint = {0.75, 0.75, 0.6, 1} }, - west_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-west.png", - frame_count = 24, - line_length = 6, - width = 38, - height = 20, - shift = util.by_pixel(-10, 12), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-liquid-west.png", - frame_count = 24, - line_length = 6, - width = 74, - height = 36, - shift = util.by_pixel(-9, 13), - scale = 0.52, - animation_speed = 0.5 - } + { + filename = BASEENTITY .. "chemical-plant/chemical-plant-shadow.png", + width = 312, + height = 222, + repeat_count = 24, + frame_count = 1, + shift = util.by_pixel(27, 6), + draw_as_shadow = true, + scale = 0.52 } - }, - { - apply_recipe_tint = "secondary", - north_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-north.png", - frame_count = 24, - line_length = 6, - width = 32, - height = 22, - shift = util.by_pixel(24, 14), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-foam-north.png", - frame_count = 24, - line_length = 6, - width = 62, - height = 42, - shift = util.by_pixel(25, 15), - scale = 0.52, - animation_speed = 0.5 + }}), + working_visualisations = { + { + apply_recipe_tint = "primary", + north_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-north.png", + frame_count = 24, + line_length = 6, + width = 66, + height = 44, + shift = util.by_pixel(24, 15), + scale = 0.52, + animation_speed = 0.5 + }, + east_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-east.png", + frame_count = 24, + line_length = 6, + width = 70, + height = 36, + shift = util.by_pixel(1, 22), + scale = 0.52, + animation_speed = 0.5 + }, + south_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-south.png", + frame_count = 24, + line_length = 6, + width = 66, + height = 42, + shift = util.by_pixel(0, 17), + scale = 0.52, + animation_speed = 0.5 + }, + west_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-liquid-west.png", + frame_count = 24, + line_length = 6, + width = 74, + height = 36, + shift = util.by_pixel(-9, 13), + scale = 0.52, + animation_speed = 0.5 } }, - east_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-east.png", - frame_count = 24, - line_length = 6, - width = 34, - height = 18, - shift = util.by_pixel(0, 22), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-foam-east.png", - frame_count = 24, - line_length = 6, - width = 68, - height = 36, - shift = util.by_pixel(1, 22), - scale = 0.52, - animation_speed = 0.5 + { + apply_recipe_tint = "secondary", + north_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-north.png", + frame_count = 24, + line_length = 6, + width = 62, + height = 42, + shift = util.by_pixel(25, 15), + scale = 0.52, + animation_speed = 0.5 + }, + east_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-east.png", + frame_count = 24, + line_length = 6, + width = 68, + height = 36, + shift = util.by_pixel(1, 22), + scale = 0.52, + animation_speed = 0.5 + }, + south_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-south.png", + frame_count = 24, + line_length = 6, + width = 60, + height = 40, + shift = util.by_pixel(2, 17), + scale = 0.52, + animation_speed = 0.5 + }, + west_animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-west.png", + frame_count = 24, + line_length = 6, + width = 68, + height = 28, + shift = util.by_pixel(-8, 15), + scale = 0.52, + animation_speed = 0.5 } }, - south_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-south.png", - frame_count = 24, - line_length = 6, - width = 32, - height = 18, - shift = util.by_pixel(0, 18), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-foam-south.png", - frame_count = 24, - line_length = 6, - width = 60, - height = 40, - shift = util.by_pixel(2, 17), - scale = 0.52, - animation_speed = 0.5 + { + apply_recipe_tint = "primary", + fadeout = true, + constant_speed = true, + north_position = util.by_pixel_hr(-30, -163), + east_position = util.by_pixel_hr(29, -152), + south_position = util.by_pixel_hr(12, -136), + west_position = util.by_pixel_hr(-32, -132), + render_layer = "wires", + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", + frame_count = 47, + line_length = 16, + width = 90, + height = 188, + animation_speed = 0.4, + shift = util.by_pixel(-2, -40), + scale = 0.52 } }, - west_animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-foam-west.png", - frame_count = 24, - line_length = 6, - width = 36, - height = 16, - shift = util.by_pixel(-10, 14), - animation_speed = 0.5, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-foam-west.png", - frame_count = 24, - line_length = 6, - width = 68, - height = 28, - shift = util.by_pixel(-8, 15), - scale = 0.52, - animation_speed = 0.5 - } - } - }, - { - apply_recipe_tint = "primary", - fadeout = true, - constant_speed = true, - north_position = util.by_pixel_hr(-30, -163), - east_position = util.by_pixel_hr(29, -152), - south_position = util.by_pixel_hr(12, -136), - west_position = util.by_pixel_hr(-32, -132), - render_layer = "wires", - animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 46, - height = 94, - animation_speed = 0.4, - shift = util.by_pixel(-2, -40), - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 90, - height = 188, - animation_speed = 0.4, - shift = util.by_pixel(-2, -40), - scale = 0.52 - } - } - }, - { - apply_recipe_tint = "secondary", - fadeout = true, - constant_speed = true, - north_position = util.by_pixel_hr(-30, -163), - east_position = util.by_pixel_hr(29, -152), - south_position = util.by_pixel_hr(12, -136), - west_position = util.by_pixel_hr(-32, -132), - render_layer = "wires", - animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-inner.png", - frame_count = 47, - line_length = 16, - width = 20, - height = 42, - animation_speed = 0.4, - shift = util.by_pixel(0, -14), - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-smoke-inner.png", - frame_count = 47, - line_length = 16, - width = 40, - height = 84, - animation_speed = 0.4, - shift = util.by_pixel(0, -14), - scale = 0.52 + { + apply_recipe_tint = "secondary", + fadeout = true, + constant_speed = true, + north_position = util.by_pixel_hr(-30, -163), + east_position = util.by_pixel_hr(29, -152), + south_position = util.by_pixel_hr(12, -136), + west_position = util.by_pixel_hr(-32, -132), + render_layer = "wires", + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-inner.png", + frame_count = 47, + line_length = 16, + width = 40, + height = 84, + animation_speed = 0.4, + shift = util.by_pixel(0, -14), + scale = 0.52 } } } @@ -2084,7 +1841,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 4, + emissions_per_minute = {pollution = 4}, drain = "8kW" }, energy_usage = "192kW", @@ -2093,41 +1850,35 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {-1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 2, - base_level = -1, - height = 2, + volume = 500, pipe_connections = { - {type = "input-output", position = {-2, 0}}, - {type = "input-output", position = {2, 0}} + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} } }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {-1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - height = 2, - pipe_connections = {{ type="output", position = {1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} } } } @@ -2142,10 +1893,10 @@ mcp1.placeable_by = {item = "nullius-chemical-plant-1", count = 1} mcp1.next_upgrade = "nullius-mirror-chemical-plant-2" mcp1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-chemical-plant-1"}} -mcp1.fluid_boxes[1].pipe_connections[1].position = {1, -2} -mcp1.fluid_boxes[2].pipe_connections[1].position = {-1, -2} -mcp1.fluid_boxes[4].pipe_connections[1].position = {1, 2} -mcp1.fluid_boxes[5].pipe_connections[1].position = {-1, 2} +mcp1.fluid_boxes[1].pipe_connections[1].position = {1, -1} +mcp1.fluid_boxes[2].pipe_connections[1].position = {-1, -1} +mcp1.fluid_boxes[4].pipe_connections[1].position = {1, 1} +mcp1.fluid_boxes[5].pipe_connections[1].position = {-1, 1} data:extend({ mcp1, @@ -2162,54 +1913,38 @@ data:extend({ dying_explosion = "medium-explosion", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -1.9}, {1.5, 1.5}}, - module_specification = { module_slots = 2 }, + + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "chemical-plant", next_upgrade = "nullius-chemical-plant-3", - animation = make_4way_animation_from_spritesheet({ layers = - { - { - filename = BASEENTITY .. "chemical-plant/chemical-plant.png", - width = 108, - height = 148, - frame_count = 24, - line_length = 12, - shift = util.by_pixel(1, -9), - tint = {0.8, 0.8, 1, 1}, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant.png", - width = 220, - height = 292, - frame_count = 24, - line_length = 12, - shift = util.by_pixel(1.5, -9), - scale = 0.52, - tint = {0.8, 0.8, 1, 1} - } - }, + graphics_set = { + animation = make_4way_animation_from_spritesheet({ layers = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-shadow.png", - width = 154, - height = 112, - repeat_count = 24, - frame_count = 1, - shift = util.by_pixel(28, 6), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-shadow.png", - width = 312, - height = 222, - repeat_count = 24, - frame_count = 1, - shift = util.by_pixel(27, 6), - draw_as_shadow = true, - scale = 0.52 + { + filename = BASEENTITY .. "chemical-plant/chemical-plant.png", + width = 220, + height = 292, + frame_count = 24, + line_length = 12, + shift = util.by_pixel(1.5, -9), + scale = 0.52, + tint = {0.8, 0.8, 1, 1} + }, + { + filename = BASEENTITY .. "chemical-plant/chemical-plant-shadow.png", + width = 312, + height = 222, + repeat_count = 24, + frame_count = 1, + shift = util.by_pixel(27, 6), + draw_as_shadow = true, + scale = 0.52 } - } - }}), - working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].working_visualisations, + }}), + working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, + }, resistances = { { type = "impact", decrease = 100, percent = 90 } }, @@ -2219,7 +1954,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 4, + emissions_per_minute = {pollution = 4}, drain = "16kW" }, energy_usage = "384kW", @@ -2228,43 +1963,35 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 2, - base_level = -1.5, - height = 3, + volume = 500, pipe_connections = { - {type = "input-output", position = {-2, 0}}, - {type = "input-output", position = {2, 0}} + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} } }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {-1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} } } } @@ -2290,14 +2017,16 @@ data:extend({ dying_explosion = "medium-explosion", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -1.9}, {1.5, 1.5}}, - module_specification = { module_slots = 2 }, + + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "chemical-plant", next_upgrade = "nullius-mirror-chemical-plant-3", - animation = data.raw["assembling-machine"]["nullius-chemical-plant-2"].animation, - working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].working_visualisations, + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-chemical-plant-2"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, + }, resistances = data.raw["assembling-machine"]["nullius-chemical-plant-2"].resistances, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["nullius-chemical-plant-2"].working_sound, @@ -2310,43 +2039,35 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 2, - base_level = -1.5, - height = 3, + volume = 500, pipe_connections = { - {type = "input-output", position = {-2, 0}}, - {type = "input-output", position = {2, 0}} + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} } }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {-1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} } } }, @@ -2364,51 +2085,36 @@ data:extend({ dying_explosion = "medium-explosion", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -1.9}, {1.5, 1.5}}, - module_specification = { module_slots = 3 }, + + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "chemical-plant", - - animation = make_4way_animation_from_spritesheet({ layers = - { + + graphics_set = { + animation = make_4way_animation_from_spritesheet({ layers = { - filename = BASEENTITY .. "chemical-plant/chemical-plant.png", - width = 108, - height = 148, - frame_count = 24, - line_length = 12, - shift = util.by_pixel(1, -9), - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant.png", - width = 220, - height = 292, - frame_count = 24, - line_length = 12, - shift = util.by_pixel(1.5, -9), - scale = 0.52, - } - }, - { - filename = BASEENTITY .. "chemical-plant/chemical-plant-shadow.png", - width = 154, - height = 112, - repeat_count = 24, - frame_count = 1, - shift = util.by_pixel(28, 6), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-shadow.png", - width = 312, - height = 222, - repeat_count = 24, - frame_count = 1, - shift = util.by_pixel(27, 6), - draw_as_shadow = true, - scale = 0.52 + { + filename = BASEENTITY .. "chemical-plant/chemical-plant.png", + width = 220, + height = 292, + frame_count = 24, + line_length = 12, + shift = util.by_pixel(1.5, -9), + scale = 0.52, + }, + { + filename = BASEENTITY .. "chemical-plant/chemical-plant-shadow.png", + width = 312, + height = 222, + repeat_count = 24, + frame_count = 1, + shift = util.by_pixel(27, 6), + draw_as_shadow = true, + scale = 0.52 } - } - }}), - working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].working_visualisations, + }}), + working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].working_visualisations, + }, resistances = { { type = "impact", decrease = 100, percent = 90 } }, @@ -2418,7 +2124,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 8, + emissions_per_minute = {pollution = 8}, drain = "40kW" }, energy_usage = "760kW", @@ -2427,45 +2133,35 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 3, - base_level = -2, - height = 4, + volume = 500, pipe_connections = { - {type = "input-output", position = {-2, 0}}, - {type = "input-output", position = {2, 0}} + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} } }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {-1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} } } } @@ -2491,12 +2187,14 @@ data:extend({ dying_explosion = "medium-explosion", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -1.9}, {1.5, 1.5}}, - module_specification = { module_slots = 3 }, + + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "chemical-plant", - animation = data.raw["assembling-machine"]["nullius-chemical-plant-3"].animation, - working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].working_visualisations, + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-chemical-plant-3"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, + }, resistances = data.raw["assembling-machine"]["nullius-chemical-plant-3"].resistances, energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-3"].energy_source, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -2508,45 +2206,35 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-1, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} }, { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 3, - base_level = -2, - height = 4, + volume = 500, pipe_connections = { - {type = "input-output", position = {-2, 0}}, - {type = "input-output", position = {2, 0}} + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} } }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {-1, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} } } } diff --git a/nullius/prototypes/entity/chest.lua b/nullius/prototypes/entity/chest.lua index 3fc533a..8ef3fd1 100644 --- a/nullius/prototypes/entity/chest.lua +++ b/nullius/prototypes/entity/chest.lua @@ -26,7 +26,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "steel-chest/hr-steel-chest.png", + filename = BASEENTITY .. "steel-chest/steel-chest.png", priority = "extra-high", width = 64, height = 80, @@ -34,7 +34,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "steel-chest/hr-steel-chest-shadow.png", + filename = BASEENTITY .. "steel-chest/steel-chest-shadow.png", priority = "extra-high", width = 110, height = 46, @@ -82,7 +82,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "infinity-chest/hr-infinity-chest-shadow.png", + filename = BASEENTITY .. "infinity-chest/infinity-chest-shadow.png", priority = "extra-high", width = 116, height = 48, @@ -107,20 +107,20 @@ data:extend({ dying_explosion = "storage-chest-explosion", collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, - damaged_trigger_effect = data.raw["logistic-container"]["logistic-chest-storage"].damaged_trigger_effect, + damaged_trigger_effect = data.raw["logistic-container"]["storage-chest"].damaged_trigger_effect, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, fast_replaceable_group = "container", - next_upgrade = "logistic-chest-storage", + next_upgrade = "storage-chest", inventory_size = 20, logistic_mode = "storage", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -136,7 +136,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -195,11 +195,11 @@ data:extend({ next_upgrade = "nullius-large-storage-chest-2", inventory_size = 100, logistic_mode = "storage", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -215,7 +215,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -275,18 +275,18 @@ data:extend({ fast_replaceable_group = "container", inventory_size = 150, logistic_mode = "storage", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-storage.png", + filename = BASEENTITY .. "logistic-chest/storage-chest.png", priority = "extra-high", width = 66, height = 74, @@ -295,7 +295,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 96, height = 44, @@ -320,20 +320,20 @@ data:extend({ dying_explosion = "passive-provider-chest-explosion", collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, - damaged_trigger_effect = data.raw["logistic-container"]["logistic-chest-storage"].damaged_trigger_effect, + damaged_trigger_effect = data.raw["logistic-container"]["storage-chest"].damaged_trigger_effect, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, fast_replaceable_group = "container", - next_upgrade = "logistic-chest-passive-provider", + next_upgrade = "passive-provider-chest", inventory_size = 20, logistic_mode = "passive-provider", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -349,7 +349,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -407,11 +407,11 @@ data:extend({ next_upgrade = "nullius-large-supply-chest-2", inventory_size = 100, logistic_mode = "passive-provider", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -427,7 +427,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -486,18 +486,18 @@ data:extend({ fast_replaceable_group = "container", inventory_size = 150, logistic_mode = "passive-provider", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-passive-provider.png", + filename = BASEENTITY .. "logistic-chest/passive-provider-chest.png", priority = "extra-high", width = 66, height = 74, @@ -506,7 +506,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 96, height = 44, @@ -524,7 +524,7 @@ data:extend({ name = "nullius-small-demand-chest-1", icons = data.raw.item["nullius-small-demand-chest-1"].icons, localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-demand-chest"}, 6}, + {"entity-description.nullius-demand-chest"}, tostring(6)}, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-small-demand-chest-1"}, max_health = 300, @@ -533,20 +533,20 @@ data:extend({ dying_explosion = "requester-chest-explosion", collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, - damaged_trigger_effect = data.raw["logistic-container"]["logistic-chest-storage"].damaged_trigger_effect, + damaged_trigger_effect = data.raw["logistic-container"]["storage-chest"].damaged_trigger_effect, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, fast_replaceable_group = "container", - next_upgrade = "logistic-chest-requester", + next_upgrade = "requester-chest", inventory_size = 20, logistic_mode = "requester", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -562,7 +562,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -605,7 +605,7 @@ data:extend({ name = "nullius-large-demand-chest-1", icons = data.raw.item["nullius-large-demand-chest-1"].icons, localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-demand-chest"}, 8}, + {"entity-description.nullius-demand-chest"}, tostring(8)}, flags = {"placeable-neutral", "player-creation"}, minable = { mining_time = 1.2, result = "nullius-large-demand-chest-1" }, max_health = 500, @@ -622,11 +622,11 @@ data:extend({ next_upgrade = "nullius-large-demand-chest-2", inventory_size = 100, logistic_mode = "requester", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -642,7 +642,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -687,7 +687,7 @@ data:extend({ name = "nullius-large-demand-chest-2", icons = data.raw.item["nullius-large-demand-chest-2"].icons, localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-demand-chest"}, 20}, + {"entity-description.nullius-demand-chest"}, tostring(20)}, flags = {"placeable-neutral", "player-creation"}, minable = { mining_time = 1.5, result = "nullius-large-demand-chest-2" }, max_health = 800, @@ -703,18 +703,18 @@ data:extend({ fast_replaceable_group = "container", inventory_size = 150, logistic_mode = "requester", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-requester.png", + filename = BASEENTITY .. "logistic-chest/requester-chest.png", priority = "extra-high", width = 66, height = 74, @@ -723,7 +723,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 96, height = 44, @@ -741,7 +741,7 @@ data:extend({ name = "nullius-small-buffer-chest-1", icons = data.raw.item["nullius-small-buffer-chest-1"].icons, localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-buffer-chest"}, 4}, + {"entity-description.nullius-buffer-chest"}, tostring(4)}, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-small-buffer-chest-1"}, max_health = 300, @@ -750,20 +750,20 @@ data:extend({ dying_explosion = "buffer-chest-explosion", collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, - damaged_trigger_effect = data.raw["logistic-container"]["logistic-chest-storage"].damaged_trigger_effect, + damaged_trigger_effect = data.raw["logistic-container"]["storage-chest"].damaged_trigger_effect, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, fast_replaceable_group = "container", - next_upgrade = "logistic-chest-buffer", + next_upgrade = "buffer-chest", inventory_size = 20, logistic_mode = "buffer", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -779,7 +779,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -822,7 +822,7 @@ data:extend({ name = "nullius-large-buffer-chest-1", icons = data.raw.item["nullius-large-buffer-chest-1"].icons, localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-buffer-chest"}, 5}, + {"entity-description.nullius-buffer-chest"}, tostring(5)}, flags = {"placeable-neutral", "player-creation"}, minable = { mining_time = 1.2, result = "nullius-large-buffer-chest-1" }, max_health = 500, @@ -839,11 +839,11 @@ data:extend({ next_upgrade = "nullius-large-buffer-chest-2", inventory_size = 100, logistic_mode = "buffer", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -859,7 +859,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -904,7 +904,7 @@ data:extend({ name = "nullius-large-buffer-chest-2", icons = data.raw.item["nullius-large-buffer-chest-2"].icons, localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-buffer-chest"}, 8}, + {"entity-description.nullius-buffer-chest"}, tostring(8)}, flags = {"placeable-neutral", "player-creation"}, minable = { mining_time = 1.5, result = "nullius-large-buffer-chest-2" }, max_health = 800, @@ -920,18 +920,18 @@ data:extend({ fast_replaceable_group = "container", inventory_size = 150, logistic_mode = "buffer", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-buffer.png", + filename = BASEENTITY .. "logistic-chest/buffer-chest.png", priority = "extra-high", width = 66, height = 74, @@ -940,7 +940,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 96, height = 44, @@ -965,20 +965,20 @@ data:extend({ dying_explosion = "active-provider-chest-explosion", collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, - damaged_trigger_effect = data.raw["logistic-container"]["logistic-chest-storage"].damaged_trigger_effect, + damaged_trigger_effect = data.raw["logistic-container"]["storage-chest"].damaged_trigger_effect, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, fast_replaceable_group = "container", - next_upgrade = "logistic-chest-active-provider", + next_upgrade = "active-provider-chest", inventory_size = 20, logistic_mode = "active-provider", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -994,7 +994,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -1052,11 +1052,11 @@ data:extend({ next_upgrade = "nullius-large-dispatch-chest-2", inventory_size = 100, logistic_mode = "active-provider", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -1072,7 +1072,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 86, height = 44, @@ -1131,18 +1131,18 @@ data:extend({ fast_replaceable_group = "container", inventory_size = 150, logistic_mode = "active-provider", - open_sound = data.raw["logistic-container"]["logistic-chest-storage"].open_sound, - close_sound = data.raw["logistic-container"]["logistic-chest-storage"].close_sound, - animation_sound = data.raw["logistic-container"]["logistic-chest-storage"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["logistic-chest-storage"].vehicle_impact_sound, - opened_duration = data.raw["logistic-container"]["logistic-chest-storage"].opened_duration, + open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, + close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, + animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, + vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-active-provider.png", + filename = BASEENTITY .. "logistic-chest/active-provider-chest.png", priority = "extra-high", width = 66, height = 74, @@ -1151,7 +1151,7 @@ data:extend({ scale = 0.9 }, { - filename = BASEENTITY .. "logistic-chest/hr-logistic-chest-shadow.png", + filename = BASEENTITY .. "logistic-chest/logistic-chest-shadow.png", priority = "extra-high", width = 96, height = 44, diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index e0fc795..bdb4ee7 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -48,20 +48,12 @@ data:extend({ base_picture_render_layer = "lower-object-above-shadow", cannon_barrel_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_base_pictures, + cannon_base_shift = data.raw["artillery-turret"]["artillery-turret"].cannon_base_shift, base_picture = { layers = { { - filename = BASEENTITY .. "artillery-turret/artillery-turret-base.png", - priority = "high", - width = 104, - height = 100, - direction_count = 1, - frame_count = 1, - shift = util.by_pixel(-0, 22), - tint = {0.7, 0.7, 0.9}, - hr_version = { - filename = BASEENTITY .. "artillery-turret/hr-artillery-turret-base.png", + filename = BASEENTITY .. "artillery-turret/artillery-turret-base.png", priority = "high", line_length = 1, width = 207, @@ -71,20 +63,9 @@ data:extend({ shift = util.by_pixel(-0, 22), scale = 0.5, tint = {0.7, 0.7, 0.9} - } }, { - filename = BASEENTITY .. "artillery-turret/artillery-turret-base-shadow.png", - priority = "high", - line_length = 1, - width = 138, - height = 75, - frame_count = 1, - direction_count = 1, - shift = util.by_pixel(18, 38), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "artillery-turret/hr-artillery-turret-base-shadow.png", + filename = BASEENTITY .. "artillery-turret/artillery-turret-base-shadow.png", priority = "high", line_length = 1, width = 277, @@ -94,7 +75,6 @@ data:extend({ shift = util.by_pixel(18, 38), draw_as_shadow = true, scale = 0.5 - } } } } @@ -143,19 +123,12 @@ data:extend({ base_picture_render_layer = "lower-object-above-shadow", cannon_barrel_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_base_pictures, + cannon_base_shift = data.raw["artillery-turret"]["artillery-turret"].cannon_base_shift, base_picture = { layers = { { - filename = BASEENTITY .. "artillery-turret/artillery-turret-base.png", - priority = "high", - width = 104, - height = 100, - direction_count = 1, - frame_count = 1, - shift = util.by_pixel(-0, 22), - hr_version = { - filename = BASEENTITY .. "artillery-turret/hr-artillery-turret-base.png", + filename = BASEENTITY .. "artillery-turret/artillery-turret-base.png", priority = "high", line_length = 1, width = 207, @@ -164,20 +137,9 @@ data:extend({ direction_count = 1, shift = util.by_pixel(-0, 22), scale = 0.5 - } }, { - filename = BASEENTITY .. "artillery-turret/artillery-turret-base-shadow.png", - priority = "high", - line_length = 1, - width = 138, - height = 75, - frame_count = 1, - direction_count = 1, - shift = util.by_pixel(18, 38), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "artillery-turret/hr-artillery-turret-base-shadow.png", + filename = BASEENTITY .. "artillery-turret/artillery-turret-base-shadow.png", priority = "high", line_length = 1, width = 277, @@ -187,7 +149,6 @@ data:extend({ shift = util.by_pixel(18, 38), draw_as_shadow = true, scale = 0.5 - } } } } @@ -203,13 +164,13 @@ data:extend({ height_from_ground = 280 / 64, picture = { - filename = BASEENTITY .. "distractor-robot/hr-distractor-robot.png", + filename = BASEENTITY .. "distractor-robot/distractor-robot.png", width = 72, height = 62, scale = 0.5 }, shadow = { - filename = BASEENTITY .. "distractor-robot/hr-distractor-robot-shadow.png", + filename = BASEENTITY .. "distractor-robot/distractor-robot-shadow.png", width = 96, height = 59, scale = 0.5 @@ -401,7 +362,7 @@ local function create_projectile(base_name, suffix, drone_picture, drone_shadow) local prefix = "nullius-"..base_name if (drone_picture == nil) then drone_picture = { - filename = BASEENTITY .. "destroyer-robot/hr-destroyer-robot.png", + filename = BASEENTITY .. "destroyer-robot/destroyer-robot.png", width = 88, height = 77, x = 264, @@ -410,7 +371,7 @@ local function create_projectile(base_name, suffix, drone_picture, drone_shadow) end if (drone_shadow == nil) then drone_shadow = { - filename = BASEENTITY .. "destroyer-robot/hr-destroyer-robot-shadow.png", + filename = BASEENTITY .. "destroyer-robot/destroyer-robot-shadow.png", width = 108, height = 66, x = 324, @@ -485,14 +446,14 @@ end local function create_terraform(base_name, suffix) local picture = { - filename = BASEENTITY .. "destroyer-robot/hr-destroyer-robot.png", + filename = BASEENTITY .. "destroyer-robot/destroyer-robot.png", width = 88, height = 77, x = 264, scale = 0.5 } local shadow = { - filename = BASEENTITY .. "destroyer-robot/hr-destroyer-robot-shadow.png", + filename = BASEENTITY .. "destroyer-robot/destroyer-robot-shadow.png", width = 108, height = 66, x = 324, @@ -523,14 +484,14 @@ local function create_farmer(base_name) chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, height_from_ground = 280 / 64, picture = { - filename = BASEENTITY .. "defender-robot/hr-defender-robot.png", + filename = BASEENTITY .. "defender-robot/defender-robot.png", width = 56, height = 59, x = 392, scale = 0.6 }, shadow = { - filename = BASEENTITY .. "defender-robot/hr-defender-robot-shadow.png", + filename = BASEENTITY .. "defender-robot/defender-robot-shadow.png", width = 88, height = 50, x = 616, diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 5636cc3..e480ab8 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -8,7 +8,7 @@ function accumulator_picture(tint, repeat_count) { layers = { { - filename = BASEENTITY .. "accumulator/hr-accumulator.png", + filename = BASEENTITY .. "accumulator/accumulator.png", priority = "high", width = 130, height = 189, @@ -19,7 +19,7 @@ function accumulator_picture(tint, repeat_count) scale = 0.75 }, { - filename = BASEENTITY .. "accumulator/hr-accumulator-shadow.png", + filename = BASEENTITY .. "accumulator/accumulator-shadow.png", priority = "high", width = 234, height = 106, @@ -55,7 +55,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "solar-panel/hr-solar-panel.png", + filename = BASEENTITY .. "solar-panel/solar-panel.png", priority = "high", width = 230, height = 224, @@ -64,7 +64,7 @@ data:extend({ scale = 0.64 }, { - filename = BASEENTITY .. "solar-panel/hr-solar-panel-shadow.png", + filename = BASEENTITY .. "solar-panel/solar-panel-shadow.png", priority = "high", width = 220, height = 180, @@ -77,7 +77,7 @@ data:extend({ overlay = { layers = { { - filename = BASEENTITY .. "solar-panel/hr-solar-panel-shadow-overlay.png", + filename = BASEENTITY .. "solar-panel/solar-panel-shadow-overlay.png", priority = "high", width = 214, height = 180, @@ -112,7 +112,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "solar-panel/hr-solar-panel.png", + filename = BASEENTITY .. "solar-panel/solar-panel.png", priority = "high", width = 230, height = 224, @@ -146,7 +146,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "solar-panel/hr-solar-panel.png", + filename = BASEENTITY .. "solar-panel/solar-panel.png", priority = "high", width = 230, height = 224, @@ -178,7 +178,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "solar-panel/hr-solar-panel.png", + filename = BASEENTITY .. "solar-panel/solar-panel.png", priority = "high", width = 230, height = 224, @@ -203,7 +203,7 @@ data:extend({ next_upgrade = "nullius-grid-battery-2", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -2.25}, {1.5, 1.5}}, + energy_source = { type = "electric", buffer_capacity = "15MJ", @@ -212,43 +212,46 @@ data:extend({ output_flow_limit = "500kW" }, resistances = { { type = "impact", decrease = 100, percent = 90 } }, - picture = accumulator_picture({ r=0.9, g=0.85, b=0.7, a=1 }), - charge_animation = { - layers = { - accumulator_picture({ r=0.9, g=0.85, b=0.7, a=1 } , 24), - { - filename = BASEENTITY .. "accumulator/hr-accumulator-charge.png", - priority = "high", - width = 178, - height = 206, - line_length = 6, - frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(0, -33), - scale = 0.75 + + chargable_graphics = { + picture = accumulator_picture({ r=0.9, g=0.85, b=0.7, a=1 }), + charge_animation = { + layers = { + accumulator_picture({ r=0.9, g=0.85, b=0.7, a=1 } , 24), + { + filename = BASEENTITY .. "accumulator/accumulator-charge.png", + priority = "high", + width = 178, + height = 206, + line_length = 6, + frame_count = 24, + blend_mode = "additive", + shift = util.by_pixel(0, -33), + scale = 0.75 + } } - } - }, - charge_cooldown = 30, - charge_light = {intensity = 0.3, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, - discharge_animation = { - layers = { - accumulator_picture({ r=0.9, g=0.85, b=0.7, a=1 } , 24), - { - filename = BASEENTITY .. "accumulator/hr-accumulator-discharge.png", - priority = "high", - width = 170, - height = 210, - line_length = 6, - frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(-1.5, -34.5), - scale = 0.75 + }, + charge_cooldown = 30, + charge_light = {intensity = 0.3, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, + discharge_animation = { + layers = { + accumulator_picture({ r=0.9, g=0.85, b=0.7, a=1 } , 24), + { + filename = BASEENTITY .. "accumulator/accumulator-discharge.png", + priority = "high", + width = 170, + height = 210, + line_length = 6, + frame_count = 24, + blend_mode = "additive", + shift = util.by_pixel(-1.5, -34.5), + scale = 0.75 + } } - } + }, + discharge_cooldown = 60, + discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}} }, - discharge_cooldown = 60, - discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw.accumulator["accumulator"].working_sound, circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, @@ -269,7 +272,7 @@ data:extend({ next_upgrade = "nullius-grid-battery-3", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -2.25}, {1.5, 1.5}}, + energy_source = { type = "electric", buffer_capacity = "40MJ", @@ -283,7 +286,7 @@ data:extend({ layers = { accumulator_picture({ r=1, g=1, b=1, a=1 } , 24), { - filename = BASEENTITY .. "accumulator/hr-accumulator-charge.png", + filename = BASEENTITY .. "accumulator/accumulator-charge.png", priority = "high", width = 178, height = 206, @@ -301,7 +304,7 @@ data:extend({ layers = { accumulator_picture({ r=1, g=1, b=1, a=1 } , 24), { - filename = BASEENTITY .. "accumulator/hr-accumulator-discharge.png", + filename = BASEENTITY .. "accumulator/accumulator-discharge.png", priority = "high", width = 170, height = 210, @@ -334,7 +337,7 @@ data:extend({ fast_replaceable_group = "grid-battery", collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - drawing_box = {{-1.5, -2.25}, {1.5, 1.5}}, + energy_source = { type = "electric", buffer_capacity = "100MJ", @@ -348,7 +351,7 @@ data:extend({ layers = { accumulator_picture({ r=1, g=0.85, b=1, a=1 } , 24), { - filename = BASEENTITY .. "accumulator/hr-accumulator-charge.png", + filename = BASEENTITY .. "accumulator/accumulator-charge.png", priority = "high", width = 178, height = 206, @@ -366,7 +369,7 @@ data:extend({ layers = { accumulator_picture({ r=1, g=0.85, b=1, a=1 } , 24), { - filename = BASEENTITY .. "accumulator/hr-accumulator-discharge.png", + filename = BASEENTITY .. "accumulator/accumulator-discharge.png", priority = "high", width = 170, height = 210, @@ -411,35 +414,27 @@ data:extend({ selection_box = {{-1.5, -1}, {1.5, 1}}, fluid_boxes = { { - base_area = 2, - height = 2, - base_level = -1, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {-2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {-1, 0.5}, direction = defines.direction.west }}, production_type = "input" }, { - base_area = 2, - height = 2, - base_level = -1, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {1, 0.5}, direction = defines.direction.east }}, production_type = "input" }, { - base_area = 4, - height = 2, - base_level = 5, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, -1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, -0.5}, direction = defines.direction.north }}, production_type = "output" }, { - base_area = 4, - height = 2, - base_level = 5, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, 1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, 0.5}, direction = defines.direction.south }}, production_type = "output" } }, @@ -449,253 +444,191 @@ data:extend({ sound = { filename = "__base__/sound/boiler.ogg", volume = 0.8 }, max_sounds_per_type = 3 }, - - animation = { - north = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-N-idle.png", - priority = "extra-high", - width = 131, - height = 108, - shift = util.by_pixel(-0.5, 4), - tint = {0.77, 0.77, 0.66, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-N-idle.png", - priority = "extra-high", - width = 269, - height = 221, - shift = util.by_pixel(-1.25, 5.25), - tint = {0.77, 0.77, 0.66, 1}, - scale = 0.5 + + graphics_set = { + animation = { + north = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-N-idle.png", + priority = "extra-high", + width = 269, + height = 221, + shift = util.by_pixel(-1.25, 5.25), + tint = {0.77, 0.77, 0.66, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-N-shadow.png", + priority = "extra-high", + width = 274, + height = 164, + scale = 0.5, + shift = util.by_pixel(20.5, 9), + draw_as_shadow = true } - }, - { - filename = BASEENTITY .. "boiler/boiler-N-shadow.png", - priority = "extra-high", - width = 137, - height = 82, - shift = util.by_pixel(20.5, 9), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-N-shadow.png", - priority = "extra-high", - width = 274, - height = 164, - scale = 0.5, - shift = util.by_pixel(20.5, 9), - draw_as_shadow = true + } + }, + east = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-E-idle.png", + priority = "extra-high", + width = 216, + height = 301, + shift = util.by_pixel(-3, 1.25), + tint = {0.77, 0.77, 0.66, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-E-shadow.png", + priority = "extra-high", + width = 184, + height = 194, + scale = 0.5, + shift = util.by_pixel(30, 9.5), + draw_as_shadow = true } } - } - }, - east = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-E-idle.png", - priority = "extra-high", - width = 105, - height = 147, - shift = util.by_pixel(-3.5, -0.5), - tint = {0.77, 0.77, 0.66, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-E-idle.png", - priority = "extra-high", - width = 216, - height = 301, - shift = util.by_pixel(-3, 1.25), - tint = {0.77, 0.77, 0.66, 1}, - scale = 0.5 + }, + south = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-S-idle.png", + priority = "extra-high", + width = 260, + height = 192, + shift = util.by_pixel(4, 13), + tint = {0.77, 0.77, 0.66, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-S-shadow.png", + priority = "extra-high", + width = 311, + height = 131, + scale = 0.5, + shift = util.by_pixel(29.75, 15.75), + draw_as_shadow = true } - }, - { - filename = BASEENTITY .. "boiler/boiler-E-shadow.png", - priority = "extra-high", - width = 92, - height = 97, - shift = util.by_pixel(30, 9.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-E-shadow.png", - priority = "extra-high", - width = 184, - height = 194, - scale = 0.5, - shift = util.by_pixel(30, 9.5), - draw_as_shadow = true + } + }, + west = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-W-idle.png", + priority = "extra-high", + width = 196, + height = 273, + shift = util.by_pixel(1.5, 7.75), + tint = {0.77, 0.77, 0.66, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-W-shadow.png", + priority = "extra-high", + width = 206, + height = 218, + scale = 0.5, + shift = util.by_pixel(19.5, 6.5), + draw_as_shadow = true } } } }, - south = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-S-idle.png", + + working_visualisations = { + { + north_animation = { + filename = ENTITYPATH .. "boiler/blue-fire-north.png", priority = "extra-high", - width = 128, - height = 95, - shift = util.by_pixel(3, 12.5), - tint = {0.77, 0.77, 0.66, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-S-idle.png", - priority = "extra-high", - width = 260, - height = 192, - shift = util.by_pixel(4, 13), - tint = {0.77, 0.77, 0.66, 1}, - scale = 0.5 - } + frame_count = 64, + line_length = 8, + width = 26, + height = 26, + animation_speed = 0.5, + shift = util.by_pixel(0, -8.5), + scale = 0.5 }, - { - filename = BASEENTITY .. "boiler/boiler-S-shadow.png", + east_animation = { + filename = ENTITYPATH .. "boiler/blue-fire-east.png", priority = "extra-high", - width = 156, - height = 66, - shift = util.by_pixel(30, 16), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-S-shadow.png", - priority = "extra-high", - width = 311, - height = 131, - scale = 0.5, - shift = util.by_pixel(29.75, 15.75), - draw_as_shadow = true - } - } - } - }, - west = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-W-idle.png", + frame_count = 64, + line_length = 8, + width = 28, + height = 28, + animation_speed = 0.5, + shift = util.by_pixel(-9.5, -22), + scale = 0.5 + }, + south_animation = { + filename = ENTITYPATH .. "boiler/blue-fire-south.png", priority = "extra-high", - width = 96, - height = 132, - shift = util.by_pixel(1, 5), - tint = {0.77, 0.77, 0.66, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-W-idle.png", - priority = "extra-high", - width = 196, - height = 273, - shift = util.by_pixel(1.5, 7.75), - tint = {0.77, 0.77, 0.66, 1}, - scale = 0.5 - } + frame_count = 64, + line_length = 8, + width = 26, + height = 16, + animation_speed = 0.5, + shift = util.by_pixel(-1, -26.5), + scale = 0.5 }, - { - filename = BASEENTITY .. "boiler/boiler-W-shadow.png", + west_animation = { + filename = ENTITYPATH .. "boiler/blue-fire-west.png", priority = "extra-high", - width = 103, - height = 109, - shift = util.by_pixel(19.5, 6.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-W-shadow.png", - priority = "extra-high", - width = 206, - height = 218, - scale = 0.5, - shift = util.by_pixel(19.5, 6.5), - draw_as_shadow = true - } + frame_count = 64, + line_length = 8, + width = 30, + height = 29, + animation_speed = 0.5, + shift = util.by_pixel(13, -23.25), + scale = 0.5 } - } - } - }, - - working_visualisations = { - { - north_animation = { - filename = ENTITYPATH .. "boiler/blue-fire-north.png", - priority = "extra-high", - frame_count = 64, - line_length = 8, - width = 26, - height = 26, - animation_speed = 0.5, - shift = util.by_pixel(0, -8.5), - scale = 0.5 - }, - east_animation = { - filename = ENTITYPATH .. "boiler/blue-fire-east.png", - priority = "extra-high", - frame_count = 64, - line_length = 8, - width = 28, - height = 28, - animation_speed = 0.5, - shift = util.by_pixel(-9.5, -22), - scale = 0.5 }, - south_animation = { - filename = ENTITYPATH .. "boiler/blue-fire-south.png", - priority = "extra-high", - frame_count = 64, - line_length = 8, - width = 26, - height = 16, - animation_speed = 0.5, - shift = util.by_pixel(-1, -26.5), - scale = 0.5 - }, - west_animation = { - filename = ENTITYPATH .. "boiler/blue-fire-west.png", - priority = "extra-high", - frame_count = 64, - line_length = 8, - width = 30, - height = 29, - animation_speed = 0.5, - shift = util.by_pixel(13, -23.25), - scale = 0.5 - } - }, - { - north_animation = { - filename = ENTITYPATH .. "boiler/blue-glow-north.png", - priority = "extra-high", - frame_count = 1, - width = 200, - height = 173, - shift = util.by_pixel(-1, -6.75), - blend_mode = "additive", - scale = 0.5 - }, - east_animation = { - filename = ENTITYPATH .. "boiler/blue-glow-east.png", - priority = "extra-high", - frame_count = 1, - width = 139, - height = 244, - shift = util.by_pixel(0.25, -13), - blend_mode = "additive", - scale = 0.5 - }, - south_animation = { - filename = ENTITYPATH .. "boiler/blue-glow-south.png", - priority = "extra-high", - frame_count = 1, - width = 200, - height = 162, - shift = util.by_pixel(1, 5.5), - blend_mode = "additive", - scale = 0.5 - }, - west_animation = { - filename = ENTITYPATH .. "boiler/blue-glow-west.png", - priority = "extra-high", - frame_count = 1, - width = 136, - height = 217, - shift = util.by_pixel(2, -6.25), - blend_mode = "additive", - scale = 0.5 + { + north_animation = { + filename = ENTITYPATH .. "boiler/blue-glow-north.png", + priority = "extra-high", + frame_count = 1, + width = 200, + height = 173, + shift = util.by_pixel(-1, -6.75), + blend_mode = "additive", + scale = 0.5 + }, + east_animation = { + filename = ENTITYPATH .. "boiler/blue-glow-east.png", + priority = "extra-high", + frame_count = 1, + width = 139, + height = 244, + shift = util.by_pixel(0.25, -13), + blend_mode = "additive", + scale = 0.5 + }, + south_animation = { + filename = ENTITYPATH .. "boiler/blue-glow-south.png", + priority = "extra-high", + frame_count = 1, + width = 200, + height = 162, + shift = util.by_pixel(1, 5.5), + blend_mode = "additive", + scale = 0.5 + }, + west_animation = { + filename = ENTITYPATH .. "boiler/blue-glow-west.png", + priority = "extra-high", + frame_count = 1, + width = 136, + height = 217, + shift = util.by_pixel(2, -6.25), + blend_mode = "additive", + scale = 0.5 + } } } } @@ -710,8 +643,8 @@ mcc1.placeable_by = {item = "nullius-combustion-chamber-1", count = 1} mcc1.next_upgrade = "nullius-mirror-combustion-chamber-2" mcc1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-combustion-chamber-1"}} -mcc1.fluid_boxes[1].pipe_connections[1].position = {2, 0.5} -mcc1.fluid_boxes[2].pipe_connections[1].position = {-2, 0.5} +mcc1.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +mcc1.fluid_boxes[2].pipe_connections[1].position = {-1, 0.5} data:extend({ mcc1, @@ -740,196 +673,126 @@ data:extend({ fluid_boxes = { { - base_area = 5, - height = 2, - base_level = -2, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {-2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {-1, 0.5}, direction = defines.direction.west }}, production_type = "input" }, { - base_area = 5, - height = 2, - base_level = -2, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {1, 0.5}, direction = defines.direction.east }}, production_type = "input" }, { - base_area = 5, - height = 2, - base_level = 6, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, -1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, -0.5}, direction = defines.direction.north }}, production_type = "output" }, { - base_area = 5, - height = 2, - base_level = 6, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, 1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, 0.5}, direction = defines.direction.south }}, production_type = "output" } }, energy_usage = "1kW", energy_source = { type = "void" }, working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].working_visualisations, - - animation = { - north = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-N-idle.png", - priority = "extra-high", - width = 131, - height = 108, - shift = util.by_pixel(-0.5, 4), - tint = {0.8, 0.8, 1, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-N-idle.png", - priority = "extra-high", - width = 269, - height = 221, - shift = util.by_pixel(-1.25, 5.25), - tint = {0.8, 0.8, 1, 1}, - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-N-shadow.png", - priority = "extra-high", - width = 137, - height = 82, - shift = util.by_pixel(20.5, 9), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-N-shadow.png", - priority = "extra-high", - width = 274, - height = 164, - scale = 0.5, - shift = util.by_pixel(20.5, 9), - draw_as_shadow = true + + graphics_set = { + working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.working_visualisations, + animation = { + north = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-N-idle.png", + priority = "extra-high", + width = 269, + height = 221, + shift = util.by_pixel(-1.25, 5.25), + tint = {0.8, 0.8, 1, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-N-shadow.png", + priority = "extra-high", + width = 274, + height = 164, + scale = 0.5, + shift = util.by_pixel(20.5, 9), + draw_as_shadow = true } } - } - }, - east = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-E-idle.png", - priority = "extra-high", - width = 105, - height = 147, - shift = util.by_pixel(-3.5, -0.5), - tint = {0.8, 0.8, 1, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-E-idle.png", - priority = "extra-high", - width = 216, - height = 301, - shift = util.by_pixel(-3, 1.25), - tint = {0.8, 0.8, 1, 1}, - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-E-shadow.png", - priority = "extra-high", - width = 92, - height = 97, - shift = util.by_pixel(30, 9.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-E-shadow.png", - priority = "extra-high", - width = 184, - height = 194, - scale = 0.5, - shift = util.by_pixel(30, 9.5), - draw_as_shadow = true + }, + east = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-E-idle.png", + priority = "extra-high", + width = 216, + height = 301, + shift = util.by_pixel(-3, 1.25), + tint = {0.8, 0.8, 1, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-E-shadow.png", + priority = "extra-high", + width = 184, + height = 194, + scale = 0.5, + shift = util.by_pixel(30, 9.5), + draw_as_shadow = true } } - } - }, - south = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-S-idle.png", - priority = "extra-high", - width = 128, - height = 95, - shift = util.by_pixel(3, 12.5), - tint = {0.8, 0.8, 1, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-S-idle.png", - priority = "extra-high", - width = 260, - height = 192, - shift = util.by_pixel(4, 13), - tint = {0.8, 0.8, 1, 1}, - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-S-shadow.png", - priority = "extra-high", - width = 156, - height = 66, - shift = util.by_pixel(30, 16), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-S-shadow.png", - priority = "extra-high", - width = 311, - height = 131, - scale = 0.5, - shift = util.by_pixel(29.75, 15.75), - draw_as_shadow = true + }, + south = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-S-idle.png", + priority = "extra-high", + width = 260, + height = 192, + shift = util.by_pixel(4, 13), + tint = {0.8, 0.8, 1, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-S-shadow.png", + priority = "extra-high", + width = 311, + height = 131, + scale = 0.5, + shift = util.by_pixel(29.75, 15.75), + draw_as_shadow = true } } - } - }, - west = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-W-idle.png", - priority = "extra-high", - width = 96, - height = 132, - shift = util.by_pixel(1, 5), - tint = {0.8, 0.8, 1, 1}, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-W-idle.png", - priority = "extra-high", - width = 196, - height = 273, - shift = util.by_pixel(1.5, 7.75), - tint = {0.8, 0.8, 1, 1}, - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-W-shadow.png", - priority = "extra-high", - width = 103, - height = 109, - shift = util.by_pixel(19.5, 6.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-W-shadow.png", - priority = "extra-high", - width = 206, - height = 218, - scale = 0.5, - shift = util.by_pixel(19.5, 6.5), - draw_as_shadow = true + }, + west = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-W-idle.png", + priority = "extra-high", + width = 196, + height = 273, + shift = util.by_pixel(1.5, 7.75), + tint = {0.8, 0.8, 1, 1}, + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-W-shadow.png", + priority = "extra-high", + width = 206, + height = 218, + scale = 0.5, + shift = util.by_pixel(19.5, 6.5), + draw_as_shadow = true } } } @@ -964,40 +827,31 @@ data:extend({ energy_usage = "1kW", energy_source = { type = "void" }, working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_visualisations, - animation = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].animation, - + graphics_set = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].graphics_set, + fluid_boxes = { { - base_area = 5, - height = 2, - base_level = -2, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {1, 0.5}, direction = defines.direction.east }}, production_type = "input" }, { - base_area = 5, - height = 2, - base_level = -2, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {-2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {-1, 0.5}, direction = defines.direction.west }}, production_type = "input" }, { - base_area = 5, - height = 2, - base_level = 6, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, -1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, -0.5}, direction = defines.direction.north }}, production_type = "output" }, { - base_area = 5, - height = 2, - base_level = 6, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, 1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, 0.5}, direction = defines.direction.south }}, production_type = "output" } } @@ -1024,153 +878,95 @@ data:extend({ energy_usage = "1kW", energy_source = { type = "void" }, working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_visualisations, - - animation = { - north = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-N-idle.png", - priority = "extra-high", - width = 131, - height = 108, - shift = util.by_pixel(-0.5, 4), - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-N-idle.png", - priority = "extra-high", - width = 269, - height = 221, - shift = util.by_pixel(-1.25, 5.25), - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-N-shadow.png", - priority = "extra-high", - width = 137, - height = 82, - shift = util.by_pixel(20.5, 9), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-N-shadow.png", - priority = "extra-high", - width = 274, - height = 164, - scale = 0.5, - shift = util.by_pixel(20.5, 9), - draw_as_shadow = true + + graphics_set = { + working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].graphics_set.working_visualisations, + animation = { + north = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-N-idle.png", + priority = "extra-high", + width = 269, + height = 221, + shift = util.by_pixel(-1.25, 5.25), + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-N-shadow.png", + priority = "extra-high", + width = 274, + height = 164, + scale = 0.5, + shift = util.by_pixel(20.5, 9), + draw_as_shadow = true } } - } - }, - east = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-E-idle.png", - priority = "extra-high", - width = 105, - height = 147, - shift = util.by_pixel(-3.5, -0.5), - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-E-idle.png", - priority = "extra-high", - width = 216, - height = 301, - shift = util.by_pixel(-3, 1.25), - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-E-shadow.png", - priority = "extra-high", - width = 92, - height = 97, - shift = util.by_pixel(30, 9.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-E-shadow.png", - priority = "extra-high", - width = 184, - height = 194, - scale = 0.5, - shift = util.by_pixel(30, 9.5), - draw_as_shadow = true + }, + east = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-E-idle.png", + priority = "extra-high", + width = 216, + height = 301, + shift = util.by_pixel(-3, 1.25), + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-E-shadow.png", + priority = "extra-high", + width = 184, + height = 194, + scale = 0.5, + shift = util.by_pixel(30, 9.5), + draw_as_shadow = true } } - } - }, - south = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-S-idle.png", - priority = "extra-high", - width = 128, - height = 95, - shift = util.by_pixel(3, 12.5), - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-S-idle.png", - priority = "extra-high", - width = 260, - height = 192, - shift = util.by_pixel(4, 13), - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-S-shadow.png", - priority = "extra-high", - width = 156, - height = 66, - shift = util.by_pixel(30, 16), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-S-shadow.png", - priority = "extra-high", - width = 311, - height = 131, - scale = 0.5, - shift = util.by_pixel(29.75, 15.75), - draw_as_shadow = true + }, + south = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-S-idle.png", + priority = "extra-high", + width = 260, + height = 192, + shift = util.by_pixel(4, 13), + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-S-shadow.png", + priority = "extra-high", + width = 311, + height = 131, + scale = 0.5, + shift = util.by_pixel(29.75, 15.75), + draw_as_shadow = true } } - } - }, - west = { - frame_count = 1, - layers = { - { - filename = BASEENTITY .. "boiler/boiler-W-idle.png", - priority = "extra-high", - width = 96, - height = 132, - shift = util.by_pixel(1, 5), - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-W-idle.png", - priority = "extra-high", - width = 196, - height = 273, - shift = util.by_pixel(1.5, 7.75), - scale = 0.5 - } - }, - { - filename = BASEENTITY .. "boiler/boiler-W-shadow.png", - priority = "extra-high", - width = 103, - height = 109, - shift = util.by_pixel(19.5, 6.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "boiler/hr-boiler-W-shadow.png", - priority = "extra-high", - width = 206, - height = 218, - scale = 0.5, - shift = util.by_pixel(19.5, 6.5), - draw_as_shadow = true + }, + west = { + frame_count = 1, + layers = { + { + filename = BASEENTITY .. "boiler/boiler-W-idle.png", + priority = "extra-high", + width = 196, + height = 273, + shift = util.by_pixel(1.5, 7.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "boiler/boiler-W-shadow.png", + priority = "extra-high", + width = 206, + height = 218, + scale = 0.5, + shift = util.by_pixel(19.5, 6.5), + draw_as_shadow = true } } } @@ -1205,15 +1001,14 @@ data:extend({ energy_usage = "1kW", energy_source = { type = "void" }, working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-3"].working_visualisations, - animation = data.raw["assembling-machine"]["nullius-combustion-chamber-3"].animation + graphics_set = data.raw["assembling-machine"]["nullius-combustion-chamber-3"].graphics_set }, { type = "assembling-machine", name = "nullius-surge-compressor-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.6, 0.6, 0.4} }}, @@ -1233,7 +1028,7 @@ data:extend({ crafting_speed = 1, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "5kW", output_flow_limit = "0kW", usage_priority = "tertiary", @@ -1249,109 +1044,107 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - height = 2, - pipe_connections = {{ type="input", position = {2.5, 1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, 1.5}, direction = defines.direction.east }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 8, - height = 2, - base_area = 4, - pipe_connections = {{ type="output", position = {-2.5, -1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.west }} } }, - animation = { - north = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.6, 0.4} - }, - east = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.6, 0.4} + graphics_set = { + animation = { + north = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.6, 0.4} + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.6, 0.4} + } } - } - }, - south = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.6, 0.4} - }, - west = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.6, 0.4} + }, + south = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.6, 0.4} + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.6, 0.4} + } } } } @@ -1364,7 +1157,7 @@ data:extend({ type = "assembling-machine", name = "nullius-priority-compressor-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.6, 0.51, 0.34} }}, @@ -1384,104 +1177,106 @@ data:extend({ crafting_speed = 0.5, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "5kW", usage_priority = "secondary-input" }, energy_usage = "495kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, - fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, - - animation = { - north = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.51, 0.34} - }, - east = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.51, 0.34} - } - } - }, - south = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.51, 0.34} - }, - west = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.5 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.5, - tint = {0.6, 0.51, 0.34} + vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, + + graphics_set = { + animation = { + north = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.51, 0.34} + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.51, 0.34} + } + } + }, + south = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.51, 0.34} + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.5 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.5, + tint = {0.6, 0.51, 0.34} + } } } } @@ -1492,7 +1287,7 @@ data:extend({ type = "assembling-machine", name = "nullius-surge-compressor-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.65, 0.65, 0.9} }}, @@ -1512,7 +1307,7 @@ data:extend({ crafting_speed = 3, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "15kW", output_flow_limit = "0kW", usage_priority = "tertiary", @@ -1526,109 +1321,107 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 15, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {2.5, 1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, 1.5}, direction = defines.direction.east }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 10, - height = 3, - base_area = 5, - pipe_connections = {{ type="output", position = {-2.5, -1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.west }} } }, - animation = { - north = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.65, 0.9} - }, - east = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.3 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.3 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.65, 0.9} + graphics_set = { + animation = { + north = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.65, 0.9} + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.3 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.3 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.65, 0.9} + } } - } - }, - south = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.65, 0.9} - }, - west = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.3 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.3 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.65, 0.9} + }, + south = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.65, 0.9} + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.3 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.3 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.65, 0.9} + } } } } @@ -1641,7 +1434,7 @@ data:extend({ type = "assembling-machine", name = "nullius-priority-compressor-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.65, 0.55, 0.76} }}, @@ -1661,7 +1454,7 @@ data:extend({ crafting_speed = 2, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "30kW", usage_priority = "secondary-input" }, @@ -1671,60 +1464,62 @@ data:extend({ working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-2"].fluid_boxes, - animation = { - north = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.55, 0.76} - }, - east = { - layers = { - data.raw["assembling-machine"]["nullius-surge-compressor-2"].animation.east.layers[1], - data.raw["assembling-machine"]["nullius-surge-compressor-2"].animation.east.layers[2], - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.55, 0.76} + graphics_set = { + animation = { + north = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.55, 0.76} + }, + east = { + layers = { + data.raw["assembling-machine"]["nullius-surge-compressor-2"].graphics_set.animation.east.layers[1], + data.raw["assembling-machine"]["nullius-surge-compressor-2"].graphics_set.animation.east.layers[2], + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.55, 0.76} + } } - } - }, - south = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.55, 0.76} - }, - west = { - layers = { - data.raw["assembling-machine"]["nullius-surge-compressor-2"].animation.west.layers[1], - data.raw["assembling-machine"]["nullius-surge-compressor-2"].animation.west.layers[2], - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.3, - tint = {0.65, 0.55, 0.76} + }, + south = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.55, 0.76} + }, + west = { + layers = { + data.raw["assembling-machine"]["nullius-surge-compressor-2"].graphics_set.animation.west.layers[1], + data.raw["assembling-machine"]["nullius-surge-compressor-2"].graphics_set.animation.west.layers[2], + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.3, + tint = {0.65, 0.55, 0.76} + } } } } @@ -1735,7 +1530,7 @@ data:extend({ type = "assembling-machine", name = "nullius-surge-compressor-3", icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32 }}, localised_description = {"entity-description.nullius-surge", @@ -1753,7 +1548,7 @@ data:extend({ crafting_speed = 8, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "25kW", output_flow_limit = "0kW", usage_priority = "tertiary", @@ -1767,105 +1562,103 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -4, - height = 2, - pipe_connections = {{ type="input", position = {2.5, 1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, 1.5}, direction = defines.direction.east }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 10, - height = 3, - base_area = 8, - pipe_connections = {{ type="output", position = {-2.5, -1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.west }} } }, - animation = { - north = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2 - }, - east = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.2 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.2 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2 + graphics_set = { + animation = { + north = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2 + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.2 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.2 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2 + } } - } - }, - south = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2 - }, - west = { - layers = { - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.2 - }, - { - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-base.png", - priority = "high", - width = 288, - height = 288, - x = 576, - repeat_count = 16, - scale = 0.465, - animation_speed = 0.2 - }, - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2 + }, + south = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2 + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.2 + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-base.png", + priority = "high", + width = 288, + height = 288, + x = 576, + repeat_count = 16, + scale = 0.465, + animation_speed = 0.2 + }, + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2 + } } } } @@ -1878,7 +1671,7 @@ data:extend({ type = "assembling-machine", name = "nullius-priority-compressor-3", icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {1, 0.85, 0.85} }}, @@ -1897,7 +1690,7 @@ data:extend({ crafting_speed = 8, energy_source = { type = "electric", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "100kW", usage_priority = "secondary-input" }, @@ -1909,75 +1702,73 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 20, - base_level = -4, - height = 2, - pipe_connections = {{ type="input", position = {2.5, 1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, 1.5}, direction = defines.direction.east }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 10, - height = 3, - base_area = 8, - pipe_connections = {{ type="output", position = {-2.5, -1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.west }} } }, - animation = { - north = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2, - tint = {1, 0.85, 0.85} - }, - east = { - layers = { - data.raw["assembling-machine"]["nullius-surge-compressor-3"].animation.east.layers[1], - data.raw["assembling-machine"]["nullius-surge-compressor-3"].animation.east.layers[2], - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2, - tint = {1, 0.85, 0.85} + graphics_set = { + animation = { + north = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2, + tint = {1, 0.85, 0.85} + }, + east = { + layers = { + data.raw["assembling-machine"]["nullius-surge-compressor-3"].graphics_set.animation.east.layers[1], + data.raw["assembling-machine"]["nullius-surge-compressor-3"].graphics_set.animation.east.layers[2], + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2, + tint = {1, 0.85, 0.85} + } } - } - }, - south = { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2, - tint = {1, 0.85, 0.85} - }, - west = { - layers = { - data.raw["assembling-machine"]["nullius-surge-compressor-3"].animation.west.layers[1], - data.raw["assembling-machine"]["nullius-surge-compressor-3"].animation.west.layers[2], - { - priority = "high", - width = 288, - height = 288, - line_length = 4, - filename = "__angelsrefining__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", - frame_count = 16, - scale = 0.465, - animation_speed = 0.2, - tint = {1, 0.85, 0.85} + }, + south = { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2, + tint = {1, 0.85, 0.85} + }, + west = { + layers = { + data.raw["assembling-machine"]["nullius-surge-compressor-3"].graphics_set.animation.west.layers[1], + data.raw["assembling-machine"]["nullius-surge-compressor-3"].graphics_set.animation.west.layers[2], + { + priority = "high", + width = 288, + height = 288, + line_length = 4, + filename = "__angelsrefininggraphics__/graphics/entity/thermal-extractor/thermal-extractor-animation.png", + frame_count = 16, + scale = 0.465, + animation_speed = 0.2, + tint = {1, 0.85, 0.85} + } } } } @@ -1988,7 +1779,8 @@ data:extend({ type = "mining-drill", name = "nullius-geothermal-build-1", icons = data.raw.item["nullius-geothermal-plant-1"].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable", "not-deconstructable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable"}, + hidden = true, minable = { mining_time = 1.8, result = "nullius-geothermal-plant-1" }, resource_categories = {"basic-fluid"}, max_health = 500, @@ -2016,14 +1808,17 @@ data:extend({ }, monitor_visualization_tint = {r=78, g=173, b=255}, base_render_layer = "lower-object-above-shadow", - animations = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-base_01.png", - width = 332, - height = 374, - frame_count = 1, - tint = {0.5, 0.7, 1}, - shift = util.by_pixel(-1, -11.5), - scale = 0.5 + + graphics_set = { + animations = { + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_01.png", + width = 332, + height = 374, + frame_count = 1, + tint = {0.5, 0.7, 1}, + shift = util.by_pixel(-1, -11.5), + scale = 0.5 + } } }, @@ -2031,7 +1826,8 @@ data:extend({ type = "mining-drill", name = "nullius-geothermal-build-2", icons = data.raw.item["nullius-geothermal-plant-2"].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable", "not-deconstructable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable"}, + hidden = true, minable = { mining_time = 2.4, result = "nullius-geothermal-plant-2" }, resource_categories = {"basic-fluid"}, max_health = 600, @@ -2059,14 +1855,17 @@ data:extend({ }, monitor_visualization_tint = {r=78, g=173, b=255}, base_render_layer = "lower-object-above-shadow", - animations = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-base_01.png", - width = 332, - height = 374, - frame_count = 1, - tint = {0.85, 0.75, 1}, - shift = util.by_pixel(-1, -11.5), - scale = 0.5 + + graphics_set = { + animations = { + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_01.png", + width = 332, + height = 374, + frame_count = 1, + tint = {0.85, 0.75, 1}, + shift = util.by_pixel(-1, -11.5), + scale = 0.5 + } } }, @@ -2074,7 +1873,8 @@ data:extend({ type = "mining-drill", name = "nullius-geothermal-build-3", icons = data.raw.item["nullius-geothermal-plant-3"].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable", "not-deconstructable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable"}, + hidden = true, minable = { mining_time = 3, result = "nullius-geothermal-plant-3" }, resource_categories = {"basic-fluid"}, max_health = 750, @@ -2102,13 +1902,15 @@ data:extend({ }, monitor_visualization_tint = {r=78, g=173, b=255}, base_render_layer = "lower-object-above-shadow", - animations = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-base_01.png", - width = 332, - height = 374, - frame_count = 1, - shift = util.by_pixel(-1, -11.5), - scale = 0.5 + graphics_set = { + animations = { + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_01.png", + width = 332, + height = 374, + frame_count = 1, + shift = util.by_pixel(-1, -11.5), + scale = 0.5 + } } }, @@ -2136,7 +1938,7 @@ data:extend({ next_upgrade = "nullius-geothermal-build-2", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-base_02.png", + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", width = 332, height = 374, shift = util.by_pixel(-1, -11.5), @@ -2144,7 +1946,7 @@ data:extend({ tint = {0.5, 0.7, 1} }, picture = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-shadow_01.png", + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-shadow_01.png", width = 448, height = 280, shift = util.by_pixel(28, 12.5), @@ -2194,7 +1996,7 @@ data:extend({ next_upgrade = "nullius-geothermal-build-3", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-base_02.png", + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", width = 332, height = 374, shift = util.by_pixel(-1, -11.5), @@ -2242,7 +2044,7 @@ data:extend({ fast_replaceable_group = "geothermal-plant", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { - filename = "__angelssmelting__/graphics/entity/chemical-furnace/hr-chemical-furnace-base_02.png", + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", width = 332, height = 374, shift = util.by_pixel(-1, -11.5), @@ -2277,24 +2079,15 @@ function make_heat_pipe_pictures(path, name_prefix, color, data) local tile_pictures = {} for i = 1, (t.variations or 1) do local sprite = - { - priority = "extra-high", - filename = path .. name_prefix .. "-" .. (t.name or string.gsub(key, "_", "-")) .. (t.ommit_number and ".png" or ("-" .. tostring(i) .. ".png")), - width = (t.width or 32), - height = (t.height or 32), - shift = t.shift, - tint = color, - hr_version = { priority = "extra-high", - filename = path .. "hr-" .. name_prefix .. "-" .. (t.name or string.gsub(key, "_", "-")) .. (t.ommit_number and ".png" or ("-" .. tostring(i) .. ".png")), + filename = path .. name_prefix .. "-" .. (t.name or string.gsub(key, "_", "-")) .. (t.ommit_number and ".png" or ("-" .. tostring(i) .. ".png")), width = (t.width or 32) * 2, height = (t.height or 32) * 2, scale = 0.5, shift = t.shift, tint = color } - } table.insert(tile_pictures, sprite) end all_pictures[key] = tile_pictures @@ -2534,7 +2327,8 @@ data:extend({ localised_name = {"entity-name.nullius-thermal-tank-1"}, localised_description = {"entity-description.nullius-thermal-tank-1"}, icons = data.raw.item["nullius-thermal-tank-1"].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable"}, + hidden = true, minable = { mining_time = 1, result = "nullius-thermal-tank-1" }, placeable_by = {item = "nullius-thermal-tank-1", count = 1}, subgroup = "heat-storage", @@ -2549,7 +2343,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "tertiary", - emissions_per_minute = 0.02, + emissions_per_minute = {pollution = 0.02}, drain = "0W", render_no_power_icon = false, render_no_network_icon = false @@ -2623,7 +2417,8 @@ data:extend({ localised_name = {"entity-name.nullius-thermal-tank-2"}, localised_description = {"entity-description.nullius-thermal-tank-2"}, icons = data.raw.item["nullius-thermal-tank-2"].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable"}, + hidden = true, minable = { mining_time = 1.5, result = "nullius-thermal-tank-2" }, placeable_by = {item = "nullius-thermal-tank-2", count = 1}, subgroup = "heat-storage", @@ -2638,7 +2433,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "tertiary", - emissions_per_minute = 0.02, + emissions_per_minute = {pollution = 0.02}, drain = "0W", render_no_power_icon = false, render_no_network_icon = false @@ -2712,7 +2507,8 @@ data:extend({ localised_name = {"entity-name.nullius-thermal-tank-3"}, localised_description = {"entity-description.nullius-thermal-tank-3"}, icons = data.raw.item["nullius-thermal-tank-3"].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable"}, + hidden = true, minable = { mining_time = 2, result = "nullius-thermal-tank-3" }, placeable_by = {item = "nullius-thermal-tank-3", count = 1}, subgroup = "heat-storage", @@ -2727,7 +2523,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "tertiary", - emissions_per_minute = 0.02, + emissions_per_minute = {pollution = 0.02}, drain = "0W", render_no_power_icon = false, render_no_network_icon = false @@ -2866,7 +2662,8 @@ data:extend({ localised_name = {"entity-name.nullius-thermal-tank-1"}, localised_description = {"entity-description.nullius-thermal-tank-1"}, icons = data.raw.item["nullius-thermal-tank-1"].icons, - flags = {"placeable-neutral", "player-creation", "not-upgradable", "hidden", "not-deconstructable" }, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable" }, + hidden = true, minable = { mining_time = 1, result = "nullius-thermal-tank-1" }, subgroup = "heat-storage", order = "ubc", @@ -2880,11 +2677,10 @@ data:extend({ fast_replaceable_group = "thermal-tank", two_direction_only = true, fluid_box = { - height = 2, - base_area = 5, + volume = 500, pipe_connections = { - { position = {0, 2} }, - { position = {0, -2} } + { position = {0, 1}, direction = defines.direction.south }, + { position = {0, -1}, direction = defines.direction.north } } }, window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, @@ -2977,7 +2773,8 @@ data:extend({ localised_name = {"entity-name.nullius-thermal-tank-2"}, localised_description = {"entity-description.nullius-thermal-tank-2"}, icons = data.raw.item["nullius-thermal-tank-2"].icons, - flags = {"placeable-neutral", "player-creation", "not-upgradable", "hidden", "not-deconstructable" }, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable" }, + hidden = true, minable = { mining_time = 1, result = "nullius-thermal-tank-2" }, subgroup = "heat-storage", order = "ubc", @@ -2991,11 +2788,10 @@ data:extend({ fast_replaceable_group = "thermal-tank", two_direction_only = true, fluid_box = { - height = 2, - base_area = 20, + volume = 500, pipe_connections = { - { position = {0, 2} }, - { position = {0, -2} } + { position = {0, 1}, direction = defines.direction.south }, + { position = {0, -1}, direction = defines.direction.north } } }, window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, @@ -3008,7 +2804,8 @@ data:extend({ localised_name = {"entity-name.nullius-thermal-tank-3"}, localised_description = {"entity-description.nullius-thermal-tank-3"}, icons = data.raw.item["nullius-thermal-tank-3"].icons, - flags = {"placeable-neutral", "player-creation", "not-upgradable", "hidden", "not-deconstructable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable"}, + hidden = true, minable = { mining_time = 1, result = "nullius-thermal-tank-3" }, subgroup = "heat-storage", order = "ubd", @@ -3022,11 +2819,10 @@ data:extend({ fast_replaceable_group = "thermal-tank", two_direction_only = true, fluid_box = { - height = 2, - base_area = 150, + volume = 500, pipe_connections = { - { position = {0, 2} }, - { position = {0, -2} } + { position = {0, 1}, direction = defines.direction.south }, + { position = {0, -1}, direction = defines.direction.north } } }, window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, @@ -3040,7 +2836,6 @@ data:extend({ flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.2, result = "nullius-stirling-engine-1"}, max_health = 400, - fast_replaceable_group = "stirling-engine", next_upgrade = "nullius-stirling-engine-2", dying_explosion = "medium-explosion", corpse = "steam-engine-remnants", @@ -3072,60 +2867,32 @@ data:extend({ render_layer = "lower-object", pictures = { north = { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - shift = util.by_pixel(5, -6.5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, shift = util.by_pixel(4.75, -6.25), scale = 0.475 - } }, east = { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - shift = util.by_pixel(1, -5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, shift = util.by_pixel(1, -4.75), scale = 0.475 - } }, south = { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - shift = util.by_pixel(5, -6.5), - scale = 0.97, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, shift = util.by_pixel(4.75, -6.25), scale = 0.475 - } }, west = { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - shift = util.by_pixel(1, -5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, shift = util.by_pixel(1, -4.75), scale = 0.475 - } } } }, @@ -3169,60 +2936,32 @@ data:extend({ render_layer = "lower-object", pictures = { north = { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - shift = util.by_pixel(5, -6.5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, shift = util.by_pixel(4.75, -6.25), scale = 0.475 - } }, east = { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - shift = util.by_pixel(1, -5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, shift = util.by_pixel(1, -4.75), scale = 0.475 - } }, south = { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - shift = util.by_pixel(5, -6.5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, shift = util.by_pixel(4.75, -6.25), scale = 0.475 - } }, west = { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - shift = util.by_pixel(1, -5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, shift = util.by_pixel(1, -4.75), scale = 0.475 - } } } }, @@ -3265,60 +3004,32 @@ data:extend({ render_layer = "lower-object", pictures = { north = { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - shift = util.by_pixel(5, -6.5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, shift = util.by_pixel(4.75, -6.25), scale = 0.475 - } }, east = { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - shift = util.by_pixel(1, -5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, shift = util.by_pixel(1, -4.75), scale = 0.475 - } }, south = { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - shift = util.by_pixel(5, -6.5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, shift = util.by_pixel(4.75, -6.25), scale = 0.475 - } }, west = { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - shift = util.by_pixel(1, -5), - scale = 0.95, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, shift = util.by_pixel(1, -4.75), scale = 0.475 - } } } } @@ -3332,7 +3043,7 @@ data:extend({ order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, collision_box = {{-0.5, -2.2}, {0.5, 2.2}}, - collision_mask = { }, + collision_mask = { layers = {}}, selectable_in_game = false, gui_mode = "none", heat_buffer = { @@ -3362,7 +3073,7 @@ data:extend({ order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, collision_box = {{-2.2, -0.5}, {2.2, 0.5}}, - collision_mask = { }, + collision_mask = { layers = {}}, selectable_in_game = false, gui_mode = "none", heat_buffer = { @@ -3392,7 +3103,7 @@ data:extend({ order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, collision_box = {{-0.5, -2.2}, {0.5, 2.2}}, - collision_mask = { }, + collision_mask = { layers = {}}, selectable_in_game = false, gui_mode = "none", heat_buffer = { @@ -3422,7 +3133,7 @@ data:extend({ order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, collision_box = {{-2.2, -0.5}, {2.2, 0.5}}, - collision_mask = { }, + collision_mask = { layers = {}}, selectable_in_game = false, gui_mode = "none", heat_buffer = { @@ -3452,7 +3163,7 @@ data:extend({ order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, collision_box = {{-0.5, -2.2}, {0.5, 2.2}}, - collision_mask = { }, + collision_mask = { layers = {}}, selectable_in_game = false, gui_mode = "none", heat_buffer = { @@ -3482,7 +3193,7 @@ data:extend({ order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, collision_box = {{-2.2, -0.5}, {2.2, 0.5}}, - collision_mask = { }, + collision_mask = { layers = {}}, selectable_in_game = false, gui_mode = "none", heat_buffer = { @@ -3508,15 +3219,7 @@ data:extend({ { type = "animation", name = "nullius-stirling-horizontal-shadow", - filename = BASEENTITY .. "steam-engine/steam-engine-H-shadow.png", - width = 254, - height = 80, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(48, 24), - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H-shadow.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H-shadow.png", width = 508, height = 160, frame_count = 32, @@ -3524,20 +3227,11 @@ data:extend({ draw_as_shadow = true, shift = util.by_pixel(48, 24), scale = 0.5 - } }, { type = "animation", name = "nullius-stirling-vertical-shadow", - filename = BASEENTITY .. "steam-engine/steam-engine-V-shadow.png", - width = 165, - height = 153, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(40.5, 9.5), - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V-shadow.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V-shadow.png", width = 330, height = 307, frame_count = 32, @@ -3545,7 +3239,6 @@ data:extend({ draw_as_shadow = true, shift = util.by_pixel(40.5, 9.25), scale = 0.5 - } }, { @@ -3553,15 +3246,7 @@ data:extend({ name = "nullius-stirling-horizontal-turbine-1", layers = { { - filename = BASEENTITY .. "steam-engine/steam-engine-H.png", - width = 176, - height = 128, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(1, -5), - tint = {0.8, 0.8, 0.6}, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H.png", width = 352, height = 257, frame_count = 32, @@ -3569,20 +3254,11 @@ data:extend({ shift = util.by_pixel(1, -4.75), tint = {0.8, 0.8, 0.6}, scale = 0.5 - } }, { type = "animation", name = "nullius-stirling-horizontal-shadow", - filename = BASEENTITY .. "steam-engine/steam-engine-H-shadow.png", - width = 254, - height = 80, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(48, 24), - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-H-shadow.png", + filename = BASEENTITY .. "steam-engine/steam-engine-H-shadow.png", width = 508, height = 160, frame_count = 32, @@ -3590,7 +3266,6 @@ data:extend({ draw_as_shadow = true, shift = util.by_pixel(48, 24), scale = 0.5 - } } } }, @@ -3599,15 +3274,7 @@ data:extend({ name = "nullius-stirling-vertical-turbine-1", layers = { { - filename = BASEENTITY .. "steam-engine/steam-engine-V.png", - width = 112, - height = 195, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(5, -6.5), - tint = {0.8, 0.8, 0.6}, - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V.png", width = 225, height = 391, frame_count = 32, @@ -3615,18 +3282,9 @@ data:extend({ shift = util.by_pixel(4.75, -6.25), tint = {0.8, 0.8, 0.6}, scale = 0.5 - } }, { - filename = BASEENTITY .. "steam-engine/steam-engine-V-shadow.png", - width = 165, - height = 153, - frame_count = 32, - line_length = 8, - draw_as_shadow = true, - shift = util.by_pixel(40.5, 9.5), - hr_version = { - filename = BASEENTITY .. "steam-engine/hr-steam-engine-V-shadow.png", + filename = BASEENTITY .. "steam-engine/steam-engine-V-shadow.png", width = 330, height = 307, frame_count = 32, @@ -3634,10 +3292,9 @@ data:extend({ draw_as_shadow = true, shift = util.by_pixel(40.5, 9.25), scale = 0.5 - } }, { - filename = BASEENTITY .. "pipe-covers/hr-pipe-cover-south.png", + filename = BASEENTITY .. "pipe-covers/pipe-cover-south.png", width = 128, height = 128, scale = 0.5, @@ -3646,7 +3303,7 @@ data:extend({ shift = {0, 2.96} }, { - filename = BASEENTITY .. "heat-pipe/hr-heat-pipe-ending-down-1.png", + filename = BASEENTITY .. "heat-pipe/heat-pipe-ending-down-1.png", width = 64, height = 27, scale = 0.5, @@ -3659,18 +3316,10 @@ data:extend({ }) if mods["reskins-bobs"] then -data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers = { + data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers = { data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers[1], { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-H-mask.png", - width = 176, - height = 128, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(1, -5), - tint = tiercolor("yellow"), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/hr-steam-engine-H-mask.png", + filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-H-mask.png", width = 352, height = 257, frame_count = 32, @@ -3678,18 +3327,9 @@ data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers = { shift = util.by_pixel(1, -4.75), tint = tiercolor("yellow"), scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-H-highlights.png", - width = 176, - height = 128, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(1, -5), - blend_mode = "additive", - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/hr-steam-engine-H-highlights.png", + filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-H-highlights.png", width = 352, height = 257, frame_count = 32, @@ -3697,22 +3337,13 @@ data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers = { shift = util.by_pixel(1, -4.75), blend_mode = "additive", scale = 0.5 - } }, data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers[2] } -data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers = { + data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers = { data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers[1], { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-V-mask.png", - width = 112, - height = 195, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(5, -6.5), - tint = tiercolor("yellow"), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/hr-steam-engine-V-mask.png", + filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-V-mask.png", width = 225, height = 391, frame_count = 32, @@ -3720,18 +3351,9 @@ data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers = { shift = util.by_pixel(4.75, -6.25), tint = tiercolor("yellow"), scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-V-highlights.png", - width = 112, - height = 195, - frame_count = 32, - line_length = 8, - shift = util.by_pixel(5, -6.5), - blend_mode = "additive", - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/steam-engine/hr-steam-engine-V-highlights.png", + filename = "__reskins-bobs__/graphics/entity/power/steam-engine/steam-engine-V-highlights.png", width = 225, height = 391, frame_count = 32, @@ -3739,14 +3361,11 @@ data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers = { shift = util.by_pixel(4.75, -6.25), blend_mode = "additive", scale = 0.5 - } }, data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers[2] } data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers[1].tint = nil -data.raw["animation"]["nullius-stirling-horizontal-turbine-1"].layers[1].hr_version.tint = nil data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers[1].tint = nil -data.raw["animation"]["nullius-stirling-vertical-turbine-1"].layers[1].hr_version.tint = nil end local stirling2h = util.table.deepcopy(data.raw["animation"]["nullius-stirling-horizontal-turbine-1"]) @@ -3760,22 +3379,14 @@ stirling3v.name = "nullius-stirling-vertical-turbine-3" if mods["reskins-bobs"] then stirling2h.layers[2].tint = tiercolor("orange") -stirling2h.layers[2].hr_version.tint = tiercolor("orange") stirling2v.layers[2].tint = tiercolor("orange") -stirling2v.layers[2].hr_version.tint = tiercolor("orange") stirling3h.layers[2].tint = tiercolor("red") -stirling3h.layers[2].hr_version.tint = tiercolor("red") stirling3v.layers[2].tint = tiercolor("red") -stirling3v.layers[2].hr_version.tint = tiercolor("red") else stirling2h.layers[1].tint = {0.75, 0.75, 0.95} -stirling2h.layers[1].hr_version.tint = {0.75, 0.75, 0.95} stirling2v.layers[1].tint = {0.75, 0.75, 0.95} -stirling2v.layers[1].hr_version.tint = {0.75, 0.75, 0.95} stirling3h.layers[1].tint = nil -stirling3h.layers[1].hr_version.tint = nil stirling3v.layers[1].tint = nil -stirling3v.layers[1].hr_version.tint = nil end data:extend({ @@ -3789,7 +3400,6 @@ data:extend({ name = "nullius-reactor", icon = "__base__/graphics/icons/nuclear-reactor.png", icon_size = 64, - icon_mipmaps = 4, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 4, result = "nullius-reactor"}, max_health = 500, @@ -3816,7 +3426,7 @@ data:extend({ }, energy_source = { type = "burner", - fuel_category = "nullius-nuclear", + fuel_categories = {"nullius-nuclear"}, effectivity = 1, fuel_inventory_size = 1, burnt_inventory_size = 1 @@ -3844,7 +3454,7 @@ data:extend({ { type = "reactor", name = "nullius-solar-collector-1", - localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", tostring(1)}, icons = data.raw.item["nullius-solar-collector-1"].icons, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.2, result = "nullius-solar-collector-1"}, @@ -3922,7 +3532,7 @@ data:extend({ { type = "reactor", name = "nullius-solar-collector-2", - localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", tostring(2)}, icons = data.raw.item["nullius-solar-collector-2"].icons, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.8, result = "nullius-solar-collector-2"}, @@ -4000,7 +3610,7 @@ data:extend({ { type = "reactor", name = "nullius-solar-collector-3", - localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", 3}, + localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", tostring(3)}, icons = data.raw.item["nullius-solar-collector-3"].icons, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 2.4, result = "nullius-solar-collector-3"}, @@ -4076,7 +3686,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-heat-exchanger-1", - localised_name = {"", {"entity-name.heat-exchanger"}, " ", 1}, + localised_name = {"", {"entity-name.heat-exchanger"}, " ", tostring(1)}, localised_description = {"entity-description.heat-exchanger"}, icons = data.raw.item["nullius-heat-exchanger-1"].icons, minable = {mining_time = 0.6, result = "nullius-heat-exchanger-1"}, @@ -4091,27 +3701,21 @@ data:extend({ selection_box = {{-1.5, -1}, {1.5, 1}}, fluid_boxes = { { - base_area = 5, - height = 2, - base_level = -2, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "input", position = {-2, 0.5}}}, + pipe_connections = {{flow_direction = "input", position = {-1, 0.5}, direction = defines.direction.west }}, production_type = "input" }, { - base_area = 8, - height = 2, - base_level = 8, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {0, -1.5}}}, + pipe_connections = {{flow_direction = "output", position = {0, -0.5}, direction = defines.direction.north }}, production_type = "output" }, { - base_area = 8, - height = 2, - base_level = 8, + volume = 500, pipe_covers = pipecoverspictures(), - pipe_connections = {{type = "output", position = {2, 0.5}}}, + pipe_connections = {{flow_direction = "output", position = {1, 0.5}, direction = defines.direction.east }}, production_type = "output" } }, @@ -4130,7 +3734,14 @@ data:extend({ heat_picture = data.raw.boiler["heat-exchanger"].energy_source.heat_picture }, energy_usage = "1.8MW", - animation = util.table.deepcopy(data.raw.boiler["heat-exchanger"].structure), + graphics_set = { + animation = { + north = util.table.deepcopy(data.raw.boiler["heat-exchanger"].pictures.north.structure), + east = util.table.deepcopy(data.raw.boiler["heat-exchanger"].pictures.east.structure), + south = util.table.deepcopy(data.raw.boiler["heat-exchanger"].pictures.south.structure), + west = util.table.deepcopy(data.raw.boiler["heat-exchanger"].pictures.west.structure), + } + }, corpse = data.raw.boiler["heat-exchanger"].corpse, vehicle_impact_sound = data.raw.boiler["heat-exchanger"].vehicle_impact_sound, working_sound = data.raw.boiler["heat-exchanger"].working_sound @@ -4142,15 +3753,15 @@ local ex1m = util.table.deepcopy(ex1) local boil = util.table.deepcopy(ex1) ex1m.name = "nullius-mirror-heat-exchanger-1" ex1m.localised_name = {"entity-name.nullius-mirrored", - {"", {"entity-name.heat-exchanger"}, " ", 1}} -ex1m.fluid_boxes[1].pipe_connections[1].position = {2, 0.5} -ex1m.fluid_boxes[3].pipe_connections[1].position = {-2, 0.5} + {"", {"entity-name.heat-exchanger"}, " ", tostring(1)}} +ex1m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +ex1m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} ex1m.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } ex1m.placeable_by = {item = "nullius-heat-exchanger-1", count = 1} ex1m.next_upgrade = "nullius-mirror-heat-exchanger-2" local ex2 = util.table.deepcopy(ex1) ex2.name = "nullius-heat-exchanger-2" -ex2.localised_name = {"", {"entity-name.heat-exchanger"}, " ", 2} +ex2.localised_name = {"", {"entity-name.heat-exchanger"}, " ", tostring(2)} ex2.icons = data.raw.item["nullius-heat-exchanger-2"].icons ex2.minable = {mining_time = 0.8, result = "nullius-heat-exchanger-2"} ex2.next_upgrade = "nullius-heat-exchanger-3" @@ -4160,30 +3771,22 @@ ex2.energy_source.max_temperature = 400 ex2.energy_source.specific_heat = "5MJ" ex2.energy_source.max_transfer = "40MW" ex2.energy_usage = "8.5MW" -ex2.animation.north.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger-N.png" -ex2.animation.east.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger-E.png" -ex2.animation.south.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger-S.png" -ex2.animation.west.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger-W.png" -ex2.fluid_boxes[1].base_area = 8 -ex2.fluid_boxes[1].height = 3 -ex2.fluid_boxes[1].base_level = -3 -ex2.fluid_boxes[2].base_area = 15 -ex2.fluid_boxes[2].height = 3 -ex2.fluid_boxes[3].base_area = 15 -ex2.fluid_boxes[3].height = 3 +ex2.fluid_boxes[1].volume = 500 +ex2.fluid_boxes[2].volume = 500 +ex2.fluid_boxes[3].volume = 500 local ex2m = util.table.deepcopy(ex2) ex2m.name = "nullius-mirror-heat-exchanger-2" ex2m.localised_name = {"entity-name.nullius-mirrored", - {"", {"entity-name.heat-exchanger"}, " ", 2}} + {"", {"entity-name.heat-exchanger"}, " ", tostring(2)}} ex2m.icons[2] = ex1m.icons[2] ex2m.placeable_by = {item = "nullius-heat-exchanger-2", count = 1} ex2m.next_upgrade = "nullius-mirror-heat-exchanger-3" -ex2m.fluid_boxes[1].pipe_connections[1].position = {2, 0.5} -ex2m.fluid_boxes[3].pipe_connections[1].position = {-2, 0.5} +ex2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +ex2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} local ex3 = util.table.deepcopy(ex1) ex3.name = "nullius-heat-exchanger-3" -ex3.localised_name = {"", {"entity-name.heat-exchanger"}, " ", 3} +ex3.localised_name = {"", {"entity-name.heat-exchanger"}, " ", tostring(3)} ex3.icons = data.raw.item["nullius-heat-exchanger-3"].icons ex3.minable = {mining_time = 1, result = "nullius-heat-exchanger-3"} ex3.next_upgrade = nil @@ -4195,31 +3798,23 @@ ex3.energy_source.min_working_temperature = 500 ex3.energy_source.specific_heat = "20MJ" ex3.energy_source.max_transfer = "150MW" ex3.energy_usage = "20MW" -ex3.animation.north.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger3-N.png" -ex3.animation.east.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger3-E.png" -ex3.animation.south.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger3-S.png" -ex3.animation.west.layers[1].hr_version.filename = ENTITYPATH .. "exchanger/exchanger3-W.png" -ex3.fluid_boxes[1].base_area = 10 -ex3.fluid_boxes[1].height = 4 -ex3.fluid_boxes[1].base_level = -4 -ex3.fluid_boxes[2].base_area = 20 -ex3.fluid_boxes[2].height = 5 -ex3.fluid_boxes[3].base_area = 20 -ex3.fluid_boxes[3].height = 5 +ex3.fluid_boxes[1].volume = 500 +ex3.fluid_boxes[2].volume = 500 +ex3.fluid_boxes[3].volume = 500 local ex3m = util.table.deepcopy(ex3) ex3m.name = "nullius-mirror-heat-exchanger-3" ex3m.localised_name = {"entity-name.nullius-mirrored", - {"", {"entity-name.heat-exchanger"}, " ", 3}} + {"", {"entity-name.heat-exchanger"}, " ", tostring(3)}} ex3m.icons[2] = ex1m.icons[2] ex3m.placeable_by = {item = "nullius-heat-exchanger-3", count = 1} ex3m.next_upgrade = nil -ex3m.fluid_boxes[1].pipe_connections[1].position = {2, 0.5} -ex3m.fluid_boxes[3].pipe_connections[1].position = {-2, 0.5} +ex3m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +ex3m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} data:extend({ ex1m, ex2, ex2m, ex3, ex3m }) boil.name = "nullius-boiler-1" -boil.localised_name = {"", {"entity-name.boiler"}, " ", 1} +boil.localised_name = {"", {"entity-name.boiler"}, " ", tostring(1)} boil.localised_description = {"entity-description.nullius-boiler"} boil.icons = data.raw.item["nullius-boiler-1"].icons boil.minable = {mining_time = 1, result = "nullius-boiler-1"} @@ -4228,11 +3823,11 @@ boil.crafting_speed = 2 boil.energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "100kW" } boil.energy_usage = "3400kW" -boil.animation = { +boil.graphics_set.animation = { north = { frame_count = 1, layers = { { @@ -4243,7 +3838,7 @@ boil.animation = { shift = util.by_pixel(-1.25, 5.25), scale = 0.5 }, - data.raw["assembling-machine"]["nullius-combustion-chamber-1"].animation.north.layers[2] + data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.north.layers[2] } }, east = { frame_count = 1, @@ -4256,7 +3851,7 @@ boil.animation = { shift = util.by_pixel(-3, 1.25), scale = 0.5 }, - data.raw["assembling-machine"]["nullius-combustion-chamber-1"].animation.east.layers[2] + data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.east.layers[2] } }, south = { frame_count = 1, @@ -4269,7 +3864,7 @@ boil.animation = { shift = util.by_pixel(4, 13), scale = 0.5 }, - data.raw["assembling-machine"]["nullius-combustion-chamber-1"].animation.south.layers[2] + data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.south.layers[2] } }, west = { frame_count = 1, @@ -4282,24 +3877,24 @@ boil.animation = { shift = util.by_pixel(1.5, 7.75), scale = 0.5 }, - data.raw["assembling-machine"]["nullius-combustion-chamber-1"].animation.west.layers[2] + data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.west.layers[2] } } } -boil.working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].working_visualisations +boil.graphics_set.working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.working_visualisations local boilm = util.table.deepcopy(boil) boilm.name = "nullius-mirror-boiler-1" -boilm.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", 1}} -boilm.fluid_boxes[1].pipe_connections[1].position = {2, 0.5} -boilm.fluid_boxes[3].pipe_connections[1].position = {-2, 0.5} +boilm.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", tostring(1)}} +boilm.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +boilm.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} boilm.icons[2] = ex1m.icons[2] boilm.placeable_by = {item = "nullius-boiler-1", count = 1} boilm.next_upgrade = "nullius-mirror-boiler-2" local boil2 = util.table.deepcopy(boil) boil2.name = "nullius-boiler-2" -boil2.localised_name = {"", {"entity-name.boiler"}, " ", 2} +boil2.localised_name = {"", {"entity-name.boiler"}, " ", tostring(2)} boil2.icons = data.raw.item["nullius-boiler-2"].icons boil2.minable = {mining_time = 1.5, result = "nullius-boiler-2"} boil2.next_upgrade = nil @@ -4309,20 +3904,20 @@ boil2.crafting_speed = 5 boil2.energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 3, + emissions_per_minute = {pollution = 3}, drain = "250kW" } boil2.energy_usage = "9.75MW" -boil2.animation.north.layers[1].filename = ENTITYPATH .. "boiler/boiler2-north.png" -boil2.animation.east.layers[1].filename = ENTITYPATH .. "boiler/boiler2-east.png" -boil2.animation.south.layers[1].filename = ENTITYPATH .. "boiler/boiler2-south.png" -boil2.animation.west.layers[1].filename = ENTITYPATH .. "boiler/boiler2-west.png" +boil2.graphics_set.animation.north.layers[1].filename = ENTITYPATH .. "boiler/boiler2-north.png" +boil2.graphics_set.animation.east.layers[1].filename = ENTITYPATH .. "boiler/boiler2-east.png" +boil2.graphics_set.animation.south.layers[1].filename = ENTITYPATH .. "boiler/boiler2-south.png" +boil2.graphics_set.animation.west.layers[1].filename = ENTITYPATH .. "boiler/boiler2-west.png" local boil2m = util.table.deepcopy(boil2) boil2m.name = "nullius-mirror-boiler-2" -boil2m.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", 2}} -boil2m.fluid_boxes[1].pipe_connections[1].position = {2, 0.5} -boil2m.fluid_boxes[3].pipe_connections[1].position = {-2, 0.5} +boil2m.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", tostring(2)}} +boil2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +boil2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} boil2m.icons[2] = boilm.icons[2] boil2m.placeable_by = {item = "nullius-boiler-2", count = 1} boil2m.next_upgrade = nil @@ -4332,88 +3927,50 @@ data:extend({ boil, boilm, boil2, boil2m}) if mods["reskins-bobs"] then data.raw["solar-panel"]["nullius-solar-panel-1"].picture = { layers = { { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/solar-panel-large.png", - priority = "high", - width = 154, - height = 137, - shift = util.by_pixel(5, 3.5), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/hr-solar-panel-large.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/solar-panel-large.png", priority = "high", width = 308, height = 274, shift = util.by_pixel(5, 3.5), scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/solar-panel-large-mask.png", - priority = "high", - width = 154, - height = 137, - shift = util.by_pixel(5, 3.5), - tint = util.color("de9400"), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/hr-solar-panel-large-mask.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/solar-panel-large-mask.png", priority = "high", width = 308, height = 274, shift = util.by_pixel(5, 3.5), tint = util.color("de9400"), scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/solar-panel-large-highlights.png", - priority = "high", - width = 154, - height = 137, - shift = util.by_pixel(5, 3.5), - blend_mode = "additive", - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/hr-solar-panel-large-highlights.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/solar-panel-large-highlights.png", priority = "high", width = 308, height = 274, shift = util.by_pixel(5, 3.5), blend_mode = "additive", scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/solar-panel-large-shadow.png", - priority = "high", - width = 154, - height = 137, - shift = util.by_pixel(5, 3.5), - draw_as_shadow = true, - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/hr-solar-panel-large-shadow.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/solar-panel-large-shadow.png", priority = "high", width = 308, height = 274, shift = util.by_pixel(5, 3.5), draw_as_shadow = true, scale = 0.5 - } } }} data.raw["solar-panel"]["nullius-solar-panel-1"].overlay = { layers = { { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/solar-panel-large-shadow-overlay.png", - priority = "high", - width = 154, - height = 137, - shift = util.by_pixel(5, 3.5), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/hr-solar-panel-large-shadow-overlay.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-large/base/solar-panel-large-shadow-overlay.png", priority = "high", width = 308, height = 274, shift = util.by_pixel(5, 3.5), scale = 0.5 - } } }} @@ -4422,26 +3979,23 @@ data.raw["solar-panel"]["nullius-solar-panel-2"].overlay = data.raw["solar-panel"]["nullius-solar-panel-2"].picture = util.table.deepcopy(data.raw["solar-panel"]["nullius-solar-panel-1"].picture) data.raw["solar-panel"]["nullius-solar-panel-2"].picture.layers[2].tint = util.color("c20600") -data.raw["solar-panel"]["nullius-solar-panel-2"].picture.layers[2].hr_version.tint = util.color("c20600") data.raw["solar-panel"]["nullius-solar-panel-3"].overlay = data.raw["solar-panel"]["nullius-solar-panel-1"].overlay data.raw["solar-panel"]["nullius-solar-panel-3"].picture = util.table.deepcopy(data.raw["solar-panel"]["nullius-solar-panel-1"].picture) data.raw["solar-panel"]["nullius-solar-panel-3"].picture.layers[2].tint = util.color("0099ff") -data.raw["solar-panel"]["nullius-solar-panel-3"].picture.layers[2].hr_version.tint = util.color("0099ff") data.raw["solar-panel"]["nullius-solar-panel-4"].overlay = data.raw["solar-panel"]["nullius-solar-panel-1"].overlay data.raw["solar-panel"]["nullius-solar-panel-4"].picture = util.table.deepcopy(data.raw["solar-panel"]["nullius-solar-panel-1"].picture) data.raw["solar-panel"]["nullius-solar-panel-4"].picture.layers[2].tint = util.color("23de55") -data.raw["solar-panel"]["nullius-solar-panel-4"].picture.layers[2].hr_version.tint = util.color("23de55") -data.raw["accumulator"]["nullius-grid-battery-1"].picture = { layers = { +data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.picture = { layers = { { - filename = "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-3.png", + filename = "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-3.png", priority = "high", width = 130, height = 189, @@ -4449,7 +4003,7 @@ data.raw["accumulator"]["nullius-grid-battery-1"].picture = { layers = { scale = 0.75 }, { - filename = "__reskins-bobs__/graphics/entity/power/accumulator/hr-accumulator-mask.png", + filename = "__reskins-bobs__/graphics/entity/power/accumulator/accumulator-mask.png", priority = "high", width = 130, height = 189, @@ -4458,7 +4012,7 @@ data.raw["accumulator"]["nullius-grid-battery-1"].picture = { layers = { scale = 0.75 }, { - filename = "__reskins-bobs__/graphics/entity/power/accumulator/hr-accumulator-highlights.png", + filename = "__reskins-bobs__/graphics/entity/power/accumulator/accumulator-highlights.png", priority = "high", width = 130, height = 189, @@ -4467,7 +4021,7 @@ data.raw["accumulator"]["nullius-grid-battery-1"].picture = { layers = { scale = 0.75 }, { - filename = BASEENTITY .. "accumulator/hr-accumulator-shadow.png", + filename = BASEENTITY .. "accumulator/accumulator-shadow.png", priority = "high", width = 234, height = 106, @@ -4477,7 +4031,7 @@ data.raw["accumulator"]["nullius-grid-battery-1"].picture = { layers = { } }} -local accumpic = util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].picture) +local accumpic = util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.picture) accumpic.layers[1].repeat_count = 24 accumpic.layers[1].animation_speed = 0.5 accumpic.layers[2].repeat_count = 24 @@ -4485,9 +4039,9 @@ accumpic.layers[2].animation_speed = 0.5 accumpic.layers[3].repeat_count = 24 accumpic.layers[3].animation_speed = 0.5 accumpic.layers[4].repeat_count = 24 -data.raw["accumulator"]["nullius-grid-battery-1"].charge_animation = accumpic -data.raw["accumulator"]["nullius-grid-battery-1"].charge_animation.layers[5] = { - filename = BASEENTITY .. "accumulator/hr-accumulator-charge.png", +data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.charge_animation = accumpic +data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.charge_animation.layers[5] = { + filename = BASEENTITY .. "accumulator/accumulator-charge.png", priority = "high", width = 178, height = 206, @@ -4498,10 +4052,10 @@ data.raw["accumulator"]["nullius-grid-battery-1"].charge_animation.layers[5] = { scale = 0.75 } -data.raw["accumulator"]["nullius-grid-battery-1"].discharge_animation = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].charge_animation) -data.raw["accumulator"]["nullius-grid-battery-1"].discharge_animation.layers[5] = { - filename = BASEENTITY .. "accumulator/hr-accumulator-discharge.png", +data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.discharge_animation = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.charge_animation) +data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.discharge_animation.layers[5] = { + filename = BASEENTITY .. "accumulator/accumulator-discharge.png", priority = "high", width = 170, height = 210, @@ -4513,36 +4067,36 @@ data.raw["accumulator"]["nullius-grid-battery-1"].discharge_animation.layers[5] } -data.raw["accumulator"]["nullius-grid-battery-2"].picture = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].picture) -data.raw["accumulator"]["nullius-grid-battery-2"].picture.layers[1].filename = - "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-1.png" -data.raw["accumulator"]["nullius-grid-battery-2"].picture.layers[2].tint = util.color("0099ff") -data.raw["accumulator"]["nullius-grid-battery-2"].charge_animation = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].charge_animation) -data.raw["accumulator"]["nullius-grid-battery-2"].charge_animation.layers[1].filename = - "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-1.png" -data.raw["accumulator"]["nullius-grid-battery-2"].charge_animation.layers[2].tint = util.color("0099ff") -data.raw["accumulator"]["nullius-grid-battery-2"].discharge_animation = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].discharge_animation) -data.raw["accumulator"]["nullius-grid-battery-2"].discharge_animation.layers[1].filename = - "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-1.png" -data.raw["accumulator"]["nullius-grid-battery-2"].discharge_animation.layers[2].tint = util.color("0099ff") +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.picture = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.picture) +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.picture.layers[1].filename = + "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-1.png" +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.picture.layers[2].tint = util.color("0099ff") +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.charge_animation = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.charge_animation) +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.charge_animation.layers[1].filename = + "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-1.png" +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.charge_animation.layers[2].tint = util.color("0099ff") +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.discharge_animation = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.discharge_animation) +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.discharge_animation.layers[1].filename = + "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-1.png" +data.raw["accumulator"]["nullius-grid-battery-2"].chargable_graphics.discharge_animation.layers[2].tint = util.color("0099ff") -data.raw["accumulator"]["nullius-grid-battery-3"].picture = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].picture) -data.raw["accumulator"]["nullius-grid-battery-3"].picture.layers[1].filename = - "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-2.png" -data.raw["accumulator"]["nullius-grid-battery-3"].picture.layers[2].tint = util.color("23de55") -data.raw["accumulator"]["nullius-grid-battery-3"].charge_animation = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].charge_animation) -data.raw["accumulator"]["nullius-grid-battery-3"].charge_animation.layers[1].filename = - "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-2.png" -data.raw["accumulator"]["nullius-grid-battery-3"].charge_animation.layers[2].tint = util.color("23de55") -data.raw["accumulator"]["nullius-grid-battery-3"].discharge_animation = - util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].discharge_animation) -data.raw["accumulator"]["nullius-grid-battery-3"].discharge_animation.layers[1].filename = - "__reskins-bobs__/graphics/entity/power/accumulator/wires/hr-accumulator-2.png" -data.raw["accumulator"]["nullius-grid-battery-3"].discharge_animation.layers[2].tint = util.color("23de55") +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.picture = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.picture) +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.picture.layers[1].filename = + "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-2.png" +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.picture.layers[2].tint = util.color("23de55") +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.charge_animation = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.charge_animation) +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.charge_animation.layers[1].filename = + "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-2.png" +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.charge_animation.layers[2].tint = util.color("23de55") +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.discharge_animation = + util.table.deepcopy(data.raw["accumulator"]["nullius-grid-battery-1"].chargable_graphics.discharge_animation) +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.discharge_animation.layers[1].filename = + "__reskins-bobs__/graphics/entity/power/accumulator/wires/accumulator-2.png" +data.raw["accumulator"]["nullius-grid-battery-3"].chargable_graphics.discharge_animation.layers[2].tint = util.color("23de55") end diff --git a/nullius/prototypes/entity/environment.lua b/nullius/prototypes/entity/environment.lua index 4e4a531..b4952ed 100644 --- a/nullius/prototypes/entity/environment.lua +++ b/nullius/prototypes/entity/environment.lua @@ -6,280 +6,152 @@ data:extend({ name = "nullius-algae", type = "optimized-decorative", order = "dba", - collision_mask = {"ground-tile", "colliding-with-tiles-only"}, + collision_mask = {layers = {ground_tile = true}, colliding_with_tiles_only = true}, collision_box = {{-3.5, -1.8}, {3.5, 1.8}}, pictures = { { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-00.png", - priority = "extra-high", - width = 166, - height = 88, - shift = util.by_pixel(-12, -10), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-00.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-00.png", priority = "extra-high", width = 334, height = 206, shift = util.by_pixel(-13, -1), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-01.png", - priority = "extra-high", - width = 128, - height = 94, - shift = util.by_pixel(12, 6), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-01.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-01.png", priority = "extra-high", width = 256, height = 182, shift = util.by_pixel(12, 7), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-02.png", - priority = "extra-high", - width = 204, - height = 96, - shift = util.by_pixel(-8, -2), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-02.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-02.png", priority = "extra-high", width = 406, height = 194, shift = util.by_pixel(-8, -3), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-03.png", - priority = "extra-high", - width = 216, - height = 96, - shift = util.by_pixel(6, 8), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-03.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-03.png", priority = "extra-high", width = 432, height = 220, shift = util.by_pixel(6, 1), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-04.png", - priority = "extra-high", - width = 184, - height = 102, - shift = util.by_pixel(-12, 8), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-04.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-04.png", priority = "extra-high", width = 368, height = 206, shift = util.by_pixel(-12, 7), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-05.png", - priority = "extra-high", - width = 170, - height = 102, - shift = util.by_pixel(24, 2), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-05.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-05.png", priority = "extra-high", width = 340, height = 200, shift = util.by_pixel(24, 3), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-06.png", - priority = "extra-high", - width = 162, - height = 108, - shift = util.by_pixel(24, 2), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-06.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-06.png", priority = "extra-high", width = 326, height = 214, shift = util.by_pixel(23, 2), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-07.png", - priority = "extra-high", - width = 168, - height = 98, - shift = util.by_pixel(20, 8), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-07.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-07.png", priority = "extra-high", width = 336, height = 190, shift = util.by_pixel(20, 9), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-08.png", - priority = "extra-high", - width = 192, - height = 104, - shift = util.by_pixel(-12, 0), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-08.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-08.png", priority = "extra-high", width = 386, height = 206, shift = util.by_pixel(-12, 1), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-09.png", - priority = "extra-high", - width = 138, - height = 78, - shift = util.by_pixel(8, -12), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-09.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-09.png", priority = "extra-high", width = 278, height = 150, shift = util.by_pixel(8, -11), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-10.png", - priority = "extra-high", - width = 182, - height = 100, - shift = util.by_pixel(2, -2), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-10.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-10.png", priority = "extra-high", width = 364, height = 204, shift = util.by_pixel(2, -3), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-11.png", - priority = "extra-high", - width = 192, - height = 104, - shift = util.by_pixel(22, 4), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-11.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-11.png", priority = "extra-high", width = 378, height = 206, shift = util.by_pixel(23, 5), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-12.png", - priority = "extra-high", - width = 160, - height = 108, - shift = util.by_pixel(-4, 4), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-12.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-12.png", priority = "extra-high", width = 320, height = 220, shift = util.by_pixel(-4, 3), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-13.png", - priority = "extra-high", - width = 158, - height = 82, - shift = util.by_pixel(32, 10), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-13.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-13.png", priority = "extra-high", width = 318, height = 160, shift = util.by_pixel(31, 11), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-14.png", - priority = "extra-high", - width = 186, - height = 104, - shift = util.by_pixel(24, 6), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-14.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-14.png", priority = "extra-high", width = 368, height = 206, shift = util.by_pixel(25, 6), tint = {0.5, 1, 0.5}, scale = 0.5 - } }, { - filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-15.png", - priority = "extra-high", - width = 208, - height = 112, - shift = util.by_pixel(-6, 0), - tint = {0.5, 1, 0.5}, - hr_version = { - filename = "__base__/graphics/decorative/shroom-decal/hr-shroom-decal-15.png", + filename = "__base__/graphics/decorative/shroom-decal/shroom-decal-15.png", priority = "extra-high", width = 410, height = 222, shift = util.by_pixel(-5, 0), tint = {0.5, 1, 0.5}, scale = 0.5 - } } } } diff --git a/nullius/prototypes/entity/equipment.lua b/nullius/prototypes/entity/equipment.lua index bb74a34..909f7fd 100644 --- a/nullius/prototypes/entity/equipment.lua +++ b/nullius/prototypes/entity/equipment.lua @@ -274,18 +274,18 @@ data:extend({ if mods["reskins-bobs"] then data.raw["solar-panel-equipment"]["nullius-solar-panel-1"].sprite = { layers = { { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-small/base/hr-solar-panel-small.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-small/base/solar-panel-small.png", size = 150, priority = "medium" }, { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-small/hr-solar-panel-small-mask.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-small/solar-panel-small-mask.png", size = 150, priority = "medium", tint = tiercolor("yellow") }, { - filename = "__reskins-bobs__/graphics/entity/power/solar-panel-small/hr-solar-panel-small-highlights.png", + filename = "__reskins-bobs__/graphics/entity/power/solar-panel-small/solar-panel-small-highlights.png", size = 150, priority = "medium", blend_mode = "additive" @@ -312,7 +312,7 @@ data:extend({ order = "gb", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 4}}, + {"entity-description.nullius-megajoule", tostring(4)}}, sprite = { filename = EQUIPPATH .. "hangar1.png", width = 128, @@ -364,9 +364,9 @@ data:extend({ order = "gc", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 10}}, + {"entity-description.nullius-megajoule", tostring(10)}}, sprite = { - filename = "__base__/graphics/equipment/hr-personal-roboport-mk2-equipment.png", + filename = "__base__/graphics/equipment/personal-roboport-mk2-equipment.png", width = 128, height = 128, priority = "medium", @@ -416,7 +416,7 @@ data:extend({ order = "gd", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 30}}, + {"entity-description.nullius-megajoule", tostring(30)}}, sprite = { filename = EQUIPPATH .. "hangar3.png", width = 128, @@ -468,7 +468,7 @@ data:extend({ order = "ge", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 20}}, + {"entity-description.nullius-megajoule", tostring(20)}}, sprite = { filename = EQUIPPATH .. "hangar3.png", --hangar 4 is just a smaller version of h3 width = 128, @@ -519,7 +519,7 @@ data:extend({ name = "nullius-charger-1", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 4}}, + {"entity-description.nullius-megajoule", tostring(4)}}, order = "hb", sprite = { filename = "__boblogistics__/graphics/icons/roboport-chargepad.png", @@ -570,7 +570,7 @@ data:extend({ name = "nullius-charger-2", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 10}}, + {"entity-description.nullius-megajoule", tostring(10)}}, order = "hc", sprite = { filename = "__boblogistics__/graphics/icons/roboport-chargepad-2.png", @@ -621,7 +621,7 @@ data:extend({ name = "nullius-charger-3", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 30}}, + {"entity-description.nullius-megajoule", tostring(30)}}, order = "hd", sprite = { filename = "__boblogistics__/graphics/icons/roboport-chargepad-4.png", @@ -672,7 +672,7 @@ data:extend({ name = "nullius-charger-4", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 20}}, + {"entity-description.nullius-megajoule", tostring(20)}}, order = "he", sprite = { filename = "__boblogistics__/graphics/icons/roboport-chargepad-4.png", @@ -723,7 +723,7 @@ data:extend({ name = "nullius-relay-1", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-kilojoule", 200}}, + {"entity-description.nullius-kilojoule", tostring(200)}}, order = "ib", sprite = { filename = "__boblogistics__/graphics/entity/roboport/logistic-zone-expander.png", @@ -777,7 +777,7 @@ data:extend({ name = "nullius-relay-2", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-kilojoule", 400}}, + {"entity-description.nullius-kilojoule", tostring(400)}}, order = "ic", sprite = { filename = "__boblogistics__/graphics/entity/roboport/logistic-zone-expander-2.png", @@ -831,7 +831,7 @@ data:extend({ name = "nullius-relay-3", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-megajoule", 1}}, + {"entity-description.nullius-megajoule", tostring(1)}}, order = "id", sprite = { filename = "__boblogistics__/graphics/entity/roboport/logistic-zone-expander-4.png", @@ -885,7 +885,7 @@ data:extend({ name = "nullius-relay-4", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-megajoule", 2}}, + {"entity-description.nullius-megajoule", tostring(2)}}, order = "ie", sprite = { filename = "__boblogistics__/graphics/entity/roboport/logistic-zone-expander-3.png", @@ -1031,11 +1031,11 @@ data:extend({ { type = "belt-immunity-equipment", name = "nullius-levitation-field-1", - localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", 1}, + localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", tostring(1)}, localised_description = data.raw.item["nullius-levitation-field-1"].localised_description, order = "fb", sprite = { - filename = "__base__/graphics/equipment/hr-belt-immunity-equipment.png", + filename = "__base__/graphics/equipment/belt-immunity-equipment.png", width = 64, height = 64, priority = "medium", @@ -1058,11 +1058,11 @@ data:extend({ { type = "belt-immunity-equipment", name = "nullius-levitation-field-2", - localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", 2}, + localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", tostring(2)}, localised_description = data.raw.item["nullius-levitation-field-2"].localised_description, order = "fc", sprite = { - filename = "__base__/graphics/equipment/hr-belt-immunity-equipment.png", + filename = "__base__/graphics/equipment/belt-immunity-equipment.png", width = 64, height = 64, priority = "medium", @@ -1117,7 +1117,7 @@ data:extend({ localised_description = data.raw.item["nullius-leg-augmentation-1"].localised_description, order = "dbb", sprite = { - filename = "__base__/graphics/equipment/hr-exoskeleton-equipment.png", + filename = "__base__/graphics/equipment/exoskeleton-equipment.png", width = 128, height = 256, priority = "medium", @@ -1145,7 +1145,7 @@ data:extend({ localised_description = data.raw.item["nullius-leg-augmentation-2"].localised_description, order = "dbc", sprite = { - filename = "__base__/graphics/equipment/hr-exoskeleton-equipment.png", + filename = "__base__/graphics/equipment/exoskeleton-equipment.png", width = 128, height = 256, priority = "medium", @@ -1173,7 +1173,7 @@ data:extend({ localised_description = data.raw.item["nullius-leg-augmentation-3"].localised_description, order = "dbd", sprite = { - filename = "__base__/graphics/equipment/hr-exoskeleton-equipment.png", + filename = "__base__/graphics/equipment/exoskeleton-equipment.png", width = 128, height = 256, priority = "medium", @@ -1200,7 +1200,7 @@ data:extend({ localised_description = data.raw.item["nullius-leg-augmentation-4"].localised_description, order = "dbe", sprite = { - filename = "__base__/graphics/equipment/hr-exoskeleton-equipment.png", + filename = "__base__/graphics/equipment/exoskeleton-equipment.png", width = 128, height = 256, priority = "medium", @@ -1525,13 +1525,13 @@ data:extend({ type = "set-tile", tile_name = "nuclear-ground", radius = 20, - tile_collision_mask = { "water-tile" } + tile_collision_mask = { layers = { water_tile = true }} }, { type = "set-tile", tile_name = "water-shallow", radius = 18, - tile_collision_mask = { "water-tile" } + tile_collision_mask = { layers = { water_tile = true }} }, { type = "set-tile", @@ -1549,17 +1549,11 @@ data:extend({ order = "s", localised_description = data.raw.item["nullius-shield"].localised_description, sprite = { - filename = "__base__/graphics/equipment/energy-shield-equipment.png", - width = 64, - height = 64, - priority = "medium", - hr_version = { - filename = "__base__/graphics/equipment/hr-energy-shield-equipment.png", + filename = "__base__/graphics/equipment/energy-shield-equipment.png", width = 128, height = 128, priority = "medium", scale = 0.5 - } }, shape = { width = 2, @@ -1582,8 +1576,8 @@ data:extend({ name = "nullius-upgrade-armor-plate", take_result = "nullius-armor-plate", localised_description = {"", - {"equipment-description.nullius-bonus-armor", 100}, "\n", - {"equipment-description.nullius-penalty-speed", 1}}, + {"equipment-description.nullius-bonus-armor", tostring(100)}, "\n", + {"equipment-description.nullius-penalty-speed", tostring(1)}}, order = "k", sprite = { filename = EQUIPPATH.."armor-plate.png", @@ -1608,8 +1602,8 @@ data:extend({ name = "nullius-upgrade-small-cargo-pod-1", take_result = "nullius-small-cargo-pod-1", localised_description = {"", - {"equipment-description.nullius-bonus-cargo", 2}, "\n", - {"equipment-description.nullius-penalty-speed", 0.3}}, + {"equipment-description.nullius-bonus-cargo", tostring(2)}, "\n", + {"equipment-description.nullius-penalty-speed", tostring(0.3)}}, order = "jbb", sprite = { filename = EQUIPPATH.."small-pod-1.png", @@ -1634,8 +1628,8 @@ data:extend({ name = "nullius-upgrade-small-cargo-pod-2", take_result = "nullius-small-cargo-pod-2", localised_description = {"", - {"equipment-description.nullius-bonus-cargo", 3}, "\n", - {"equipment-description.nullius-penalty-speed", 0.4}}, + {"equipment-description.nullius-bonus-cargo", tostring(3)}, "\n", + {"equipment-description.nullius-penalty-speed", tostring(0.4)}}, order = "jbc", sprite = { filename = EQUIPPATH.."small-pod-2.png", @@ -1660,8 +1654,8 @@ data:extend({ name = "nullius-upgrade-large-cargo-pod-1", take_result = "nullius-large-cargo-pod-1", localised_description = {"", - {"equipment-description.nullius-bonus-cargo", 10}, "\n", - {"equipment-description.nullius-penalty-speed", 1.5}}, + {"equipment-description.nullius-bonus-cargo", tostring(10)}, "\n", + {"equipment-description.nullius-penalty-speed", tostring(1.5)}}, order = "jcb", sprite = { filename = EQUIPPATH.."large-pod-1.png", @@ -1686,8 +1680,8 @@ data:extend({ name = "nullius-upgrade-large-cargo-pod-2", take_result = "nullius-large-cargo-pod-2", localised_description = {"", - {"equipment-description.nullius-bonus-cargo", 12}, "\n", - {"equipment-description.nullius-penalty-speed", 1.6}}, + {"equipment-description.nullius-bonus-cargo", tostring(12)}, "\n", + {"equipment-description.nullius-penalty-speed", tostring(1.6)}}, order = "jcb", sprite = { filename = EQUIPPATH.."large-pod-2.png", @@ -1712,8 +1706,8 @@ data:extend({ name = "nullius-upgrade-large-cargo-pod-3", take_result = "nullius-large-cargo-pod-3", localised_description = {"", - {"equipment-description.nullius-bonus-cargo", 15}, "\n", - {"equipment-description.nullius-penalty-speed", 2}}, + {"equipment-description.nullius-bonus-cargo", tostring(15)}, "\n", + {"equipment-description.nullius-penalty-speed", tostring(2)}}, order = "jcb", sprite = { filename = EQUIPPATH.."large-pod-3.png", @@ -1736,12 +1730,12 @@ data:extend({ { type = "active-defense-equipment", name = "nullius-upgrade-trash-compactor", - localised_name = {"", {"equipment-name.nullius-upgrade-trash-compactor"}, " ", 1}, + localised_name = {"", {"equipment-name.nullius-upgrade-trash-compactor"}, " ", tostring(1)}, take_result = "nullius-trash-compactor", localised_description = {"", - {"equipment-description.nullius-bonus-trash", 10}, "\n", + {"equipment-description.nullius-bonus-trash", tostring(10)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 5}}}, + {"entity-description.nullius-kilowatt", tostring(5)}}}, order = "jdb", sprite = { filename = EQUIPPATH.."trash-compactor-1.png", @@ -1759,31 +1753,31 @@ data:extend({ type = "electric", buffer_capacity = "300kJ", input_flow_limit = "30kW", - drain = "5kW", + drain = "5kW", usage_priority = "primary-input" }, categories = {"android"}, - automatic = false, + automatic = false, attack_parameters = { type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "5kJ" + energy_consumption = "5kJ" } } }, { type = "active-defense-equipment", name = "nullius-upgrade-trash-compactor-2", - localised_name = {"", {"equipment-name.nullius-upgrade-trash-compactor"}, " ", 2}, + localised_name = {"", {"equipment-name.nullius-upgrade-trash-compactor"}, " ", tostring(2)}, take_result = "nullius-trash-compactor-2", localised_description = {"", - {"equipment-description.nullius-bonus-trash", 20}, "\n", + {"equipment-description.nullius-bonus-trash", tostring(20)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 12}}}, + {"entity-description.nullius-kilowatt", tostring(12)}}}, order = "jdc", sprite = { filename = EQUIPPATH.."trash-compactor-2.png", @@ -1801,19 +1795,19 @@ data:extend({ type = "electric", buffer_capacity = "800kJ", input_flow_limit = "80kW", - drain = "12kW", + drain = "12kW", usage_priority = "primary-input" }, categories = {"android"}, - automatic = false, + automatic = false, attack_parameters = { type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "12kJ" + energy_consumption = "12kJ" } } }, @@ -1822,9 +1816,9 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-fabrication-tool-1", take_result = "nullius-fabrication-tool-1", - localised_description = {"equipment-description.nullius-buffer", - {"equipment-description.nullius-bonus-craft", 25, 12}, - {"entity-description.nullius-megajoule", 2}}, + localised_description = {"equipment-description.nullius-buffer", + {"equipment-description.nullius-bonus-craft", tostring(25), tostring(12)}, + {"entity-description.nullius-megajoule", tostring(2)}}, order = "lbb", sprite = { filename = EQUIPPATH.."fabrication-tool-1.png", @@ -1850,10 +1844,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "12kJ" + energy_consumption = "12kJ" } } }, @@ -1861,9 +1855,9 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-fabrication-tool-2", take_result = "nullius-fabrication-tool-2", - localised_description = {"equipment-description.nullius-buffer", - {"equipment-description.nullius-bonus-craft", 40, 16}, - {"entity-description.nullius-megajoule", 5}}, + localised_description = {"equipment-description.nullius-buffer", + {"equipment-description.nullius-bonus-craft", tostring(40), tostring(16)}, + {"entity-description.nullius-megajoule", tostring(5)}}, order = "lbc", sprite = { filename = EQUIPPATH.."fabrication-tool-2.png", @@ -1889,10 +1883,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "16kJ" + energy_consumption = "16kJ" } } }, @@ -1900,9 +1894,9 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-fabrication-tool-3", take_result = "nullius-fabrication-tool-3", - localised_description = {"equipment-description.nullius-buffer", - {"equipment-description.nullius-bonus-craft", 120, 40}, - {"entity-description.nullius-megajoule", 25}}, + localised_description = {"equipment-description.nullius-buffer", + {"equipment-description.nullius-bonus-craft", tostring(120), tostring(40)}, + {"entity-description.nullius-megajoule", tostring(25)}}, order = "lbd", sprite = { filename = EQUIPPATH.."fabrication-tool-3.png", @@ -1928,10 +1922,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "40kJ" + energy_consumption = "40kJ" } } }, @@ -1940,9 +1934,9 @@ data:extend({ name = "nullius-upgrade-mining-tool-1", take_result = "nullius-mining-tool-1", localised_description = {"", - {"equipment-description.nullius-bonus-mining", 80}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(80)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 3}}}, + {"entity-description.nullius-kilowatt", tostring(3)}}}, order = "lcb", sprite = { filename = EQUIPPATH.."mining-tool-1.png", @@ -1969,10 +1963,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "4kJ" + energy_consumption = "4kJ" } } }, @@ -1981,9 +1975,9 @@ data:extend({ name = "nullius-upgrade-mining-tool-2", take_result = "nullius-mining-tool-2", localised_description = {"", - {"equipment-description.nullius-bonus-mining", 150}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(150)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 5}}}, + {"entity-description.nullius-kilowatt", tostring(5)}}}, order = "lcc", sprite = { filename = EQUIPPATH.."mining-tool-2.png", @@ -2010,10 +2004,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "6kJ" + energy_consumption = "6kJ" } } }, @@ -2021,12 +2015,12 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-multi-tool-1", take_result = "nullius-multi-tool-1", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-craft", 50, 20}, "\n", - {"equipment-description.nullius-bonus-mining", 50}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-craft", tostring(50), tostring(20)}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(50)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 5}}}, - {"entity-description.nullius-megajoule", 5}}, + {"entity-description.nullius-kilowatt", tostring(5)}}}, + {"entity-description.nullius-megajoule", tostring(5)}}, order = "lcb", sprite = { filename = EQUIPPATH.."multi-tool-1.png", @@ -2053,10 +2047,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "25kJ" + energy_consumption = "25kJ" } } }, @@ -2064,12 +2058,12 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-multi-tool-2", take_result = "nullius-multi-tool-2", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-craft", 70, 25}, "\n", - {"equipment-description.nullius-bonus-mining", 100}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-craft", tostring(70), tostring(25)}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(100)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 10}}}, - {"entity-description.nullius-megajoule", 12}}, + {"entity-description.nullius-kilowatt", tostring(10)}}}, + {"entity-description.nullius-megajoule", tostring(12)}}, order = "lcc", sprite = { filename = EQUIPPATH.."multi-tool-2.png", @@ -2096,10 +2090,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "30kJ" + energy_consumption = "30kJ" } } }, @@ -2107,13 +2101,13 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-multi-tool-3", take_result = "nullius-multi-tool-3", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-craft", 80, 25}, "\n", - {"equipment-description.nullius-bonus-mining", 125}, "\n", - {"equipment-description.nullius-bonus-reach", 2}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-craft", tostring(80), tostring(25)}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(125)}, "\n", + {"equipment-description.nullius-bonus-reach", tostring(2)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 15}}}, - {"entity-description.nullius-megajoule", 20}}, + {"entity-description.nullius-kilowatt", tostring(15)}}}, + {"entity-description.nullius-megajoule", tostring(20)}}, order = "lcd", sprite = { filename = EQUIPPATH.."multi-tool-3.png", @@ -2140,10 +2134,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 2, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "30kJ" + energy_consumption = "30kJ" } } }, @@ -2152,11 +2146,11 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-telekinesis-field-1", take_result = "nullius-telekinesis-field-1", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-reach", 8}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-reach", tostring(8)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 15}}}, - {"entity-description.nullius-kilojoule", 400}}, + {"entity-description.nullius-kilowatt", tostring(15)}}}, + {"entity-description.nullius-kilojoule", tostring(400)}}, order = "mb", sprite = { filename = EQUIPPATH.."telekinesis-1.png", @@ -2183,10 +2177,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 8, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "15kJ" + energy_consumption = "15kJ" } } }, @@ -2194,13 +2188,13 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-telekinesis-field-2", take_result = "nullius-telekinesis-field-2", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-reach", 12}, "\n", - {"equipment-description.nullius-bonus-mining", 50}, "\n", - {"equipment-description.nullius-bonus-craft", 20, 12}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-reach", tostring(12)}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(50)}, "\n", + {"equipment-description.nullius-bonus-craft", tostring(20), tostring(12)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 25}}}, - {"entity-description.nullius-megajoule", 3}}, + {"entity-description.nullius-kilowatt", tostring(25)}}}, + {"entity-description.nullius-megajoule", tostring(3)}}, order = "mc", sprite = { filename = EQUIPPATH.."telekinesis-2.png", @@ -2227,10 +2221,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 12, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "25kJ" + energy_consumption = "25kJ" } } }, @@ -2238,13 +2232,13 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-telekinesis-field-3", take_result = "nullius-telekinesis-field-3", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-reach", 16}, "\n", - {"equipment-description.nullius-bonus-mining", 100}, "\n", - {"equipment-description.nullius-bonus-craft", 40, 20}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-reach", tostring(16)}, "\n", + {"equipment-description.nullius-bonus-mining", tostring(100)}, "\n", + {"equipment-description.nullius-bonus-craft", tostring(40), tostring(20)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 30}}}, - {"entity-description.nullius-megajoule", 8}}, + {"entity-description.nullius-kilowatt", tostring(30)}}}, + {"entity-description.nullius-megajoule", tostring(8)}}, order = "md", sprite = { filename = EQUIPPATH.."telekinesis-3.png", @@ -2271,10 +2265,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 16, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "30kJ" + energy_consumption = "30kJ" } } }, @@ -2282,12 +2276,12 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-stabilizer-1", take_result = "nullius-stabilizer-1", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-speed", 7}, "\n", - {"equipment-description.nullius-bonus-cargo", 2}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-speed", tostring(7)}, "\n", + {"equipment-description.nullius-bonus-cargo", tostring(2)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 30}}}, - {"entity-description.nullius-kilojoule", 700}}, + {"entity-description.nullius-kilowatt", tostring(30)}}}, + {"entity-description.nullius-kilojoule", tostring(700)}}, order = "nb", sprite = { filename = EQUIPPATH.."stabilizer-1.png", @@ -2314,10 +2308,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "30kJ" + energy_consumption = "30kJ" } } }, @@ -2325,12 +2319,12 @@ data:extend({ type = "active-defense-equipment", name = "nullius-upgrade-stabilizer-2", take_result = "nullius-stabilizer-2", - localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-speed", 10}, "\n", - {"equipment-description.nullius-bonus-cargo", 3}, "\n", + localised_description = {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-bonus-speed", tostring(10)}, "\n", + {"equipment-description.nullius-bonus-cargo", tostring(3)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 40}}}, - {"entity-description.nullius-megajoule", 1}}, + {"entity-description.nullius-kilowatt", tostring(40)}}}, + {"entity-description.nullius-megajoule", tostring(1)}}, order = "nc", sprite = { filename = EQUIPPATH.."stabilizer-2.png", @@ -2357,10 +2351,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "40kJ" + energy_consumption = "40kJ" } } }, @@ -2368,7 +2362,7 @@ data:extend({ type = "battery-equipment", name = "nullius-upgrade-shackle", take_result = "nullius-shackle", - localised_description = {"equipment-description.nullius-penalty-speed", 25}, + localised_description = {"equipment-description.nullius-penalty-speed", tostring(25)}, order = "ns", sprite = { filename = EQUIPPATH.."shackle.png", @@ -2417,17 +2411,17 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "1kJ" + energy_consumption = "1kJ" } } }, { type = "generator-equipment", name = "nullius-portable-generator-1", - localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", 1}, + localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", tostring(1)}, localised_description = {"equipment-description.nullius-portable-generator"}, order = "obb", sprite = { @@ -2441,13 +2435,14 @@ data:extend({ height = 2, type = "full" }, - power = "400kW", + power = "400kW", energy_source = { - type = "burner", + type = "electric", usage_priority = "secondary-output" }, burner = { - fuel_category = "vehicle", + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 1, fuel_inventory_size = 2, burnt_inventory_size = 2 @@ -2457,7 +2452,7 @@ data:extend({ { type = "generator-equipment", name = "nullius-portable-generator-2", - localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", 2}, + localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", tostring(2)}, localised_description = {"equipment-description.nullius-portable-generator"}, order = "obc", sprite = { @@ -2472,13 +2467,14 @@ data:extend({ height = 3, type = "full" }, - power = "1.5MW", + power = "1.5MW", energy_source = { - type = "burner", + type = "electric", usage_priority = "secondary-output" }, burner = { - fuel_category = "vehicle", + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 1, fuel_inventory_size = 5, burnt_inventory_size = 5 @@ -2501,13 +2497,14 @@ data:extend({ height = 3, type = "full" }, - power = "1.5MW", + power = "1.5MW", energy_source = { - type = "burner", + type = "electric", usage_priority = "tertiary" }, burner = { - fuel_category = "vehicle", + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 1, fuel_inventory_size = 5, burnt_inventory_size = 5 @@ -2529,13 +2526,14 @@ data:extend({ height = 4, type = "full" }, - power = "6MW", + power = "6MW", energy_source = { - type = "burner", + type = "electric", usage_priority = "secondary-output" }, burner = { - fuel_category = "nullius-nuclear", + type = "burner", + fuel_categories = {"nullius-nuclear"}, effectivity = 1, fuel_inventory_size = 3, burnt_inventory_size = 3 @@ -2546,15 +2544,15 @@ data:extend({ { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-speed-1", - take_result = "nullius-coprocessor-speed-1", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-speed"}, " ", 1}, - localised_description = {"", {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-coprocessor-speed", 20, 10, 5}, "\n", - {"equipment-description.nullius-bonus-speed", 8}, "\n", + take_result = "nullius-coprocessor-speed-1", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-speed"}, " ", tostring(1)}, + localised_description = {"", {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-coprocessor-speed", tostring(20), tostring(10), tostring(5)}, "\n", + {"equipment-description.nullius-bonus-speed", tostring(8)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 30}}}, - {"entity-description.nullius-megajoule", 3}}, "\n", + {"entity-description.nullius-kilowatt", tostring(30)}}}, + {"entity-description.nullius-megajoule", tostring(3)}}, "\n", {"equipment-description.nullius-coprocessor-tier-1"}}, order = "lpbb", sprite = { @@ -2571,36 +2569,36 @@ data:extend({ }, energy_source = { type = "electric", - buffer_capacity = "3MJ", + buffer_capacity = "3MJ", input_flow_limit = "1MW", - drain = "30kW", + drain = "30kW", usage_priority = "secondary-input" }, categories = {"android"}, - automatic = false, + automatic = false, attack_parameters = { type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-speed-2", - take_result = "nullius-coprocessor-speed-2", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-speed"}, " ", 2}, - localised_description = {"", {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-coprocessor-speed", 30, 15, 10}, "\n", - {"equipment-description.nullius-bonus-speed", 12}, "\n", + take_result = "nullius-coprocessor-speed-2", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-speed"}, " ", tostring(2)}, + localised_description = {"", {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-coprocessor-speed", tostring(30), tostring(15), tostring(10)}, "\n", + {"equipment-description.nullius-bonus-speed", tostring(12)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 50}}}, - {"entity-description.nullius-megajoule", 10}}, "\n", + {"entity-description.nullius-kilowatt", tostring(50)}}}, + {"entity-description.nullius-megajoule", tostring(10)}}, "\n", {"equipment-description.nullius-coprocessor-tier-2"}}, order = "lpbc", sprite = { @@ -2628,25 +2626,25 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-speed-3", - take_result = "nullius-coprocessor-speed-3", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-speed"}, " ", 3}, - localised_description = {"", {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-coprocessor-speed", 50, 25, 20}, "\n", - {"equipment-description.nullius-bonus-speed", 20}, "\n", + take_result = "nullius-coprocessor-speed-3", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-speed"}, " ", tostring(3)}, + localised_description = {"", {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-coprocessor-speed", tostring(50), tostring(25), tostring(20)}, "\n", + {"equipment-description.nullius-bonus-speed", tostring(20)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 80}}}, - {"entity-description.nullius-megajoule", 20}}, "\n", + {"entity-description.nullius-kilowatt", tostring(80)}}}, + {"entity-description.nullius-megajoule", tostring(20)}}, "\n", {"equipment-description.nullius-coprocessor-tier-3"}}, order = "lpbd", sprite = { @@ -2674,21 +2672,21 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, { type = "generator-equipment", name = "nullius-upgrade-coprocessor-efficiency-1", - take_result = "nullius-coprocessor-efficiency-1", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, " ", 1}, + take_result = "nullius-coprocessor-efficiency-1", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, " ", tostring(1)}, localised_description = {"", - {"equipment-description.nullius-coprocessor-efficiency", 100, 20}, "\n", + {"equipment-description.nullius-coprocessor-efficiency", tostring(100), tostring(20)}, "\n", {"equipment-description.nullius-coprocessor-tier-1"}}, order = "lpcb", sprite = { @@ -2713,11 +2711,11 @@ data:extend({ { type = "generator-equipment", name = "nullius-upgrade-coprocessor-efficiency-2", - take_result = "nullius-coprocessor-efficiency-2", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, " ", 2}, + take_result = "nullius-coprocessor-efficiency-2", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, " ", tostring(2)}, localised_description = {"", - {"equipment-description.nullius-coprocessor-efficiency", 200, 30}, "\n", + {"equipment-description.nullius-coprocessor-efficiency", tostring(200), tostring(30)}, "\n", {"equipment-description.nullius-coprocessor-tier-2"}}, order = "lpcc", sprite = { @@ -2742,11 +2740,11 @@ data:extend({ { type = "generator-equipment", name = "nullius-upgrade-coprocessor-efficiency-3", - take_result = "nullius-coprocessor-efficiency-3", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, " ", 3}, + take_result = "nullius-coprocessor-efficiency-3", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, " ", tostring(3)}, localised_description = {"", - {"equipment-description.nullius-coprocessor-efficiency", 300, 40}, "\n", + {"equipment-description.nullius-coprocessor-efficiency", tostring(300), tostring(40)}, "\n", {"equipment-description.nullius-coprocessor-tier-3"}}, order = "lpcd", sprite = { @@ -2771,14 +2769,14 @@ data:extend({ { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-productivity-1", - take_result = "nullius-coprocessor-productivity-1", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-productivity"}, " ", 1}, - localised_description = {"", {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-coprocessor-productivity", 6, 10, 25, 20}, "\n", + take_result = "nullius-coprocessor-productivity-1", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-productivity"}, " ", tostring(1)}, + localised_description = {"", {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-coprocessor-productivity", tostring(6), tostring(10), tostring(25), tostring(20)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 20}}}, - {"entity-description.nullius-megajoule", 3}}, "\n", + {"entity-description.nullius-kilowatt", tostring(20)}}}, + {"entity-description.nullius-megajoule", tostring(3)}}, "\n", {"equipment-description.nullius-coprocessor-tier-1"}}, order = "lpdb", sprite = { @@ -2806,24 +2804,24 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-productivity-2", - take_result = "nullius-coprocessor-productivity-2", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-productivity"}, " ", 2}, - localised_description = {"", {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-coprocessor-productivity", 8, 15, 30, 30}, "\n", + take_result = "nullius-coprocessor-productivity-2", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-productivity"}, " ", tostring(2)}, + localised_description = {"", {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-coprocessor-productivity", tostring(8), tostring(15), tostring(30), tostring(30)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 40}}}, - {"entity-description.nullius-megajoule", 10}}, "\n", + {"entity-description.nullius-kilowatt", tostring(40)}}}, + {"entity-description.nullius-megajoule", tostring(10)}}, "\n", {"equipment-description.nullius-coprocessor-tier-2"}}, order = "lpdc", sprite = { @@ -2851,24 +2849,24 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-productivity-3", - take_result = "nullius-coprocessor-productivity-3", - localised_name = {"", - {"equipment-name.nullius-upgrade-coprocessor-productivity"}, " ", 3}, - localised_description = {"", {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-coprocessor-productivity", 10, 15, 40, 50}, "\n", + take_result = "nullius-coprocessor-productivity-3", + localised_name = {"", + {"equipment-name.nullius-upgrade-coprocessor-productivity"}, " ", tostring(3)}, + localised_description = {"", {"equipment-description.nullius-buffer", {"", + {"equipment-description.nullius-coprocessor-productivity", tostring(10), tostring(15), tostring(40), tostring(50)}, "\n", {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 60}}}, - {"entity-description.nullius-megajoule", 20}}, "\n", + {"entity-description.nullius-kilowatt", tostring(60)}}}, + {"entity-description.nullius-megajoule", tostring(20)}}, "\n", {"equipment-description.nullius-coprocessor-tier-3"}}, order = "lpdd", sprite = { @@ -2896,21 +2894,21 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, { type = "active-defense-equipment", name = "nullius-upgrade-coprocessor-quantum", - take_result = "nullius-coprocessor-quantum", + take_result = "nullius-coprocessor-quantum", localised_description = {"", {"equipment-description.nullius-coprocessor-quantum"}, "\n", - {"equipment-description.nullius-energy", - {"entity-description.nullius-kilowatt", 25}}}, + {"equipment-description.nullius-energy", + {"entity-description.nullius-kilowatt", tostring(25)}}}, order = "lpe", sprite = { filename = EQUIPPATH.."coprocessor/quantum.png", @@ -2937,10 +2935,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "10kJ" + energy_consumption = "10kJ" } } }, @@ -2948,10 +2946,10 @@ data:extend({ { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-speed-1", - take_result = "nullius-coprocessor-speed-1", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-speed"}, 1}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 1}, + take_result = "nullius-coprocessor-speed-1", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-speed"}, tostring(1)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(1)}, order = "lqbb", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -2978,20 +2976,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "1kJ" + energy_consumption = "1kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-speed-2", - take_result = "nullius-coprocessor-speed-2", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-speed"}, 2}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 2}, + take_result = "nullius-coprocessor-speed-2", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-speed"}, tostring(2)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(2)}, order = "lqbc", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3013,25 +3011,25 @@ data:extend({ usage_priority = "secondary-input" }, categories = {"android"}, - automatic = false, + automatic = false, attack_parameters = { type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "2kJ" + energy_consumption = "2kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-speed-3", - take_result = "nullius-coprocessor-speed-3", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-speed"}, 3}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 3}, + take_result = "nullius-coprocessor-speed-3", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-speed"}, tostring(3)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(3)}, order = "lqbd", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3058,20 +3056,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "3kJ" + energy_consumption = "3kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-efficiency-1", - take_result = "nullius-coprocessor-efficiency-1", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, 1}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 1}, + take_result = "nullius-coprocessor-efficiency-1", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, tostring(1)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(1)}, order = "lqcb", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3098,20 +3096,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "1kJ" + energy_consumption = "1kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-efficiency-2", - take_result = "nullius-coprocessor-efficiency-2", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, 2}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 2}, + take_result = "nullius-coprocessor-efficiency-2", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, tostring(2)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(2)}, order = "lqcc", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3138,20 +3136,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "2kJ" + energy_consumption = "2kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-efficiency-3", - take_result = "nullius-coprocessor-efficiency-3", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, 3}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 3}, + take_result = "nullius-coprocessor-efficiency-3", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-efficiency"}, tostring(3)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(3)}, order = "lqcd", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3178,20 +3176,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "3kJ" + energy_consumption = "3kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-productivity-1", - take_result = "nullius-coprocessor-productivity-1", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-productivity"}, 1}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 1}, + take_result = "nullius-coprocessor-productivity-1", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-productivity"}, tostring(1)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(1)}, order = "lqdb", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3218,20 +3216,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "1kJ" + energy_consumption = "1kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-productivity-2", - take_result = "nullius-coprocessor-productivity-2", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-productivity"}, 2}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 2}, + take_result = "nullius-coprocessor-productivity-2", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-productivity"}, tostring(2)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(2)}, order = "lqdc", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3258,20 +3256,20 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "2kJ" + energy_consumption = "2kJ" } } }, { type = "active-defense-equipment", name = "nullius-deactivated-coprocessor-productivity-3", - take_result = "nullius-coprocessor-productivity-3", - localised_name = {"equipment-name.nullius-deactivated-coprocessor", - {"equipment-name.nullius-upgrade-coprocessor-productivity"}, 3}, - localised_description = {"equipment-description.nullius-deactivated-coprocessor", 3}, + take_result = "nullius-coprocessor-productivity-3", + localised_name = {"equipment-name.nullius-deactivated-coprocessor", + {"equipment-name.nullius-upgrade-coprocessor-productivity"}, tostring(3)}, + localised_description = {"equipment-description.nullius-deactivated-coprocessor", tostring(3)}, order = "lqdd", sprite = { filename = EQUIPPATH.."coprocessor/disabled.png", @@ -3298,10 +3296,10 @@ data:extend({ type = "projectile", cooldown = 60, range = 1, + ammo_category = "electric", ammo_type = { type = "projectile", - category = "electric", - energy_consumption = "3kJ" + energy_consumption = "3kJ" } } }, diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 1c5b227..2e00ce5 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -35,12 +35,11 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "6kW" }, energy_usage = "69kW", - animation = data.raw["furnace"]["stone-furnace"].animation, - working_visualisations = data.raw["furnace"]["stone-furnace"].working_visualisations, + graphics_set = data.raw["furnace"]["stone-furnace"].graphics_set, fast_replaceable_group = "small-furnace", next_upgrade = "nullius-small-furnace-2" }, @@ -70,17 +69,13 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "12kW" }, energy_usage = "138kW", - module_specification = { - module_slots = 1, - module_info_icon_shift = {0, 0.5} - }, + module_slots = 1, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = data.raw["furnace"]["steel-furnace"].animation, - working_visualisations = data.raw["furnace"]["steel-furnace"].working_visualisations, + graphics_set = data.raw["furnace"]["steel-furnace"].graphics_set, fast_replaceable_group = "small-furnace", next_upgrade = "nullius-small-furnace-3" }, @@ -109,104 +104,102 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "20kW" }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 0.5} - }, + module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = { - layers = { + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "electric-furnace/electric-furnace.png", + priority = "high", + width = 129, + height = 100, + frame_count = 1, + shift = {0.2813, 0}, + scale = 0.6666, + tint = {0.7, 0.7, 0.85} + }, + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", + priority = "high", + width = 129, + height = 100, + frame_count = 1, + shift = {0.2813, 0}, + draw_as_shadow = true, + scale = 0.6666 + } + } + }, + + working_visualisations = { { - filename = BASEENTITY .. "electric-furnace/electric-furnace-base.png", - priority = "high", - width = 129, - height = 100, - frame_count = 1, - shift = {0.2813, 0}, - scale = 0.6666, - tint = {0.7, 0.7, 0.85} + fadeout = true, + animation = { + draw_as_light = true, + layers = { + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-heater.png", + priority = "high", + width = 25, + height = 15, + frame_count = 12, + animation_speed = 0.5, + shift = {0.01042, 0.5938}, + scale = 0.6666 + }, + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-light.png", + blend_mode = "additive", + width = 104, + height = 102, + repeat_count = 12, + shift = util.by_pixel(0, 0), + scale = 0.6666 + } + } + } }, { - filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", - priority = "high", - width = 129, - height = 100, - frame_count = 1, - shift = {0.2813, 0}, - draw_as_shadow = true, - scale = 0.6666 - } - } - }, - - working_visualisations = { - { - draw_as_light = true, - fadeout = true, - animation = { - layers = { - { - filename = BASEENTITY .. "electric-furnace/electric-furnace-heater.png", - priority = "high", - width = 25, - height = 15, - frame_count = 12, - animation_speed = 0.5, - shift = {0.01042, 0.5938}, - scale = 0.6666 - }, - { - filename = BASEENTITY .. "electric-furnace/electric-furnace-light.png", - blend_mode = "additive", - width = 104, - height = 102, - repeat_count = 12, - shift = util.by_pixel(0, 0), - scale = 0.6666 - } + fadeout = true, + animation = { + draw_as_light = true, + filename = BASEENTITY .. "electric-furnace/electric-furnace-ground-light.png", + blend_mode = "additive", + width = 82, + height = 64, + shift = util.by_pixel(4*0.6666, 68*0.6666) + } + }, + { + animation = { + filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-1.png", + priority = "high", + width = 19, + height = 13, + frame_count = 4, + animation_speed = 0.5, + shift = {-0.4479, -0.4271}, + scale = 0.6666 + } + }, + { + animation = { + filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-2.png", + priority = "high", + width = 12, + height = 9, + frame_count = 4, + animation_speed = 0.5, + shift = {0.041666, -0.8229}, + scale = 0.6666 } - } - }, - { - draw_as_light = true, - draw_as_sprite = false, - fadeout = true, - animation = { - filename = BASEENTITY .. "electric-furnace/electric-furnace-ground-light.png", - blend_mode = "additive", - width = 82, - height = 64, - shift = util.by_pixel(4*0.6666, 68*0.6666) - } - }, - { - animation = { - filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-1.png", - priority = "high", - width = 19, - height = 13, - frame_count = 4, - animation_speed = 0.5, - shift = {-0.4479, -0.4271}, - scale = 0.6666 - } - }, - { - animation = { - filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-2.png", - priority = "high", - width = 12, - height = 9, - frame_count = 4, - animation_speed = 0.5, - shift = {0.041666, -0.8229}, - scale = 0.6666 } } }, @@ -236,7 +229,7 @@ data:extend({ max_health = 300, corpse = "steel-furnace-remnants", vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["furnace"]["steel-furnace"].working_sound, + working_sound = data.raw["furnace"]["steel-furnace"].working_sound, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 100, percent = 90 }, @@ -251,96 +244,96 @@ data:extend({ { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - pipe_connections = {{ type="output", position = {0, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -1}, direction = defines.direction.north }} }, - off_when_no_fluid_recipe = true }, + fluid_boxes_off_when_no_fluid_recipe = true, result_inventory_size = 1, crafting_speed = 1, source_inventory_size = 1, energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "25kW" }, energy_usage = "270kW", - module_specification = { - module_slots = 1, - module_info_icon_shift = {0, 0.8} - }, + module_slots = 1, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = { - layers = { + + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "steel-furnace/steel-furnace.png", + priority = "high", + width = 171, + height = 174, + frame_count = 1, + shift = util.by_pixel(-1.25*1.5, 2*1.5), + scale = 0.75 + }, + { + filename = BASEENTITY .. "steel-furnace/steel-furnace-shadow.png", + priority = "high", + width = 277, + height = 85, + frame_count = 1, + draw_as_shadow = true, + shift = util.by_pixel(39.25*1.5, 11.25*1.5), + scale = 0.75 + } + } + }, + working_visualisations = { { - filename = BASEENTITY .. "steel-furnace/hr-steel-furnace.png", - priority = "high", - width = 171, - height = 174, - frame_count = 1, - shift = util.by_pixel(-1.25*1.5, 2*1.5), - scale = 0.75 + fadeout = true, + effect = "flicker", + animation = { + draw_as_light = true, + filename = BASEENTITY .. "steel-furnace/steel-furnace-fire.png", + priority = "high", + line_length = 8, + width = 57, + height = 81, + frame_count = 48, + direction_count = 1, + shift = util.by_pixel(-0.75*1.5, 5.75*1.5), + scale = 0.75 + } }, { - filename = BASEENTITY .. "steel-furnace/hr-steel-furnace-shadow.png", - priority = "high", - width = 277, - height = 85, - frame_count = 1, - draw_as_shadow = true, - shift = util.by_pixel(39.25*1.5, 11.25*1.5), - scale = 0.75 - } - } - }, - working_visualisations = { - { - draw_as_light = true, - fadeout = true, - effect = "flicker", - animation = { - filename = BASEENTITY .. "steel-furnace/hr-steel-furnace-fire.png", + fadeout = true, + effect = "flicker", + animation = { + filename = BASEENTITY .. "steel-furnace/steel-furnace-glow.png", + draw_as_light = true, priority = "high", - line_length = 8, - width = 57, - height = 81, - frame_count = 48, + width = 60, + height = 43, + frame_count = 1, + shift = {0.03125*1.5, 0.640625*1.5}, + scale = 1.5, + blend_mode = "additive" + } + }, + { + fadeout = true, + effect = "flicker", + animation = { + filename = BASEENTITY .. "steel-furnace/steel-furnace-working.png", + draw_as_light = true, + priority = "high", + line_length = 1, + width = 128, + height = 150, + frame_count = 1, direction_count = 1, - shift = util.by_pixel(-0.75*1.5, 5.75*1.5), + shift = util.by_pixel(0, -5*1.5), + blend_mode = "additive", scale = 0.75 - } - }, - { - fadeout = true, - draw_as_light = true, - effect = "flicker", - animation = { - filename = BASEENTITY .. "steel-furnace/steel-furnace-glow.png", - priority = "high", - width = 60, - height = 43, - frame_count = 1, - shift = {0.03125*1.5, 0.640625*1.5}, - scale = 1.5, - blend_mode = "additive" - } - }, - { - fadeout = true, - draw_as_light = true, - effect = "flicker", - animation = { - filename = BASEENTITY .. "steel-furnace/hr-steel-furnace-working.png", - priority = "high", - line_length = 1, - width = 128, - height = 150, - frame_count = 1, - direction_count = 1, - shift = util.by_pixel(0, -5*1.5), - blend_mode = "additive", - scale = 0.75 + } } } } @@ -369,75 +362,55 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {0, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - pipe_connections = {{ type="output", position = {0, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -1}, direction = defines.direction.north }} }, - off_when_no_fluid_recipe = true }, + fluid_boxes_off_when_no_fluid_recipe = true, crafting_categories = {"dry-smelting", "vent-smelting", "wet-smelting"}, crafting_speed = 2, energy_usage = "520kW", energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "60kW" }, working_visualisations = data.raw["furnace"]["electric-furnace"].working_visualisations, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, water_reflection = data.raw["furnace"]["electric-furnace"].water_reflection, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 0.8} - }, + module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = { - layers = { - { - filename = BASEENTITY .. "electric-furnace/electric-furnace-base.png", - priority = "high", - width = 129, - height = 100, - frame_count = 1, - shift = {0.421875, 0}, - tint = {0.7, 0.7, 0.85}, - hr_version = { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace.png", - priority = "high", - width = 239, - height = 219, - frame_count = 1, - shift = util.by_pixel(0.75, 5.75), - scale = 0.5, - tint = {0.7, 0.7, 0.85} - } - }, - { - filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", - priority = "high", - width = 129, - height = 100, - frame_count = 1, - shift = {0.421875, 0}, - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-shadow.png", - priority = "high", - width = 227, - height = 171, - frame_count = 1, - draw_as_shadow = true, - shift = util.by_pixel(11.25, 7.75), - scale = 0.5 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "electric-furnace/electric-furnace.png", + priority = "high", + width = 239, + height = 219, + frame_count = 1, + shift = util.by_pixel(0.75, 5.75), + scale = 0.5, + tint = {0.7, 0.7, 0.85} + }, + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", + priority = "high", + width = 227, + height = 171, + frame_count = 1, + draw_as_shadow = true, + shift = util.by_pixel(11.25, 7.75), + scale = 0.5 } } } @@ -467,123 +440,121 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - pipe_connections = {{ type="output", position = {-0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-0.5, -1}, direction = defines.direction.north }} }, - off_when_no_fluid_recipe = true }, + fluid_boxes_off_when_no_fluid_recipe = true, crafting_categories = {"bulk-smelting"}, crafting_speed = 1, energy_usage = "1220kW", energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 2.5, + emissions_per_minute = {pollution = 2.5}, drain = "180kW" }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 1} - }, + module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = { - layers = { + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "electric-furnace/electric-furnace.png", + priority = "high", + width = 239, + height = 219, + frame_count = 1, + shift = util.by_pixel(1, 7.666), + scale = 0.6666, + tint = {0.7, 0.7, 0.85} + }, + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", + priority = "high", + width = 227, + height = 171, + frame_count = 1, + draw_as_shadow = true, + shift = util.by_pixel(15, 10.333), + scale = 0.6666 + } + } + }, + + working_visualisations = { { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace.png", - priority = "high", - width = 239, - height = 219, - frame_count = 1, - shift = util.by_pixel(1, 7.666), - scale = 0.6666, - tint = {0.7, 0.7, 0.85} + fadeout = true, + animation = { + layers = { + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-heater.png", + draw_as_light = true, + priority = "high", + width = 60, + height = 56, + frame_count = 12, + animation_speed = 0.5, + shift = util.by_pixel(2.333, 43.666), + scale = 0.6666 + }, + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-light.png", + blend_mode = "additive", + width = 202, + height = 202, + repeat_count = 12, + shift = util.by_pixel(1.333, 0), + scale = 0.6666 + } + } + } }, { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-shadow.png", - priority = "high", - width = 227, - height = 171, - frame_count = 1, - draw_as_shadow = true, - shift = util.by_pixel(15, 10.333), - scale = 0.6666 - } - } - }, - - working_visualisations = { - { - draw_as_light = true, - fadeout = true, - animation = { - layers = { - { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-heater.png", - priority = "high", - width = 60, - height = 56, - frame_count = 12, - animation_speed = 0.5, - shift = util.by_pixel(2.333, 43.666), - scale = 0.6666 - }, - { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-light.png", - blend_mode = "additive", - width = 202, - height = 202, - repeat_count = 12, - shift = util.by_pixel(1.333, 0), - scale = 0.6666 - } + draw_as_sprite = false, + fadeout = true, + animation = { + filename = BASEENTITY .. "electric-furnace/electric-furnace-ground-light.png", + draw_as_light = true, + blend_mode = "additive", + width = 166, + height = 124, + shift = util.by_pixel(4, 92), + scale = 0.6666 + }, + }, + { + animation = { + filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-1.png", + priority = "high", + width = 37, + height = 25, + frame_count = 4, + animation_speed = 0.5, + shift = util.by_pixel(-27.333, -24.666), + scale = 0.6666 } - } - }, - { - draw_as_light = true, - draw_as_sprite = false, - fadeout = true, - animation = { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-ground-light.png", - blend_mode = "additive", - width = 166, - height = 124, - shift = util.by_pixel(4, 92), - scale = 0.6666 }, - }, - { - animation = { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-propeller-1.png", - priority = "high", - width = 37, - height = 25, - frame_count = 4, - animation_speed = 0.5, - shift = util.by_pixel(-27.333, -24.666), - scale = 0.6666 - } - }, - { - animation = { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-propeller-2.png", - priority = "high", - width = 23, - height = 15, - frame_count = 4, - animation_speed = 0.5, - shift = util.by_pixel(4.666, -50.666), - scale = 0.6666 + { + animation = { + filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-2.png", + priority = "high", + width = 23, + height = 15, + frame_count = 4, + animation_speed = 0.5, + shift = util.by_pixel(4.666, -50.666), + scale = 0.6666 + } } } }, @@ -630,16 +601,12 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 2, + emissions_per_minute = {pollution = 2}, drain = "100kW" }, - module_specification = { - module_slots = 3, - module_info_icon_shift = {0, 0.8} - }, + module_slots = 3, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = data.raw["furnace"]["electric-furnace"].animation, - working_visualisations = data.raw["furnace"]["electric-furnace"].working_visualisations, + graphics_set = data.raw["furnace"]["electric-furnace"].graphics_set, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, water_reflection = data.raw["furnace"]["electric-furnace"].water_reflection, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 } @@ -670,39 +637,38 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 5, + emissions_per_minute = {pollution = 5}, drain = "400kW" }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, working_visualisations = data.raw["assembling-machine"]["nullius-large-furnace-1"].working_visualisations, water_reflection = data.raw["assembling-machine"]["nullius-large-furnace-1"].water_reflection, - module_specification = { - module_slots = 3, - module_info_icon_shift = {0, 1} - }, + module_slots = 3, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, - animation = { - layers = { - { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace.png", - priority = "high", - width = 239, - height = 219, - frame_count = 1, - shift = util.by_pixel(1, 7.666), - scale = 0.6666 - }, - { - filename = BASEENTITY .. "electric-furnace/hr-electric-furnace-shadow.png", - priority = "high", - width = 227, - height = 171, - frame_count = 1, - draw_as_shadow = true, - shift = util.by_pixel(15, 10.333), - scale = 0.6666 + graphics_set = { + animation = { + layers = { + { + filename = BASEENTITY .. "electric-furnace/electric-furnace.png", + priority = "high", + width = 239, + height = 219, + frame_count = 1, + shift = util.by_pixel(1, 7.666), + scale = 0.6666 + }, + { + filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", + priority = "high", + width = 227, + height = 171, + frame_count = 1, + draw_as_shadow = true, + shift = util.by_pixel(15, 10.333), + scale = 0.6666 + } } } } @@ -726,72 +692,73 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 0.5, + emissions_per_minute = {pollution = 0.5}, drain = "10kW" }, energy_usage = "150kW", - animation = { - layers = { + + graphics_set = { + animation = { + layers = { + { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-base.png", + priority = "high", + width = 205, + height = 244, + line_length = 7, + frame_count = 49, + animation_speed = 0.4, + shift = util.by_pixel(0, -2), + scale = 0.5, + tint = {0.6, 0.8, 0.7} + }, + { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-shadow.png", + priority = "high", + width = 248, + height = 206, + line_length = 7, + frame_count = 49, + animation_speed = 0.4, + draw_as_shadow = true, + shift = util.by_pixel(11.5, 8.5), + scale = 0.5 + } + } + }, + working_visualisations = { { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-base.png", - priority = "high", - width = 205, - height = 244, - line_length = 7, - frame_count = 49, - animation_speed = 0.4, - shift = util.by_pixel(0, -2), - scale = 0.5, - tint = {0.6, 0.8, 0.7} + always_draw = true, + animation = { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-light.png", + priority = "high", + width = 205, + height = 244, + shift = util.by_pixel(0, -2), + draw_as_light = true, + scale = 0.5, + }, }, - { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-shadow.png", - priority = "high", - width = 248, - height = 206, - line_length = 7, - frame_count = 49, - animation_speed = 0.4, - draw_as_shadow = true, - shift = util.by_pixel(11.5, 8.5), - scale = 0.5 - } - } - }, - working_visualisations = { - { - draw_as_sprite = false, - draw_as_light = true, - always_draw = true, - animation = { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-light.png", - priority = "high", - width = 205, - height = 244, - shift = util.by_pixel(0, -2), - scale = 0.5 - } } }, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {-2, 1} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 1}, direction = defines.direction.west }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 3, - pipe_connections = {{ type="output", position = {2, -1} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.north }} }, }, vehicle_impact_sound = data.raw["furnace"]["stone-furnace"].vehicle_impact_sound, @@ -818,62 +785,63 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "25kW" }, energy_usage = "265kW", - animation = { - layers = { - { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-base.png", - priority = "high", - width = 205, - height = 244, - line_length = 7, - frame_count = 49, - animation_speed = 0.5, - shift = util.by_pixel(0, -2), - scale = 0.5, - tint = {0.7, 0.8, 1} - }, - { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-shadow.png", - priority = "high", - width = 248, - height = 206, - line_length = 7, - frame_count = 49, - animation_speed = 0.5, - draw_as_shadow = true, - shift = util.by_pixel(11.5, 8.5), - scale = 0.5 + + graphics_set = { + animation = { + layers = { + { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-base.png", + priority = "high", + width = 205, + height = 244, + line_length = 7, + frame_count = 49, + animation_speed = 0.5, + shift = util.by_pixel(0, -2), + scale = 0.5, + tint = {0.7, 0.8, 1} + }, + { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-shadow.png", + priority = "high", + width = 248, + height = 206, + line_length = 7, + frame_count = 49, + animation_speed = 0.5, + draw_as_shadow = true, + shift = util.by_pixel(11.5, 8.5), + scale = 0.5 + } } - } + }, + working_visualisations = data.raw["assembling-machine"]["nullius-foundry-1"].graphics_set.working_visualisations }, - working_visualisations = data.raw["assembling-machine"]["nullius-foundry-1"].working_visualisations, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1.5, - pipe_connections = {{ type="input", position = {-2, 1} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 1}, direction = defines.direction.west }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - pipe_connections = {{ type="output", position = {2, -1} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.2, -1}, direction = defines.direction.east }} }, }, - vehicle_impact_sound = data.raw["assembling-machine"]["nullius-foundry-1"].vehicle_impact_sound, + vehicle_impact_sound = data.raw["assembling-machine"]["nullius-foundry-1"].vehicle_impact_sound, working_sound = data.raw["assembling-machine"]["nullius-foundry-1"].working_sound }, @@ -894,61 +862,62 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 2, + emissions_per_minute = {pollution = 2}, drain = "50kW" }, energy_usage = "525kW", - animation = { - layers = { - { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-base.png", - priority = "high", - width = 205, - height = 244, - line_length = 7, - frame_count = 49, - animation_speed = 0.6, - shift = util.by_pixel(0, -2), - scale = 0.5 - }, - { - filename = "__angelssmelting__/graphics/entity/casting-machine/hr-casting-machine-shadow.png", - priority = "high", - width = 248, - height = 206, - line_length = 7, - frame_count = 49, - animation_speed = 0.6, - draw_as_shadow = true, - shift = util.by_pixel(11.5, 8.5), - scale = 0.5 + + graphics_set = { + animation = { + layers = { + { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-base.png", + priority = "high", + width = 205, + height = 244, + line_length = 7, + frame_count = 49, + animation_speed = 0.6, + shift = util.by_pixel(0, -2), + scale = 0.5 + }, + { + filename = "__angelssmeltinggraphics__/graphics/entity/casting-machine/casting-machine-shadow.png", + priority = "high", + width = 248, + height = 206, + line_length = 7, + frame_count = 49, + animation_speed = 0.6, + draw_as_shadow = true, + shift = util.by_pixel(11.5, 8.5), + scale = 0.5 + } } - } + }, + working_visualisations = data.raw["assembling-machine"]["nullius-foundry-1"].graphics_set.working_visualisations, }, - working_visualisations = data.raw["assembling-machine"]["nullius-foundry-1"].working_visualisations, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-2, 1} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 1}, direction = defines.direction.west }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = 5, - pipe_connections = {{ type="output", position = {2, -1} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.east }} }, }, - vehicle_impact_sound = data.raw["assembling-machine"]["nullius-foundry-1"].vehicle_impact_sound, + vehicle_impact_sound = data.raw["assembling-machine"]["nullius-foundry-1"].vehicle_impact_sound, working_sound = data.raw["assembling-machine"]["nullius-foundry-1"].working_sound }, @@ -967,12 +936,12 @@ data:extend({ selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, crafting_categories = {"ore-crushing", "hand-crushing"}, crafting_speed = 1, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 0.5, + emissions_per_minute = {pollution = 0.5}, drain = "3kW" }, energy_usage = "97kW", @@ -984,22 +953,18 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - height = 2, - pipe_connections = {{ type="input", position = {0, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 2, - base_area = 3, - height = 2, - pipe_connections = {{ type="output", position = {0, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -1}, direction = defines.direction.north }} }, - off_when_no_fluid_recipe = true }, - animation = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher"].animation), + fluid_boxes_off_when_no_fluid_recipe = true, + graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher"].graphics_set), vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["burner-ore-crusher"].working_sound, }, @@ -1022,7 +987,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 0.75, + emissions_per_minute = {pollution = 0.75}, drain = "8kW" }, energy_usage = "172kW", @@ -1030,7 +995,7 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "physical", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["ore-crusher"].working_sound, @@ -1038,22 +1003,18 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - height = 2, - pipe_connections = {{ type="input", position = {0, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 4, - base_area = 4, - height = 2, - pipe_connections = {{ type="output", position = {0, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -1}, direction = defines.direction.north }} }, - off_when_no_fluid_recipe = true }, - animation = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher-2"].animation) + fluid_boxes_off_when_no_fluid_recipe = true, + graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher-2"].graphics_set) }, { @@ -1073,7 +1034,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "20kW" }, energy_usage = "330kW", @@ -1081,7 +1042,7 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "physical", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["ore-crusher"].working_sound, @@ -1089,31 +1050,23 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - height = 2, - pipe_connections = {{ type="input", position = {0, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0, 1}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_level = 5, - base_area = 5, - height = 2, - pipe_connections = {{ type="output", position = {0, -2} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -1}, direction = defines.direction.north }} }, - off_when_no_fluid_recipe = true }, - animation = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher-3"].animation) + fluid_boxes_off_when_no_fluid_recipe = true, + graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher-3"].graphics_set) } }) -data.raw["assembling-machine"]["nullius-crusher-1"].animation.layers[1].tint = {0.6, 0.6, 0.6} -data.raw["assembling-machine"]["nullius-crusher-2"].animation.layers[1].tint = {0.6, 0.65, 0.85} -if (data.raw["assembling-machine"]["nullius-crusher-1"].animation.layers[1].hr_version ~= nil) then -data.raw["assembling-machine"]["nullius-crusher-1"].animation.layers[1].hr_version.tint = {0.6, 0.6, 0.6} -data.raw["assembling-machine"]["nullius-crusher-2"].animation.layers[1].hr_version.tint = {0.6, 0.65, 0.85} -end +data.raw["assembling-machine"]["nullius-crusher-1"].graphics_set.animation.layers[1].tint = {0.6, 0.6, 0.6} +data.raw["assembling-machine"]["nullius-crusher-2"].graphics_set.animation.layers[1].tint = {0.6, 0.65, 0.85} data:extend({ @@ -1136,7 +1089,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 0.5, + emissions_per_minute = {pollution = 0.5}, drain = "7kW" }, energy_usage = "193kW", @@ -1144,45 +1097,44 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "acid", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {-0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = {{ type="input", position = {-2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -0.5}, direction = defines.direction.west }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_level = 3, - pipe_connections = {{ type="output", position = {0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_level = 3, - pipe_connections = {{ type="output", position = {2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} } }, - animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell"].animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell"].working_visualisations, 0.81), + graphics_set = { + animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell"].graphics_set.working_visualisations, 0.81), + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["ore-floatation-cell"].working_sound, - pipe_covers = pipecoverspictures() }, { @@ -1204,7 +1156,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "15kW" }, energy_usage = "385kW", @@ -1212,46 +1164,42 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "acid", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -0.5}, direction = defines.direction.west }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} } }, - animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-2"].animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-2"].working_visualisations, 0.81), + graphics_set = { + animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-2"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-2"].graphics_set.working_visualisations, 0.81), + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["ore-floatation-cell-2"].working_sound, pipe_covers = pipecoverspictures() @@ -1275,7 +1223,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "30kW" }, energy_usage = "770kW", @@ -1283,48 +1231,42 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "acid", decrease = 50, percent = 80 } }, - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, -0.5}, direction = defines.direction.west }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0.5, -1.5}, direction = defines.direction.north }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} } }, - animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-3"].animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-3"].working_visualisations, 0.81), + graphics_set = { + animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-3"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-3"].graphics_set.working_visualisations, 0.81), + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["ore-floatation-cell-3"].working_sound, pipe_covers = pipecoverspictures() @@ -1334,16 +1276,12 @@ data:extend({ local function tint_flotation_dir(dir, speed, tint) dir.layers[1].animation_speed = speed if (tint ~= nil) then dir.layers[1].tint = tint end - if (dir.layers[1].hr_version ~= nil) then - dir.layers[1].hr_version.animation_speed = speed - if (tint ~= nil) then dir.layers[1].hr_version.tint = tint end - end end local function tint_flotation_cell(num, speed, tint) local machine = data.raw["assembling-machine"]["nullius-flotation-cell-"..num] - tint_flotation_dir(machine.animation, speed, tint) - machine.working_visualisations[5] = nil - machine.working_visualisations[6] = nil + tint_flotation_dir(machine.graphics_set.animation, speed, tint) + machine.graphics_set.working_visualisations[5] = nil + machine.graphics_set.working_visualisations[6] = nil end tint_flotation_cell(1, 0.4, {0.77, 0.77, 0.60}) tint_flotation_cell(2, 0.5, {0.8, 0.8, 1}) @@ -1357,10 +1295,10 @@ mfc1.placeable_by = {item = "nullius-flotation-cell-1", count = 1} mfc1.next_upgrade = "nullius-mirror-flotation-cell-2" mfc1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-flotation-cell-1"}} -mfc1.fluid_boxes[1].pipe_connections[1].position = {-2.5, 0.5} -mfc1.fluid_boxes[2].pipe_connections[1].position = {0.5, 2.5} -mfc1.fluid_boxes[3].pipe_connections[1].position = {2.5, -0.5} -mfc1.fluid_boxes[4].pipe_connections[1].position = {-0.5, -2.5} +mfc1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} +mfc1.fluid_boxes[2].pipe_connections[1].position = {0.5, 1.5} +mfc1.fluid_boxes[3].pipe_connections[1].position = {1.5, -0.5} +mfc1.fluid_boxes[4].pipe_connections[1].position = {-0.5, -1.5} data:extend({ mfc1, @@ -1389,10 +1327,12 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-2"].energy_source, energy_usage = "385kW", resistances = data.raw["assembling-machine"]["nullius-flotation-cell-2"].resistances, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - animation = data.raw["assembling-machine"]["nullius-flotation-cell-2"].animation, - working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].working_visualisations, + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, + }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, working_sound = data.raw["assembling-machine"]["ore-floatation-cell"].working_sound, @@ -1401,35 +1341,29 @@ data:extend({ production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {-2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} }, { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -2, - pipe_connections = {{ type="input", position = {0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ type="output", position = {-0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.5}, direction = defines.direction.north }} } } }, @@ -1456,10 +1390,9 @@ data:extend({ crafting_categories = {"ore-flotation"}, crafting_speed = 4, energy_usage = "770kW", - module_specification = { module_slots = 3 }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - animation = data.raw["assembling-machine"]["nullius-flotation-cell-3"].animation, - working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-3"].working_visualisations, + graphics_set = data.raw["assembling-machine"]["nullius-flotation-cell-3"].graphics_set, energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1470,37 +1403,29 @@ data:extend({ production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {-2.5, 0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} }, { production_type = "input", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -3, - height = 2, - pipe_connections = {{ type="input", position = {0.5, 2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {2.5, -0.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} }, { production_type = "output", pipe_picture = floatpipepics, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - height = 3, - pipe_connections = {{ type="output", position = {-0.5, -2.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.5}, direction = defines.direction.north }} } } } @@ -1508,49 +1433,32 @@ data:extend({ if mods["reskins-bobs"] then -local small_animation = data.raw["assembling-machine"]["nullius-small-furnace-3"].animation -local medium_animation = data.raw["assembling-machine"]["nullius-medium-furnace-2"].animation -local large_animation = data.raw["assembling-machine"]["nullius-large-furnace-1"].animation +local small_animation = data.raw["assembling-machine"]["nullius-small-furnace-3"].graphics_set.animation +local medium_animation = data.raw["assembling-machine"]["nullius-medium-furnace-2"].graphics_set.animation +local large_animation = data.raw["assembling-machine"]["nullius-large-furnace-1"].graphics_set.animation medium_animation.layers = { medium_animation.layers[1], { - filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/electric-furnace-mask.png", - priority = "high", - width = 119, - height = 106, - shift = util.by_pixel(1, 1), - tint = tiercolor("red"), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/hr-electric-furnace-mask.png", + filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/electric-furnace-mask.png", priority = "high", width = 238, height = 212, shift = util.by_pixel(1, 1), tint = tiercolor("red"), scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/electric-furnace-highlights.png", - priority = "high", - width = 119, - height = 106, - shift = util.by_pixel(1, 1), - blend_mode = "additive", - hr_version = { - filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/hr-electric-furnace-highlights.png", + filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/electric-furnace-highlights.png", priority = "high", width = 238, height = 212, shift = util.by_pixel(1, 1), blend_mode = "additive", scale = 0.5 - } }, medium_animation.layers[2] } medium_animation.layers[1].tint = nil -medium_animation.layers[1].hr_version.tint = nil small_animation.layers = { small_animation.layers[1], { @@ -1577,7 +1485,7 @@ small_animation.layers[1].tint = nil large_animation.layers = { large_animation.layers[1], { - filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/hr-electric-furnace-mask.png", + filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/electric-furnace-mask.png", priority = "high", width = 238, height = 212, @@ -1586,7 +1494,7 @@ large_animation.layers = { scale = 0.6666 }, { - filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/hr-electric-furnace-highlights.png", + filename = "__reskins-bobs__/graphics/entity/assembly/electric-furnace/electric-furnace-highlights.png", priority = "high", width = 238, height = 212, @@ -1598,11 +1506,10 @@ large_animation.layers = { } large_animation.layers[1].tint = nil -data.raw["assembling-machine"]["nullius-medium-furnace-3"].animation = - util.table.deepcopy(data.raw["assembling-machine"]["nullius-medium-furnace-2"].animation) -data.raw["assembling-machine"]["nullius-large-furnace-2"].animation = - util.table.deepcopy(data.raw["assembling-machine"]["nullius-large-furnace-1"].animation) -data.raw["assembling-machine"]["nullius-medium-furnace-3"].animation.layers[2].tint = tiercolor("deepblue") -data.raw["assembling-machine"]["nullius-medium-furnace-3"].animation.layers[2].hr_version.tint = tiercolor("deepblue") -data.raw["assembling-machine"]["nullius-large-furnace-2"].animation.layers[2].tint = tiercolor("deepblue") +data.raw["assembling-machine"]["nullius-medium-furnace-3"].graphics_set.animation = + util.table.deepcopy(data.raw["assembling-machine"]["nullius-medium-furnace-2"].graphics_set.animation) +data.raw["assembling-machine"]["nullius-large-furnace-2"].graphics_set.animation = + util.table.deepcopy(data.raw["assembling-machine"]["nullius-large-furnace-1"].graphics_set.animation) +data.raw["assembling-machine"]["nullius-medium-furnace-3"].graphics_set.animation.layers[2].tint = tiercolor("deepblue") +data.raw["assembling-machine"]["nullius-large-furnace-2"].graphics_set.animation.layers[2].tint = tiercolor("deepblue") end diff --git a/nullius/prototypes/entity/landing.lua b/nullius/prototypes/entity/landing.lua index ab4c2d6..8316104 100644 --- a/nullius/prototypes/entity/landing.lua +++ b/nullius/prototypes/entity/landing.lua @@ -6,7 +6,6 @@ local BASEENTITY = "__base__/graphics/entity/" local wreck_flags = { "placeable-player", "player-creation", - "hidden", "not-rotatable", "placeable-off-grid", "not-blueprintable", @@ -20,8 +19,9 @@ data:extend({ name = "nullius-landing-main", icon = "__base__/graphics/icons/crash-site-spaceship.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 600, alert_when_damaged = false, @@ -42,7 +42,7 @@ data:extend({ dying_explosion = "nuke-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-ground.png", priority = "very-low", width = 1330, height = 786, @@ -56,7 +56,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship.png", priority = "very-low", width = 1228, height = 790, @@ -66,7 +66,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-shadow.png", priority = "very-low", width = 1340, height = 842, @@ -85,8 +85,9 @@ data:extend({ name = "nullius-landing-tail", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-big-1.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 200, alert_when_damaged = false, @@ -106,7 +107,7 @@ data:extend({ dying_explosion = "big-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-big-1-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-big-1-ground.png", priority="high", width = 348, height = 136, @@ -118,14 +119,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-big-1.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-big-1.png", width = 234, height = 280, shift = util.by_pixel(-7, -8), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-big-1-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-big-1-shadow.png", width = 256, height = 44, shift = util.by_pixel(37, 26), @@ -141,8 +142,9 @@ data:extend({ name = "nullius-landing-propulsion", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-big-2.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 200, alert_when_damaged = false, @@ -165,7 +167,7 @@ data:extend({ dying_explosion = "big-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-big-2-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-big-2-ground.png", priority="high", width = 450, height = 296, @@ -177,14 +179,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-big-2.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-big-2.png", width = 242, height = 258, shift = util.by_pixel(-13, -7), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-big-2-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-big-2-shadow.png", width = 294, height = 228, shift = util.by_pixel(27, -12), @@ -200,8 +202,9 @@ data:extend({ name = "nullius-landing-vent", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-medium-1.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 100, alert_when_damaged = false, @@ -221,7 +224,7 @@ data:extend({ dying_explosion = "big-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-1-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-1-ground.png", priority="high", width = 352, height = 206, @@ -233,14 +236,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-1.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-1.png", width = 228, height = 120, shift = util.by_pixel(-14, -4), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-1-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-1-shadow.png", width = 206, height = 114, shift = util.by_pixel(16, -1), @@ -256,8 +259,9 @@ data:extend({ name = "nullius-landing-intake", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-medium-2.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 100, alert_when_damaged = false, @@ -277,7 +281,7 @@ data:extend({ dying_explosion = "big-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-2-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-2-ground.png", priority="high", width = 396, height = 214, @@ -290,14 +294,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-2.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-2.png", width = 194, height = 150, shift = util.by_pixel(-15, 8), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-2-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-2-shadow.png", width = 196, height = 114, shift = util.by_pixel(22, 15), @@ -313,8 +317,9 @@ data:extend({ name = "nullius-landing-wing", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-medium-3.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 100, alert_when_damaged = false, @@ -334,7 +339,7 @@ data:extend({ dying_explosion = "big-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-3-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-3-ground.png", priority="high", width = 350, height = 284, @@ -347,14 +352,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-3.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-3.png", width = 224, height = 236, shift = util.by_pixel(-30, 4), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-medium-3-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-medium-3-shadow.png", width = 104, height = 178, shift = util.by_pixel(6, 0), @@ -370,8 +375,9 @@ data:extend({ name = "nullius-landing-duct", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-small-3.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 50, alert_when_damaged = false, @@ -394,7 +400,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-small-3-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-small-3-ground.png", priority="high", width = 274, height = 172, @@ -407,14 +413,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-small-3.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-small-3.png", width = 164, height = 148, shift = util.by_pixel(5, -1), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-small-3-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-small-3-shadow.png", width = 156, height = 114, shift = util.by_pixel(9, -1), @@ -430,8 +436,9 @@ data:extend({ name = "nullius-landing-shielding", icon = "__base__/graphics/icons/crash-site-spaceship-wreck-small-4.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 50, alert_when_damaged = false, @@ -448,7 +455,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-small-4-ground.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-small-4-ground.png", priority="high", width = 256, height = 150, @@ -461,14 +468,14 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-small-4.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-small-4.png", width = 168, height = 142, shift = util.by_pixel(1, -3), scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-spaceship/hr-spaceship-wreck-small-4-shadow.png", + filename = BASEENTITY .. "crash-site-spaceship/spaceship-wreck-small-4-shadow.png", width = 164, height = 100, shift = util.by_pixel(19, -5), @@ -485,17 +492,18 @@ data:extend({ icon = ENTICONPATH .. "crash-site-lab-broken.png", icon_size = 64, flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 100, alert_when_damaged = false, allow_copy_paste = false, localised_description = {"entity-description.nullius-minable", - "[item=nullius-lab-1] 20x[item=red-wire] 2x[item=nullius-broken-sensor-node]"}, + "[item=nullius-lab-1] 20x[item=nullius-red-wire] 2x[item=nullius-broken-sensor-node]"}, minable = { mining_time = 1, results = { {type="item", name="nullius-lab-1", amount=1}, - {type="item", name="red-wire", amount=20}, + {type="item", name="nullius-red-wire", amount=20}, {type="item", name="nullius-broken-sensor-node", amount=2} } }, @@ -505,7 +513,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = ENTITYPATH .. "crash/hr-crash-site-lab-ground.png", + filename = ENTITYPATH .. "crash/crash-site-lab-ground.png", priority = crash_site_sprite_priority, width = 700, height = 344, @@ -518,14 +526,14 @@ data:extend({ picture = { layers = { { - filename = ENTITYPATH .. "crash/hr-crash-site-lab-repaired.png", + filename = ENTITYPATH .. "crash/crash-site-lab-repaired.png", width = 488, height = 252, shift = util.by_pixel(-18, 14), scale = 0.5 }, { - filename = ENTITYPATH .. "crash/hr-crash-site-lab-repaired-shadow.png", + filename = ENTITYPATH .. "crash/crash-site-lab-repaired-shadow.png", width = 696, height = 302, shift = util.by_pixel(-11, 12), @@ -542,6 +550,7 @@ data:extend({ icon = ENTICONPATH .. "crash-site-generator.png", icon_size = 64, flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 50, alert_when_damaged = false, @@ -564,7 +573,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = ENTITYPATH .. "crash/hr-crash-site-generator-ground.png", + filename = ENTITYPATH .. "crash/crash-site-generator-ground.png", priority = crash_site_sprite_priority, width = 384, height = 360, @@ -577,14 +586,14 @@ data:extend({ picture = { layers = { { - filename = ENTITYPATH .. "crash/hr-crash-site-generator.png", + filename = ENTITYPATH .. "crash/crash-site-generator.png", width = 286, height = 252, shift = util.by_pixel(-11, -23), scale = 0.5 }, { - filename = ENTITYPATH .. "crash/hr-crash-site-generator-shadow.png", + filename = ENTITYPATH .. "crash/crash-site-generator-shadow.png", width = 474, height = 152, draw_as_shadow = true, @@ -600,8 +609,9 @@ data:extend({ name = "nullius-landing-pod-1", icon = "__base__/graphics/icons/crash-site-chest.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 200, alert_when_damaged = false, @@ -619,7 +629,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-chests/hr-crash-site-chest-1-ground.png", + filename = BASEENTITY .. "crash-site-chests/crash-site-chest-1-ground.png", priority = crash_site_sprite_priority, width = 220, height = 148, @@ -631,7 +641,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-chests/hr-crash-site-chest-1.png", + filename = BASEENTITY .. "crash-site-chests/crash-site-chest-1.png", priority = "extra-high", width = 120, height = 76, @@ -639,7 +649,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-chests/hr-crash-site-chest-1-shadow.png", + filename = BASEENTITY .. "crash-site-chests/crash-site-chest-1-shadow.png", priority = "extra-high", width = 210, height = 128, @@ -656,8 +666,9 @@ data:extend({ name = "nullius-landing-pod-2", icon = "__base__/graphics/icons/crash-site-chest.png", icon_size = 64, - icon_mipmaps = 4, + flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 200, alert_when_damaged = false, @@ -675,7 +686,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = BASEENTITY .. "crash-site-chests/hr-crash-site-chest-2-ground.png", + filename = BASEENTITY .. "crash-site-chests/crash-site-chest-2-ground.png", priority = crash_site_sprite_priority, width = 218, height = 186, @@ -687,7 +698,7 @@ data:extend({ picture = { layers = { { - filename = BASEENTITY .. "crash-site-chests/hr-crash-site-chest-2.png", + filename = BASEENTITY .. "crash-site-chests/crash-site-chest-2.png", priority = "extra-high", width = 116, height = 88, @@ -695,7 +706,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "crash-site-chests/hr-crash-site-chest-2-shadow.png", + filename = BASEENTITY .. "crash-site-chests/crash-site-chest-2-shadow.png", priority = "extra-high", width = 188, height = 126, @@ -713,6 +724,7 @@ data:extend({ icon = ENTICONPATH .. "crash-site-assembling-machine-1-repaired.png", icon_size = 64, flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 100, alert_when_damaged = false, @@ -732,7 +744,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch = { - filename = ENTITYPATH .. "crash/hr-crash-site-assembling-machine-1-ground.png", + filename = ENTITYPATH .. "crash/crash-site-assembling-machine-1-ground.png", priority = crash_site_sprite_priority, width = 446, height = 234, @@ -745,14 +757,14 @@ data:extend({ picture = { layers = { { - filename = ENTITYPATH .. "crash/hr-crash-site-assembling-machine-1-repaired.png", + filename = ENTITYPATH .. "crash/crash-site-assembling-machine-1-repaired.png", width = 282, height = 182, shift = util.by_pixel(-12, 3), scale = 0.5 }, { - filename = ENTITYPATH .. "crash/hr-crash-site-assembling-machine-1-repaired-shadow.png", + filename = ENTITYPATH .. "crash/crash-site-assembling-machine-1-repaired-shadow.png", width = 278, height = 168, draw_as_shadow = true, @@ -769,6 +781,7 @@ data:extend({ icon = ENTICONPATH .. "crash-site-assembling-machine-2-repaired.png", icon_size = 64, flags = wreck_flags, + hidden = true, map_color = {r = 0, g = 0.365, b = 0.58, a = 1}, max_health = 100, alert_when_damaged = false, @@ -790,7 +803,7 @@ data:extend({ dying_explosion = "medium-explosion", integration_patch_render_layer = "decals", integration_patch ={ - filename = ENTITYPATH .. "crash/hr-crash-site-assembling-machine-2-ground.png", + filename = ENTITYPATH .. "crash/crash-site-assembling-machine-2-ground.png", priority = crash_site_sprite_priority, width = 290, height = 238, @@ -803,14 +816,14 @@ data:extend({ picture = { layers = { { - filename = ENTITYPATH .. "crash/hr-crash-site-assembling-machine-2-repaired.png", + filename = ENTITYPATH .. "crash/crash-site-assembling-machine-2-repaired.png", width = 198, height = 200, shift = util.by_pixel(-4, -11), scale = 0.5 }, { - filename = ENTITYPATH .. "crash/hr-crash-site-assembling-machine-2-repaired-shadow.png", + filename = ENTITYPATH .. "crash/crash-site-assembling-machine-2-repaired-shadow.png", width = 208, height = 174, draw_as_shadow = true, diff --git a/nullius/prototypes/entity/logistics.lua b/nullius/prototypes/entity/logistics.lua index 4ba42c2..4be9d30 100644 --- a/nullius/prototypes/entity/logistics.lua +++ b/nullius/prototypes/entity/logistics.lua @@ -35,17 +35,7 @@ data:extend({ pictures = { layers = { { - filename = BASEENTITY .. "radar/radar.png", - priority = "low", - width = 98, - height = 128, - apply_projection = false, - direction_count = 64, - line_length = 8, - shift = util.by_pixel(1, -16), - tint = {0.8, 0.8, 1}, - hr_version = { - filename = BASEENTITY .. "radar/hr-radar.png", + filename = BASEENTITY .. "radar/radar.png", priority = "low", width = 196, height = 254, @@ -55,30 +45,18 @@ data:extend({ shift = util.by_pixel(1, -16), tint = {0.8, 0.8, 1}, scale = 0.5 - } }, { filename = BASEENTITY .. "radar/radar-shadow.png", priority = "low", - width = 172, - height = 94, + width = 336, + height = 170, apply_projection = false, direction_count = 64, line_length = 8, - shift = util.by_pixel(39,3), + shift = util.by_pixel(39.0, 6.0), draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "radar/hr-radar-shadow.png", - priority = "low", - width = 343, - height = 186, - apply_projection = false, - direction_count = 64, - line_length = 8, - shift = util.by_pixel(39.25,3), - draw_as_shadow = true, - scale = 0.5 - } + scale = 0.5 } } }, @@ -114,16 +92,7 @@ data:extend({ pictures = { layers = { { - filename = BASEENTITY .. "radar/radar.png", - priority = "low", - width = 98, - height = 128, - apply_projection = false, - direction_count = 64, - line_length = 8, - shift = util.by_pixel(1, -16), - hr_version = { - filename = BASEENTITY .. "radar/hr-radar.png", + filename = BASEENTITY .. "radar/radar.png", priority = "low", width = 196, height = 254, @@ -132,35 +101,54 @@ data:extend({ line_length = 8, shift = util.by_pixel(1, -16), scale = 0.5 - } }, { filename = BASEENTITY .. "radar/radar-shadow.png", priority = "low", - width = 172, - height = 94, + width = 336, + height = 170, apply_projection = false, direction_count = 64, line_length = 8, - shift = util.by_pixel(39,3), + shift = util.by_pixel(39.0, 6.0), draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "radar/hr-radar-shadow.png", - priority = "low", - width = 343, - height = 186, - apply_projection = false, - direction_count = 64, - line_length = 8, - shift = util.by_pixel(39.25,3), - draw_as_shadow = true, - scale = 0.5 - } + scale = 0.5 } } }, }, - + { + -- special hidden lab that accepts all science packs (used to allow the checkpoints to work) + type = "lab", + name = "nullius-hidden-lab", + icons = data.raw.item["nullius-lab-1"].icons, + energy_usage = "95kW", + energy_source = { + type = "electric", + usage_priority = "secondary-input", + drain = "5kW" + }, + hidden = true, + inputs = { + "nullius-geology-pack", + "nullius-climatology-pack", + "nullius-mechanical-pack", + "nullius-electrical-pack", + "nullius-chemical-pack", + "nullius-physics-pack", + "nullius-astronomy-pack", + "nullius-checkpoint", + "nullius-requirement-build", + "nullius-requirement-consume", + "nullius-biochemistry-pack", + "nullius-microbiology-pack", + "nullius-botany-pack", + "nullius-dendrology-pack", + "nullius-nematology-pack", + "nullius-ichthyology-pack", + "nullius-zoology-pack", + }, + }, { type = "lab", name = "nullius-lab-1", @@ -194,18 +182,15 @@ data:extend({ "nullius-electrical-pack", "nullius-chemical-pack", "nullius-physics-pack", - "nullius-astronomy-pack" - }, - module_specification = { - module_slots = 2, - module_info_icon_shift = {0, 0.9} + "nullius-astronomy-pack", }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, on_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 33, @@ -227,7 +212,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-integration.png", + filename = BASEENTITY .. "lab/lab-integration.png", width = 242, height = 162, frame_count = 1, @@ -238,7 +223,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-shadow.png", + filename = BASEENTITY .. "lab/lab-shadow.png", width = 242, height = 136, frame_count = 1, @@ -254,7 +239,7 @@ data:extend({ off_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 1, @@ -271,7 +256,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-integration.png", + filename = BASEENTITY .. "lab/lab-integration.png", width = 242, height = 162, frame_count = 1, @@ -279,7 +264,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-shadow.png", + filename = BASEENTITY .. "lab/lab-shadow.png", width = 242, height = 136, frame_count = 1, @@ -320,16 +305,13 @@ data:extend({ energy_usage = "210kW", researching_speed = 2, inputs = data.raw.lab["nullius-lab-1"].inputs, - module_specification = { - module_slots = 3, - module_info_icon_shift = {0, 0.9} - }, + module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, on_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 33, @@ -351,7 +333,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-integration.png", + filename = BASEENTITY .. "lab/lab-integration.png", width = 242, height = 162, frame_count = 1, @@ -362,7 +344,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-shadow.png", + filename = BASEENTITY .. "lab/lab-shadow.png", width = 242, height = 136, frame_count = 1, @@ -378,7 +360,7 @@ data:extend({ off_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 1, @@ -426,16 +408,13 @@ data:extend({ energy_usage = "460kW", researching_speed = 4, inputs = data.raw.lab["nullius-lab-1"].inputs, - module_specification = { - module_slots = 4, - module_info_icon_shift = {0, 0.9} - }, + module_slots = 4, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, on_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 33, @@ -456,7 +435,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-integration.png", + filename = BASEENTITY .. "lab/lab-integration.png", width = 242, height = 162, frame_count = 1, @@ -467,7 +446,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "lab/hr-lab-shadow.png", + filename = BASEENTITY .. "lab/lab-shadow.png", width = 242, height = 136, frame_count = 1, @@ -483,7 +462,7 @@ data:extend({ off_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 1, @@ -535,18 +514,15 @@ data:extend({ "nullius-dendrology-pack", "nullius-nematology-pack", "nullius-ichthyology-pack", - "nullius-zoology-pack" - }, - module_specification = { - module_slots = 4, - module_info_icon_shift = {0, 0.9} + "nullius-zoology-pack", }, + module_slots = 4, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, on_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 33, @@ -567,7 +543,7 @@ data:extend({ scale = 0.5*1.3333 }, { - filename = BASEENTITY .. "lab/hr-lab-integration.png", + filename = BASEENTITY .. "lab/lab-integration.png", width = 242, height = 162, frame_count = 1, @@ -578,7 +554,7 @@ data:extend({ scale = 0.5*1.3333 }, { - filename = BASEENTITY .. "lab/hr-lab-shadow.png", + filename = BASEENTITY .. "lab/lab-shadow.png", width = 242, height = 136, frame_count = 1, @@ -594,7 +570,7 @@ data:extend({ off_animation = { layers = { { - filename = BASEENTITY .. "lab/hr-lab.png", + filename = BASEENTITY .. "lab/lab.png", width = 194, height = 174, frame_count = 1, @@ -610,7 +586,7 @@ data:extend({ scale = 0.5*1.3333 }, { - filename = BASEENTITY .. "lab/hr-lab-integration.png", + filename = BASEENTITY .. "lab/lab-integration.png", width = 242, height = 162, frame_count = 1, @@ -618,7 +594,7 @@ data:extend({ scale = 0.5*1.3333 }, { - filename = BASEENTITY .. "lab/hr-lab-shadow.png", + filename = BASEENTITY .. "lab/lab-shadow.png", width = 242, height = 136, frame_count = 1, @@ -655,7 +631,7 @@ data:extend({ circuit_connector_sprites = circuit_connector_definitions["lamp"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - energy_usage_per_tick = "4KW", + energy_usage_per_tick = "4kW", darkness_for_all_lamps_on = 0.5, darkness_for_all_lamps_off = 0.3, light = {intensity = 0.85, size = 36, color = {r=1.0, g=1.0, b=1.0}}, @@ -666,17 +642,7 @@ data:extend({ picture_off = { layers = { { - filename = BASEENTITY .. "small-lamp/lamp.png", - priority = "high", - width = 42, - height = 36, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, - shift = util.by_pixel(0,2.4), - scale = 0.8, - hr_version = { - filename = BASEENTITY .. "small-lamp/hr-lamp.png", + filename = BASEENTITY .. "small-lamp/lamp.png", priority = "high", width = 83, height = 70, @@ -685,21 +651,9 @@ data:extend({ direction_count = 1, shift = util.by_pixel(0.2,2.4), scale = 0.4 - } }, { - filename = BASEENTITY .. "small-lamp/lamp-shadow.png", - priority = "high", - width = 38, - height = 24, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, - shift = util.by_pixel(3.2,4), - draw_as_shadow = true, - scale = 0.8, - hr_version = { - filename = BASEENTITY .. "small-lamp/hr-lamp-shadow.png", + filename = BASEENTITY .. "small-lamp/lamp-shadow.png", priority = "high", width = 76, height = 47, @@ -709,22 +663,11 @@ data:extend({ shift = util.by_pixel(3.2, 3.8), draw_as_shadow = true, scale = 0.4 - } } } }, picture_on = { - filename = BASEENTITY .. "small-lamp/lamp-light.png", - priority = "high", - width = 46, - height = 40, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, - shift = util.by_pixel(0, -5.6), - scale = 0.8, - hr_version = { - filename = BASEENTITY .. "small-lamp/hr-lamp-light.png", + filename = BASEENTITY .. "small-lamp/lamp-light.png", priority = "high", width = 90, height = 78, @@ -733,7 +676,6 @@ data:extend({ direction_count = 1, shift = util.by_pixel(0, -5.6), scale = 0.4 - } } }, @@ -761,7 +703,7 @@ data:extend({ circuit_connector_sprites = circuit_connector_definitions["lamp"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - energy_usage_per_tick = "8KW", + energy_usage_per_tick = "8kW", darkness_for_all_lamps_on = 0.4, darkness_for_all_lamps_off = 0.2, light = {intensity = 0.95, size = 64, color = {r=1.0, g=1.0, b=1.0}}, @@ -772,17 +714,7 @@ data:extend({ picture_off = { layers = { { - filename = BASEENTITY .. "small-lamp/lamp.png", - priority = "high", - width = 42, - height = 36, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, - shift = util.by_pixel(0,3.3), - scale = 1.1, - hr_version = { - filename = BASEENTITY .. "small-lamp/hr-lamp.png", + filename = BASEENTITY .. "small-lamp/lamp.png", priority = "high", width = 83, height = 70, @@ -791,21 +723,9 @@ data:extend({ direction_count = 1, shift = util.by_pixel(0.275,3.3), scale = 0.55 - } }, { - filename = BASEENTITY .. "small-lamp/lamp-shadow.png", - priority = "high", - width = 38, - height = 24, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, - shift = util.by_pixel(4.4,5.5), - draw_as_shadow = true, - scale = 1.1, - hr_version = { - filename = BASEENTITY .. "small-lamp/hr-lamp-shadow.png", + filename = BASEENTITY .. "small-lamp/lamp-shadow.png", priority = "high", width = 76, height = 47, @@ -815,22 +735,11 @@ data:extend({ shift = util.by_pixel(4.4, 5.225), draw_as_shadow = true, scale = 0.55 - } } } }, picture_on = { - filename = BASEENTITY .. "small-lamp/lamp-light.png", - priority = "high", - width = 46, - height = 40, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, - shift = util.by_pixel(0, -7.7), - scale = 1.1, - hr_version = { - filename = BASEENTITY .. "small-lamp/hr-lamp-light.png", + filename = BASEENTITY .. "small-lamp/lamp-light.png", priority = "high", width = 90, height = 78, @@ -839,7 +748,6 @@ data:extend({ direction_count = 1, shift = util.by_pixel(0, -7.7), scale = 0.55 - } } }, @@ -848,7 +756,6 @@ data:extend({ name = "nullius-turret", icon = "__base__/graphics/icons/laser-turret.png", icon_size = 64, - icon_mipmaps = 4, flags = { "placeable-player", "placeable-enemy", "player-creation"}, minable = { mining_time = 0.6, result = "nullius-turret" }, max_health = 2000, @@ -880,7 +787,8 @@ data:extend({ preparing_animation = data.raw["electric-turret"]["laser-turret"].preparing_animation, prepared_animation = data.raw["electric-turret"]["laser-turret"].prepared_animation, energy_glow_animation = data.raw["electric-turret"]["laser-turret"].energy_glow_animation, - base_picture = data.raw["electric-turret"]["laser-turret"].base_picture, + -- base_picture = data.raw["electric-turret"]["laser-turret"].base_picture, + graphics_set = data.raw["electric-turret"]["laser-turret"].graphics_set, glow_light_intensity = 0.5, -- defaults to 0 vehicle_impact_sound = data.raw["electric-turret"]["laser-turret"].vehicle_impact_sound, water_reflection = data.raw["electric-turret"]["laser-turret"].water_reflection, @@ -893,8 +801,8 @@ data:extend({ source_direction_count = 64, source_offset = {0, -3.423489 / 4}, damage_modifier = 10, + ammo_category = "laser", ammo_type = { - category = "laser", energy_consumption = "2MJ", action = { type = "direct", @@ -915,10 +823,10 @@ if settings.startup["bobmods-logistics-inserteroverhaul"].value == false then data:extend({ { type = "inserter", - name = "turbo-inserter", + name = "bob-turbo-inserter", localised_name = {"entity-name.nullius-inserter-2"}, icon = "__base__/graphics/icons/fast-inserter.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = { mining_time = 0.1, result = "fast-inserter" }, max_health = 150, @@ -932,15 +840,15 @@ data:extend({ insert_position = {0, 1.2}, rotation_speed = 0.0333333, extension_speed = 0.08, - energy_per_rotation = "10.25KJ", - energy_per_movement = "1.5625KJ", + energy_per_rotation = "10.25kJ", + energy_per_movement = "1.5625kJ", energy_source = { type = "electric", usage_priority = "secondary-input", drain = "2kW" }, fast_replaceable_group = "inserter", - next_upgrade = "stack-inserter", + next_upgrade = "bulk-inserter", vehicle_impact_sound = data.raw["inserter"]["fast-inserter"].vehicle_impact_sound, open_sound = data.raw["inserter"]["fast-inserter"].open_sound, close_sound = data.raw["inserter"]["fast-inserter"].close_sound, @@ -957,49 +865,49 @@ data:extend({ circuit_wire_max_distance = data.raw["inserter"]["fast-inserter"].circuit_wire_max_distance, default_stack_control_input_signal = data.raw["inserter"]["fast-inserter"].default_stack_control_input_signal }, - { - type = "inserter", - name = "turbo-filter-inserter", - icon = "__base__/graphics/icons/filter-inserter.png", - icon_size = 64, icon_mipmaps = 4, - flags = {"placeable-neutral", "placeable-player", "player-creation"}, - minable = {mining_time = 0.1, result = "filter-inserter"}, - max_health = 150, - corpse = "filter-inserter-remnants", - dying_explosion = "filter-inserter-explosion", - resistances = {{ type = "impact", decrease = 100, percent = 90 }}, - collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, - selection_box = {{-0.4, -0.35}, {0.4, 0.45}}, - damaged_trigger_effect = data.raw["inserter"]["filter-inserter"].damaged_trigger_effect, - pickup_position = {0, -1}, - insert_position = {0, 1.2}, - rotation_speed = 0.0333333, - extension_speed = 0.08, - energy_per_rotation = "10.25KJ", - energy_per_movement = "1.5625KJ", - energy_source = { - type = "electric", - usage_priority = "secondary-input", - drain = "2kW" - }, - fast_replaceable_group = "inserter", - filter_count = 5, - vehicle_impact_sound = data.raw["inserter"]["filter-inserter"].vehicle_impact_sound, - open_sound = data.raw["inserter"]["filter-inserter"].open_sound, - close_sound = data.raw["inserter"]["filter-inserter"].close_sound, - working_sound = data.raw["inserter"]["filter-inserter"].working_sound, - hand_base_picture = data.raw["inserter"]["filter-inserter"].hand_base_picture, - hand_closed_picture = data.raw["inserter"]["filter-inserter"].hand_closed_picture, - hand_open_picture = data.raw["inserter"]["filter-inserter"].hand_open_picture, - hand_base_shadow = data.raw["inserter"]["filter-inserter"].hand_base_shadow, - hand_closed_shadow = data.raw["inserter"]["filter-inserter"].hand_closed_shadow, - hand_open_shadow = data.raw["inserter"]["filter-inserter"].hand_open_shadow, - platform_picture = data.raw["inserter"]["filter-inserter"].platform_picture, - circuit_wire_connection_points = data.raw["inserter"]["filter-inserter"].circuit_wire_connection_points, - circuit_connector_sprites = data.raw["inserter"]["filter-inserter"].circuit_connector_sprites, - circuit_wire_max_distance = data.raw["inserter"]["filter-inserter"].circuit_wire_max_distance, - default_stack_control_input_signal = data.raw["inserter"]["filter-inserter"].default_stack_control_input_signal - } + -- { + -- type = "inserter", + -- name = "turbo-filter-inserter", + -- icon = "__base__/graphics/icons/filter-inserter.png", + -- icon_size = 64, + -- flags = {"placeable-neutral", "placeable-player", "player-creation"}, + -- minable = {mining_time = 0.1, result = "filter-inserter"}, + -- max_health = 150, + -- corpse = "filter-inserter-remnants", + -- dying_explosion = "filter-inserter-explosion", + -- resistances = {{ type = "impact", decrease = 100, percent = 90 }}, + -- collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, + -- selection_box = {{-0.4, -0.35}, {0.4, 0.45}}, + -- damaged_trigger_effect = data.raw["inserter"]["filter-inserter"].damaged_trigger_effect, + -- pickup_position = {0, -1}, + -- insert_position = {0, 1.2}, + -- rotation_speed = 0.0333333, + -- extension_speed = 0.08, + -- energy_per_rotation = "10.25kJ", + -- energy_per_movement = "1.5625kJ", + -- energy_source = { + -- type = "electric", + -- usage_priority = "secondary-input", + -- drain = "2kW" + -- }, + -- fast_replaceable_group = "inserter", + -- filter_count = 5, + -- vehicle_impact_sound = data.raw["inserter"]["filter-inserter"].vehicle_impact_sound, + -- open_sound = data.raw["inserter"]["filter-inserter"].open_sound, + -- close_sound = data.raw["inserter"]["filter-inserter"].close_sound, + -- working_sound = data.raw["inserter"]["filter-inserter"].working_sound, + -- hand_base_picture = data.raw["inserter"]["filter-inserter"].hand_base_picture, + -- hand_closed_picture = data.raw["inserter"]["filter-inserter"].hand_closed_picture, + -- hand_open_picture = data.raw["inserter"]["filter-inserter"].hand_open_picture, + -- hand_base_shadow = data.raw["inserter"]["filter-inserter"].hand_base_shadow, + -- hand_closed_shadow = data.raw["inserter"]["filter-inserter"].hand_closed_shadow, + -- hand_open_shadow = data.raw["inserter"]["filter-inserter"].hand_open_shadow, + -- platform_picture = data.raw["inserter"]["filter-inserter"].platform_picture, + -- circuit_wire_connection_points = data.raw["inserter"]["filter-inserter"].circuit_wire_connection_points, + -- circuit_connector_sprites = data.raw["inserter"]["filter-inserter"].circuit_connector_sprites, + -- circuit_wire_max_distance = data.raw["inserter"]["filter-inserter"].circuit_wire_max_distance, + -- default_stack_control_input_signal = data.raw["inserter"]["filter-inserter"].default_stack_control_input_signal + -- } }) end @@ -1010,17 +918,7 @@ oldradar.name = "nullius-sensor-node-original" oldradar.pictures = { layers = { data.raw.radar["nullius-sensor-node-3"].pictures.layers[1], { - filename = "__reskins-bobs__/graphics/entity/warfare/radar/radar-mask.png", - priority = "low", - width = 98, - height = 128, - apply_projection = false, - direction_count = 64, - line_length = 8, - shift = util.by_pixel(1, -16), - tint = tiercolor("yellow"), - hr_version = { - filename = "__reskins-bobs__/graphics/entity/warfare/radar/hr-radar-mask.png", + filename = "__reskins-bobs__/graphics/entity/warfare/radar/radar-mask.png", priority = "low", width = 196, height = 254, @@ -1030,20 +928,9 @@ oldradar.pictures = { layers = { shift = util.by_pixel(1, -16), tint = tiercolor("yellow"), scale = 0.5 - } }, { - filename = "__reskins-bobs__/graphics/entity/warfare/radar/radar-highlights.png", - priority = "low", - width = 98, - height = 128, - apply_projection = false, - direction_count = 64, - line_length = 8, - shift = util.by_pixel(1, -16), - blend_mode = "additive", - hr_version = { - filename = "__reskins-bobs__/graphics/entity/warfare/radar/hr-radar-highlights.png", + filename = "__reskins-bobs__/graphics/entity/warfare/radar/radar-highlights.png", priority = "low", width = 196, height = 254, @@ -1053,7 +940,6 @@ oldradar.pictures = { layers = { shift = util.by_pixel(1, -16), blend_mode = "additive", scale = 0.5 - } }, data.raw.radar["nullius-sensor-node-3"].pictures.layers[2] }} @@ -1061,8 +947,6 @@ data:extend({ oldradar }) data.raw.radar["nullius-sensor-node-2"].pictures = util.table.deepcopy(oldradar.pictures) data.raw.radar["nullius-sensor-node-2"].pictures.layers[2].tint = tiercolor("red") -data.raw.radar["nullius-sensor-node-2"].pictures.layers[2].hr_version.tint = tiercolor("red") data.raw.radar["nullius-sensor-node-3"].pictures = util.table.deepcopy(oldradar.pictures) data.raw.radar["nullius-sensor-node-3"].pictures.layers[2].tint = tiercolor("blue") -data.raw.radar["nullius-sensor-node-3"].pictures.layers[2].hr_version.tint = tiercolor("blue") end diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index 1db1a2d..5b31961 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -60,12 +60,12 @@ data:extend({ vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, energy_source = { type = "electric", - emissions_per_minute = 3, + emissions_per_minute = {pollution = 3}, usage_priority = "secondary-input" }, energy_usage = "75kW", working_sound = data.raw["mining-drill"]["burner-mining-drill"].working_sound, - animations = data.raw["mining-drill"]["burner-mining-drill"].animations, + graphics_set = data.raw["mining-drill"]["burner-mining-drill"].graphics_set, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "physical", decrease = 20, percent = 50 } @@ -98,7 +98,7 @@ data:extend({ vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, energy_source = { type = "electric", - emissions_per_minute = 6, + emissions_per_minute = {pollution = 6}, usage_priority = "secondary-input" }, energy_usage = "150kW", @@ -115,124 +115,126 @@ data:extend({ working_sound = { sound = { - filename = "__base__/sound/burner-mining-drill.ogg", + filename = "__base__/sound/burner-mining-drill-1.ogg", volume = 1.2 } }, - animations = { - north = { - layers = { - { - priority = "high", - width = 173, - height = 188, - line_length = 4, - shift = util.by_pixel(2.75*1.5, 0.75), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-N.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - scale = 0.75 - }, - { - priority = "high", - width = 217, - height = 150, - line_length = 4, - shift = util.by_pixel(23.75*1.5, -1.5), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-N-shadow.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - draw_as_shadow = true, - scale = 0.75 + graphics_set = { + animations = { + north = { + layers = { + { + priority = "high", + width = 173, + height = 188, + line_length = 4, + shift = util.by_pixel(2.75*1.5, 0.75), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-N.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + scale = 0.75 + }, + { + priority = "high", + width = 217, + height = 150, + line_length = 4, + shift = util.by_pixel(23.75*1.5, -1.5), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-N-shadow.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + draw_as_shadow = true, + scale = 0.75 + } } - } - }, - east = { - layers = { - { - priority = "high", - width = 185, - height = 168, - line_length = 4, - shift = util.by_pixel(2.75*1.5, 1.5), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-E.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - scale = 0.75 - }, - { - priority = "high", - width = 185, - height = 128, - line_length = 4, - shift = util.by_pixel(13.75*1.5, 0.75), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-E-shadow.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - draw_as_shadow = true, - scale = 0.75 + }, + east = { + layers = { + { + priority = "high", + width = 185, + height = 168, + line_length = 4, + shift = util.by_pixel(2.75*1.5, 1.5), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-E.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + scale = 0.75 + }, + { + priority = "high", + width = 185, + height = 128, + line_length = 4, + shift = util.by_pixel(13.75*1.5, 0.75), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-E-shadow.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + draw_as_shadow = true, + scale = 0.75 + } } - } - }, - south = { - layers = { - { - priority = "high", - width = 174, - height = 174, - line_length = 4, - shift = util.by_pixel(0.75, -0.75), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-S.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - scale = 0.75 - }, - { - priority = "high", - width = 174, - height = 137, - line_length = 4, - shift = util.by_pixel(16.5, 2.75*1.5), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-S-shadow.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - draw_as_shadow = true, - scale = 0.75 + }, + south = { + layers = { + { + priority = "high", + width = 174, + height = 174, + line_length = 4, + shift = util.by_pixel(0.75, -0.75), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-S.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + scale = 0.75 + }, + { + priority = "high", + width = 174, + height = 137, + line_length = 4, + shift = util.by_pixel(16.5, 2.75*1.5), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-S-shadow.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + draw_as_shadow = true, + scale = 0.75 + } } - } - }, - west = { - layers = { - { - priority = "high", - width = 180, - height = 176, - line_length = 4, - shift = util.by_pixel(-2.25, 0), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-W.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - scale = 0.75 - }, - { - priority = "high", - width = 176, - height = 130, - line_length = 4, - shift = util.by_pixel(7.5*1.5, 1.5), - filename = BASEENTITY .. "burner-mining-drill/hr-burner-mining-drill-W-shadow.png", - frame_count = 32, - animation_speed = 0.5, - run_mode = "forward-then-backward", - draw_as_shadow = true, - scale = 0.75 + }, + west = { + layers = { + { + priority = "high", + width = 180, + height = 176, + line_length = 4, + shift = util.by_pixel(-2.25, 0), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-W.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + scale = 0.75 + }, + { + priority = "high", + width = 176, + height = 130, + line_length = 4, + shift = util.by_pixel(7.5*1.5, 1.5), + filename = BASEENTITY .. "burner-mining-drill/burner-mining-drill-W-shadow.png", + frame_count = 32, + animation_speed = 0.5, + run_mode = "forward-then-backward", + draw_as_shadow = true, + scale = 0.75 + } } } } @@ -262,7 +264,7 @@ data:extend({ mining_speed = 0.6, energy_source = { type = "electric", - emissions_per_minute = 6, + emissions_per_minute = {pollution = 6}, usage_priority = "secondary-input" }, energy_usage = "180kW", @@ -280,7 +282,7 @@ data:extend({ width = 10, height = 10 }, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, @@ -821,9 +823,9 @@ data:extend({ apply_tint = "status", always_draw = true, draw_as_sprite = true, - draw_as_light = true, north_animation = { filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-light.png", + draw_as_light = true, width = 16, height = 16, blend_mode = nil, @@ -833,6 +835,7 @@ data:extend({ }, east_animation = { filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-light.png", + draw_as_light = true, width = 16, height = 18, blend_mode = nil, @@ -842,6 +845,7 @@ data:extend({ }, south_animation = { filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-light.png", + draw_as_light = true, width = 20, height = 24, blend_mode = nil, @@ -851,6 +855,7 @@ data:extend({ }, west_animation = { filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-light.png", + draw_as_light = true, width = 18, height = 18, blend_mode = nil, @@ -902,7 +907,7 @@ data:extend({ mining_speed = 1.2, energy_source = { type = "electric", - emissions_per_minute = 12, + emissions_per_minute = {pollution = 12}, usage_priority = "secondary-input" }, energy_usage = "400kW", @@ -916,7 +921,7 @@ data:extend({ open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, radius_visualisation_picture = data.raw["mining-drill"]["nullius-small-miner-2"].radius_visualisation_picture, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, @@ -1204,11 +1209,11 @@ data:extend({ mining_speed = 1, energy_source = { type = "electric", - emissions_per_minute = 10, + emissions_per_minute = {pollution = 10}, usage_priority = "secondary-input" }, energy_usage = "300kW", - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, radius_visualisation_picture = data.raw["mining-drill"]["electric-mining-drill"].radius_visualisation_picture, @@ -1237,20 +1242,8 @@ data:extend({ north = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N.png", - line_length = 1, - width = 96, - height = 104, - frame_count = 1, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(0, -4), - repeat_count = 5, - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N.png", line_length = 1, width = 190, height = 208, @@ -1261,7 +1254,6 @@ data:extend({ repeat_count = 5, scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.north.layers[2], data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.north.layers[3] @@ -1270,20 +1262,8 @@ data:extend({ east = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E.png", - line_length = 1, - width = 96, - height = 94, - frame_count = 1, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(0, -4), - repeat_count = 5, - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E.png", line_length = 1, width = 192, height = 188, @@ -1294,7 +1274,6 @@ data:extend({ repeat_count = 5, scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.east.layers[2], data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.east.layers[3] @@ -1303,20 +1282,8 @@ data:extend({ south = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S.png", - line_length = 1, - width = 92, - height = 98, - frame_count = 1, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(0, -2), - repeat_count = 5, - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S.png", line_length = 1, width = 184, height = 192, @@ -1327,7 +1294,6 @@ data:extend({ repeat_count = 5, scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.south.layers[2] } @@ -1335,20 +1301,8 @@ data:extend({ west = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W.png", - line_length = 1, - width = 96, - height = 94, - frame_count = 1, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(0, -4), - repeat_count = 5, - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W.png", line_length = 1, width = 192, height = 188, @@ -1359,7 +1313,6 @@ data:extend({ repeat_count = 5, scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.west.layers[2], data.raw["mining-drill"]["electric-mining-drill"].graphics_set.animation.west.layers[3] @@ -1382,20 +1335,8 @@ data:extend({ north_animation = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", line_length = 6, width = 162, height = 156, @@ -1406,7 +1347,6 @@ data:extend({ shift = util.by_pixel(1, -11), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.working_visualisations[3].north_animation.layers[2] } @@ -1414,20 +1354,8 @@ data:extend({ east_animation = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2, -12), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", line_length = 6, width = 80, height = 160, @@ -1438,7 +1366,6 @@ data:extend({ shift = util.by_pixel(2, -12), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.working_visualisations[3].east_animation.layers[2] } @@ -1446,20 +1373,8 @@ data:extend({ south_animation = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", line_length = 6, width = 162, height = 156, @@ -1470,7 +1385,6 @@ data:extend({ shift = util.by_pixel(1, -11), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.working_visualisations[3].south_animation.layers[2] } @@ -1478,20 +1392,8 @@ data:extend({ west_animation = { layers = { { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2, -12), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", line_length = 6, width = 80, height = 160, @@ -1502,7 +1404,6 @@ data:extend({ shift = util.by_pixel(2, -12), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, data.raw["mining-drill"]["electric-mining-drill"].graphics_set.working_visualisations[3].west_animation.layers[2] } @@ -1517,20 +1418,8 @@ data:extend({ animated_shift = true, always_draw = true, east_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2, 4), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", line_length = 6, width = 66, height = 154, @@ -1541,23 +1430,10 @@ data:extend({ shift = util.by_pixel(-3, 3), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, west_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2, 4), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", line_length = 6, width = 66, height = 154, @@ -1568,7 +1444,6 @@ data:extend({ shift = util.by_pixel(-3, 3), scale = 0.5, tint = {0.6, 0.7, 0.8} - } } }, @@ -1577,19 +1452,8 @@ data:extend({ always_draw = true, north_animation = nil, east_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-front.png", - line_length = 1, - width = 66, - height = 74, - frame_count = 1, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(22, 10), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-front.png", line_length = 1, width = 136, height = 148, @@ -1599,25 +1463,13 @@ data:extend({ shift = util.by_pixel(21, 10), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, south_animation = { layers = { data.raw["mining-drill"]["electric-mining-drill"].graphics_set.working_visualisations[7].south_animation.layers[1], { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-front.png", - line_length = 1, - width = 96, - height = 54, - frame_count = 1, - animation_speed = 0.4, - repeat_count = 5, - shift = util.by_pixel(0, 26), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-front.png", line_length = 1, width = 190, height = 104, @@ -1627,24 +1479,12 @@ data:extend({ shift = util.by_pixel(0, 27), scale = 0.5, tint = {0.6, 0.7, 0.8} - } }, } }, west_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-front.png", - line_length = 1, - width = 68, - height = 70, - frame_count = 1, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(-22, 12), - tint = {0.6, 0.7, 0.8}, - hr_version = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-front.png", line_length = 1, width = 134, height = 140, @@ -1654,7 +1494,6 @@ data:extend({ shift = util.by_pixel(-22, 12), scale = 0.5, tint = {0.6, 0.7, 0.8} - } } }, @@ -1684,11 +1523,11 @@ data:extend({ mining_speed = 2, energy_source = { type = "electric", - emissions_per_minute = 20, + emissions_per_minute = {pollution = 20}, usage_priority = "secondary-input" }, energy_usage = "750kW", - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, base_productivity = 0.05, @@ -1726,7 +1565,7 @@ data:extend({ mining_speed = 1.5, energy_source = { type = "electric", - emissions_per_minute = 15, + emissions_per_minute = {pollution = 15}, usage_priority = "secondary-input" }, energy_usage = "450kW", @@ -1744,7 +1583,7 @@ data:extend({ width = 10, height = 10 }, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, @@ -1766,7 +1605,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N.png", line_length = 1, width = 190, height = 208, @@ -1780,7 +1619,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N-output.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-output.png", line_length = 5, width = 60, height = 66, @@ -1792,7 +1631,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-shadow.png", line_length = 1, width = 212, height = 204, @@ -1809,7 +1648,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E.png", line_length = 1, width = 192, height = 188, @@ -1823,7 +1662,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-output.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-output.png", line_length = 5, width = 50, height = 74, @@ -1835,7 +1674,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-shadow.png", line_length = 1, width = 222, height = 182, @@ -1852,7 +1691,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S.png", line_length = 1, width = 184, height = 192, @@ -1866,7 +1705,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-shadow.png", line_length = 1, width = 212, height = 204, @@ -1883,7 +1722,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W.png", line_length = 1, width = 192, height = 188, @@ -1897,7 +1736,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-output.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-output.png", line_length = 5, width = 50, height = 60, @@ -1909,7 +1748,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-shadow.png", line_length = 1, width = 200, height = 182, @@ -1937,7 +1776,7 @@ data:extend({ apply_tint = "resource-color", animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-smoke.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-smoke.png", line_length = 6, width = 48, height = 72, @@ -1962,7 +1801,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N-smoke.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-smoke.png", line_length = 5, width = 42, height = 58, @@ -1987,7 +1826,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", line_length = 6, width = 162, height = 156, @@ -2001,7 +1840,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-shadow.png", line_length = 7, width = 218, height = 56, @@ -2018,7 +1857,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", line_length = 6, width = 80, height = 160, @@ -2032,7 +1871,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-shadow.png", line_length = 7, width = 180, height = 164, @@ -2049,7 +1888,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", line_length = 6, width = 162, height = 156, @@ -2063,7 +1902,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-shadow.png", line_length = 7, width = 218, height = 56, @@ -2080,7 +1919,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", line_length = 6, width = 80, height = 160, @@ -2094,7 +1933,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-shadow.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-shadow.png", line_length = 7, width = 180, height = 164, @@ -2117,7 +1956,7 @@ data:extend({ apply_tint = "resource-color", animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-smoke-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-smoke-front.png", line_length = 6, width = 148, height = 132, @@ -2143,7 +1982,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-smoke.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-smoke.png", line_length = 5, width = 46, height = 56, @@ -2159,7 +1998,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-smoke.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-smoke.png", line_length = 5, width = 48, height = 36, @@ -2175,7 +2014,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-smoke.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-smoke.png", line_length = 5, width = 46, height = 54, @@ -2195,7 +2034,7 @@ data:extend({ always_draw = true, east_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", line_length = 6, width = 66, height = 154, @@ -2209,7 +2048,7 @@ data:extend({ }, west_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", line_length = 6, width = 66, height = 154, @@ -2229,7 +2068,7 @@ data:extend({ north_animation = nil, east_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-front.png", line_length = 1, width = 136, height = 148, @@ -2244,7 +2083,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-output.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-output.png", line_length = 5, width = 84, height = 56, @@ -2255,7 +2094,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-front.png", line_length = 1, width = 190, height = 104, @@ -2270,7 +2109,7 @@ data:extend({ }, west_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-front.png", line_length = 1, width = 134, height = 140, @@ -2290,7 +2129,7 @@ data:extend({ draw_as_sprite = true, -- draw_as_light = true, north_animation = { - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N-light.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-light.png", width = 32, height = 32, blend_mode = nil, @@ -2299,7 +2138,7 @@ data:extend({ scale = 0.6666 }, east_animation = { - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-light.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-light.png", width = 32, height = 34, blend_mode = nil, @@ -2308,7 +2147,7 @@ data:extend({ scale = 0.6666 }, south_animation = { - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-light.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-light.png", width = 38, height = 46, blend_mode = nil, @@ -2317,7 +2156,7 @@ data:extend({ scale = 0.6666 }, west_animation = { - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-light.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-light.png", width = 32, height = 34, blend_mode = nil, @@ -2369,7 +2208,7 @@ data:extend({ mining_speed = 3, energy_source = { type = "electric", - emissions_per_minute = 30, + emissions_per_minute = {pollution = 30}, usage_priority = "secondary-input" }, energy_usage = "1.2MW", @@ -2383,7 +2222,7 @@ data:extend({ open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, radius_visualisation_picture = data.raw["mining-drill"]["nullius-large-miner-1"].radius_visualisation_picture, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, @@ -2403,7 +2242,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-N.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N.png", line_length = 1, width = 190, height = 208, @@ -2422,7 +2261,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E.png", line_length = 1, width = 192, height = 188, @@ -2441,7 +2280,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S.png", line_length = 1, width = 184, height = 192, @@ -2459,7 +2298,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W.png", line_length = 1, width = 192, height = 188, @@ -2492,7 +2331,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", line_length = 6, width = 162, height = 156, @@ -2510,7 +2349,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", line_length = 6, width = 80, height = 160, @@ -2528,7 +2367,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", line_length = 6, width = 162, height = 156, @@ -2546,7 +2385,7 @@ data:extend({ layers = { { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", line_length = 6, width = 80, height = 160, @@ -2571,7 +2410,7 @@ data:extend({ always_draw = true, east_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", line_length = 6, width = 66, height = 154, @@ -2584,7 +2423,7 @@ data:extend({ }, west_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-horizontal-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", line_length = 6, width = 66, height = 154, @@ -2603,7 +2442,7 @@ data:extend({ north_animation = nil, east_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-E-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-front.png", line_length = 1, width = 136, height = 148, @@ -2618,7 +2457,7 @@ data:extend({ data.raw["mining-drill"]["nullius-large-miner-1"].graphics_set.working_visualisations[7].south_animation.layers[1], { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-S-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-front.png", line_length = 1, width = 190, height = 104, @@ -2632,7 +2471,7 @@ data:extend({ }, west_animation = { priority = "high", - filename = BASEENTITY .. "electric-mining-drill/hr-electric-mining-drill-W-front.png", + filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-front.png", line_length = 1, width = 134, height = 140, @@ -2654,8 +2493,8 @@ data:extend({ if mods["reskins-bobs"] then -local small_miner = util.table.deepcopy(data.raw["mining-drill"]["nullius-small-miner-3"].graphics_set) -small_miner.working_visualisations[3].north_animation.layers = { + local small_miner = util.table.deepcopy(data.raw["mining-drill"]["nullius-small-miner-3"].graphics_set) + small_miner.working_visualisations[3].north_animation.layers = { small_miner.working_visualisations[3].north_animation.layers[1], { priority = "high", @@ -2686,8 +2525,8 @@ small_miner.working_visualisations[3].north_animation.layers = { scale = 0.6666 }, small_miner.working_visualisations[3].north_animation.layers[2] -} -small_miner.working_visualisations[3].east_animation.layers = { + } + small_miner.working_visualisations[3].east_animation.layers = { small_miner.working_visualisations[3].east_animation.layers[1], { priority = "high", @@ -2782,20 +2621,8 @@ local medium_miner = util.table.deepcopy(data.raw["mining-drill"]["nullius-mediu medium_miner.working_visualisations[3].north_animation.layers = { medium_miner.working_visualisations[3].north_animation.layers[1], { - priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-mask.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12), - tint = {240, 160, 0}, - hr_version = { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-mask.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-mask.png", line_length = 6, width = 162, height = 156, @@ -2806,23 +2633,10 @@ medium_miner.working_visualisations[3].north_animation.layers = { shift = util.by_pixel(1, -11), tint = {240, 160, 0}, scale = 0.5 - } }, { - priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-highlights.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12), - blend_mode = "additive", - hr_version = { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-highlights.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-highlights.png", line_length = 6, width = 162, height = 156, @@ -2833,27 +2647,14 @@ medium_miner.working_visualisations[3].north_animation.layers = { shift = util.by_pixel(1, -11), blend_mode = "additive", scale = 0.5 - } }, medium_miner.working_visualisations[3].north_animation.layers[2] } medium_miner.working_visualisations[3].east_animation.layers = { medium_miner.working_visualisations[3].east_animation.layers[1], { - priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-mask.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2, -12), - tint = {240, 160, 0}, - hr_version = { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-mask.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-mask.png", line_length = 6, width = 80, height = 160, @@ -2864,23 +2665,10 @@ medium_miner.working_visualisations[3].east_animation.layers = { shift = util.by_pixel(2, -12), tint = {240, 160, 0}, scale = 0.5 - } }, { - priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-highlights.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2, -12), - blend_mode = "additive", - hr_version = { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-highlights.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-highlights.png", line_length = 6, width = 80, height = 160, @@ -2891,27 +2679,14 @@ medium_miner.working_visualisations[3].east_animation.layers = { shift = util.by_pixel(2, -12), blend_mode = "additive", scale = 0.5 - } }, medium_miner.working_visualisations[3].east_animation.layers[2] } medium_miner.working_visualisations[6].east_animation = { layers = { medium_miner.working_visualisations[6].east_animation, { - priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-front-mask.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2, 4), - tint = {240, 160, 0}, - hr_version = { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-front-mask.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-front-mask.png", line_length = 6, width = 66, height = 154, @@ -2922,23 +2697,10 @@ medium_miner.working_visualisations[6].east_animation = { layers = { shift = util.by_pixel(-3, 3), tint = {240, 160, 0}, scale = 0.5 - } }, { - priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-front-highlights.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2, 4), - blend_mode = "additive", - hr_version = { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-front-highlights.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-front-highlights.png", line_length = 6, width = 66, height = 154, @@ -2949,7 +2711,6 @@ medium_miner.working_visualisations[6].east_animation = { layers = { shift = util.by_pixel(-3, 3), blend_mode = "additive", scale = 0.5 - } } }} medium_miner.working_visualisations[3].south_animation = @@ -2977,23 +2738,6 @@ medium_miner.working_visualisations[7].west_animation.filename = medium_miner.working_visualisations[3].north_animation.layers[2].tint = {118, 149, 235} medium_miner.working_visualisations[3].east_animation.layers[2].tint = {118, 149, 235} medium_miner.working_visualisations[6].east_animation.layers[2].tint = {118, 149, 235} -medium_miner.animation.north.layers[1].hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-N.png" -medium_miner.animation.east.layers[1].hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-E.png" -medium_miner.animation.west.layers[1].hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-W.png" -medium_miner.working_visualisations[7].east_animation.hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-E-front.png" -medium_miner.working_visualisations[7].south_animation.layers[1].hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-S-output.png" -medium_miner.working_visualisations[7].south_animation.layers[2].hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-S-front.png" -medium_miner.working_visualisations[7].west_animation.hr_version.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-W-front.png" -medium_miner.working_visualisations[3].north_animation.layers[2].hr_version.tint = {118, 149, 235} -medium_miner.working_visualisations[3].east_animation.layers[2].hr_version.tint = {118, 149, 235} -medium_miner.working_visualisations[6].east_animation.layers[2].hr_version.tint = {118, 149, 235} data.raw["mining-drill"]["nullius-medium-miner-3"].graphics_set = medium_miner @@ -3002,7 +2746,7 @@ large_miner.working_visualisations[3].north_animation.layers = { large_miner.working_visualisations[3].north_animation.layers[1], { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-mask.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-mask.png", line_length = 6, width = 162, height = 156, @@ -3016,7 +2760,7 @@ large_miner.working_visualisations[3].north_animation.layers = { }, { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-highlights.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-highlights.png", line_length = 6, width = 162, height = 156, @@ -3034,7 +2778,7 @@ large_miner.working_visualisations[3].east_animation.layers = { large_miner.working_visualisations[3].east_animation.layers[1], { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-mask.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-mask.png", line_length = 6, width = 80, height = 160, @@ -3048,7 +2792,7 @@ large_miner.working_visualisations[3].east_animation.layers = { }, { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-highlights.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-highlights.png", line_length = 6, width = 80, height = 160, @@ -3066,7 +2810,7 @@ large_miner.working_visualisations[6].east_animation = { layers = { large_miner.working_visualisations[6].east_animation, { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-front-mask.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-front-mask.png", line_length = 6, width = 66, height = 154, @@ -3080,7 +2824,7 @@ large_miner.working_visualisations[6].east_animation = { layers = { }, { priority = "high", - filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/hr-electric-mining-drill-horizontal-front-highlights.png", + filename = "__reskins-bobs__/graphics/entity/mining/mining-drill/drill/electric-mining-drill-horizontal-front-highlights.png", line_length = 6, width = 66, height = 154, @@ -3102,19 +2846,19 @@ large_miner.working_visualisations[6].west_animation = data.raw["mining-drill"]["nullius-large-miner-1"].graphics_set = util.table.deepcopy(large_miner) large_miner.animation.north.layers[1].filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-N.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-N.png" large_miner.animation.east.layers[1].filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-E.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-E.png" large_miner.animation.west.layers[1].filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-W.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-W.png" large_miner.working_visualisations[7].east_animation.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-E-front.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-E-front.png" large_miner.working_visualisations[7].south_animation.layers[1].filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-S-output.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-S-output.png" large_miner.working_visualisations[7].south_animation.layers[2].filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-S-front.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-S-front.png" large_miner.working_visualisations[7].west_animation.filename = - "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/hr-electric-mining-drill-W-front.png" + "__reskins-bobs__/graphics/entity/mining/mining-drill/area-frame/electric-mining-drill-W-front.png" large_miner.working_visualisations[3].north_animation.layers[2].tint = {118, 149, 235} large_miner.working_visualisations[3].east_animation.layers[2].tint = {118, 149, 235} large_miner.working_visualisations[6].east_animation.layers[2].tint = {118, 149, 235} diff --git a/nullius/prototypes/entity/pipe_graphics.lua b/nullius/prototypes/entity/pipe_graphics.lua index 50b3ccf..e266d2a 100644 --- a/nullius/prototypes/entity/pipe_graphics.lua +++ b/nullius/prototypes/entity/pipe_graphics.lua @@ -7,277 +7,151 @@ function pipepics(dir) return { straight_vertical_single = { - filename = dir.."pipe-straight-vertical-single.png", - priority = "extra-high", - width = 80, - height = 80, - hr_version = { - filename = dir.."hr-pipe-straight-vertical-single.png", + filename = dir.."pipe-straight-vertical-single.png", priority = "extra-high", width = 160, height = 160, scale = 0.5 - } }, straight_vertical = { - filename = dir.."pipe-straight-vertical.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-straight-vertical.png", + filename = dir.."pipe-straight-vertical.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, straight_vertical_window = { - filename = dir.."pipe-straight-vertical-window.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-straight-vertical-window.png", + filename = dir.."pipe-straight-vertical-window.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, straight_horizontal_window = { - filename = dir.."pipe-straight-horizontal-window.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-straight-horizontal-window.png", + filename = dir.."pipe-straight-horizontal-window.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, straight_horizontal = { - filename = dir.."pipe-straight-horizontal.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-straight-horizontal.png", + filename = dir.."pipe-straight-horizontal.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, corner_up_right = { - filename = dir.."pipe-corner-up-right.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-corner-up-right.png", + filename = dir.."pipe-corner-up-right.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, corner_up_left = { - filename = dir.."pipe-corner-up-left.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-corner-up-left.png", + filename = dir.."pipe-corner-up-left.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, corner_down_right = { - filename = dir.."pipe-corner-down-right.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-corner-down-right.png", + filename = dir.."pipe-corner-down-right.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, corner_down_left = { - filename = dir.."pipe-corner-down-left.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-corner-down-left.png", + filename = dir.."pipe-corner-down-left.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, t_up = { - filename = dir.."pipe-t-up.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-t-up.png", + filename = dir.."pipe-t-up.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, t_down = { - filename = dir.."pipe-t-down.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-t-down.png", + filename = dir.."pipe-t-down.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, t_right = { - filename = dir.."pipe-t-right.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-t-right.png", + filename = dir.."pipe-t-right.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, t_left = { - filename = dir.."pipe-t-left.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-t-left.png", + filename = dir.."pipe-t-left.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, cross = { - filename = dir.."pipe-cross.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-cross.png", + filename = dir.."pipe-cross.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, ending_up = { - filename = dir.."pipe-ending-up.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-ending-up.png", + filename = dir.."pipe-ending-up.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, ending_down = { - filename = dir.."pipe-ending-down.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-ending-down.png", + filename = dir.."pipe-ending-down.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, ending_right = { - filename = dir.."pipe-ending-right.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-ending-right.png", + filename = dir.."pipe-ending-right.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, ending_left = { - filename = dir.."pipe-ending-left.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-ending-left.png", + filename = dir.."pipe-ending-left.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, horizontal_window_background = { - filename = dir.."pipe-horizontal-window-background.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-horizontal-window-background.png", + filename = dir.."pipe-horizontal-window-background.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, vertical_window_background = { - filename = dir.."pipe-vertical-window-background.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-vertical-window-background.png", + filename = dir.."pipe-vertical-window-background.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, fluid_background = { - filename = BASEENTITY .. "pipe/fluid-background.png", - priority = "extra-high", - width = 32, - height = 20, - hr_version = { - filename = BASEENTITY .. "pipe/hr-fluid-background.png", + filename = BASEENTITY .. "pipe/fluid-background.png", priority = "extra-high", width = 64, height = 40, scale = 0.5 - } }, low_temperature_flow = { filename = BASEENTITY .. "pipe/fluid-flow-low-temperature.png", @@ -298,16 +172,7 @@ function pipepics(dir) height = 18 }, gas_flow = { - filename = BASEENTITY .. "pipe/steam.png", - priority = "extra-high", - line_length = 10, - width = 24, - height = 15, - frame_count = 60, - axially_symmetrical = false, - direction_count = 1, - hr_version = { - filename = BASEENTITY .. "pipe/hr-steam.png", + filename = BASEENTITY .. "pipe/steam.png", priority = "extra-high", line_length = 10, width = 48, @@ -315,7 +180,6 @@ function pipepics(dir) frame_count = 60, axially_symmetrical = false, direction_count = 1 - } } } end @@ -323,57 +187,33 @@ end function undergroundpipepics(dir) return { - up = { - filename = dir.."pipe-to-ground-up.png", - priority = "high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-to-ground-up.png", + north = { + filename = dir.."pipe-to-ground-up.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, - down = { - filename = dir.."pipe-to-ground-down.png", - priority = "high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-to-ground-down.png", + south = { + filename = dir.."pipe-to-ground-down.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, - left = { - filename = dir.."pipe-to-ground-left.png", - priority = "high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-to-ground-left.png", + west = { + filename = dir.."pipe-to-ground-left.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, - right = { - filename = dir.."pipe-to-ground-right.png", - priority = "high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-to-ground-right.png", + east = { + filename = dir.."pipe-to-ground-right.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } } } end @@ -384,128 +224,76 @@ function pipecoverspics(dir) north = { layers = { { - filename = dir.."pipe-cover-north.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-cover-north.png", + filename = dir.."pipe-cover-north.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, { - filename = BASEENTITY .. "pipe-covers/pipe-cover-north-shadow.png", - priority = "extra-high", - width = 64, - height = 64, - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "pipe-covers/hr-pipe-cover-north-shadow.png", + filename = BASEENTITY .. "pipe-covers/pipe-cover-north-shadow.png", priority = "extra-high", width = 128, height = 128, scale = 0.5, draw_as_shadow = true - } } } }, east = { layers = { { - filename = dir.."pipe-cover-east.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-cover-east.png", + filename = dir.."pipe-cover-east.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, { - filename = BASEENTITY .. "pipe-covers/pipe-cover-east-shadow.png", - priority = "extra-high", - width = 64, - height = 64, - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "pipe-covers/hr-pipe-cover-east-shadow.png", + filename = BASEENTITY .. "pipe-covers/pipe-cover-east-shadow.png", priority = "extra-high", width = 128, height = 128, scale = 0.5, draw_as_shadow = true - } } } }, south = { layers = { { - filename = dir.."pipe-cover-south.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-cover-south.png", + filename = dir.."pipe-cover-south.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, { - filename = BASEENTITY .. "pipe-covers/pipe-cover-south-shadow.png", - priority = "extra-high", - width = 64, - height = 64, - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "pipe-covers/hr-pipe-cover-south-shadow.png", + filename = BASEENTITY .. "pipe-covers/pipe-cover-south-shadow.png", priority = "extra-high", width = 128, height = 128, scale = 0.5, draw_as_shadow = true - } } } }, west = { layers = { { - filename = dir.."pipe-cover-west.png", - priority = "extra-high", - width = 64, - height = 64, - hr_version = { - filename = dir.."hr-pipe-cover-west.png", + filename = dir.."pipe-cover-west.png", priority = "extra-high", width = 128, height = 128, scale = 0.5 - } }, { - filename = BASEENTITY .. "pipe-covers/pipe-cover-west-shadow.png", - priority = "extra-high", - width = 64, - height = 64, - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "pipe-covers/hr-pipe-cover-west-shadow.png", + filename = BASEENTITY .. "pipe-covers/pipe-cover-west-shadow.png", priority = "extra-high", width = 128, height = 128, scale = 0.5, draw_as_shadow = true - } } } } diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index c1ee5ae..0b7ef90 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -5,6 +5,9 @@ local BASEENTITY = "__base__/graphics/entity/" require("pipe_graphics") +-- TODO: handle valves correctly +data.raw["storage-tank"]["valve-return"] = table.deepcopy(data.raw["storage-tank"]["storage-tank"]) +data.raw["storage-tank"]["valve-return"].name = "valve-return" local op = data.raw["offshore-pump"]["offshore-pump"] local si1 = { @@ -13,7 +16,7 @@ local si1 = { icons = data.raw.item["nullius-seawater-intake-1"].icons, minable = {mining_time = 0.5, result = "nullius-seawater-intake-1"}, flags = {"placeable-neutral", "player-creation"}, - collision_mask = {"object-layer", "ground-tile"}, + collision_mask = { layers = {object = true, ground_tile = true}}, crafting_categories = {"seawater-pumping"}, crafting_speed = 1, fixed_recipe = "nullius-seawater", @@ -21,9 +24,9 @@ local si1 = { show_recipe_icon_on_map = false, energy_source = { type = "electric", - usage_priority = "secondary-input", - emissions = 0.01, - drain = "10kW" + usage_priority = "secondary-input", + emissions = 0.01, + drain = "10kW" }, energy_usage = "190kW", ingredient_count = 1, @@ -37,23 +40,20 @@ local si1 = { { type = "fire", decrease = 100, percent = 90 } }, fluid_boxes = {{ - production_type = "output", - base_area = 8, - base_level = 4, + production_type = "output", + volume = 500, pipe_covers = pipecoverspictures(), filter = "nullius-seawater", - pipe_connections = {{position = {0, 2}, type = "output"}} + pipe_connections = {{position = {0, 1}, flow_direction = "output", direction = defines.direction.south}} }}, pipe_covers = pipecoverspictures(), - module_specification = { - module_slots = 1, - module_info_icon_shift = { 0, 0 } - }, + module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "seawater-intake", next_upgrade = "nullius-seawater-intake-2", working_sound = op.working_sound, - vehicle_impact_sound = op.vehicle_impact_sound + vehicle_impact_sound = op.vehicle_impact_sound, + graphics_set = {} } si2 = util.table.deepcopy(si1) @@ -65,11 +65,10 @@ si2.energy_source.drain = "50kW" si2.energy_usage = "750kW" si2.next_upgrade = nil si2.max_health = 300 -si2.fluid_boxes[1].base_level = 6 -si2.fluid_boxes[1].height = 2 -si2.module_specification.module_slots = 2 +si2.fluid_boxes[1].volume = 500 +si2.module_slots = 2 -si2.animation = { +si2.graphics_set.animation = { north = scale_image({ layers = { animate_frame(op.graphics_set.glass_pictures.north), animate_frame(op.graphics_set.base_pictures.north), @@ -100,7 +99,7 @@ si2.animation = { }}, 1.2, { x = 0.9, y = 0 }) } -si2.working_visualisations = {{ +si2.graphics_set.working_visualisations = {{ apply_recipe_tint = "primary", north_animation = scale_image(op.graphics_set.fluid_animation.north, 1.2, { x = 0, y = 0.9 }), @@ -112,15 +111,15 @@ si2.working_visualisations = {{ 1.2, { x = 0.9, y = 0 }) }} -si1.animation = { - north = scale_image(si2.animation.north, 0.75, { x = 0, y = 0.38 }), - east = scale_image(si2.animation.east, 0.75, { x = -0.38, y = 0 }), - south = scale_image(si2.animation.south, 0.75, { x = 0, y = -0.38 }), - west = scale_image(si2.animation.west, 0.75, { x = 0.38, y = 0 }) +si1.graphics_set.animation = { + north = scale_image(si2.graphics_set.animation.north, 0.75, { x = 0, y = 0.38 }), + east = scale_image(si2.graphics_set.animation.east, 0.75, { x = -0.38, y = 0 }), + south = scale_image(si2.graphics_set.animation.south, 0.75, { x = 0, y = -0.38 }), + west = scale_image(si2.graphics_set.animation.west, 0.75, { x = 0.38, y = 0 }) } -local si2wv = si2.working_visualisations[1] -si1.working_visualisations = {{ +local si2wv = si2.graphics_set.working_visualisations[1] +si1.graphics_set.working_visualisations = {{ apply_recipe_tint = "primary", north_animation = scale_image(si2wv.north_animation, 0.75, { x = 0, y = 0.38 }), east_animation = scale_image(si2wv.east_animation, 0.75, { x = -0.38, y = 0 }), @@ -135,20 +134,21 @@ data:extend({ { type = "offshore-pump", name = "nullius-legacy-seawater-intake-1", - localised_name = {"entity-name.nullius-legacy", + localised_name = {"entity-name.nullius-legacy", {"entity-name.nullius-seawater-intake-1"}}, localised_description = {"entity-description.nullius-seawater-intake-1"}, icons = data.raw.item["nullius-legacy-seawater-intake-1"].icons, flags = {"placeable-neutral", "player-creation", "filter-directions", - "hidden", "not-upgradable", "not-blueprintable"}, - collision_mask = { "object-layer", "train-layer" }, - center_collision_mask = { "water-tile", "object-layer", "player-layer" }, - fluid_box_tile_collision_test = { "ground-tile" }, - adjacent_tile_collision_test = { "water-tile" }, - adjacent_tile_collision_mask = { "ground-tile" }, - adjacent_tile_collision_box = { { -1, -2 }, { 1, -1 } }, + "not-upgradable", "not-blueprintable"}, + hidden = true, + energy_source = { + type = "void" + }, + energy_usage = "60kW", + fluid_source_offset = data.raw["offshore-pump"]["offshore-pump"].fluid_source_offset, + collision_mask = { layers = {object = true, train = true}}, minable = {mining_time = 0.5, result = "nullius-seawater-intake-1"}, - placeable_by = {item = "nullius-legacy-seawater-intake-1", count = 1}, + placeable_by = {item = "nullius-legacy-seawater-intake-1", count = 1}, max_health = 150, corpse = "small-remnants", dying_explosion = "offshore-pump-explosion", @@ -157,12 +157,11 @@ data:extend({ selection_box = {{-1, -1.49}, {1, 0.49}}, pumping_speed = 2, fluid_box = { - base_area = 8, - base_level = 4, + volume = 500, pipe_covers = pipecoverspictures(), production_type = "output", filter = "nullius-seawater", - pipe_connections = {{position = {0, 1}, type = "output"}} + pipe_connections = {{position = {0, 0}, flow_direction = "output", direction = defines.direction.south}} }, tile_width = 1, tile_height = 1, @@ -445,20 +444,21 @@ data:extend({ { type = "offshore-pump", name = "nullius-legacy-seawater-intake-2", - localised_name = {"entity-name.nullius-legacy", + localised_name = {"entity-name.nullius-legacy", {"entity-name.nullius-seawater-intake-2"}}, localised_description = {"entity-description.nullius-seawater-intake-2"}, - icons = data.raw.item["nullius-legacy-seawater-intake-2"].icons, + icons = data.raw.item["nullius-legacy-seawater-intake-2"].icons, flags = {"placeable-neutral", "player-creation", "filter-directions", - "hidden", "not-upgradable", "not-blueprintable"}, - collision_mask = { "object-layer", "train-layer" }, - center_collision_mask = { "water-tile", "object-layer", "player-layer" }, - fluid_box_tile_collision_test = { "ground-tile" }, - adjacent_tile_collision_test = { "water-tile" }, - adjacent_tile_collision_mask = { "ground-tile" }, - adjacent_tile_collision_box = { { -1, -2 }, { 1, -1 } }, + "not-upgradable", "not-blueprintable"}, + hidden = true, + energy_source = { + type = "void" + }, + energy_usage = "60kW", + fluid_source_offset = data.raw["offshore-pump"]["offshore-pump"].fluid_source_offset, + collision_mask = { layers = {object = true, train = true}}, minable = {mining_time = 0.8, result = "nullius-seawater-intake-2"}, - placeable_by = {item = "nullius-legacy-seawater-intake-2", count = 1}, + placeable_by = {item = "nullius-legacy-seawater-intake-2", count = 1}, max_health = 300, corpse = "small-remnants", dying_explosion = "offshore-pump-explosion", @@ -467,13 +467,11 @@ data:extend({ selection_box = {{-1, -1.49}, {1, 0.49}}, pumping_speed = 10, fluid_box = { - base_area = 6, - base_level = 5, - height = 2, + volume = 500, pipe_covers = pipecoverspictures(), production_type = "output", filter = "nullius-seawater", - pipe_connections = {{position = {0, 1}, type = "output"}} + pipe_connections = {{position = {0, 0}, flow_direction = "output", direction = defines.direction.south}} }, tile_width = 1, tile_height = 1, @@ -522,221 +520,221 @@ data:extend({ fluid_boxes = { { production_type = "output", - base_area = 10, - base_level = 0, - height = 4, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { positions = { {1, -2}, {2, -1}, {-1, 2}, {-2, 1} } } + { positions = { {1, -1}, {1, -1}, {-1, 1}, {-1, 1} }, direction = defines.direction.north } } } }, pipe_covers = pipecoverspictures(), - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "well", next_upgrade = "nullius-well-2", - animation = { - north = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.4, - scale = 0.5, - tint = {0.48, 0.84, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.4, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + graphics_set = { + animation = { + north = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.4, + scale = 0.5, + tint = {0.48, 0.84, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.4, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } - } - }, - east = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - x = 261, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - x = 220, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.4, - scale = 0.5, - tint = {0.48, 0.84, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.4, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + }, + east = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + x = 261, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + x = 220, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.4, + scale = 0.5, + tint = {0.48, 0.84, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.4, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } - } - }, - south = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - x = 522, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - x = 440, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.4, - scale = 0.5, - tint = {0.48, 0.84, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.4, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + }, + south = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + x = 522, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + x = 440, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.4, + scale = 0.5, + tint = {0.48, 0.84, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.4, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } - } - }, - west = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - x = 783, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - x = 660, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.4, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.4, - scale = 0.5, - tint = {0.48, 0.84, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.4, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + }, + west = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + x = 783, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + x = 660, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.4, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.4, + scale = 0.5, + tint = {0.48, 0.84, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.4, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } } } @@ -774,220 +772,220 @@ data:extend({ fluid_boxes = { { production_type = "output", - base_area = 10, - base_level = 0, - height = 6, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { positions = { {1, -2}, {2, -1}, {-1, 2}, {-2, 1} } } + { positions = { {1, -1}, {1, -1}, {-1, 1}, {-1, 1} }, direction = defines.direction.north } } } }, pipe_covers = pipecoverspictures(), - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "well", - animation = { - north = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.6, - tint = {0.45, 0.45, 1}, - scale = 0.5, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.6, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) - } - } - }, - east = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - x = 261, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - x = 220, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.6, - scale = 0.5, - tint = {0.45, 0.45, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.6, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + graphics_set = { + animation = { + north = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.6, + tint = {0.45, 0.45, 1}, + scale = 0.5, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.6, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } - } - }, - south = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - x = 522, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - x = 440, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.6, - scale = 0.5, - tint = {0.45, 0.45, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.6, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + }, + east = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + x = 261, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + x = 220, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.6, + scale = 0.5, + tint = {0.45, 0.45, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.6, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } - } - }, - west = { - layers = { - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", - priority = "extra-high", - width = 261, - height = 273, - x = 783, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(-2.25, -4.75), - scale = 0.5 - }, - { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", - priority = "extra-high", - width = 220, - height = 220, - x = 660, - scale = 0.5, - draw_as_shadow = true, - repeat_count = 40, - animation_speed = 0.6, - shift = util.by_pixel(6, 0.5) - }, - { - priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", - animation_speed = 0.6, - scale = 0.5, - tint = {0.45, 0.45, 1}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-4, -24) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", - animation_speed = 0.6, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.5, - shift = util.by_pixel(17.75, 14.5) + }, + south = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + x = 522, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + x = 440, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.6, + scale = 0.5, + tint = {0.45, 0.45, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.6, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } + } + }, + west = { + layers = { + { + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", + priority = "extra-high", + width = 261, + height = 273, + x = 783, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(-2.25, -4.75), + scale = 0.5 + }, + { + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", + priority = "extra-high", + width = 220, + height = 220, + x = 660, + scale = 0.5, + draw_as_shadow = true, + repeat_count = 40, + animation_speed = 0.6, + shift = util.by_pixel(6, 0.5) + }, + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.6, + scale = 0.5, + tint = {0.45, 0.45, 1}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-4, -24) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.6, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.5, + shift = util.by_pixel(17.75, 14.5) + } } } } @@ -999,7 +997,8 @@ local lw1 = util.table.deepcopy(data.raw["assembling-machine"]["nullius-well-1"] lw1.name = "nullius-legacy-well-1" lw1.localised_name = {"entity-name.nullius-legacy", {"entity-name.nullius-well-1"}} lw1.icons = data.raw.item["nullius-legacy-well-1"].icons -lw1.flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable", "not-blueprintable"} +lw1.flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-blueprintable"} +lw1.hidden = true lw1.placeable_by = {item = "nullius-legacy-well-1", count = 1} lw1.fast_replaceable_group = nil lw1.next_upgrade = nil @@ -1011,7 +1010,8 @@ local lw2 = util.table.deepcopy(data.raw["assembling-machine"]["nullius-well-2"] lw2.name = "nullius-legacy-well-2" lw2.localised_name = {"entity-name.nullius-legacy", {"entity-name.nullius-well-2"}} lw2.icons = data.raw.item["nullius-legacy-well-2"].icons -lw2.flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable", "not-blueprintable"} +lw2.flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-blueprintable"} +lw2.hidden = true lw2.placeable_by = {item = "nullius-legacy-well-2", count = 1} lw2.fast_replaceable_group = nil lw2.energy_source = {type="electric", usage_priority="secondary-input", emissions=0.02, drain="5kW"} @@ -1030,11 +1030,11 @@ data:extend({ crafting_speed = 1, fixed_recipe = "nullius-air-filtration", energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions = 0.01, - drain = "5kW" - }, + type = "electric", + usage_priority = "secondary-input", + emissions = 0.01, + drain = "5kW" + }, energy_usage = "115kW", ingredient_count = 1, minable = {mining_time = 0.6, result = "nullius-air-filter-1"}, @@ -1045,46 +1045,48 @@ data:extend({ selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fast_replaceable_group = "air-filter", next_upgrade = "nullius-air-filter-2", - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2, -0.4+0.25}, - animation_speed = 0.5, - scale = 0.5 - }, - east = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2-0.25, -0.4}, - animation_speed = 0.5, - scale = 0.5 - }, - south = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2, -0.4-0.25}, - animation_speed = 0.5, - scale = 0.5 - }, - west = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2+0.25, -0.4}, - animation_speed = 0.5, - scale = 0.5 + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2, -0.4+0.25}, + animation_speed = 0.5, + scale = 0.5 + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2-0.25, -0.4}, + animation_speed = 0.5, + scale = 0.5 + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2, -0.4-0.25}, + animation_speed = 0.5, + scale = 0.5 + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2+0.25, -0.4}, + animation_speed = 0.5, + scale = 0.5 + } } }, resistances = { @@ -1097,10 +1099,8 @@ data:extend({ { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 2, - base_level = 3, - height = 2, - pipe_connections = {{ position = {0, 2}, type = "output" }} + volume = 500, + pipe_connections = {{ position = {0, 1}, flow_direction = "output", direction = defines.direction.south }} }, }, pipe_covers = pipecoverspictures() @@ -1130,53 +1130,55 @@ data:extend({ selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fast_replaceable_group = "air-filter", next_upgrade = "nullius-air-filter-3", - animation = { - north = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2, -0.4+0.125}, - animation_speed = 0.5, - scale = 0.55 - }, - east = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2-0.125, -0.4}, - animation_speed = 0.5, - scale = 0.55 - }, - south = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2, -0.4-0.125}, - animation_speed = 0.5, - scale = 0.55 - }, - west = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.2+0.125, -0.4}, - animation_speed = 0.5, - scale = 0.55 + graphics_set = { + animation = { + north = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2, -0.4+0.125}, + animation_speed = 0.5, + scale = 0.55 + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2-0.125, -0.4}, + animation_speed = 0.5, + scale = 0.55 + }, + south = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2, -0.4-0.125}, + animation_speed = 0.5, + scale = 0.55 + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.2+0.125, -0.4}, + animation_speed = 0.5, + scale = 0.55 + } } }, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1184,10 +1186,8 @@ data:extend({ { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 4, - height = 2, - pipe_connections = {{ position = {0, 2}, type = "output" }} + volume = 500, + pipe_connections = {{ position = {0, 1}, flow_direction = "output", direction = defines.direction.south }} }, }, pipe_covers = pipecoverspictures() @@ -1216,21 +1216,23 @@ data:extend({ collision_box = {{-1.1, -1.1}, {1.1, 1.1}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fast_replaceable_group = "air-filter", - animation = { - filename = "__angelspetrochem__/graphics/entity/air-filter/air-filter.png", - width = 256, - height = 256, - frame_count = 36, - line_length = 6, - shift = {0.3, -0.4}, - animation_speed = 0.6, - scale = 0.6 + graphics_set = { + animation = { + filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", + width = 256, + height = 256, + frame_count = 36, + line_length = 6, + shift = {0.3, -0.4}, + animation_speed = 0.6, + scale = 0.6 + } }, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, @@ -1238,10 +1240,8 @@ data:extend({ { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = 5, - height = 3, - pipe_connections = {{ position = {0, 2}, type = "output" }} + volume = 500, + pipe_connections = {{ position = {0, 1}, flow_direction = "output", direction = defines.direction.south }} }, }, pipe_covers = pipecoverspictures() @@ -1250,7 +1250,7 @@ data:extend({ { type = "storage-tank", name = "nullius-priority-valve", - icon = "__angelspetrochem__/graphics/icons/valve-inspector.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-inspector.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-priority-valve"}, @@ -1265,12 +1265,10 @@ data:extend({ collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - base_area = 1, - base_level = 1.25, - height = 5, + volume = 500, pipe_connections = { - { position = {0, 1}, type="output"}, - { position = {0, -1} } + { position = {0, 0.1}, direction = defines.direction.south}, + { position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1286,7 +1284,7 @@ data:extend({ north = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1294,7 +1292,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-inspector.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", frames = 1, width = 64, @@ -1303,7 +1301,7 @@ data:extend({ } }, east = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-inspector.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 64, frames = 1, @@ -1314,7 +1312,7 @@ data:extend({ south = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1322,7 +1320,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-inspector.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 128, frames = 1, @@ -1333,7 +1331,7 @@ data:extend({ } }, west = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-inspector.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 192, frames = 1, @@ -1352,7 +1350,7 @@ data:extend({ { type = "storage-tank", name = "nullius-one-way-valve", - icon = "__angelspetrochem__/graphics/icons/valve-overflow.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-overflow.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, minable = {hardness = 0.5, mining_time = 0.2, result = "nullius-one-way-valve"}, @@ -1367,11 +1365,10 @@ data:extend({ collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - base_area = 1, - height = 6.25, + volume = 500, pipe_connections = { - { position = {0, 1}, type="output"}, - { position = {0, -1} } + { position = {0, 0.1}, direction = defines.direction.south}, + { position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1387,7 +1384,7 @@ data:extend({ north = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1395,7 +1392,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-overflow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", frames = 1, width = 64, @@ -1404,7 +1401,7 @@ data:extend({ } }, east = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-overflow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 64, frames = 1, @@ -1415,7 +1412,7 @@ data:extend({ south = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1423,7 +1420,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-overflow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 128, frames = 1, @@ -1434,7 +1431,7 @@ data:extend({ } }, west = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-overflow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 192, frames = 1, @@ -1453,7 +1450,7 @@ data:extend({ { type = "storage-tank", name = "nullius-top-up-valve", - icon = "__angelspetrochem__/graphics/icons/valve-converter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-converter.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-top-up-valve"}, @@ -1468,11 +1465,10 @@ data:extend({ collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - base_area = 1, - height = 2.5, + volume = 500, pipe_connections = { - { position = {0, 1}, type="output"}, - { position = {0, -1} } + { position = {0, 0.1}, direction = defines.direction.south}, + { position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1488,7 +1484,7 @@ data:extend({ north = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1496,7 +1492,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", priority = "extra-high", frames = 1, width = 64, @@ -1505,7 +1501,7 @@ data:extend({ } }, east = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", priority = "extra-high", x = 64, frames = 1, @@ -1516,7 +1512,7 @@ data:extend({ south = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1524,7 +1520,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", priority = "extra-high", x = 128, frames = 1, @@ -1535,7 +1531,7 @@ data:extend({ } }, west = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", priority = "extra-high", x = 192, frames = 1, @@ -1554,7 +1550,7 @@ data:extend({ { type = "storage-tank", name = "nullius-relief-valve", - icon = "__angelspetrochem__/graphics/icons/valve-return.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-return.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-relief-valve"}, @@ -1569,12 +1565,10 @@ data:extend({ collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - base_area = 1, - base_level = 3.75, - height = 2.5, + volume = 500, pipe_connections = { - { position = {0, 1}, type="output"}, - { position = {0, -1} } + { position = {0, 0.1}, direction = defines.direction.south}, + { position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1590,7 +1584,7 @@ data:extend({ north = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1598,7 +1592,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-return.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", frames = 1, width = 64, @@ -1607,7 +1601,7 @@ data:extend({ } }, east = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-return.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 64, frames = 1, @@ -1618,7 +1612,7 @@ data:extend({ south = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", frames = 1, width = 128, height = 64, @@ -1626,7 +1620,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochem__/graphics/entity/valve/valve-return.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 128, frames = 1, @@ -1637,7 +1631,7 @@ data:extend({ } }, west = { - filename = "__angelspetrochem__/graphics/entity/valve/valve-return.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 192, frames = 1, @@ -1667,14 +1661,13 @@ data:extend({ collision_box = {{-1.3, -1.3}, {1.3, 1.3}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_box = { - height = 4.5, - base_area = 66.6666667, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {-1, -2} }, - { position = {2, 1} }, - { position = {1, 2} }, - { position = {-2, -1} } + { position = {-1, -1}, direction = defines.direction.north }, + { position = {1, 1}, direction = defines.direction.east }, + { position = {1, 1}, direction = defines.direction.south }, + { position = {-1, -1}, direction = defines.direction.west } } }, two_direction_only = true, @@ -1705,15 +1698,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "storage-tank/storage-tank-shadow.png", - priority = "extra-high", - frames = 2, - width = 146, - height = 77, - shift = util.by_pixel(30, 22.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "storage-tank/hr-storage-tank-shadow.png", + filename = BASEENTITY .. "storage-tank/storage-tank-shadow.png", priority = "extra-high", frames = 2, width = 291, @@ -1721,7 +1706,6 @@ data:extend({ shift = util.by_pixel(29.75, 22.25), scale = 0.5, draw_as_shadow = true - } } } }, @@ -1745,14 +1729,13 @@ data:extend({ collision_box = {{-1.3, -1.3}, {1.3, 1.3}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_box = { - height = 5, - base_area = 120, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {-1, -2} }, - { position = {2, 1} }, - { position = {1, 2} }, - { position = {-2, -1} } + { position = {-1, -1}, direction = defines.direction.north }, + { position = {1, 1}, direction = defines.direction.east }, + { position = {1, 1}, direction = defines.direction.south }, + { position = {-1, -1}, direction = defines.direction.west } } }, two_direction_only = true, @@ -1781,15 +1764,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "storage-tank/storage-tank-shadow.png", - priority = "extra-high", - frames = 2, - width = 146, - height = 77, - shift = util.by_pixel(30, 22.5), - draw_as_shadow = true, - hr_version = { - filename = BASEENTITY .. "storage-tank/hr-storage-tank-shadow.png", + filename = BASEENTITY .. "storage-tank/storage-tank-shadow.png", priority = "extra-high", frames = 2, width = 291, @@ -1797,7 +1772,6 @@ data:extend({ shift = util.by_pixel(29.75, 22.25), scale = 0.5, draw_as_shadow = true - } } } }, @@ -1820,13 +1794,12 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, two_direction_only = false, fluid_box = { - height = 4.5, - base_area = 22.2222223, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0.5, -1.5} }, - { position = {0.5, 1.5} }, - { position = {-1.5, 0.5} } + { position = {0.5, -0.5}, direction = defines.direction.north }, + { position = {0.5, 0.5}, direction = defines.direction.south }, + { position = {-0.5, 0.5}, direction = defines.direction.west } } }, resistances = { @@ -1841,7 +1814,7 @@ data:extend({ north = { layers = { { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 0, width = 142, @@ -1851,7 +1824,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 142, y = 117, @@ -1862,7 +1835,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 171, y = 141, @@ -1873,7 +1846,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank-shadow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", priority = "extra-high", x = 0, width = 207, @@ -1887,7 +1860,7 @@ data:extend({ east = { layers = { { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 142, width = 142, @@ -1897,7 +1870,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank-shadow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", priority = "extra-high", x = 207, width = 207, @@ -1911,7 +1884,7 @@ data:extend({ south = { layers = { { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 284, width = 142, @@ -1921,7 +1894,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 559, y = 48, @@ -1932,7 +1905,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank-shadow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", priority = "extra-high", x = 414, width = 207, @@ -1946,7 +1919,7 @@ data:extend({ west = { layers = { { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 426, width = 142, @@ -1956,7 +1929,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", priority = "extra-high", x = 74, y = 136, @@ -1967,7 +1940,7 @@ data:extend({ tint = {0.8, 0.8, 0.4} }, { - filename = "__angelspetrochem__/graphics/entity/petrochem-inline-tank/hr-petrochem-inline-tank-shadow.png", + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", priority = "extra-high", x = 621, width = 207, @@ -2007,13 +1980,12 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, two_direction_only = false, fluid_box = { - height = 5, - base_area = 40, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0.5, -1.5} }, - { position = {0.5, 1.5} }, - { position = {-1.5, 0.5} } + { position = {0.5, -0.5}, direction = defines.direction.north }, + { position = {0.5, 0.5}, direction = defines.direction.south}, + { position = {-0.5, 0.5}, direction = defines.direction.west } } }, resistances = { @@ -2055,14 +2027,13 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, two_direction_only = false, fluid_box = { - height = 5, - base_area = 250, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -3} }, - { position = {3, 0} }, - { position = {-3, 0} }, - { position = {0, 3} }, + { position = {0, -2}, direction = defines.direction.north }, + { position = {2, 0}, direction = defines.direction.east }, + { position = {-2, 0}, direction = defines.direction.west }, + { position = {0, 2}, direction = defines.direction.south }, }, }, fast_replaceable_group = "large-tank", @@ -2089,14 +2060,13 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, two_direction_only = false, fluid_box = { - height = 5.5, - base_area = 454.545454546, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -3} }, - { position = {3, 0} }, - { position = {-3, 0} }, - { position = {0, 3} }, + { position = {0, -2}, direction = defines.direction.north }, + { position = {2, 0}, direction = defines.direction.east }, + { position = {-2, 0}, direction = defines.direction.west }, + { position = {0, 2}, direction = defines.direction.south }, }, }, fast_replaceable_group = "large-tank", @@ -2123,14 +2093,13 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, two_direction_only = false, fluid_box = { - height = 6.25, - base_area = 800, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -3} }, - { position = {3, 0} }, - { position = {-3, 0} }, - { position = {0, 3} }, + { position = {0, -2}, direction = defines.direction.north }, + { position = {2, 0}, direction = defines.direction.east }, + { position = {-2, 0}, direction = defines.direction.west }, + { position = {0, 2}, direction = defines.direction.south }, }, }, fast_replaceable_group = "large-tank", @@ -2149,13 +2118,6 @@ data.raw["storage-tank"]["nullius-large-tank-1"].pictures. picture.sheets[1].tint = {0.75, 0.75, 0.6} data.raw["storage-tank"]["nullius-large-tank-2"].pictures. picture.sheets[1].tint = {0.85, 0.85, 0.95} -if (data.raw["storage-tank"]["nullius-large-tank-1"].pictures. - picture.sheets[1].hr_version ~= nil) then - data.raw["storage-tank"]["nullius-large-tank-1"].pictures. - picture.sheets[1].hr_version.tint = {0.75, 0.75, 0.6} - data.raw["storage-tank"]["nullius-large-tank-2"].pictures. - picture.sheets[1].hr_version.tint = {0.85, 0.85, 0.95} -end data:extend({ @@ -2173,19 +2135,18 @@ data:extend({ dying_explosion = "pumpjack-explosion", collision_box = {{ -1.7, -1.7}, {1.7, 1.7}}, selection_box = {{ -2, -2}, {2, 2}}, - drawing_box = {{-2.67, -4.2}, {2.5, 2.67}}, + energy_source = { type = "electric", - emissions_per_minute = 5, + emissions_per_minute = {pollution = 5}, usage_priority = "secondary-input", drain = "10kW" }, output_fluid_box = { - base_area = 5, - base_level = 4, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { positions = { {1.5, -2.5}, {2.5, -1.5}, {-1.5, 2.5}, {-2.5, 1.5} } } + { positions = { {1.5, -1.5}, {1.5, -1.5}, {-1.5, 1.5}, {-1.5, 1.5} }, direction = defines.direction.north } } }, energy_usage = "390kW", @@ -2202,7 +2163,7 @@ data:extend({ close_sound = data.raw["mining-drill"]["pumpjack"].close_sound, working_sound = data.raw["mining-drill"]["pumpjack"].working_sound, fast_replaceable_group = "geothermal-pump", - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -2217,7 +2178,7 @@ data:extend({ base_picture = { sheets = { { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", priority = "extra-high", width = 261, height = 273, @@ -2225,7 +2186,7 @@ data:extend({ scale = 0.66667 }, { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", width = 220, height = 220, scale = 0.66667, @@ -2239,7 +2200,7 @@ data:extend({ layers = { { priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", animation_speed = 0.4, scale = 0.66667, tint = {0.98, 0.58, 0.24}, @@ -2251,7 +2212,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", animation_speed = 0.66667, draw_as_shadow = true, line_length = 8, @@ -2279,20 +2240,18 @@ data:extend({ dying_explosion = "pumpjack-explosion", collision_box = {{ -1.7, -1.7}, {1.7, 1.7}}, selection_box = {{ -2, -2}, {2, 2}}, - drawing_box = {{-2.67, -4.2}, {2.5, 2.67}}, + energy_source = { type = "electric", - emissions_per_minute = 10, + emissions_per_minute = {pollution = 10}, usage_priority = "secondary-input", drain = "25kW" }, output_fluid_box = { - base_area = 10, - base_level = 5, - height = 2, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { positions = { {1.5, -2.5}, {2.5, -1.5}, {-1.5, 2.5}, {-2.5, 1.5} } } + { positions = { {1.5, -1.5}, {1.5, -1.5}, {-1.5, 1.5}, {-1.5, 1.5} }, direction = defines.direction.north } } }, energy_usage = "775kW", @@ -2309,7 +2268,7 @@ data:extend({ close_sound = data.raw["mining-drill"]["pumpjack"].close_sound, working_sound = data.raw["mining-drill"]["pumpjack"].working_sound, fast_replaceable_group = "geothermal-pump", - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -2324,7 +2283,7 @@ data:extend({ base_picture = { sheets = { { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base.png", + filename = BASEENTITY .. "pumpjack/pumpjack-base.png", priority = "extra-high", width = 261, height = 273, @@ -2332,7 +2291,7 @@ data:extend({ scale = 0.66667 }, { - filename = BASEENTITY .. "pumpjack/hr-pumpjack-base-shadow.png", + filename = BASEENTITY .. "pumpjack/pumpjack-base-shadow.png", width = 220, height = 220, scale = 0.66667, @@ -2346,7 +2305,7 @@ data:extend({ layers = { { priority = "high", - filename = ENTITYPATH .. "wells/hr-pumpjack-decolorized.png", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", animation_speed = 0.6, scale = 0.66667, tint = {0.99,0.25,0.39}, @@ -2358,7 +2317,7 @@ data:extend({ }, { priority = "high", - filename = BASEENTITY .. "pumpjack/hr-pumpjack-horsehead-shadow.png", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", animation_speed = 0.66667, draw_as_shadow = true, line_length = 8, @@ -2391,11 +2350,11 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 0.5, + emissions_per_minute = {pollution = 0.5}, drain = "1kW" }, energy_usage = "24kW", - module_specification = { module_slots = 1 }, + module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, resistances = { { type = "impact", decrease = 100, percent = 90 }, @@ -2413,70 +2372,70 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - pipe_connections = {{type = "input", position = {0, 2}}} + volume = 500, + pipe_connections = {{flow_direction = "input", position = {0, 1}, direction = defines.direction.south}} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 5, - pipe_connections = {{type="output", position = {0, -2}}} + volume = 500, + pipe_connections = {{flow_direction ="output", position = {0, -1}, direction = defines.direction.north}} } }, pipe_covers = pipecoverspictures(), - animation = { - north = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - width = 160, - height = 160, - frame_count = 1, - tint = {0.6, 0.8, 0.8} - }, - east = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - x = 480, - width = 160, - height = 160, - frame_count = 1, - tint = {0.6, 0.8, 0.8} - }, - south = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - x = 320, - width = 160, - height = 160, - frame_count = 1, - tint = {0.6, 0.8, 0.8} - }, - west = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - x = 160, - width = 160, - height = 160, - frame_count = 1, - tint = {0.6, 0.8, 0.8} - } - }, - working_visualisations = { - { - north_position = {0, 0}, - east_position = {0, -0.1}, - south_position = {0, -0.25}, - west_position = {0, -0.15}, - animation = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump-animation.png", - frame_count = 36, - line_length = 6, - width = 64, - height = 64, - animation_speed = 0.2, - run_mode = "forward", + graphics_set = { + animation = { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + width = 160, + height = 160, + frame_count = 1, + tint = {0.6, 0.8, 0.8} + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + x = 480, + width = 160, + height = 160, + frame_count = 1, + tint = {0.6, 0.8, 0.8} + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + x = 320, + width = 160, + height = 160, + frame_count = 1, tint = {0.6, 0.8, 0.8} }, - light = {intensity = 0.4, size = 6} + west = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + x = 160, + width = 160, + height = 160, + frame_count = 1, + tint = {0.6, 0.8, 0.8} + } + }, + working_visualisations = { + { + north_position = {0, 0}, + east_position = {0, -0.1}, + south_position = {0, -0.25}, + west_position = {0, -0.15}, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump-animation.png", + frame_count = 36, + line_length = 6, + width = 64, + height = 64, + animation_speed = 0.2, + run_mode = "forward", + tint = {0.6, 0.8, 0.8} + }, + light = {intensity = 0.4, size = 6} + } } } }, @@ -2498,11 +2457,11 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 1, + emissions_per_minute = {pollution = 1}, drain = "2kW" }, energy_usage = "58kW", - module_specification = { module_slots = 2 }, + module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, resistances = { { type = "impact", decrease = 100, percent = 90 }, @@ -2520,71 +2479,69 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -3, - height = 2, - pipe_connections = {{type = "input", position = {0, 2}}} + volume = 500, + pipe_connections = {{flow_direction = "input", position = {0, 1}, direction = defines.direction.south}} }, { production_type = "output", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = 6, - height = 2, - pipe_connections = {{type="output", position = {0, -2}}} + volume = 500, + pipe_connections = {{flow_direction ="output", position = {0, -1}, direction = defines.direction.north}} } }, pipe_covers = pipecoverspictures(), - animation = { - north = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - width = 160, - height = 160, - frame_count = 1, - shift = {0, 0} - }, - east = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - x = 480, - width = 160, - height = 160, - frame_count = 1, - shift = {0, 0} - }, - south = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - x = 320, - width = 160, - height = 160, - frame_count = 1, - shift = {0, 0} - }, - west = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump.png", - x = 160, - width = 160, - height = 160, - frame_count = 1, - shift = {0, 0} - } - }, - working_visualisations = { - { - north_position = {0, 0}, - east_position = {0, -0.1}, - south_position = {0, -0.25}, - west_position = {0, -0.15}, - animation = { - filename = "__angelsrefining__/graphics/entity/barreling-pump/barreling-pump-animation.png", - frame_count = 36, - line_length = 6, - width = 64, - height = 64, - shift = {0, 0}, - animation_speed = 0.25, - run_mode = "forward" + graphics_set = { + animation = { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + width = 160, + height = 160, + frame_count = 1, + shift = {0, 0} + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + x = 480, + width = 160, + height = 160, + frame_count = 1, + shift = {0, 0} + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + x = 320, + width = 160, + height = 160, + frame_count = 1, + shift = {0, 0} }, - light = {intensity = 0.4, size = 6} + west = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump.png", + x = 160, + width = 160, + height = 160, + frame_count = 1, + shift = {0, 0} + } + }, + working_visualisations = { + { + north_position = {0, 0}, + east_position = {0, -0.1}, + south_position = {0, -0.25}, + west_position = {0, -0.15}, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/barreling-pump/barreling-pump-animation.png", + frame_count = 36, + line_length = 6, + width = 64, + height = 64, + shift = {0, 0}, + animation_speed = 0.25, + run_mode = "forward" + }, + light = {intensity = 0.4, size = 6} + } } } }, @@ -2610,13 +2567,12 @@ data:extend({ { type = "fire", decrease = 20, percent = 50 } }, fluid_box = { - base_area = 1, - height = 7, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -1.5}, type = "output" }, - { position = {0, 1.5}, type = "input" } + { position = {0, -0.5}, flow_direction = "output", direction = defines.direction.north }, + { position = {0, 0.5}, flow_direction = "input", direction = defines.direction.south } } }, energy_source = { @@ -2641,7 +2597,7 @@ data:extend({ north = { layers = { { - filename = "__base__/graphics/entity/pipe-covers/hr-pipe-cover-north.png", + filename = "__base__/graphics/entity/pipe-covers/pipe-cover-north.png", width = 128, height = 128, scale = 0.5, @@ -2651,7 +2607,7 @@ data:extend({ shift = {0, -1.46} }, { - filename = BASEENTITY .. "pump/hr-pump-north.png", + filename = BASEENTITY .. "pump/pump-north.png", width = 103, height = 164, scale = 0.5, @@ -2675,7 +2631,7 @@ data:extend({ east = { layers = { { - filename = BASEENTITY .. "pump/hr-pump-east.png", + filename = BASEENTITY .. "pump/pump-east.png", width = 130, height = 109, scale = 0.5, @@ -2699,7 +2655,7 @@ data:extend({ south = { layers = { { - filename = "__base__/graphics/entity/pipe-covers/hr-pipe-cover-north.png", + filename = "__base__/graphics/entity/pipe-covers/pipe-cover-north.png", width = 128, height = 128, scale = 0.5, @@ -2709,7 +2665,7 @@ data:extend({ shift = {0, -1.5} }, { - filename = BASEENTITY .. "pump/hr-pump-south.png", + filename = BASEENTITY .. "pump/pump-south.png", width = 114, height = 160, scale = 0.5, @@ -2733,7 +2689,7 @@ data:extend({ west = { layers = { { - filename = BASEENTITY .. "pump/hr-pump-west.png", + filename = BASEENTITY .. "pump/pump-west.png", width = 131, height = 111, scale = 0.5, @@ -2778,13 +2734,12 @@ data:extend({ { type = "fire", decrease = 20, percent = 50 } }, fluid_box = { - base_area = 1, - height = 8, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -1.5}, type = "output" }, - { position = {0, 1.5}, type = "input" } + { position = {0, -0.5}, flow_direction = "output", direction = defines.direction.north }, + { position = {0, 0.5}, flow_direction = "input", direction = defines.direction.south } } }, energy_source = { @@ -2809,7 +2764,7 @@ data:extend({ north = { layers = { { - filename = "__base__/graphics/entity/pipe-covers/hr-pipe-cover-north.png", + filename = "__base__/graphics/entity/pipe-covers/pipe-cover-north.png", width = 128, height = 128, scale = 0.5, @@ -2819,7 +2774,7 @@ data:extend({ shift = {0, -1.46} }, { - filename = BASEENTITY .. "pump/hr-pump-north.png", + filename = BASEENTITY .. "pump/pump-north.png", width = 103, height = 164, scale = 0.5, @@ -2843,7 +2798,7 @@ data:extend({ east = { layers = { { - filename = BASEENTITY .. "pump/hr-pump-east.png", + filename = BASEENTITY .. "pump/pump-east.png", width = 130, height = 109, scale = 0.5, @@ -2867,7 +2822,7 @@ data:extend({ south = { layers = { { - filename = "__base__/graphics/entity/pipe-covers/hr-pipe-cover-north.png", + filename = "__base__/graphics/entity/pipe-covers/pipe-cover-north.png", width = 128, height = 128, scale = 0.5, @@ -2877,7 +2832,7 @@ data:extend({ shift = {0, -1.5} }, { - filename = BASEENTITY .. "pump/hr-pump-south.png", + filename = BASEENTITY .. "pump/pump-south.png", width = 114, height = 160, scale = 0.5, @@ -2901,7 +2856,7 @@ data:extend({ west = { layers = { { - filename = BASEENTITY .. "pump/hr-pump-west.png", + filename = BASEENTITY .. "pump/pump-west.png", width = 131, height = 111, scale = 0.5, @@ -2945,11 +2900,10 @@ data:extend({ { type = "fire", decrease = 20, percent = 50 } }, fluid_box = { - base_area = 1, - height = 6.5, + volume = 500, pipe_connections = { - { position = {0, 1}, type = "output" }, - { position = {0, -1}, type = "input" } + { position = {0, 0.1}, flow_direction = "output", direction = defines.direction.south }, + { position = {0, -0.1}, flow_direction = "input", direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -2970,7 +2924,7 @@ data:extend({ north = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, @@ -2979,7 +2933,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-north.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-north.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -2992,7 +2946,7 @@ data:extend({ } }, east = { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-east.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-east.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3004,7 +2958,7 @@ data:extend({ south = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, @@ -3013,7 +2967,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-south.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-south.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3026,7 +2980,7 @@ data:extend({ } }, west = { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-west.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-west.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3057,11 +3011,10 @@ data:extend({ { type = "fire", decrease = 20, percent = 50 } }, fluid_box = { - base_area = 1, - height = 7.5, + volume = 500, pipe_connections = { - { position = {0, 1}, type = "output" }, - { position = {0, -1}, type = "input" } + { position = {0, 0.1}, flow_direction = "output", direction = defines.direction.south }, + { position = {0, -0.1}, flow_direction = "input", direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -3082,7 +3035,7 @@ data:extend({ north = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, @@ -3091,7 +3044,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-north.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-north.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3104,7 +3057,7 @@ data:extend({ } }, east = { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-east.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-east.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3116,7 +3069,7 @@ data:extend({ south = { layers = { { - filename = "__boblogistics__/graphics/entity/pipe/steel/hr-pipe-straight-vertical.png", + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, @@ -3125,7 +3078,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-south.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-south.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3138,7 +3091,7 @@ data:extend({ } }, west = { - filename = "__angelsrefining__/graphics/entity/water-pump/pump-west.png", + filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-west.png", priority = "extra-high", frame_count = 16, line_length = 4, @@ -3153,9 +3106,9 @@ data:extend({ { type = "pipe", name = "nullius-pipe-2", - localised_description = {"entity-description.nullius-pipe", 60, 4360, 1260}, + localised_description = {"entity-description.nullius-pipe", tostring(60), tostring(4360), tostring(1260)}, icons = data.raw.item["nullius-pipe-2"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.3, result = "nullius-pipe-2"}, max_health = 150, corpse = "pipe-remnants", @@ -3170,13 +3123,12 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { - height = 3, - base_area = 1.333334, + volume = 500, pipe_connections = { - { position = {0, -1} }, - { position = {1, 0} }, - { position = {0, 1} }, - { position = {-1, 0} } + { position = {0, -0.1}, direction = defines.direction.north }, + { position = {0.1, 0}, direction = defines.direction.east }, + { position = {0, 0.1}, direction = defines.direction.south }, + { position = {-0.1, 0}, direction = defines.direction.west } } }, vehicle_impact_sound = data.raw["pipe"]["pipe"].vehicle_impact_sound, @@ -3189,9 +3141,9 @@ data:extend({ { type = "pipe", name = "nullius-pipe-3", - localised_description = {"entity-description.nullius-pipe", 80, 5370, 4260}, + localised_description = {"entity-description.nullius-pipe", tostring(80), tostring(5370), tostring(4260)}, icons = data.raw.item["nullius-pipe-3"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.4, result = "nullius-pipe-3"}, max_health = 200, corpse = "pipe-remnants", @@ -3206,28 +3158,27 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { - height = 4, - base_area = 1, + volume = 500, pipe_connections = { - { position = {0, -1} }, - { position = {1, 0} }, - { position = {0, 1} }, - { position = {-1, 0} } + { position = {0, -0.1}, direction = defines.direction.north }, + { position = {0.1, 0}, direction = defines.direction.east }, + { position = {0, 0.1}, direction = defines.direction.south }, + { position = {-0.1, 0}, direction = defines.direction.west } } }, vehicle_impact_sound = data.raw["pipe"]["pipe"].vehicle_impact_sound, working_sound = data.raw["pipe"]["pipe"].working_sound, horizontal_window_bounding_box = {{-0.25, -0.25}, {0.25, 0.15625}}, vertical_window_bounding_box = {{-0.28125, -0.40625}, {0.03125, 0.125}}, - pictures = data.raw["pipe"]["plastic-pipe"].pictures + pictures = data.raw["pipe"]["bob-plastic-pipe"].pictures }, { type = "pipe", name = "nullius-pipe-4", - localised_description = {"entity-description.nullius-pipe", 100, 6720, 5180}, + localised_description = {"entity-description.nullius-pipe", tostring(100), tostring(6720), tostring(5180)}, icons = data.raw.item["nullius-pipe-4"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.5, result = "nullius-pipe-4"}, max_health = 250, corpse = "pipe-remnants", @@ -3241,13 +3192,12 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { - height = 5, - base_area = 0.8, + volume = 500, pipe_connections = { - { position = {0, -1} }, - { position = {1, 0} }, - { position = {0, 1} }, - { position = {-1, 0} } + { position = {0, -0.1}, direction = defines.direction.north }, + { position = {0.1, 0}, direction = defines.direction.east }, + { position = {0, 0.1}, direction = defines.direction.south }, + { position = {-0.1, 0}, direction = defines.direction.west } } }, vehicle_impact_sound = data.raw["pipe"]["pipe"].vehicle_impact_sound, @@ -3260,7 +3210,7 @@ data:extend({ { type = "pipe-to-ground", name = "nullius-underground-pipe-2", - localised_description = {"entity-description.nullius-underground-pipe", 60}, + localised_description = {"entity-description.nullius-underground-pipe", tostring(60)}, icons = data.raw.item["nullius-underground-pipe-2"].icons, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.6, result = "nullius-underground-pipe-2"}, @@ -3277,14 +3227,15 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe-to-ground"]["pipe-to-ground"].damaged_trigger_effect, fluid_box = { - height = 3, - base_area = 1.333334, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -1} }, + { position = {0, -0.1}, direction = defines.direction.north }, { - position = {0, 1}, - max_underground_distance = 15 + connection_type = "underground", + position = {0, 0.1}, + max_underground_distance = 15, + direction = defines.direction.south } } }, @@ -3295,7 +3246,7 @@ data:extend({ { type = "pipe-to-ground", name = "nullius-underground-pipe-3", - localised_description = {"entity-description.nullius-underground-pipe", 80}, + localised_description = {"entity-description.nullius-underground-pipe", tostring(80)}, icons = data.raw.item["nullius-underground-pipe-3"].icons, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-underground-pipe-3"}, @@ -3312,25 +3263,26 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe-to-ground"]["pipe-to-ground"].damaged_trigger_effect, fluid_box = { - height = 4, - base_area = 1, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -1} }, + { position = {0, -0.1}, direction = defines.direction.north }, { - position = {0, 1}, - max_underground_distance = 19 + connection_type = "underground", + position = {0, 0.1}, + max_underground_distance = 19, + direction = defines.direction.south } } }, vehicle_impact_sound = data.raw["pipe-to-ground"]["pipe-to-ground"].vehicle_impact_sound, - pictures = data.raw["pipe-to-ground"]["plastic-pipe-to-ground"].pictures + pictures = data.raw["pipe-to-ground"]["bob-plastic-pipe-to-ground"].pictures }, { type = "pipe-to-ground", name = "nullius-underground-pipe-4", - localised_description = {"entity-description.nullius-underground-pipe", 100}, + localised_description = {"entity-description.nullius-underground-pipe", tostring(100)}, icons = data.raw.item["nullius-underground-pipe-4"].icons, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1, result = "nullius-underground-pipe-4"}, @@ -3346,14 +3298,15 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe-to-ground"]["pipe-to-ground"].damaged_trigger_effect, fluid_box = { - height = 5, - base_area = 0.8, + volume = 500, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -1} }, + { position = {0, -0.1}, direction = defines.direction.north }, { - position = {0, 1}, - max_underground_distance = 23 + position = {0, 0.1}, + connection_type = "underground", + max_underground_distance = 23, + direction = defines.direction.south } } }, diff --git a/nullius/prototypes/entity/power_pole.lua b/nullius/prototypes/entity/power_pole.lua index 28565f0..965594c 100644 --- a/nullius/prototypes/entity/power_pole.lua +++ b/nullius/prototypes/entity/power_pole.lua @@ -8,7 +8,7 @@ data:extend({ type = "electric-pole", name = "nullius-power-pole-3", icons = data.raw.item["nullius-power-pole-3"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-power-pole-3"}, max_health = 125, maximum_wire_distance = 14.5, @@ -22,7 +22,7 @@ data:extend({ collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["electric-pole"]["medium-electric-pole"].damaged_trigger_effect, - drawing_box = {{-0.5, -2.8}, {0.5, 0.5}}, + vehicle_impact_sound = data.raw["electric-pole"]["medium-electric-pole"].vehicle_impact_sound, open_sound = data.raw["electric-pole"]["medium-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["medium-electric-pole"].close_sound, @@ -33,7 +33,7 @@ data:extend({ pictures = { layers = { { - filename = ENTITYPATH .. "poles/hr-pole3.png", + filename = ENTITYPATH .. "poles/pole3.png", priority = "extra-high", width = 84, height = 252, @@ -50,7 +50,7 @@ data:extend({ type = "electric-pole", name = "nullius-power-pole-4", icons = data.raw.item["nullius-power-pole-4"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.5, result = "nullius-power-pole-4"}, max_health = 150, maximum_wire_distance = 17.5, @@ -63,7 +63,7 @@ data:extend({ collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["electric-pole"]["medium-electric-pole"].damaged_trigger_effect, - drawing_box = {{-0.5, -2.8}, {0.5, 0.5}}, + vehicle_impact_sound = data.raw["electric-pole"]["medium-electric-pole"].vehicle_impact_sound, open_sound = data.raw["electric-pole"]["medium-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["medium-electric-pole"].close_sound, @@ -77,7 +77,7 @@ data:extend({ type = "electric-pole", name = "nullius-pylon-2", icons = data.raw.item["nullius-pylon-2"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-pylon-2"}, max_health = 200, maximum_wire_distance = 48.5, @@ -90,7 +90,7 @@ data:extend({ collision_box = {{-0.65, -0.65}, {0.65, 0.65}}, selection_box = {{-1, -1}, {1, 1}}, damaged_trigger_effect = data.raw["electric-pole"]["big-electric-pole"].damaged_trigger_effect, - drawing_box = {{-1, -3}, {1, 0.5}}, + vehicle_impact_sound = data.raw["electric-pole"]["big-electric-pole"].vehicle_impact_sound, open_sound = data.raw["electric-pole"]["big-electric-pole"].open_sound, @@ -101,7 +101,7 @@ data:extend({ pictures = { layers = { { - filename = BASEENTITY .. "big-electric-pole/hr-big-electric-pole.png", + filename = BASEENTITY .. "big-electric-pole/big-electric-pole.png", priority = "extra-high", width = 148, height = 312, @@ -110,7 +110,7 @@ data:extend({ scale = 0.5 }, { - filename = BASEENTITY .. "big-electric-pole/hr-big-electric-pole-shadow.png", + filename = BASEENTITY .. "big-electric-pole/big-electric-pole-shadow.png", priority = "extra-high", width = 374, height = 94, @@ -127,7 +127,7 @@ data:extend({ type = "electric-pole", name = "nullius-pylon-3", icons = data.raw.item["nullius-pylon-3"].icons, - flags = {"placeable-neutral", "player-creation", "fast-replaceable-no-build-while-moving"}, + flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 2, result = "nullius-pylon-3"}, max_health = 250, maximum_wire_distance = 64, @@ -139,7 +139,7 @@ data:extend({ collision_box = {{-0.65, -0.65}, {0.65, 0.65}}, selection_box = {{-1, -1}, {1, 1}}, damaged_trigger_effect = data.raw["electric-pole"]["big-electric-pole"].damaged_trigger_effect, - drawing_box = {{-1, -3}, {1, 0.5}}, + vehicle_impact_sound = data.raw["electric-pole"]["big-electric-pole"].vehicle_impact_sound, open_sound = data.raw["electric-pole"]["big-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["big-electric-pole"].close_sound, @@ -180,7 +180,7 @@ data:extend({ resistances = {{ type = "impact", decrease = 100, percent = 90 }}, collision_box = {{-0.65, -0.65}, {0.65, 0.65}}, selection_box = {{-1, -1}, {1, 1}}, - drawing_box = {{-1, -3}, {1, 1}}, + damaged_trigger_effect = data.raw["electric-pole"]["substation"].damaged_trigger_effect, vehicle_impact_sound = data.raw["electric-pole"]["substation"].vehicle_impact_sound, open_sound = data.raw["electric-pole"]["substation"].open_sound, @@ -208,7 +208,7 @@ data:extend({ resistances = {{ type = "impact", decrease = 100, percent = 90 }}, collision_box = {{-0.65, -0.65}, {0.65, 0.65}}, selection_box = {{-1, -1}, {1, 1}}, - drawing_box = {{-1, -3}, {1, 1}}, + damaged_trigger_effect = data.raw["electric-pole"]["substation"].damaged_trigger_effect, vehicle_impact_sound = data.raw["electric-pole"]["substation"].vehicle_impact_sound, open_sound = data.raw["electric-pole"]["substation"].open_sound, diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index aa0517e..ebbb472 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -1,23 +1,22 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" -circuit_connector_definitions["nullius-hangar-4"] = - circuit_connector_definitions.create( +circuit_connector_definitions["nullius-hangar-4"] = circuit_connector_definitions.create_single( universal_connector_template, - {{ + { variation = 26, - main_offset = util.by_pixel(6, 20), - shadow_offset = util.by_pixel(7, 36) - }} + main_offset = util.by_pixel(6, 20), + shadow_offset = util.by_pixel(7, 36) + } ) circuit_connector_definitions["nullius-relay"] = - circuit_connector_definitions.create( + circuit_connector_definitions.create_single( universal_connector_template, - {{ + { variation = 26, main_offset = util.by_pixel(-1, 1), shadow_offset = util.by_pixel(0, 6) - }} + } ) @@ -27,7 +26,7 @@ data:extend({ name = "nullius-construction-bot-1", localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-kilojoule", 800}}, + {"entity-description.nullius-kilojoule", tostring(800)}}, icons = data.raw.item["nullius-construction-bot-1"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-1"}, @@ -70,7 +69,7 @@ data:extend({ name = "nullius-construction-bot-2", localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-megajoule", 3}}, + {"entity-description.nullius-megajoule", tostring(3)}}, icons = data.raw.item["nullius-construction-bot-2"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-2"}, @@ -113,7 +112,7 @@ data:extend({ name = "nullius-construction-bot-3", localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-megajoule", 8}}, + {"entity-description.nullius-megajoule", tostring(8)}}, icons = data.raw.item["nullius-construction-bot-3"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-3"}, @@ -156,7 +155,7 @@ data:extend({ name = "nullius-construction-bot-4", localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-megajoule", 15}}, + {"entity-description.nullius-megajoule", tostring(15)}}, icons = data.raw.item["nullius-construction-bot-4"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-4"}, @@ -199,7 +198,7 @@ data:extend({ name = "nullius-logistic-bot-1", localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", 1.2}}, + {"entity-description.nullius-megajoule", tostring(1.2)}}, icons = data.raw.item["nullius-logistic-bot-1"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-1"}, @@ -235,7 +234,7 @@ data:extend({ name = "nullius-logistic-bot-2", localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", 2.5}}, + {"entity-description.nullius-megajoule", tostring(2.5)}}, icons = data.raw.item["nullius-logistic-bot-2"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-2"}, @@ -271,7 +270,7 @@ data:extend({ name = "nullius-logistic-bot-3", localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", 6}}, + {"entity-description.nullius-megajoule", tostring(6)}}, icons = data.raw.item["nullius-logistic-bot-3"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-3"}, @@ -307,7 +306,7 @@ data:extend({ name = "nullius-logistic-bot-4", localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", 12}}, + {"entity-description.nullius-megajoule", tostring(12)}}, icons = data.raw.item["nullius-logistic-bot-4"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-4"}, @@ -344,7 +343,7 @@ data:extend({ localised_name = {"equipment-name.nullius-hangar-1"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 20}}, + {"entity-description.nullius-megajoule", tostring(20)}}, icons = data.raw.item["nullius-hangar-1"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-hangar-1"}, @@ -401,21 +400,14 @@ data:extend({ base = { layers = { { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-1.png", - width = 143, - height = 135, - shift = {0.5*0.75, 0.25*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-1.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-1.png", width = 228, height = 277, shift = util.by_pixel(2*0.75, 7.75*0.75), scale = 0.5*0.75 - } }, { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-shadow.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-shadow.png", width = 294, height = 201, draw_as_shadow = true, @@ -426,34 +418,16 @@ data:extend({ } }, base_patch = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-1.png", - priority = "medium", - width = 69, - height = 50, - frame_count = 1, - shift = {0.03125*0.75, 0.203125*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-patch-1.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-1.png", priority = "medium", width = 138, height = 100, frame_count = 1, shift = util.by_pixel(1.5*0.75, 5*0.75), scale = 0.5*0.75 - } }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation.png", - priority = "medium", - width = 42, - height = 31, - frame_count = 8, - animation_speed = 0.5, - shift = {-0.5315*0.75, -1.9375*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation.png", priority = "medium", width = 83, height = 59, @@ -461,43 +435,24 @@ data:extend({ animation_speed = 0.5, shift = util.by_pixel(-17.75*0.75, -61.25*0.75), scale = 0.5*0.75 - } }, door_animation_up = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up.png", - priority = "medium", - width = 52, - height = 20, - frame_count = 16, - shift = {0.015625*0.75, -0.890625*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-up.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up.png", priority = "medium", width = 97, height = 38, frame_count = 16, shift = util.by_pixel(-0.25*0.75, -29.5*0.75), scale = 0.5*0.75 - } }, door_animation_down = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down.png", - priority = "medium", - width = 52, - height = 22, - frame_count = 16, - shift = {0.015625*0.75, -0.234375*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-down.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down.png", priority = "medium", width = 97, height = 41, frame_count = 16, shift = util.by_pixel(-0.25*0.75,-9.75*0.75), scale = 0.5*0.75 - } } }, @@ -507,7 +462,7 @@ data:extend({ localised_name = {"equipment-name.nullius-hangar-2"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 50}}, + {"entity-description.nullius-megajoule", tostring(50)}}, icons = data.raw.item["nullius-hangar-2"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-hangar-2"}, @@ -564,21 +519,14 @@ data:extend({ base = { layers = { { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-2.png", - width = 143, - height = 135, - shift = {0.5*0.75, 0.25*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-2.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-2.png", width = 228, height = 277, shift = util.by_pixel(2*0.75, 7.75*0.75), scale = 0.5*0.75 - } }, { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-shadow.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-shadow.png", width = 294, height = 201, draw_as_shadow = true, @@ -589,34 +537,16 @@ data:extend({ } }, base_patch = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-2.png", - priority = "medium", - width = 69, - height = 50, - frame_count = 1, - shift = {0.03125*0.75, 0.203125*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-patch-2.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-2.png", priority = "medium", width = 138, height = 100, frame_count = 1, shift = util.by_pixel(1.5*0.75, 5*0.75), scale = 0.5*0.75 - } }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-2.png", - priority = "medium", - width = 42, - height = 31, - frame_count = 8, - animation_speed = 0.5, - shift = {-0.5315*0.75, -1.9375*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-2.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-2.png", priority = "medium", width = 83, height = 59, @@ -624,43 +554,24 @@ data:extend({ animation_speed = 0.5, shift = util.by_pixel(-17.75*0.75, -61.25*0.75), scale = 0.5*0.75 - } }, door_animation_up = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up-2.png", - priority = "medium", - width = 52, - height = 20, - frame_count = 16, - shift = {0.015625*0.75, -0.890625*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-up-2.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up-2.png", priority = "medium", width = 97, height = 38, frame_count = 16, shift = util.by_pixel(-0.25*0.75, -29.5*0.75), scale = 0.5*0.75 - } }, door_animation_down = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down-2.png", - priority = "medium", - width = 52, - height = 22, - frame_count = 16, - shift = {0.015625*0.75, -0.234375*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-down-2.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down-2.png", priority = "medium", width = 97, height = 41, frame_count = 16, shift = util.by_pixel(-0.25*0.75,-9.75*0.75), scale = 0.5*0.75 - } } }, @@ -670,7 +581,7 @@ data:extend({ localised_name = {"equipment-name.nullius-hangar-3"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 150}}, + {"entity-description.nullius-megajoule", tostring(150)}}, icons = data.raw.item["nullius-hangar-3"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-hangar-3"}, @@ -726,21 +637,14 @@ data:extend({ base = { layers = { { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-4.png", - width = 143, - height = 135, - shift = {0.5*0.75, 0.25*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-4.png", width = 228, height = 277, shift = util.by_pixel(2*0.75, 7.75*0.75), scale = 0.5*0.75 - } }, { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-shadow.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-shadow.png", width = 294, height = 201, draw_as_shadow = true, @@ -751,34 +655,16 @@ data:extend({ } }, base_patch = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-4.png", - priority = "medium", - width = 69, - height = 50, - frame_count = 1, - shift = {0.03125*0.75, 0.203125*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-patch-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-4.png", priority = "medium", width = 138, height = 100, frame_count = 1, shift = util.by_pixel(1.5*0.75, 5*0.75), scale = 0.5*0.75 - } }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png", - priority = "medium", - width = 42, - height = 31, - frame_count = 8, - animation_speed = 0.5, - shift = {-0.5315*0.75, -1.9375*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png", priority = "medium", width = 83, height = 59, @@ -786,43 +672,24 @@ data:extend({ animation_speed = 0.5, shift = util.by_pixel(-17.75*0.75, -61.25*0.75), scale = 0.5*0.75 - } }, door_animation_up = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up-4.png", - priority = "medium", - width = 52, - height = 20, - frame_count = 16, - shift = {0.015625*0.75, -0.890625*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-up-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up-4.png", priority = "medium", width = 97, height = 38, frame_count = 16, shift = util.by_pixel(-0.25*0.75, -29.5*0.75), scale = 0.5*0.75 - } }, door_animation_down = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down-4.png", - priority = "medium", - width = 52, - height = 22, - frame_count = 16, - shift = {0.015625*0.75, -0.234375*0.75}, - scale = 0.75, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-down-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down-4.png", priority = "medium", width = 97, height = 41, frame_count = 16, shift = util.by_pixel(-0.25*0.75,-9.75*0.75), scale = 0.5*0.75 - } } }, @@ -832,7 +699,7 @@ data:extend({ localised_name = {"equipment-name.nullius-hangar-4"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", 150}}, + {"entity-description.nullius-megajoule", tostring(150)}}, icons = data.raw.item["nullius-hangar-4"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1.5, result = "nullius-hangar-4"}, @@ -888,21 +755,14 @@ data:extend({ base = { layers = { { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-4.png", - width = 143, - height = 135, - shift = {0.5*0.5, 0.25*0.5}, - scale = 0.5, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-4.png", width = 228, height = 277, shift = util.by_pixel(2*0.5, 7.75*0.5), scale = 0.5*0.5 - } }, { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-shadow.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-shadow.png", width = 294, height = 201, draw_as_shadow = true, @@ -913,34 +773,16 @@ data:extend({ } }, base_patch = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-4.png", - priority = "medium", - width = 69, - height = 50, - frame_count = 1, - shift = {0.03125*0.5, 0.203125*0.5}, - scale = 0.5, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-patch-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-patch-4.png", priority = "medium", width = 138, height = 100, frame_count = 1, shift = util.by_pixel(1.5*0.5, 5*0.5), scale = 0.5*0.5 - } }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png", - priority = "medium", - width = 42, - height = 31, - frame_count = 8, - animation_speed = 0.5, - shift = {-0.5315*0.5, -1.9375*0.5}, - scale = 0.5, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png", priority = "medium", width = 83, height = 59, @@ -948,43 +790,24 @@ data:extend({ animation_speed = 0.5, shift = util.by_pixel(-17.75*0.5, -61.25*0.5), scale = 0.5*0.5 - } }, door_animation_up = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up-4.png", - priority = "medium", - width = 52, - height = 20, - frame_count = 16, - shift = {0.015625*0.5, -0.890625*0.5}, - scale = 0.5, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-up-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-up-4.png", priority = "medium", width = 97, height = 38, frame_count = 16, shift = util.by_pixel(-0.25*0.5, -29.5*0.5), scale = 0.5*0.5 - } }, door_animation_down = { - filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down-4.png", - priority = "medium", - width = 52, - height = 22, - frame_count = 16, - shift = {0.015625*0.5, -0.234375*0.5}, - scale = 0.5, - hr_version = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-door-down-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-door-down-4.png", priority = "medium", width = 97, height = 41, frame_count = 16, shift = util.by_pixel(-0.25*0.5,-9.75*0.5), scale = 0.5*0.5 - } } }, @@ -994,7 +817,7 @@ data:extend({ localised_name = {"equipment-name.nullius-relay-1"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-megajoule", 6}}, + {"entity-description.nullius-megajoule", tostring(6)}}, icons = data.raw.item["nullius-relay-1"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.4, result = "nullius-relay-1"}, @@ -1043,7 +866,7 @@ data:extend({ scale = 0.6 }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation.png", priority = "medium", width = 83, height = 59, @@ -1060,7 +883,7 @@ data:extend({ localised_name = {"equipment-name.nullius-relay-2"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-megajoule", 15}}, + {"entity-description.nullius-megajoule", tostring(15)}}, icons = data.raw.item["nullius-relay-2"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.6, result = "nullius-relay-2"}, @@ -1109,7 +932,7 @@ data:extend({ scale = 0.6 }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-2.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-2.png", priority = "medium", width = 83, height = 59, @@ -1126,7 +949,7 @@ data:extend({ localised_name = {"equipment-name.nullius-relay-3"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-megajoule", 40}}, + {"entity-description.nullius-megajoule", tostring(40)}}, icons = data.raw.item["nullius-relay-3"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-relay-3"}, @@ -1175,7 +998,7 @@ data:extend({ scale = 0.6 }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-4.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png", priority = "medium", width = 83, height = 59, @@ -1192,7 +1015,7 @@ data:extend({ localised_name = {"equipment-name.nullius-relay-4"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, - {"entity-description.nullius-megajoule", 100}}, + {"entity-description.nullius-megajoule", tostring(100)}}, icons = data.raw.item["nullius-relay-4"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1, result = "nullius-relay-4"}, @@ -1241,7 +1064,7 @@ data:extend({ tint = {0.85, 1, 0.9} }, base_animation = { - filename = "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-3.png", + filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-3.png", priority = "medium", width = 83, height = 59, @@ -1259,7 +1082,7 @@ data:extend({ localised_name = {"equipment-name.nullius-charger-1"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 15}}, + {"entity-description.nullius-megajoule", tostring(15)}}, icons = data.raw.item["nullius-charger-1"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.6, result = "nullius-charger-1"}, @@ -1342,7 +1165,7 @@ data:extend({ localised_name = {"equipment-name.nullius-charger-2"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 40}}, + {"entity-description.nullius-megajoule", tostring(40)}}, icons = data.raw.item["nullius-charger-2"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-charger-2"}, @@ -1425,7 +1248,7 @@ data:extend({ localised_name = {"equipment-name.nullius-charger-3"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 100}}, + {"entity-description.nullius-megajoule", tostring(100)}}, icons = data.raw.item["nullius-charger-3"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1, result = "nullius-charger-3"}, @@ -1507,7 +1330,7 @@ data:extend({ localised_name = {"equipment-name.nullius-charger-4"}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-charger"}, - {"entity-description.nullius-megajoule", 100}}, + {"entity-description.nullius-megajoule", tostring(100)}}, icons = data.raw.item["nullius-charger-4"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1, result = "nullius-charger-4"}, @@ -1591,7 +1414,7 @@ local android1 = data.raw.character["character"] android1.order = "nullius-akb" local android2 = util.table.deepcopy(android1) android2.name = "nullius-android-2" -android2.localised_name = {"", {"item-name.nullius-android"}, " ", 2} +android2.localised_name = {"", {"item-name.nullius-android"}, " ", tostring(2)} android2.icons = data.raw.item["nullius-android-2"].icons android2.order = "nullius-akc" android2.selection_box = {{-0.4, -1.55}, {0.4, 0.2}} @@ -1656,31 +1479,29 @@ data.raw.roboport["nullius-relay-construction-4"].construction_radius = 200.5 data.raw.roboport["nullius-hangar-construction-1"].base_animation.filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png" data.raw.roboport["nullius-hangar-construction-1"].base_animation.tint = {0.9, 0.8, 0.7} -data.raw.roboport["nullius-hangar-construction-1"].base_animation.hr_version.filename = - "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-4.png" -data.raw.roboport["nullius-hangar-construction-1"].base_animation.hr_version.tint = {0.9, 0.8, 0.7} +data.raw.roboport["nullius-hangar-construction-1"].base_animation.filename = + "__boblogistics__/graphics/entity/roboport/roboport-base-animation-4.png" data.raw.roboport["nullius-relay-construction-1"].base_animation.filename = - data.raw.roboport["nullius-hangar-construction-1"].base_animation.hr_version.filename + data.raw.roboport["nullius-hangar-construction-1"].base_animation.filename data.raw.roboport["nullius-relay-construction-1"].base_animation.tint = {0.9, 0.8, 0.7} data.raw.roboport["nullius-hangar-construction-2"].base_animation.filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-3.png" -data.raw.roboport["nullius-hangar-construction-2"].base_animation.hr_version.filename = - "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-3.png" +data.raw.roboport["nullius-hangar-construction-2"].base_animation.filename = + "__boblogistics__/graphics/entity/roboport/roboport-base-animation-3.png" data.raw.roboport["nullius-hangar-construction-2"].base_animation.tint = {0.85, 1, 0.9} -data.raw.roboport["nullius-hangar-construction-2"].base_animation.hr_version.tint = {0.85, 1, 0.9} data.raw.roboport["nullius-relay-construction-2"].base_animation.filename = - data.raw.roboport["nullius-hangar-construction-2"].base_animation.hr_version.filename + data.raw.roboport["nullius-hangar-construction-2"].base_animation.filename +data.raw.roboport["nullius-hangar-construction-3"].base_animation.filename = + "__boblogistics__/graphics/entity/roboport/roboport-base-animation-3.png" data.raw.roboport["nullius-hangar-construction-3"].base_animation.filename = "__boblogistics__/graphics/entity/roboport/roboport-base-animation-3.png" -data.raw.roboport["nullius-hangar-construction-3"].base_animation.hr_version.filename = - "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation-3.png" data.raw.roboport["nullius-relay-construction-3"].base_animation.filename = - data.raw.roboport["nullius-hangar-construction-3"].base_animation.hr_version.filename + data.raw.roboport["nullius-hangar-construction-3"].base_animation.filename data.raw.roboport["nullius-relay-construction-3"].base_animation.tint = {1, 1, 0.75} data.raw.roboport["nullius-hangar-construction-4"].base_animation.filename = data.raw.roboport["nullius-hangar-construction-3"].base_animation.filename -data.raw.roboport["nullius-hangar-construction-4"].base_animation.hr_version.filename = - data.raw.roboport["nullius-hangar-construction-3"].base_animation.hr_version.filename +data.raw.roboport["nullius-hangar-construction-4"].base_animation.filename = + data.raw.roboport["nullius-hangar-construction-3"].base_animation.filename data.raw.roboport["nullius-relay-construction-4"].base_animation.filename = - "__boblogistics__/graphics/entity/roboport/hr-roboport-base-animation.png" + "__boblogistics__/graphics/entity/roboport/roboport-base-animation.png" data.raw.roboport["nullius-relay-construction-4"].base_animation.tint = {0.7, 0.7, 0.7} diff --git a/nullius/prototypes/entity/train.lua b/nullius/prototypes/entity/train.lua index 8c85dd2..4c2f352 100644 --- a/nullius/prototypes/entity/train.lua +++ b/nullius/prototypes/entity/train.lua @@ -18,7 +18,6 @@ data:extend({ collision_box = {{-0.6, -2.6}, {0.6, 2.6}}, selection_box = {{-1, -3}, {1, 3}}, damaged_trigger_effect = data.raw.locomotive["locomotive"].damaged_trigger_effect, - drawing_box = {{-1, -4}, {1, 3}}, alert_icon_shift = util.by_pixel(0, -24), weight = 1200, max_speed = 0.5555556, @@ -38,14 +37,16 @@ data:extend({ { type = "physical", decrease = 20, percent = 30 }, { type = "explosion", decrease = 20, percent = 30 } }, - burner = { - fuel_category = "vehicle", + energy_source = { + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 0.9, fuel_inventory_size = 1, burnt_inventory_size = 2, - smoke = data.raw.locomotive["locomotive"].burner.smoke + smoke = data.raw.locomotive["locomotive"].energy_source.smoke }, front_light = data.raw.locomotive["locomotive"].front_light, + front_light_pictures = data.raw.locomotive["locomotive"].front_light_pictures, back_light = data.raw.locomotive["locomotive"].back_light, stand_by_light = data.raw.locomotive["locomotive"].stand_by_light, color = {r = 0.9, g = 0.85, b = 0, a = 0.5}, @@ -65,137 +66,49 @@ data:extend({ sound_scaling_ratio = 0.35, pictures = { - layers = { - { - slice = 4, - priority = "very-low", - width = 238, - height = 230, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "diesel-locomotive/diesel-locomotive-01.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-02.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-03.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-04.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-05.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-06.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-07.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-08.png" - }, - line_length = 4, - lines_per_file = 8, - shift = {0.0, -0.5}, - tint = {0.7, 0.7, 0.6}, - hr_version = { - priority = "very-low", - slice = 4, - width = 474, - height = 458, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-1.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-2.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-3.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-4.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-5.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-6.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-7.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-8.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-9.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-10.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-11.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-12.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-13.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-14.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-15.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-16.png" - }, - line_length = 4, - lines_per_file = 4, - shift = {0.0, -0.5}, - tint = {0.62, 0.6, 0.5}, - scale = 0.5 - } - }, - { - priority = "very-low", - flags = { "mask" }, - slice = 4, - width = 236, - height = 228, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-01.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-02.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-03.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-04.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-05.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-06.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-07.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-mask-08.png" - }, - line_length = 4, - lines_per_file = 8, - shift = {0.0, -0.5}, - apply_runtime_tint = true, - hr_version = { - priority = "very-low", - flags = { "mask" }, - slice = 4, - width = 472, - height = 456, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-1.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-2.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-3.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-4.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-5.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-6.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-7.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-8.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-9.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-10.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-11.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-12.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-13.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-14.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-15.png", - BASEENTITY .. "diesel-locomotive/hr-diesel-locomotive-mask-16.png" - }, - line_length = 4, - lines_per_file = 4, - shift = {0.0, -0.5}, - apply_runtime_tint = true, - scale = 0.5 - } - }, - { - priority = "very-low", - slice = 4, - flags = { "shadow" }, - width = 253, - height = 212, - direction_count = 256, - draw_as_shadow = true, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-01.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-02.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-03.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-04.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-05.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-06.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-07.png", - BASEENTITY .. "diesel-locomotive/diesel-locomotive-shadow-08.png" - }, - line_length = 4, - lines_per_file = 8, - shift = {1, 0.3} + slope_angle_between_frames = data.raw.locomotive["locomotive"].pictures.slope_angle_between_frames, + slope_back_equals_front = data.raw.locomotive["locomotive"].pictures.slope_back_equals_front, + rotated = { + layers = { + util.sprite_load("__base__/graphics/entity/locomotive/locomotive", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = {0.0, -0.5}, + tint = {0.62, 0.6, 0.5}, + } + ), + util.sprite_load("__base__/graphics/entity/locomotive/locomotive-mask", + { + dice = 4, + priority = "very-low", + flags = { "mask" }, + apply_runtime_tint = true, + tint_as_overlay = true, + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = {0.0, -0.5}, + } + ), + util.sprite_load("__base__/graphics/entity/locomotive/locomotive-shadow", + { + dice = 4, + priority = "very-low", + flags = { "shadow" }, + draw_as_shadow = true, + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = {1, 0.3} + } + ) } } } @@ -217,7 +130,6 @@ data:extend({ collision_box = {{-0.6, -2.6}, {0.6, 2.6}}, selection_box = {{-1, -3}, {1, 3}}, damaged_trigger_effect = data.raw.locomotive["locomotive"].damaged_trigger_effect, - drawing_box = {{-1, -4}, {1, 3}}, alert_icon_shift = util.by_pixel(0, -24), weight = 2000, max_speed = 1.11111111, @@ -231,14 +143,16 @@ data:extend({ joint_distance = 4, energy_per_hit_point = 5, resistances = data.raw.locomotive["nullius-locomotive-1"].resistances, - burner = { - fuel_category = "vehicle", + energy_source = { + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 0.95, fuel_inventory_size = 2, burnt_inventory_size = 2, - smoke = data.raw.locomotive["locomotive"].burner.smoke + smoke = data.raw.locomotive["locomotive"].energy_source.smoke }, front_light = data.raw.locomotive["locomotive"].front_light, + front_light_pictures = data.raw.locomotive["locomotive"].front_light_pictures, back_light = data.raw.locomotive["locomotive"].back_light, stand_by_light = data.raw.locomotive["locomotive"].stand_by_light, color = {r = 0.95, g = 0.1, b = 0, a = 0.5}, @@ -258,36 +172,23 @@ data:extend({ sound_scaling_ratio = 0.35, pictures = { - layers = { - { - slice = 4, - priority = "very-low", - width = 238, - height = 230, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = data.raw.locomotive["nullius-locomotive-1"].pictures.layers[1].filenames, - line_length = 4, - lines_per_file = 8, - shift = {0.0, -0.5}, - tint = {1, 0.9, 0.8}, - hr_version = { - priority = "very-low", - slice = 4, - width = 474, - height = 458, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = data.raw.locomotive["nullius-locomotive-1"].pictures.layers[1].hr_version.filenames, - line_length = 4, - lines_per_file = 4, - shift = {0.0, -0.5}, - tint = {1, 0.9, 0.8}, - scale = 0.5 - } - }, - data.raw.locomotive["nullius-locomotive-1"].pictures.layers[2], - data.raw.locomotive["nullius-locomotive-1"].pictures.layers[3] + rotated = { + layers = { + util.sprite_load("__base__/graphics/entity/locomotive/locomotive", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = {0.0, -0.5}, + tint = {1, 0.9, 0.8}, + } + ), + data.raw.locomotive["nullius-locomotive-1"].pictures.rotated.layers[2], + data.raw.locomotive["nullius-locomotive-1"].pictures.rotated.layers[3] + } } } }, @@ -306,7 +207,6 @@ data:extend({ collision_box = {{-0.6, -2.6}, {0.6, 2.6}}, selection_box = {{-1, -3}, {1, 3}}, damaged_trigger_effect = data.raw.locomotive["locomotive"].damaged_trigger_effect, - drawing_box = {{-1, -4}, {1, 3}}, alert_icon_shift = util.by_pixel(0, -24), weight = 3000, max_speed = 1.85185185, @@ -320,14 +220,16 @@ data:extend({ joint_distance = 4, energy_per_hit_point = 5, resistances = data.raw.locomotive["nullius-locomotive-1"].resistances, - burner = { - fuel_categories = {"nullius-nuclear", "vehicle"}, + energy_source = { + type = "burner", + fuel_categories = {"nullius-nuclear", "vehicle"}, effectivity = 1, fuel_inventory_size = 2, burnt_inventory_size = 2, - smoke = data.raw.locomotive["locomotive"].burner.smoke + smoke = data.raw.locomotive["locomotive"].energy_source.smoke }, front_light = data.raw.locomotive["locomotive"].front_light, + front_light_pictures = data.raw.locomotive["locomotive"].front_light_pictures, back_light = data.raw.locomotive["locomotive"].back_light, stand_by_light = data.raw.locomotive["locomotive"].stand_by_light, color = {r = 0.2, g = 0.3, b = 0.8, a = 0.5}, @@ -347,36 +249,23 @@ data:extend({ sound_scaling_ratio = 0.35, pictures = { - layers = { - { - slice = 4, - priority = "very-low", - width = 238, - height = 230, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = data.raw.locomotive["nullius-locomotive-1"].pictures.layers[1].filenames, - line_length = 4, - lines_per_file = 8, - shift = {0.0, -0.5}, - tint = {0.9, 0.95, 1}, - hr_version = { - priority = "very-low", - slice = 4, - width = 474, - height = 458, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = data.raw.locomotive["nullius-locomotive-1"].pictures.layers[1].hr_version.filenames, - line_length = 4, - lines_per_file = 4, - shift = {0.0, -0.5}, - scale = 0.5, - tint = {0.9, 0.95, 1} - } - }, - data.raw.locomotive["nullius-locomotive-1"].pictures.layers[2], - data.raw.locomotive["nullius-locomotive-1"].pictures.layers[3] + rotated = { + layers = { + util.sprite_load("__base__/graphics/entity/locomotive/locomotive", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = {0.0, -0.5}, + tint = {0.9, 0.95, 1} + } + ), + data.raw.locomotive["nullius-locomotive-1"].pictures.rotated.layers[2], + data.raw.locomotive["nullius-locomotive-1"].pictures.rotated.layers[3] + } } } }, @@ -395,7 +284,6 @@ data:extend({ collision_box = {{-0.6, -2.6}, {0.6, 2.6}}, selection_box = {{-1, -3}, {1, 3}}, damaged_trigger_effect = data.raw.locomotive["locomotive"].damaged_trigger_effect, - drawing_box = {{-1, -4}, {1, 3}}, alert_icon_shift = util.by_pixel(0, -24), weight = 3000, max_speed = 1.11111111, @@ -411,6 +299,7 @@ data:extend({ resistances = data.raw.locomotive["nullius-locomotive-1"].resistances, energy_source = {type = "void"}, front_light = data.raw.locomotive["locomotive"].front_light, + front_light_pictures = data.raw.locomotive["locomotive"].front_light_pictures, back_light = data.raw.locomotive["locomotive"].back_light, stand_by_light = data.raw.locomotive["locomotive"].stand_by_light, color = {r = 0.2, g = 0.8, b = 0.3, a = 0.5}, @@ -430,36 +319,23 @@ data:extend({ sound_scaling_ratio = 0.35, pictures = { - layers = { - { - slice = 4, - priority = "very-low", - width = 238, - height = 230, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = data.raw.locomotive["nullius-locomotive-1"].pictures.layers[1].filenames, - line_length = 4, - lines_per_file = 8, - shift = {0.0, -0.5}, - tint = {0.9, 1, 0.95}, - hr_version = { - priority = "very-low", - slice = 4, - width = 474, - height = 458, - direction_count = 256, - allow_low_quality_rotation = true, - filenames = data.raw.locomotive["nullius-locomotive-1"].pictures.layers[1].hr_version.filenames, - line_length = 4, - lines_per_file = 4, - shift = {0.0, -0.5}, - scale = 0.5, - tint = {0.9, 1, 0.95} - } - }, - data.raw.locomotive["nullius-locomotive-1"].pictures.layers[2], - data.raw.locomotive["nullius-locomotive-1"].pictures.layers[3] + rotated = { + layers = { + util.sprite_load("__base__/graphics/entity/locomotive/locomotive", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = {0.0, -0.5}, + tint = {0.9, 1, 0.95} + } + ), + data.raw.locomotive["nullius-locomotive-1"].pictures.rotated.layers[2], + data.raw.locomotive["nullius-locomotive-1"].pictures.rotated.layers[3] + } } } }, @@ -634,7 +510,7 @@ data:extend({ damaged_trigger_effect = data.raw["fluid-wagon"]["fluid-wagon"].damaged_trigger_effect, vertical_selection_shift = -0.796875, weight = 750, - max_speed = 1.48148148, + max_speed = 1.48148148, braking_force = 1, friction_force = 0.25, air_resistance = 0.006, @@ -662,93 +538,34 @@ data:extend({ sound_minimum_speed = 0.1, pictures = { - layers = { - { - priority = "very-low", - slice = 4, - width = 208, - height = 210, - back_equals_front = true, - direction_count = 128, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "fluid-wagon/fluid-wagon-1.png", - BASEENTITY .. "fluid-wagon/fluid-wagon-2.png", - BASEENTITY .. "fluid-wagon/fluid-wagon-3.png", - BASEENTITY .. "fluid-wagon/fluid-wagon-4.png" - }, - line_length = 4, - lines_per_file = 8, - shift = {0 + 0.013, -1 + 0.077}, - apply_runtime_tint = true, - hr_version = { - priority = "very-low", - slice = 4, - width = 416, - height = 419, - back_equals_front = true, - direction_count = 128, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-1.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-2.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-3.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-4.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-5.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-6.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-7.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-8.png" - }, - line_length = 4, - lines_per_file = 4, - shift = {0 + 0.013, -1 + 0.077}, - apply_runtime_tint = true, - scale = 0.5 - } - }, - { - flags = { "shadow" }, - priority = "very-low", - slice = 4, - width = 251, - height = 188, - back_equals_front = true, - draw_as_shadow = true, - direction_count = 128, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "fluid-wagon/fluid-wagon-shadow-1.png", - BASEENTITY .. "fluid-wagon/fluid-wagon-shadow-2.png", - BASEENTITY .. "fluid-wagon/fluid-wagon-shadow-3.png", - BASEENTITY .. "fluid-wagon/fluid-wagon-shadow-4.png" - }, - line_length = 4, - lines_per_file = 8, - shift = {0.875 + 0.013, 0.3125 + 0.077}, - hr_version = { - flags = { "shadow" }, - priority = "very-low", - slice = 4, - width = 501, - height = 375, - back_equals_front = true, - draw_as_shadow = true, - direction_count = 128, - allow_low_quality_rotation = true, - filenames = { - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-1.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-2.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-3.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-4.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-5.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-6.png", - BASEENTITY .. "fluid-wagon/hr-fluid-wagon-shadow-7.png" - }, - line_length = 4, - lines_per_file = 5, - shift = {0.875 + 0.013, 0.3125 + 0.077}, - scale = 0.5 - } + rotated = { + layers = { + util.sprite_load("__base__/graphics/entity/fluid-wagon/fluid-wagon", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + back_equals_front = true, + direction_count = 128, + scale = 0.5, + usage = "train", + shift = {0 + 0.013, -1 + 0.077}, + apply_runtime_tint = true, + } + ), + util.sprite_load("__base__/graphics/entity/fluid-wagon/fluid-wagon-shadow", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + back_equals_front = true, + draw_as_shadow = true, + direction_count = 128, + scale = 0.5, + usage = "train", + shift = {0.875 + 0.013, 0.3125 + 0.077}, + } + ) } } } @@ -912,35 +729,35 @@ data:extend({ sound_minimum_speed = 0.1, pictures = { - layers = { - { - priority = "very-low", - width = 238, - height = 206, - direction_count = 256, - allow_low_quality_rotation = true, - line_length = 4, - lines_per_file = 4, - shift = util.by_pixel(0, -27), - dice = 4, - filenames = data.raw["artillery-wagon"]["artillery-wagon"].pictures.layers[1].filenames, - tint = { 0.7, 0.7, 0.9 }, - hr_version = { - priority = "very-low", - width = 476, - height = 410, - direction_count = 256, - allow_low_quality_rotation = true, - line_length = 4, - lines_per_file = 4, - shift = util.by_pixel(0.5, -27.5), - scale = 0.5, - dice = 4, - filenames = data.raw["artillery-wagon"]["artillery-wagon"].pictures.layers[1].hr_version.filenames, - tint = { 0.7, 0.7, 0.9 } - } - }, - data.raw["artillery-wagon"]["artillery-wagon"].pictures.layers[2] + rotated = { + layers = { + util.sprite_load("__base__/graphics/entity/artillery-wagon/artillery-wagon-base", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + direction_count = 256, + scale = 0.5, + usage = "train", + tint = { 0.7, 0.7, 0.9 }, + shift = util.by_pixel(0, -27), + } + ), + util.sprite_load("__base__/graphics/entity/artillery-wagon/artillery-wagon-base", + { + dice = 4, + priority = "very-low", + allow_low_quality_rotation = true, + draw_as_shadow = true, + direction_count = 256, + scale = 0.5, + usage = "train", + shift = util.by_pixel(0.5, -27.5), + tint = { 0.7, 0.7, 0.9 } + } + ), + data.raw["artillery-wagon"]["artillery-wagon"].pictures.rotated.layers[2] + } } } }, diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 64afa82..6405533 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -9,7 +9,7 @@ local invisible = { local turbine_graphics = { [false] = { layers = { { - filename = "__base__/graphics/entity/steam-turbine/hr-steam-turbine-H.png", + filename = "__base__/graphics/entity/steam-turbine/steam-turbine-H.png", width = 320, height = 245, frame_count = 1, @@ -24,7 +24,7 @@ local turbine_graphics = { shift = util.by_pixel(0, -2.75), scale = 0.5 }, { - filename = "__base__/graphics/entity/steam-turbine/hr-steam-turbine-H-shadow.png", + filename = "__base__/graphics/entity/steam-turbine/steam-turbine-H-shadow.png", width = 435, height = 150, frame_count = 1, @@ -36,7 +36,7 @@ local turbine_graphics = { }}, [true] = { layers = { { - filename = "__base__/graphics/entity/steam-turbine/hr-steam-turbine-V.png", + filename = "__base__/graphics/entity/steam-turbine/steam-turbine-V.png", width = 217, height = 347, frame_count = 1, @@ -51,7 +51,7 @@ local turbine_graphics = { shift = util.by_pixel(4.75, 6.75), scale = 0.5 }, { - filename = "__base__/graphics/entity/steam-turbine/hr-steam-turbine-V-shadow.png", + filename = "__base__/graphics/entity/steam-turbine/steam-turbine-V-shadow.png", width = 302, height = 260, frame_count = 1, @@ -103,9 +103,9 @@ local function finish_furnace(furnace, generator, overlay, local midfix = openness .. "-" .. priority local suffix = midfix .. "-" .. tier furnace.name = "nullius-turbine-" .. suffix - furnace.localised_name = {"", {"entity-name.nullius-turbine-" .. midfix}, " ", tier} + furnace.localised_name = {"", {"entity-name.nullius-turbine-" .. midfix}, " ", tostring(tier)} furnace.localised_description = {"entity-description.nullius-turbine-info", - power, (generator.effectivity * 100), + tostring(power), tostring(generator.effectivity * 100), {"entity-description.nullius-turbine-entity", {"entity-description.nullius-turbine-" .. openness}, {"entity-description.nullius-turbine-" .. priority}}} @@ -137,10 +137,10 @@ local function turbine_variants(tier, furnacecb, generatorob, furnaceob.placeable_by.item = "nullius-turbine-open-" .. tier furnaceob.crafting_categories = {"turbine-open"} furnaceob.fluid_boxes[3] = nil - furnaceob.fluid_boxes[1].height = (furnacecb.fluid_boxes[1].height * 2) + furnaceob.fluid_boxes[1].volume = 500 furnaceob.fluid_boxes[1].pipe_connections = { - { type = "input-output", position = {0, 3} }, - { type = "input-output", position = {0, -3} } + { flow_direction = "input-output", position = {0, 2}, direction = defines.direction.south }, + { flow_direction = "input-output", position = {0, -2}, direction = defines.direction.north } } local furnacecs = util.table.deepcopy(furnacecb) @@ -201,7 +201,7 @@ local furnace1cb = { fast_replaceable_group = "nullius-turbine", selection_box = {{-1.4, -2.4}, {1.4, 2.4}}, collision_box = {{-1.25, -2.05}, {1.25, 2.05}}, - drawing_box = {{-1.5, -3}, {1.5, 4}}, + alert_icon_shift = util.by_pixel(0, -12), energy_source = { type = "void" }, energy_usage = "1W", @@ -232,29 +232,23 @@ local furnace1cb = { fluid_boxes = { { production_type = "input", - pipe_connections = {{ type = "input", position = {0, -3} }}, + pipe_connections = {{ flow_direction = "input", position = {0, -2}, direction = defines.direction.north }}, pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -2, - height = 2, + volume = 500, secondary_draw_orders = { north = -1 } }, { - filter = "nullius-energy", + filter = "nullius-energy", production_type = "output", - pipe_connections = {{ type = "output", position = {1, -2.1} }}, - base_area = 2, - base_level = 2, - height = 2, + pipe_connections = {{ flow_direction = "output", position = {1, -1.1}, direction = defines.direction.north }}, + volume = 500, hide_connection_info = true }, { production_type = "output", - pipe_connections = {{ type = "output", position = {0, 3} }}, + pipe_connections = {{ flow_direction = "output", position = {0, 2}, direction = defines.direction.south }}, pipe_covers = pipecoverspictures(), - base_area = 6, - base_level = 5, - height = 4, + volume = 500, secondary_draw_orders = { north = -1 } } } @@ -265,37 +259,26 @@ furnace2cb.minable = {mining_time = 1.2, result = "nullius-turbine-closed-2"} furnace2cb.placeable_by = {item = "nullius-turbine-closed-2", count = 1} furnace2cb.max_health = 400 furnace2cb.crafting_speed = 2.4 -furnace2cb.fluid_boxes[1].base_area = 8 -furnace2cb.fluid_boxes[1].base_level = -4 -furnace2cb.fluid_boxes[1].height = 4 -furnace2cb.fluid_boxes[2].base_area = 4 -furnace2cb.fluid_boxes[2].base_level = 3 -furnace2cb.fluid_boxes[2].height = 3 -furnace2cb.fluid_boxes[3].base_area = 10 -furnace2cb.fluid_boxes[3].base_level = 8 -furnace2cb.fluid_boxes[3].height = 8 +furnace2cb.fluid_boxes[1].volume = 500 +furnace2cb.fluid_boxes[2].volume = 500 +furnace2cb.fluid_boxes[3].volume = 500 local furnace3cb = util.table.deepcopy(furnace1cb) furnace3cb.minable = {mining_time = 1.6, result = "nullius-turbine-closed-3"} furnace3cb.placeable_by = {item = "nullius-turbine-closed-3", count = 1} furnace3cb.max_health = 500 furnace3cb.crafting_speed = 5.4 -furnace3cb.fluid_boxes[1].base_area = 10 -furnace3cb.fluid_boxes[1].base_level = -8 -furnace3cb.fluid_boxes[1].height = 8 -furnace3cb.fluid_boxes[2].base_area = 6 -furnace3cb.fluid_boxes[2].base_level = 5 -furnace3cb.fluid_boxes[2].height = 5 -furnace3cb.fluid_boxes[3].base_area = 15 -furnace3cb.fluid_boxes[3].base_level = 10 -furnace3cb.fluid_boxes[3].height = 15 +furnace3cb.fluid_boxes[1].volume = 500 +furnace3cb.fluid_boxes[2].volume = 500 +furnace3cb.fluid_boxes[3].volume = 500 local generator1ob = { type = "generator", flags = { "placeable-neutral", "player-creation", "not-on-map", "not-blueprintable", "not-deconstructable", - "hidden", "hide-alt-info", "not-upgradable" }, + "hide-alt-info", "not-upgradable" }, + hidden = true, max_power_output = "1MW", effectivity = 0.9, fluid_usage_per_tick = 2, @@ -307,7 +290,7 @@ local generator1ob = { allow_copy_paste = false, selection_box = {{-1.4, -2.4}, {1.4, 2.4}}, collision_box = {{-1.25, -2.05}, {1.25, 2.05}}, - collision_mask = { "not-colliding-with-itself" }, + collision_mask = { layers = {}, not_colliding_with_itself = true}, alert_icon_shift = util.by_pixel(0, -12), energy_source = { type = "electric", usage_priority = "tertiary" }, smoke = data.raw.generator["steam-turbine"].smoke, @@ -319,14 +302,12 @@ local generator1ob = { fluid_box = { filter = "nullius-energy", production_type = "input", - pipe_connections = { - { type = "input-output", position = {-1, -2.1} }, - { type = "input-output", position = {1, 2.1} } - }, - base_area = 1, - base_level = -2, - height = 4, - hide_connection_info = true + pipe_connections = { + { flow_direction = "input-output", position = {-1, -1.1}, direction = defines.direction.north }, + { flow_direction = "input-output", position = {1, 1.1}, direction = defines.direction.south } + }, + volume = 500, + hide_connection_info = true } } @@ -335,18 +316,14 @@ generator2ob.max_power_output = "2.5MW" generator2ob.effectivity = 0.95 generator2ob.fluid_usage_per_tick = 5 generator2ob.maximum_temperature = 1800 -generator2ob.fluid_box.base_area = 1.5 -generator2ob.fluid_box.base_level = -5 -generator2ob.fluid_box.height = 8 +generator2ob.fluid_box.volume = 500 local generator3ob = util.table.deepcopy(generator1ob) generator3ob.max_power_output = "6MW" generator3ob.effectivity = 1 generator3ob.fluid_usage_per_tick = 11 generator3ob.maximum_temperature = 2000 -generator3ob.fluid_box.base_area = 2 -generator3ob.fluid_box.base_level = -11 -generator3ob.fluid_box.height = 16 +generator3ob.fluid_box.volume = 500 local connector = { @@ -355,16 +332,16 @@ local connector = { icons = {{ icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4 }}, flags = { "placeable-neutral", "player-creation", "not-on-map", - "not-blueprintable", "not-deconstructable", "hidden", + "not-blueprintable", "not-deconstructable", "hide-alt-info", "not-upgradable", "placeable-off-grid" }, + hidden = true, selectable_in_game = false, allow_copy_paste = false, selection_box = {{-1.4, -0.3}, {1.4, 0.3}}, collision_box = {{-1.25, -0.05}, {1.25, 0.05}}, - collision_mask = {"not-colliding-with-itself"}, + collision_mask = { layers = {}, not_colliding_with_itself = true}, window_bounding_box = {{0, 0}, {0, 0}}, flow_length_in_ticks = 360, pictures = { @@ -376,13 +353,11 @@ local connector = { }, fluid_box = { filter = "nullius-energy", - base_area = 2, - base_level = 0, - height = 2, - hide_connection_info = true, + volume = 500, + hide_connection_info = true, pipe_connections = { - { position = {1, 0.7} }, - { position = {-1, 0.7} } + { position = {1, 0.04}, direction = defines.direction.east }, + { position = {-1, 0.04}, direction = defines.direction.west } } } } @@ -394,7 +369,7 @@ local vent1 = { flags = connector.flags, collision_box = connector.collision_box, selection_box = connector.selection_box, - collision_mask = { "not-colliding-with-itself" }, + collision_mask = { layers = {}, not_colliding_with_itself = true}, selectable_in_game = false, allow_copy_paste = false, bottleneck_ignore = true, @@ -405,13 +380,11 @@ local vent1 = { crafting_speed = 1, source_inventory_size = 0, fluid_boxes = {{ - filter = "nullius-energy", + filter = "nullius-energy", production_type = "input", - base_area = 3, - base_level = 1, - height = 1, - hide_connection_info = true, - pipe_connections = {{ type="input-output", position = {-1, 0.7} }} + volume = 500, + hide_connection_info = true, + pipe_connections = {{ flow_direction ="input-output", position = {-1, 0.04}, direction = defines.direction.west }} }}, energy_source = {type = "void"}, energy_usage = "1W" @@ -420,13 +393,11 @@ local vent1 = { local vent2 = util.table.deepcopy(vent1) vent2.name = "nullius-turbine-vent-2" vent2.crafting_speed = 2.5 -vent2.fluid_boxes[1].base_area = 4 -vent2.fluid_boxes[1].height = 2 +vent2.fluid_boxes[1].volume = 500 local vent3 = util.table.deepcopy(vent1) vent3.name = "nullius-turbine-vent-3" vent3.crafting_speed = 6 -vent3.fluid_boxes[1].base_area = 5 -vent3.fluid_boxes[1].height = 4 +vent3.fluid_boxes[1].volume = 500 turbine_variants(1, furnace1cb, generator1ob, 1, 0.25, 0.4, 0.6) diff --git a/nullius/prototypes/entity/vehicle.lua b/nullius/prototypes/entity/vehicle.lua index c3ff608..91f24a5 100644 --- a/nullius/prototypes/entity/vehicle.lua +++ b/nullius/prototypes/entity/vehicle.lua @@ -35,12 +35,13 @@ data:extend({ effectivity = 0.6, consumption = "15kW", - burner = { - fuel_category = "vehicle", + energy_source = { + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 1, fuel_inventory_size = 1, burnt_inventory_size = 1, - smoke = data.raw["car"]["car"].smoke + smoke = data.raw["car"]["car"].energy_source.smoke }, light = data.raw["car"]["car"].light, render_layer = "object", @@ -70,9 +71,9 @@ data:extend({ animation_speed = 8, max_advance = 0.2, tint = {0.65, 0.65, 0.5}, - stripes = data.raw["car"]["car"].animation.layers[1].hr_version.stripes + stripes = data.raw["car"]["car"].animation.layers[1].stripes }, - data.raw["car"]["car"].animation.layers[2].hr_version, + data.raw["car"]["car"].animation.layers[2], data.raw["car"]["car"].animation.layers[3] } } @@ -111,12 +112,13 @@ data:extend({ effectivity = 0.8, consumption = "50kW", - burner = { - fuel_category = "vehicle", + energy_source = { + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 1, fuel_inventory_size = 1, burnt_inventory_size = 1, - smoke = data.raw["car"]["car"].smoke + smoke = data.raw["car"]["car"].energy_source.smoke }, light = data.raw["car"]["car"].light, render_layer = "object", @@ -146,9 +148,9 @@ data:extend({ animation_speed = 8, max_advance = 0.2, tint = {0.5, 0.35, 0.35}, - stripes = data.raw["car"]["car"].animation.layers[1].hr_version.stripes + stripes = data.raw["car"]["car"].animation.layers[1].stripes }, - data.raw["car"]["car"].animation.layers[2].hr_version, + data.raw["car"]["car"].animation.layers[2], data.raw["car"]["car"].animation.layers[3] } } @@ -215,9 +217,9 @@ data:extend({ animation_speed = 8, max_advance = 0.2, tint = {0.55, 0.55, 0.7}, - stripes = data.raw["car"]["car"].animation.layers[1].hr_version.stripes + stripes = data.raw["car"]["car"].animation.layers[1].stripes }, - data.raw["car"]["car"].animation.layers[2].hr_version, + data.raw["car"]["car"].animation.layers[2], data.raw["car"]["car"].animation.layers[3] } } @@ -236,7 +238,7 @@ data:extend({ collision_box = {{-0.9, -1.3}, {0.9, 1.3}}, selection_box = {{-0.9, -1.3}, {0.9, 1.3}}, damaged_trigger_effect = data.raw["car"]["tank"].damaged_trigger_effect, - drawing_box = {{-1.8, -1.8}, {1.8, 1.5}}, + immune_to_tree_impacts = true, immune_to_rock_impacts = true, resistances = { @@ -263,12 +265,13 @@ data:extend({ effectivity = 0.8, consumption = "500kW", - burner = { - fuel_category = "vehicle", + energy_source = { + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 1, fuel_inventory_size = 2, burnt_inventory_size = 2, - smoke = data.raw["car"]["tank"].smoke + smoke = data.raw["car"]["tank"].energy_source.smoke }, light = data.raw["car"]["tank"].light, turret_animation = data.raw["car"]["tank"].turret_animation, @@ -300,7 +303,7 @@ data:extend({ collision_box = {{-0.9, -1.3}, {0.9, 1.3}}, selection_box = {{-0.9, -1.3}, {0.9, 1.3}}, damaged_trigger_effect = data.raw["car"]["tank"].damaged_trigger_effect, - drawing_box = {{-1.8, -1.8}, {1.8, 1.5}}, + immune_to_tree_impacts = true, immune_to_rock_impacts = true, resistances = { @@ -327,12 +330,13 @@ data:extend({ effectivity = 1, consumption = "1MW", - burner = { + energy_source = { + type = "burner", fuel_categories = {"nullius-nuclear", "vehicle"}, effectivity = 1, fuel_inventory_size = 1, burnt_inventory_size = 1, - smoke = data.raw["car"]["tank"].smoke + smoke = data.raw["car"]["tank"].energy_source.smoke }, light = data.raw["car"]["tank"].light, turret_animation = data.raw["car"]["tank"].turret_animation, @@ -362,9 +366,9 @@ data:extend({ max_advance = 1, scale = 0.5, tint = {0.45, 0.5, 0.55}, - stripes = data.raw["car"]["tank"].animation.layers[1].hr_version.stripes + stripes = data.raw["car"]["tank"].animation.layers[1].stripes }, - data.raw["car"]["tank"].animation.layers[2].hr_version, + data.raw["car"]["tank"].animation.layers[2], data.raw["car"]["tank"].animation.layers[3] } } @@ -373,20 +377,20 @@ data:extend({ { type = "spider-vehicle", name = "nullius-mecha", - localised_name = {"", {"entity-name.nullius-mecha"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-mecha"}, " ", tostring(1)}, icons = data.raw["item-with-entity-data"]["nullius-mecha"].icons, minable = {mining_time = 1.5, result = "nullius-mecha"}, collision_box = {{-1 * 1, -1 * 1}, {1 * 1, 1 * 1}}, sticker_box = {{-1.5 * 1, -1.5 * 1}, {1.5 * 1, 1.5 * 1}}, selection_box = {{-1 * 1, -1 * 1}, {1 * 1, 1 * 1}}, - drawing_box = {{-3 * 1, -4 * 1}, {3 * 1, 2 * 1}}, + sound_minimum_speed = 0.1, sound_scaling_ratio = 0.6, weight = 5000, braking_force = 1, friction_force = 1, flags = {"placeable-neutral", "player-creation", "placeable-off-grid"}, - collision_mask = {}, + collision_mask = { layers = {}}, max_health = 2000, resistances = { { type = "impact", decrease = 100, percent = 90 }, @@ -426,20 +430,20 @@ data:extend({ { type = "spider-vehicle", name = "nullius-mecha-2", - localised_name = {"", {"entity-name.nullius-mecha"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-mecha"}, " ", tostring(2)}, icons = data.raw["item-with-entity-data"]["nullius-mecha-2"].icons, minable = {mining_time = 2, result = "nullius-mecha-2"}, collision_box = {{-1 * 1, -1 * 1}, {1 * 1, 1 * 1}}, sticker_box = {{-1.5 * 1, -1.5 * 1}, {1.5 * 1, 1.5 * 1}}, selection_box = {{-1 * 1, -1 * 1}, {1 * 1, 1 * 1}}, - drawing_box = {{-3 * 1, -4 * 1}, {3 * 1, 2 * 1}}, + sound_minimum_speed = 0.1, sound_scaling_ratio = 0.6, weight = 5000, braking_force = 1, friction_force = 1, flags = {"placeable-neutral", "player-creation", "placeable-off-grid"}, - collision_mask = {}, + collision_mask = { layers = {}}, max_health = 3000, resistances = { { type = "impact", decrease = 200, percent = 90 }, @@ -481,16 +485,12 @@ data:extend({ name = "nullius-silo", icon = "__base__/graphics/icons/rocket-silo.png", icon_size = 64, - icon_mipmaps = 4, flags = {"placeable-player", "player-creation"}, crafting_categories = {"rocketry"}, rocket_parts_required = 1, crafting_speed = 1, rocket_result_inventory_size = 12, - module_specification = { - module_slots = 4, - module_info_icon_shift = {0, 3.3} - }, + module_slots = 4, fixed_recipe = "nullius-rocket", show_recipe_icon = false, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -515,9 +515,9 @@ data:extend({ drain = "200kW" }, energy_usage = "800kW", - idle_energy_usage = "200KW", - lamp_energy_usage = "200KW", - active_energy_usage = "2600KW", + idle_energy_usage = "200kW", + lamp_energy_usage = "200kW", + active_energy_usage = "2600kW", rocket_entity = "rocket-silo-rocket", times_to_blink = 3, light_blinking_speed = 1 / (3 * 60), @@ -551,6 +551,9 @@ data:extend({ open_sound = data.raw["rocket-silo"]["rocket-silo"].open_sound, close_sound = data.raw["rocket-silo"]["rocket-silo"].close_sound, working_sound = data.raw["rocket-silo"]["rocket-silo"].working_sound, - flying_sound = data.raw["rocket-silo"]["rocket-silo"].flying_sound + flying_sound = data.raw["rocket-silo"]["rocket-silo"].flying_sound, + + rocket_quick_relaunch_start_offset = data.raw["rocket-silo"]["rocket-silo"].rocket_quick_relaunch_start_offset, + cargo_station_parameters = data.raw["rocket-silo"]["rocket-silo"].cargo_station_parameters } }) diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index b6df86a..8dda86f 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -4,7 +4,7 @@ data:extend({ { type = "furnace", name = "nullius-chimney-1", - icons = data.raw.item["nullius-chimney-1"].icons, + icons = data.raw.item["nullius-chimney-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.6, result = "nullius-chimney-1"}, max_health = 100, @@ -25,144 +25,136 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = 0.2, - pipe_connections = {{ type="input-output", position = {0.5, 1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input-output", position = {0.5, 0.5}, direction = defines.direction.south }} } }, energy_source = {type = "void"}, energy_usage = "1kW", - - animation = { - north = { - layers = { - { - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack.png", - priority = "extra-high", - frame_count = 1, - width = 142, - height = 429, - shift = {0.06, -1.62}, - scale = 0.5 * 0.85 - }, - { - draw_as_shadow = true, - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack-shadow.png", - priority = "extra-high", - width = 382, - height = 135, - frame_count = 1, - shift = {1.68, 0.37}, - scale = 0.5 * 0.85 + + graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + frame_count = 1, + width = 142, + height = 429, + shift = {0.06, -1.62}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + frame_count = 1, + shift = {1.68, 0.37}, + scale = 0.5 * 0.85 + } } - } - }, - east = { - layers = { - { - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack.png", - priority = "extra-high", - width = 142, - height = 429, - x = 142, - frame_count = 1, - shift = {-0.1, -1.67}, - scale = 0.5 * 0.85 - }, - { - draw_as_shadow = true, - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack-shadow.png", - priority = "extra-high", - width = 382, - height = 135, - x = 382, - frame_count = 1, - shift = {1.52, 0.32}, - scale = 0.5 * 0.85 + }, + east = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + width = 142, + height = 429, + x = 142, + frame_count = 1, + shift = {-0.1, -1.67}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 382, + frame_count = 1, + shift = {1.52, 0.32}, + scale = 0.5 * 0.85 + } } - } - }, - south = { - layers = { - { - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack.png", - priority = "extra-high", - width = 142, - height = 429, - x = 284, - frame_count = 1, - shift = {-0.06, -1.83}, - scale = 0.5 * 0.85 - }, - { - draw_as_shadow = true, - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack-shadow.png", - priority = "extra-high", - width = 382, - height = 135, - x = 764, - frame_count = 1, - shift = {1.56, 0.16}, - scale = 0.5 * 0.85 + }, + south = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + width = 142, + height = 429, + x = 284, + frame_count = 1, + shift = {-0.06, -1.83}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 764, + frame_count = 1, + shift = {1.56, 0.16}, + scale = 0.5 * 0.85 + } + } + }, + west = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + width = 142, + height = 429, + x = 426, + frame_count = 1, + shift = {0.1, -1.78}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 1146, + frame_count = 1, + shift = {1.72, 0.21}, + scale = 0.5 * 0.85 + } } } }, - west = { - layers = { - { - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack.png", - priority = "extra-high", - width = 142, - height = 429, - x = 426, - frame_count = 1, - shift = {0.1, -1.78}, - scale = 0.5 * 0.85 + + working_visualisations = { + { + apply_recipe_tint = "primary", + constant_speed = true, + render_layer = "wires", + north_position = {-0.09, -5.45}, + east_position = {-0.29, -5.59}, + south_position = {-0.1, -5.8}, + west_position = {0.09, -5.61}, + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", + frame_count = 47, + line_length = 16, + width = 90, + height = 188, + scale = 0.6, + animation_speed = 0.25 }, - { - draw_as_shadow = true, - filename = "__angelspetrochem__/graphics/entity/flare-stack/hr-flare-stack-shadow.png", - priority = "extra-high", - width = 382, - height = 135, - x = 1146, - frame_count = 1, - shift = {1.72, 0.21}, - scale = 0.5 * 0.85 - } } } }, - - working_visualisations = { - { - apply_recipe_tint = "primary", - constant_speed = true, - render_layer = "wires", - north_position = {-0.09, -5.45}, - east_position = {-0.29, -5.59}, - south_position = {-0.1, -5.8}, - west_position = {0.09, -5.61}, - animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 46, - height = 94, - scale = 1.2, - animation_speed = 0.25, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 90, - height = 188, - scale = 0.6, - animation_speed = 0.25 - } - }, - } - }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, @@ -191,38 +183,30 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -1, - height = 6, - pipe_connections = {{ type="input-output", position = {0.5, 1.5} }} + volume = 500, + pipe_connections = {{ flow_direction ="input-output", position = {0.5, 0.5}, direction = defines.direction.south }} }, }, energy_source = {type = "void"}, energy_usage = "1kW", - animation = data.raw["furnace"]["angels-flare-stack"].animation, - working_visualisations = { - { - apply_recipe_tint = "primary", - constant_speed = true, - render_layer = "wires", - north_position = {-0.22, -6.82}, - east_position = {-0.22, -6.95}, - south_position = {-0.03, -6.95}, - west_position = {-0.03, -6.82}, - animation = { - filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 46, - height = 94, - scale = 1.6, - hr_version = { - filename = BASEENTITY .. "chemical-plant/hr-chemical-plant-smoke-outer.png", - frame_count = 47, - line_length = 16, - width = 90, - height = 188, - scale = 0.8 + graphics_set = { + animation = data.raw["furnace"]["angels-flare-stack"].graphics_set.animation, + working_visualisations = { + { + apply_recipe_tint = "primary", + constant_speed = true, + render_layer = "wires", + north_position = {-0.22, -6.82}, + east_position = {-0.22, -6.95}, + south_position = {-0.03, -6.95}, + west_position = {-0.03, -6.82}, + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", + frame_count = 47, + line_length = 16, + width = 90, + height = 188, + scale = 0.8 } } } @@ -236,27 +220,27 @@ data:extend({ local nmc1 = util.table.deepcopy(data.raw.furnace["nullius-chimney-1"]) nmc1.name = "nullius-mirror-chimney-1" -nmc1.icons[3] = { icon = "__nullius__/graphics/icons/flip1.png", icon_size = 64 } +table.insert(nmc1.icons,{ icon = "__nullius__/graphics/icons/flip1.png", icon_size = 64 }) nmc1.placeable_by = {item = "nullius-chimney-1", count = 1} nmc1.next_upgrade = "nullius-mirror-chimney-2" nmc1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-chimney-1"}} -nmc1.fluid_boxes[1].pipe_connections[1].position = {-0.5, 1.5} -nmc1.animation.north = util.table.deepcopy(nmc1.animation.south) -nmc1.animation.north.layers[1].shift = {-0.06, -1.57} -nmc1.animation.north.layers[2].shift = {1.56, 0.42} -nmc1.animation.east = util.table.deepcopy(nmc1.animation.south) -nmc1.animation.east.layers[1].shift = {-0.2, -1.88} -nmc1.animation.east.layers[2].shift = {1.42, 0.11} -nmc1.animation.west = util.table.deepcopy(nmc1.animation.south) -nmc1.animation.west.layers[1].shift = {0.2, -1.63} -nmc1.animation.west.layers[2].shift = {1.82, 0.36} -nmc1.animation.south.layers[1].shift = {0.09, -1.98} -nmc1.animation.south.layers[2].shift = {1.71, 0.01} -nmc1.working_visualisations[1].north_position = {-0.1, -5.54} -nmc1.working_visualisations[1].east_position = {-0.24, -5.85} -nmc1.working_visualisations[1].south_position = {0.05, -5.95} -nmc1.working_visualisations[1].west_position = {0.16, -5.6} +nmc1.fluid_boxes[1].pipe_connections[1].position = {-0.5, 0.5} +nmc1.graphics_set.animation.north = util.table.deepcopy(nmc1.graphics_set.animation.south) +nmc1.graphics_set.animation.north.layers[1].shift = {-0.06, -1.57} +nmc1.graphics_set.animation.north.layers[2].shift = {1.56, 0.42} +nmc1.graphics_set.animation.east = util.table.deepcopy(nmc1.graphics_set.animation.south) +nmc1.graphics_set.animation.east.layers[1].shift = {-0.2, -1.88} +nmc1.graphics_set.animation.east.layers[2].shift = {1.42, 0.11} +nmc1.graphics_set.animation.west = util.table.deepcopy(nmc1.graphics_set.animation.south) +nmc1.graphics_set.animation.west.layers[1].shift = {0.2, -1.63} +nmc1.graphics_set.animation.west.layers[2].shift = {1.82, 0.36} +nmc1.graphics_set.animation.south.layers[1].shift = {0.09, -1.98} +nmc1.graphics_set.animation.south.layers[2].shift = {1.71, 0.01} +nmc1.graphics_set.working_visualisations[1].north_position = {-0.1, -5.54} +nmc1.graphics_set.working_visualisations[1].east_position = {-0.24, -5.85} +nmc1.graphics_set.working_visualisations[1].south_position = {0.05, -5.95} +nmc1.graphics_set.working_visualisations[1].west_position = {0.16, -5.6} local nmc2 = util.table.deepcopy(data.raw.furnace["nullius-chimney-2"]) nmc2.name = "nullius-mirror-chimney-2" @@ -264,11 +248,11 @@ nmc2.icons[2] = nmc1.icons[3] nmc2.placeable_by = {item = "nullius-chimney-2", count = 1} nmc2.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-chimney-2"}} -nmc2.fluid_boxes[1].pipe_connections[1].position = {-0.5, 1.5} -nmc2.animation = nmc2.animation.south -nmc2.working_visualisations[1].north_position = nmc2.working_visualisations[1].south_position -nmc2.working_visualisations[1].east_position = nmc2.working_visualisations[1].south_position -nmc2.working_visualisations[1].west_position = nmc2.working_visualisations[1].south_position +nmc2.fluid_boxes[1].pipe_connections[1].position = {-0.5, 0.5} +nmc2.graphics_set.animation = nmc2.graphics_set.animation.south +nmc2.graphics_set.working_visualisations[1].north_position = nmc2.graphics_set.working_visualisations[1].south_position +nmc2.graphics_set.working_visualisations[1].east_position = nmc2.graphics_set.working_visualisations[1].south_position +nmc2.graphics_set.working_visualisations[1].west_position = nmc2.graphics_set.working_visualisations[1].south_position local nc3 = util.table.deepcopy(data.raw.furnace["nullius-chimney-2"]) nc3.name = "nullius-chimney-3" @@ -282,10 +266,8 @@ nc3.crafting_speed = 20 nc3.fluid_boxes = {{ production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -5, - height = 15, - pipe_connections = {{ type="input-output", position = {0, 2} }} + volume = 500, + pipe_connections = {{ flow_direction ="input-output", position = {0, 1}, direction = defines.direction.south }} }} nc3.energy_source = { type = "electric", @@ -294,13 +276,13 @@ nc3.energy_source = { drain = "5kW" } nc3.energy_usage = "295kW" -nc3.module_specification = { module_slots = 1 } +nc3.module_slots = 1 nc3.allowed_effects = {"speed", "consumption", "pollution"} -nc3.animation = scale_image(nc3.animation.south, 1.5) -nc3.working_visualisations[1] = scale_image(nc3.working_visualisations[1], 1.5) -nc3.working_visualisations[1].north_position = nc3.working_visualisations[1].south_position -nc3.working_visualisations[1].east_position = nc3.working_visualisations[1].south_position -nc3.working_visualisations[1].west_position = nc3.working_visualisations[1].south_position +nc3.graphics_set.animation = scale_image(nc3.graphics_set.animation.south, 1.5) +nc3.graphics_set.working_visualisations[1] = scale_image(nc3.graphics_set.working_visualisations[1], 1.5) +nc3.graphics_set.working_visualisations[1].north_position = nc3.graphics_set.working_visualisations[1].south_position +nc3.graphics_set.working_visualisations[1].east_position = nc3.graphics_set.working_visualisations[1].south_position +nc3.graphics_set.working_visualisations[1].west_position = nc3.graphics_set.working_visualisations[1].south_position data:extend({ nmc1, @@ -309,8 +291,8 @@ data:extend({ { type = "furnace", name = "nullius-outfall-1", - icons = data.raw.item["nullius-outfall-1"].icons, - collision_mask = {"object-layer", "ground-tile"}, + icons = data.raw.item["nullius-outfall-1"].icons, + collision_mask = {layers = {object = true, ground_tile = true}}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.5, result = "nullius-outfall-1"}, max_health = 200, @@ -331,52 +313,53 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = 0.2, - pipe_connections = {{ type="input-output", position = {0, 1} }} + volume = 500, + pipe_connections = {{ flow_direction ="input-output", position = {0, 0}, direction = defines.direction.south }} }, }, energy_source = {type = "void"}, energy_usage = "1kW", - animation = { - north = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {-0.02, -0.8}, - width = 160, - height = 160, - frame_count = 1, - scale = 0.85 - }, - east = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {0.8, -0.05}, - x = 160, - width = 160, - height = 160, - frame_count = 1, - scale = 0.85 - }, - south = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {0, 0.85}, - x = 320, - width = 160, - height = 160, - frame_count = 1, - scale = 0.85 - }, - west = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {-0.75, 0}, - x = 480, - width = 160, - height = 160, - frame_count = 1, - scale = 0.85 + graphics_set = { + animation = { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {-0.02, -0.8}, + width = 160, + height = 160, + frame_count = 1, + scale = 0.85 + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {0.8, -0.05}, + x = 160, + width = 160, + height = 160, + frame_count = 1, + scale = 0.85 + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {0, 0.85}, + x = 320, + width = 160, + height = 160, + frame_count = 1, + scale = 0.85 + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {-0.75, 0}, + x = 480, + width = 160, + height = 160, + frame_count = 1, + scale = 0.85 + } } }, placeable_position_visualization = data.raw["offshore-pump"]["seafloor-pump"].placeable_position_visualization, @@ -389,7 +372,7 @@ data:extend({ type = "furnace", name = "nullius-outfall-2", icons = data.raw.item["nullius-outfall-2"].icons, - collision_mask = {"object-layer", "ground-tile"}, + collision_mask = {layers = {object = true, ground_tile = true}}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-outfall-2"}, max_health = 300, @@ -410,49 +393,49 @@ data:extend({ { production_type = "input", pipe_covers = pipecoverspictures(), - base_area = 5, - base_level = -1, - height = 6, - pipe_connections = {{ type="input-output", position = {0, 1} }} + volume = 500, + pipe_connections = {{ flow_direction ="input-output", position = {0, 0}, direction = defines.direction.south }} }, }, energy_source = {type = "void"}, energy_usage = "1kW", - animation = { - north = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {0, -1}, - width = 160, - height = 160, - frame_count = 1 - }, - east = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {1, 0}, - x = 160, - width = 160, - height = 160, - frame_count = 1 - }, - south = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {0, 1}, - x = 320, - width = 160, - height = 160, - frame_count = 1 - }, - west = { - filename = "__angelsrefining__/graphics/entity/seafloor-pump/seafloor-pump.png", - priority = "high", - shift = {-1, 0}, - x = 480, - width = 160, - height = 160, - frame_count = 1 + graphics_set = { + animation = { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {0, -1}, + width = 160, + height = 160, + frame_count = 1 + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {1, 0}, + x = 160, + width = 160, + height = 160, + frame_count = 1 + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {0, 1}, + x = 320, + width = 160, + height = 160, + frame_count = 1 + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/seafloor-pump/seafloor-pump.png", + priority = "high", + shift = {-1, 0}, + x = 480, + width = 160, + height = 160, + frame_count = 1 + } } }, placeable_position_visualization = data.raw["offshore-pump"]["seafloor-pump"].placeable_position_visualization, @@ -477,16 +460,13 @@ no3.energy_source = { drain = "5kW" } no3.energy_usage = "195kW" -no3.module_specification = { - module_slots = 1, - module_info_icon_shift = {0, 0} -} +no3.module_slots = 1 no3.allowed_effects = {"speed", "consumption", "pollution"} no3.next_upgrade = nil -no3.animation.north.filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png" -no3.animation.east.filename = no3.animation.north.filename -no3.animation.south.filename = no3.animation.north.filename -no3.animation.west.filename = no3.animation.north.filename +no3.graphics_set.animation.north.filename = "__angelsrefininggraphics__/graphics/entity/sea-pump/sea-pump.png" +no3.graphics_set.animation.east.filename = no3.graphics_set.animation.north.filename +no3.graphics_set.animation.south.filename = no3.graphics_set.animation.north.filename +no3.graphics_set.animation.west.filename = no3.graphics_set.animation.north.filename data:extend({ no3 }) diff --git a/nullius/prototypes/entity/wind.lua b/nullius/prototypes/entity/wind.lua index 5c5f358..8785042 100644 --- a/nullius/prototypes/entity/wind.lua +++ b/nullius/prototypes/entity/wind.lua @@ -8,6 +8,8 @@ local TURBINEP = ENTITYPATH .. "windturbine/" -- no longer expected to be updated for 1.1+ compatibility, after Nullius was designed -- to rely on it, so the graphics are replicated here. +data:extend({{ type = "collision-layer", name = "layer_43" }}) + for i=0,7 do for j=1,3 do local k = i + 1 @@ -16,15 +18,6 @@ for i=0,7 do { type = "animation", name = "nullius-wind-shadow-"..j.."-"..i, - filename = TURBINEP .. "lds/angle"..k..".png", - width = 400, - height = 200, - frame_count = 24, - line_length = 5, - shift = {3.5*scale, -2.6*scale}, - scale = 4*scale, - draw_as_shadow = true, - hr_version = { filename = TURBINEP .. "hds/angle"..k..".png", width = 800, height = 400, @@ -33,19 +26,10 @@ for i=0,7 do shift = {3.5*scale,-2.6*scale}, scale = 2*scale, draw_as_shadow = true, - } }, { type = "animation", name = "nullius-wind-blade-"..j.."-"..i, - filename = TURBINEP .. "ld"..j.."/angle"..k..".png", - width = 300, - height = 400, - frame_count = 24, - line_length = 6, - shift = {0.15*scale, -1*scale}, - scale = 2*scale, - hr_version = { filename = TURBINEP .. "hd"..j.."/angle"..k..".png", width = 600, height = 800, @@ -53,7 +37,6 @@ for i=0,7 do line_length = 6, scale = scale, shift = {0.15*scale, -1*scale} - } } }) end @@ -70,7 +53,8 @@ for i=1,3 do type = "electric-energy-interface", name = "nullius-wind-build-"..i, icons = data.raw.item["nullius-wind-turbine-"..i].icons, - flags = {"placeable-neutral", "player-creation", "hidden", "not-upgradable", "not-deconstructable"}, + flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable"}, + hidden = true, minable = {mining_time = (i + 1), result = "nullius-wind-turbine-"..i}, max_health = 800*scale, corpse = "medium-remnants", @@ -79,7 +63,7 @@ for i=1,3 do }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.4, -1.4}, {1.4, 1.4}}, - collision_mask = {"layer-43", "item-layer", "object-layer", "player-layer", "water-tile"}, + collision_mask = { layers = {layer_43 = true, item = true, object = true, player = true, water_tile = true}}, energy_source = { type = "electric", usage_priority = "primary-output", @@ -94,15 +78,6 @@ for i=1,3 do animations = { layers = { { - filename = TURBINEP .. "ld"..i.."/build.png", - width = 300, - height = 400, - frame_count = 1, - line_length = 1, - shift = {0.15*scale, -11*scale}, - animation_speed = 0.2, - scale = 2*scale, - hr_version = { filename = TURBINEP .. "hd"..i.."/build.png", width = 600, height = 800, @@ -111,19 +86,8 @@ for i=1,3 do scale = scale, shift = {0.15*scale, -11*scale}, animation_speed = 0.2 - } }, { - filename = TURBINEP .. "lds/build.png", - width = 400, - height = 200, - frame_count = 1, - line_length = 1, - shift = {9.5*scale,-3.6*scale}, - animation_speed = 0.2, - draw_as_shadow = true, - scale = 4*scale, - hr_version = { filename = TURBINEP .. "hds/build.png", width = 800, height = 400, @@ -133,7 +97,6 @@ for i=1,3 do shift = {9.5*scale,-3.6*scale}, animation_speed = 0.2, draw_as_shadow = true - } } } }, @@ -161,7 +124,7 @@ for i=1,3 do }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.4, -1.4}, {1.4, 1.4}}, - collision_mask = {"layer-43", "item-layer", "object-layer", "player-layer", "water-tile"}, + collision_mask = { layers = {layer_43 = true, item = true, object = true, player = true, water_tile = true}}, energy_source = { type = "electric", usage_priority = "primary-output", @@ -174,15 +137,6 @@ for i=1,3 do energy_usage = "0kW", fast_replaceable_group = "wind-turbine", picture = { - filename = TURBINEP .. "ld"..i.."/base.png", - width = 300, - height = 400, - frame_count = 1, - line_length = 1, - shift = {0.15*scale, -11*scale}, - animation_speed = 0.2, - scale = 2*scale, - hr_version = { filename = TURBINEP .. "hd"..i.."/base.png", width = 600, height = 800, @@ -191,7 +145,6 @@ for i=1,3 do shift = {0.15*scale, -11*scale}, scale = scale, animation_speed = 0.2 - } }, working_sound = { sound = { @@ -208,13 +161,13 @@ data:extend({ { type = "simple-entity-with-force", name = "nullius-wind-collision", - render_layer = "object", + --render_layer = "object", icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, order = "bb", flags = {"placeable-neutral", "player-creation", "not-on-map"}, collision_box = {{-30.5, -30.5}, {30.5, 30.5}}, - collision_mask = {"layer-43"}, + collision_mask = { layers = {layer_43 = true}}, selection_box = {{-0.9, -0.9}, {0.9, 0.9}}, selectable_in_game = false, render_layer = "wires-above", @@ -233,9 +186,10 @@ data:extend({ icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, order = "bc", - flags = {"placeable-neutral", "player-creation", "not-on-map", "hidden"}, + flags = {"placeable-neutral", "player-creation", "not-on-map"}, + hidden = true, collision_box = {{-16, -13.5}, {16, 13.5}}, - collision_mask = {"layer-43"}, + collision_mask = { layers = {layer_43 = true}}, render_layer = "wires-above", selectable_in_game = false, random_animation_offset = false, @@ -253,9 +207,10 @@ data:extend({ icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, order = "bd", - flags = {"placeable-neutral", "player-creation", "not-on-map", "hidden"}, + flags = {"placeable-neutral", "player-creation", "not-on-map"}, + hidden = true, collision_box = {{-13.5, -16}, {13.5, 16}}, - collision_mask = {"layer-43"}, + collision_mask = { layers = {layer_43 = true}}, render_layer = "wires-above", selectable_in_game = false, random_animation_offset = false, From 795ae4cf7c4b375136b9aa53ce03e4eee648a64d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 25 Jul 2025 14:23:30 +0200 Subject: [PATCH 002/236] Added missing graphics and renamed some for consistency --- ... crash-site-assembling-machine-1-ground.png} | Bin ...te-assembling-machine-1-repaired-shadow.png} | Bin ...rash-site-assembling-machine-1-repaired.png} | Bin ... crash-site-assembling-machine-2-ground.png} | Bin ...te-assembling-machine-2-repaired-shadow.png} | Bin ...rash-site-assembling-machine-2-repaired.png} | Bin ...ound.png => crash-site-generator-ground.png} | Bin ...adow.png => crash-site-generator-shadow.png} | Bin ...e-generator.png => crash-site-generator.png} | Bin ...lab-ground.png => crash-site-lab-ground.png} | Bin ...w.png => crash-site-lab-repaired-shadow.png} | Bin ...repaired.png => crash-site-lab-repaired.png} | Bin .../entity/poles/{hr-pole1.png => pole1.png} | Bin .../entity/poles/{hr-pole2.png => pole2.png} | Bin .../entity/poles/{hr-pole3.png => pole3.png} | Bin ...decolorized.png => pumpjack-decolorized.png} | Bin nullius/graphics/technology/rail-signals.png | Bin 0 -> 77319 bytes .../graphics/technology/rocket-control-unit.png | Bin 0 -> 95698 bytes 18 files changed, 0 insertions(+), 0 deletions(-) rename nullius/graphics/entity/crash/{hr-crash-site-assembling-machine-1-ground.png => crash-site-assembling-machine-1-ground.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-assembling-machine-1-repaired-shadow.png => crash-site-assembling-machine-1-repaired-shadow.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-assembling-machine-1-repaired.png => crash-site-assembling-machine-1-repaired.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-assembling-machine-2-ground.png => crash-site-assembling-machine-2-ground.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-assembling-machine-2-repaired-shadow.png => crash-site-assembling-machine-2-repaired-shadow.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-assembling-machine-2-repaired.png => crash-site-assembling-machine-2-repaired.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-generator-ground.png => crash-site-generator-ground.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-generator-shadow.png => crash-site-generator-shadow.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-generator.png => crash-site-generator.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-lab-ground.png => crash-site-lab-ground.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-lab-repaired-shadow.png => crash-site-lab-repaired-shadow.png} (100%) rename nullius/graphics/entity/crash/{hr-crash-site-lab-repaired.png => crash-site-lab-repaired.png} (100%) rename nullius/graphics/entity/poles/{hr-pole1.png => pole1.png} (100%) rename nullius/graphics/entity/poles/{hr-pole2.png => pole2.png} (100%) rename nullius/graphics/entity/poles/{hr-pole3.png => pole3.png} (100%) rename nullius/graphics/entity/wells/{hr-pumpjack-decolorized.png => pumpjack-decolorized.png} (100%) create mode 100644 nullius/graphics/technology/rail-signals.png create mode 100644 nullius/graphics/technology/rocket-control-unit.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-assembling-machine-1-ground.png b/nullius/graphics/entity/crash/crash-site-assembling-machine-1-ground.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-assembling-machine-1-ground.png rename to nullius/graphics/entity/crash/crash-site-assembling-machine-1-ground.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-assembling-machine-1-repaired-shadow.png b/nullius/graphics/entity/crash/crash-site-assembling-machine-1-repaired-shadow.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-assembling-machine-1-repaired-shadow.png rename to nullius/graphics/entity/crash/crash-site-assembling-machine-1-repaired-shadow.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-assembling-machine-1-repaired.png b/nullius/graphics/entity/crash/crash-site-assembling-machine-1-repaired.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-assembling-machine-1-repaired.png rename to nullius/graphics/entity/crash/crash-site-assembling-machine-1-repaired.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-assembling-machine-2-ground.png b/nullius/graphics/entity/crash/crash-site-assembling-machine-2-ground.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-assembling-machine-2-ground.png rename to nullius/graphics/entity/crash/crash-site-assembling-machine-2-ground.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-assembling-machine-2-repaired-shadow.png b/nullius/graphics/entity/crash/crash-site-assembling-machine-2-repaired-shadow.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-assembling-machine-2-repaired-shadow.png rename to nullius/graphics/entity/crash/crash-site-assembling-machine-2-repaired-shadow.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-assembling-machine-2-repaired.png b/nullius/graphics/entity/crash/crash-site-assembling-machine-2-repaired.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-assembling-machine-2-repaired.png rename to nullius/graphics/entity/crash/crash-site-assembling-machine-2-repaired.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-generator-ground.png b/nullius/graphics/entity/crash/crash-site-generator-ground.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-generator-ground.png rename to nullius/graphics/entity/crash/crash-site-generator-ground.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-generator-shadow.png b/nullius/graphics/entity/crash/crash-site-generator-shadow.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-generator-shadow.png rename to nullius/graphics/entity/crash/crash-site-generator-shadow.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-generator.png b/nullius/graphics/entity/crash/crash-site-generator.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-generator.png rename to nullius/graphics/entity/crash/crash-site-generator.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-lab-ground.png b/nullius/graphics/entity/crash/crash-site-lab-ground.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-lab-ground.png rename to nullius/graphics/entity/crash/crash-site-lab-ground.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-lab-repaired-shadow.png b/nullius/graphics/entity/crash/crash-site-lab-repaired-shadow.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-lab-repaired-shadow.png rename to nullius/graphics/entity/crash/crash-site-lab-repaired-shadow.png diff --git a/nullius/graphics/entity/crash/hr-crash-site-lab-repaired.png b/nullius/graphics/entity/crash/crash-site-lab-repaired.png similarity index 100% rename from nullius/graphics/entity/crash/hr-crash-site-lab-repaired.png rename to nullius/graphics/entity/crash/crash-site-lab-repaired.png diff --git a/nullius/graphics/entity/poles/hr-pole1.png b/nullius/graphics/entity/poles/pole1.png similarity index 100% rename from nullius/graphics/entity/poles/hr-pole1.png rename to nullius/graphics/entity/poles/pole1.png diff --git a/nullius/graphics/entity/poles/hr-pole2.png b/nullius/graphics/entity/poles/pole2.png similarity index 100% rename from nullius/graphics/entity/poles/hr-pole2.png rename to nullius/graphics/entity/poles/pole2.png diff --git a/nullius/graphics/entity/poles/hr-pole3.png b/nullius/graphics/entity/poles/pole3.png similarity index 100% rename from nullius/graphics/entity/poles/hr-pole3.png rename to nullius/graphics/entity/poles/pole3.png diff --git a/nullius/graphics/entity/wells/hr-pumpjack-decolorized.png b/nullius/graphics/entity/wells/pumpjack-decolorized.png similarity index 100% rename from nullius/graphics/entity/wells/hr-pumpjack-decolorized.png rename to nullius/graphics/entity/wells/pumpjack-decolorized.png diff --git a/nullius/graphics/technology/rail-signals.png b/nullius/graphics/technology/rail-signals.png new file mode 100644 index 0000000000000000000000000000000000000000..89aabcb6f3517f93d57add5ad78df1bad5a1ad1e GIT binary patch literal 77319 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 T(72)Wza>dgIgu(My@3A%q?)&i literal 0 HcmV?d00001 diff --git a/nullius/graphics/technology/rocket-control-unit.png b/nullius/graphics/technology/rocket-control-unit.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0cf9f7b04d0ee22a968ab816602967a16f803c GIT binary patch literal 95698 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

io#gArM&8_wBA^sUwHwgO6VU5zIk8~ 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 Date: Fri, 25 Jul 2025 14:24:05 +0200 Subject: [PATCH 003/236] Updated scripts --- nullius/scripts/alignment.lua | 140 ++++++++++++++++----------------- nullius/scripts/beacon.lua | 30 +++---- nullius/scripts/body.lua | 96 +++++++++++----------- nullius/scripts/build.lua | 8 +- nullius/scripts/checkpoint.lua | 70 ++++++++--------- nullius/scripts/drone.lua | 72 ++++++++--------- nullius/scripts/equipment.lua | 118 ++++++++++++--------------- nullius/scripts/geothermal.lua | 33 ++++---- nullius/scripts/landfill.lua | 33 ++++---- nullius/scripts/landing.lua | 2 +- nullius/scripts/migrate.lua | 39 ++++++--- nullius/scripts/mirror.lua | 18 ++--- nullius/scripts/mission.lua | 126 ++++++++++++++--------------- nullius/scripts/solar.lua | 16 ++-- nullius/scripts/startup.lua | 41 +++++----- nullius/scripts/turbine.lua | 28 +++---- nullius/scripts/wind.lua | 87 ++++++++++---------- 17 files changed, 482 insertions(+), 475 deletions(-) diff --git a/nullius/scripts/alignment.lua b/nullius/scripts/alignment.lua index 946a0cd..95d09a5 100644 --- a/nullius/scripts/alignment.lua +++ b/nullius/scripts/alignment.lua @@ -17,18 +17,18 @@ local ALIGN_ABSORB_UNSHARE = 15 local function lookup_force(force) if ((force == nil) or (not force.valid)) then return nil end - return global.nullius_align_factions[force.name] + return storage.nullius_align_factions[force.name] end local function init_faction(force, name) local entry = { name = name, has_transmitter = false, tags = { }} - global.nullius_align_factions[force.name] = entry + storage.nullius_align_factions[force.name] = entry init_broken() end local function create_faction(player) local name = "faction-" .. player.name - local faction = global.nullius_align_factions[name] + local faction = storage.nullius_align_factions[name] if (faction ~= nil) then return faction end faction = game.create_force(name) if ((faction == nil) or (not faction.valid)) then @@ -40,26 +40,26 @@ end function init_alignment() - if (global.nullius_alignment == nil) then - global.nullius_alignment = (game.is_multiplayer() and + if (storage.nullius_alignment == nil) then + storage.nullius_alignment = (game.is_multiplayer() and settings.startup["nullius-alignment"].value) end - if (not global.nullius_alignment) then - global.nullius_align_factions = nil - global.nullius_align_queue_head = nil - global.nullius_align_queue_tail = nil - global.nullius_align_lobby = nil - global.nullius_align_invite_status = nil - global.nullius_align_satellite_winner = nil - elseif (global.nullius_align_factions == nil) then - global.nullius_align_factions = { } - global.nullius_align_invite_status = { } - global.nullius_align_landing_distance = 32 - global.nullius_align_landing_sites = { } - global.nullius_align_landing_sites[1] = {x = 0, y = 0} - global.nullius_align_landing_count = 1 - global.nullius_align_satellite_winner = nil + if (not storage.nullius_alignment) then + storage.nullius_align_factions = nil + storage.nullius_align_queue_head = nil + storage.nullius_align_queue_tail = nil + storage.nullius_align_lobby = nil + storage.nullius_align_invite_status = nil + storage.nullius_align_satellite_winner = nil + elseif (storage.nullius_align_factions == nil) then + storage.nullius_align_factions = { } + storage.nullius_align_invite_status = { } + storage.nullius_align_landing_distance = 32 + storage.nullius_align_landing_sites = { } + storage.nullius_align_landing_sites[1] = {x = 0, y = 0} + storage.nullius_align_landing_count = 1 + storage.nullius_align_satellite_winner = nil end end @@ -67,20 +67,20 @@ function init_alignment_force(force) for i = 1, 7 do local tech = force.technologies["nullius-alignment-" .. i] if ((tech ~= nil) and tech.valid) then - tech.enabled = global.nullius_alignment + tech.enabled = storage.nullius_alignment end end end local function teleport_lobby(player) - local lobby = global.nullius_align_lobby + local lobby = storage.nullius_align_lobby if (lobby == nil) then lobby = blank_surface(player.surface, "orbit") lobby.request_to_generate_chunks({0, 0}, 4) lobby.force_generate_chunk_requests() lobby.always_day = true - global.nullius_align_lobby = lobby + storage.nullius_align_lobby = lobby player.force.chart(lobby, {{-120, -120}, {120, 120}}) end player.teleport(player.position, lobby, true) @@ -99,9 +99,9 @@ local function generate_corner(surface, x, y) end local function chunk_generated(event) - if (global.nullius_alignment ~= true) then return end + if (storage.nullius_alignment ~= true) then return end local surface = event.surface - if (surface ~= global.nullius_align_lobby) then return end + if (surface ~= storage.nullius_align_lobby) then return end local x = event.area.left_top.x local y = event.area.left_top.y generate_corner(surface, x, y) @@ -114,12 +114,12 @@ script.on_event(defines.events.on_chunk_generated, chunk_generated) local function align_add_queue(entry) - if (global.nullius_align_queue_tail == nil) then - global.nullius_align_queue_head = entry + if (storage.nullius_align_queue_tail == nil) then + storage.nullius_align_queue_head = entry else - global.nullius_align_queue_tail.next = entry + storage.nullius_align_queue_tail.next = entry end - global.nullius_align_queue_tail = entry + storage.nullius_align_queue_tail = entry end function align_player_created(player) @@ -150,7 +150,7 @@ local function faction_has_tech(force, techname) end local function faction_has_crafted(force, itemname, amount) - local stats = force.item_production_statistics + local stats = force.get_item_production_statistics("nauvis") local count = stats.get_input_count("nullius-" .. itemname) return (count >= amount) end @@ -190,7 +190,7 @@ local function convert_player_faction(player, force) end function align_player_join(player) - if (not global.nullius_alignment) then return end + if (not storage.nullius_alignment) then return end local force = player.force for i = 1, 200 do local entry = lookup_force(force) @@ -226,12 +226,12 @@ local function schedule_absorb_faction(oldforce, newforce, target) end function align_satellite_launch(rocket) - if (not global.nullius_alignment) then return end - if (global.nullius_align_satellite_winner ~= nil) then return end + if (not storage.nullius_alignment) then return end + if (storage.nullius_align_satellite_winner ~= nil) then return end local newforce = rocket.force local entry = lookup_force(newforce) if (entry == nil) then return end - global.nullius_align_satellite_winner = { force = newforce, + storage.nullius_align_satellite_winner = { force = newforce, surface = rocket.surface, position = { x = rocket.position.x, y = (rocket.position.y + 256) } } @@ -365,7 +365,7 @@ local function merge_faction_techs(oldforce, newforce, surface, pos) chest_width = chest_entry[3] end end - local chest_proto = game.entity_prototypes[chest_name] + local chest_proto = prototypes.entity[chest_name] if ((chest_proto == nil) or (not chest_proto.valid) or ((chest_proto.type ~= "container") and (chest_proto.type ~= "logistic-container"))) then @@ -389,7 +389,7 @@ local function merge_faction_techs(oldforce, newforce, surface, pos) item_name = "nullius-box-" .. string.sub(item_name, 9, -1) amount = math.floor((amount + 3) / 5) end - local item_proto = game.item_prototypes[item_name] + local item_proto = prototypes.item[item_name] if ((item_proto ~= nil) and item_proto.valid and item_proto.stackable and (item_proto.stack_size >= 5)) then while (amount > 0) do @@ -456,7 +456,7 @@ end local function align_update_transmitter(entry) - local winner = global.nullius_align_satellite_winner + local winner = storage.nullius_align_satellite_winner if (winner ~= nil) then local force = lookup_force(winner.force) if (force ~= nil) then @@ -469,12 +469,12 @@ local function align_update_transmitter(entry) end end - if (global.nullius_align_transmitters ~= nil) then + if (storage.nullius_align_transmitters ~= nil) then local lst = { } local num = 0 - for bi, transmitter in pairs(global.nullius_align_transmitters) do + for bi, transmitter in pairs(storage.nullius_align_transmitters) do if ((transmitter.entity == nil) or (not transmitter.entity.valid)) then - global.nullius_align_transmitters[bi] = nil + storage.nullius_align_transmitters[bi] = nil else num = num + 1 lst[num] = transmitter @@ -512,7 +512,7 @@ end local function evaluate_search_position(pos, surface) local closest_dist = nil - for _,site in pairs(global.nullius_align_landing_sites) do + for _,site in pairs(storage.nullius_align_landing_sites) do local dx = (pos.x - site.x) local dy = (pos.y - site.y) local dist = ((dx * dx) + (dy * dy)) @@ -532,8 +532,8 @@ local function evaluate_search_position(pos, surface) end local function align_update_search(entry) - local dist = global.nullius_align_landing_distance - global.nullius_align_landing_distance = (dist + 1) + local dist = storage.nullius_align_landing_distance + storage.nullius_align_landing_distance = (dist + 1) local best_score = nil local best_pos = nil for i = 1, 6 do @@ -555,9 +555,9 @@ local function align_update_search(entry) player = entry.player, surface = entry.surface, cposition = best_pos, tposition = tpos, count = 0 }) - local ind = (global.nullius_align_landing_count + 1) - global.nullius_align_landing_count = ind - global.nullius_align_landing_sites[ind] = best_pos + local ind = (storage.nullius_align_landing_count + 1) + storage.nullius_align_landing_count = ind + storage.nullius_align_landing_sites[ind] = best_pos local fillsurface = landfill_surface(entry.surface) fillsurface.request_to_generate_chunks(tpos, 3) entry.surface.request_to_generate_chunks(tpos, 5) @@ -941,16 +941,16 @@ end function update_align() - if (not global.nullius_alignment) then return end - local head = global.nullius_align_queue_head + if (not storage.nullius_alignment) then return end + local head = storage.nullius_align_queue_head if (head == nil) then return end if ((head.delay ~= nil) and (game.tick < head.delay)) then - if (head == global.nullius_align_queue_tail) then return end - global.nullius_align_queue_head = head.next + if (head == storage.nullius_align_queue_tail) then return end + storage.nullius_align_queue_head = head.next head.next = nil align_add_queue(head) - head = global.nullius_align_queue_head + head = storage.nullius_align_queue_head if ((head.delay ~= nil) and (game.tick < head.delay)) then return end end @@ -988,10 +988,10 @@ function update_align() end if (ret) then - if (head == global.nullius_align_queue_tail) then - global.nullius_align_queue_tail = nil + if (head == storage.nullius_align_queue_tail) then + storage.nullius_align_queue_tail = nil end - global.nullius_align_queue_head = head.next + storage.nullius_align_queue_head = head.next end end @@ -1084,7 +1084,7 @@ end local function align_effect_transponder(source) - if (not global.nullius_alignment) then return end + if (not storage.nullius_alignment) then return end local source_entry = lookup_force(source.force) if (source_entry == nil) then return end if (not check_entity_player(source)) then return end @@ -1123,7 +1123,7 @@ local function align_set_invite_status(source, target, id) {"alignment.align-no-identification"}}) return false end - global.nullius_align_invite_status[source.player.index] = { + storage.nullius_align_invite_status[source.player.index] = { target = target.player, ident = id, tick = game.tick, tforce = target.force, sforce = source.force } @@ -1131,7 +1131,7 @@ local function align_set_invite_status(source, target, id) end local function align_get_invite_status(entity, other) - local invite = global.nullius_align_invite_status[entity.player.index] + local invite = storage.nullius_align_invite_status[entity.player.index] if ((invite == nil) or (invite.sforce ~= entity.force)) then return nil end if (game.tick > (invite.tick + 36000)) then return nil end if (invite.target ~= other.player) then return nil end @@ -1148,8 +1148,8 @@ local function align_match_invite_status(target, source) local oldforce = target.force convert_player_faction(target.player, source.force) check_faction_empty(oldforce, source.force, target) - global.nullius_align_invite_status[target.player.index] = nil - global.nullius_align_invite_status[source.player.index] = nil + storage.nullius_align_invite_status[target.player.index] = nil + storage.nullius_align_invite_status[source.player.index] = nil end local function align_effect_identification(target, source) @@ -1166,7 +1166,7 @@ end function align_effect(event, suffix) - if (not global.nullius_alignment) then return end + if (not storage.nullius_alignment) then return end local target = check_entity_force(event.target_entity) local source = check_entity_force(event.source_entity) if ((target == nil) or (source == nil)) then return end @@ -1184,32 +1184,32 @@ end function build_transmitter(entity) - if (not global.nullius_alignment) then return end - if (global.nullius_align_transmitters == nil) then - global.nullius_align_transmitters = { } + if (not storage.nullius_alignment) then return end + if (storage.nullius_align_transmitters == nil) then + storage.nullius_align_transmitters = { } end - global.nullius_align_transmitters[entity.unit_number] = { + storage.nullius_align_transmitters[entity.unit_number] = { entity = entity, force = entity.force } - script.register_on_entity_destroyed(entity) + script.register_on_object_destroyed(entity) local force_entry = lookup_force(entity.force) if (force_entry == nil) then return end force_entry.has_transmitter = true end function remove_transmitter(unit) - if (global.nullius_align_transmitters == nil) then return end - local trans_entry = global.nullius_align_transmitters[unit] + if (storage.nullius_align_transmitters == nil) then return end + local trans_entry = storage.nullius_align_transmitters[unit] if (trans_entry == nil) then return end - global.nullius_align_transmitters[unit] = nil + storage.nullius_align_transmitters[unit] = nil local force_entry = lookup_force(trans_entry.force) if (force_entry == nil) then return end force_entry.has_transmitter = false - for u, e in pairs(global.nullius_align_transmitters) do + for u, e in pairs(storage.nullius_align_transmitters) do if ((e == nil) or (e.force == nil) or (not e.force.valid) or (e.entity == nil) or (not e.entity.valid)) then - global.nullius_align_transmitters[u] = nil + storage.nullius_align_transmitters[u] = nil elseif (f == force) then force_entry.has_transmitter = true return diff --git a/nullius/scripts/beacon.lua b/nullius/scripts/beacon.lua index 6862e3b..ce0f7de 100644 --- a/nullius/scripts/beacon.lua +++ b/nullius/scripts/beacon.lua @@ -14,7 +14,7 @@ function update_small_beacon(entity) local count = 0 for _,field in pairs(fields) do if (field.valid) then - local unit = global.nullius_interference_fields[field.unit_number] + local unit = storage.nullius_interference_fields[field.unit_number] if ((unit ~= nil) and (unique[unit] == nil)) then unique[unit] = true count = count + 1 @@ -60,11 +60,11 @@ function update_small_beacon(entity) was_upgrade = entity.get_upgrade_target() end - global.nullius_in_beacon_replace = true + storage.nullius_in_beacon_replace = true local newentity = entity.surface.create_entity{name = newname, force = oldforce, position = entity.position, spill = false, fast_replace = true, create_build_effect_smoke = false} - global.nullius_in_beacon_replace = nil + storage.nullius_in_beacon_replace = nil if (newentity == nil) then return end if (was_deconstruct and (oldforce ~= nil)) then @@ -105,15 +105,15 @@ function create_interference(entity, dir, xoffs, yoffs, xsz, ysz) local ret = create_collision_box(entity.surface, entity.position, entity.force, "nullius-beacon-interference-"..dir, xoffs, yoffs, xsz, ysz, "layer-42") - global.nullius_interference_fields[ret.unit_number] = entity.unit_number + storage.nullius_interference_fields[ret.unit_number] = entity.unit_number return ret end function build_large_beacon(entity) - if (global.nullius_beacons == nil) then - global.nullius_beacons = { } - global.nullius_interference_fields = { } + if (storage.nullius_beacons == nil) then + storage.nullius_beacons = { } + storage.nullius_interference_fields = { } end local entry = { @@ -126,28 +126,28 @@ function build_large_beacon(entity) entry.interference[3] = create_interference(entity, "vertical", 8, 6, 6, 8) entry.interference[4] = create_interference(entity, "vertical", -8, -6, 6, 8) - global.nullius_beacons[entity.unit_number] = entry - script.register_on_entity_destroyed(entity) + storage.nullius_beacons[entity.unit_number] = entry + script.register_on_object_destroyed(entity) update_small_beacons(entity.position, entity.surface) end function build_beacon(entity) - if (global.nullius_in_beacon_replace ~= nil) then return end + if (storage.nullius_in_beacon_replace ~= nil) then return end if (string.sub(entity.name, 9, 21) == "large-beacon-") then build_large_beacon(entity) - elseif (global.nullius_interference_fields ~= nil) then + elseif (storage.nullius_interference_fields ~= nil) then update_small_beacon(entity) end end function remove_beacon(unit) - if (global.nullius_beacons == nil) then return false end - local entry = global.nullius_beacons[unit] + if (storage.nullius_beacons == nil) then return false end + local entry = storage.nullius_beacons[unit] if (entry == nil) then return false end - global.nullius_beacons[unit] = nil + storage.nullius_beacons[unit] = nil for _,field in pairs(entry.interference) do if (field.valid) then - global.nullius_interference_fields[field.unit_number] = nil + storage.nullius_interference_fields[field.unit_number] = nil field.destroy() end end diff --git a/nullius/scripts/body.lua b/nullius/scripts/body.lua index 3372260..e22c368 100644 --- a/nullius/scripts/body.lua +++ b/nullius/scripts/body.lua @@ -8,8 +8,8 @@ function add_chart_tag(player, character) end local name = nil - if (global.nullius_android_name ~= nil) then - name = global.nullius_android_name[character.unit_number] + if (storage.nullius_android_name ~= nil) then + name = storage.nullius_android_name[character.unit_number] end if (name == nil) then name = player.name @@ -19,12 +19,12 @@ function add_chart_tag(player, character) {position=character.position, icon={type="item", name=icon}, text=name, last_user=player}) if (ctag ~= nil) then - if (global.nullius_tag_android == nil) then - global.nullius_tag_android = {} - global.nullius_android_tag = {} + if (storage.nullius_tag_android == nil) then + storage.nullius_tag_android = {} + storage.nullius_android_tag = {} end - global.nullius_tag_android[ctag.tag_number] = character - global.nullius_android_tag[character.unit_number] = ctag + storage.nullius_tag_android[ctag.tag_number] = character + storage.nullius_android_tag[character.unit_number] = ctag end end @@ -45,16 +45,16 @@ function switch_body(player, target) target_vehicle = target.vehicle end - if (global.nullius_android_tag ~= nil) then - local tag = global.nullius_android_tag[target.unit_number] + if (storage.nullius_android_tag ~= nil) then + local tag = storage.nullius_android_tag[target.unit_number] if (tag ~= nil) then - global.nullius_android_tag[target.unit_number] = nil + storage.nullius_android_tag[target.unit_number] = nil if (tag.valid) then - if (global.nullius_android_name == nil) then - global.nullius_android_name = {} + if (storage.nullius_android_name == nil) then + storage.nullius_android_name = {} end - global.nullius_android_name[target.unit_number] = tag.text - global.nullius_tag_android[tag.tag_number] = nil + storage.nullius_android_name[target.unit_number] = tag.text + storage.nullius_tag_android[tag.tag_number] = nil tag.destroy() end end @@ -71,13 +71,13 @@ function switch_body(player, target) end if ((player.force ~= nil) and player.force.valid) then - if (global.nullius_switch_body_count == nil) then - global.nullius_switch_body_count = { } + if (storage.nullius_switch_body_count == nil) then + storage.nullius_switch_body_count = { } end - local count = global.nullius_switch_body_count[player.force.name] + local count = storage.nullius_switch_body_count[player.force.name] if (count == nil) then count = 0 end count = count + 1 - global.nullius_switch_body_count[player.force.name] = count + storage.nullius_switch_body_count[player.force.name] = count end player.set_controller{type=defines.controllers.character, character=target} @@ -106,8 +106,8 @@ function switch_body(player, target) add_chart_tag(player, oldchar) end - if (global.nullius_body_queue ~= nil) then - local queue = global.nullius_body_queue[player.index] + if (storage.nullius_body_queue ~= nil) then + local queue = storage.nullius_body_queue[player.index] if (queue ~= nil) then queue.last_index = target.unit_number end @@ -130,14 +130,14 @@ function update_queue(player, oldchar) return end - if (global.nullius_body_queue == nil) then - global.nullius_body_queue = {} + if (storage.nullius_body_queue == nil) then + storage.nullius_body_queue = {} end - local queue = global.nullius_body_queue[player.index] + local queue = storage.nullius_body_queue[player.index] if (queue == nil) then queue = {} queue.nodes = {} - global.nullius_body_queue[player.index] = queue + storage.nullius_body_queue[player.index] = queue end local node1 = queue.nodes[oldchar.unit_number] if ((node1 == nil) or (node1.next == nil) or (node1.next.prev ~= node1)) then @@ -188,8 +188,8 @@ function upload_mind(player, target) end function cycle_body(player, rev) - if (global.nullius_body_queue == nil) then return end - local queue = global.nullius_body_queue[player.index] + if (storage.nullius_body_queue == nil) then return end + local queue = storage.nullius_body_queue[player.index] if (queue == nil) then return end if (player.character == nil) then return end @@ -206,7 +206,7 @@ function cycle_body(player, rev) node = node.next end if (node == nil) then - global.nullius_body_queue[player.index] = nil + storage.nullius_body_queue[player.index] = nil return end @@ -217,7 +217,7 @@ function cycle_body(player, rev) local nn = node.next if ((nn == nil) or (np == nil) or (nn.prev == nil) or (np.next == nil) or (nn == node) or (np == node)) then - global.nullius_body_queue[player.index] = nil + storage.nullius_body_queue[player.index] = nil return end if ((body == nil) or (not body.valid) or (body.type ~= "character")) then @@ -254,13 +254,13 @@ script.on_event("nullius-next-body", function(event) end) script.on_event(defines.events.on_chart_tag_removed, function(event) - if ((global.nullius_tag_android ~= nil) and + if ((storage.nullius_tag_android ~= nil) and (event.tag ~= nil) and event.tag.valid) then - local android = global.nullius_tag_android[event.tag.tag_number] + local android = storage.nullius_tag_android[event.tag.tag_number] if (android ~= nil) then - global.nullius_tag_android[event.tag.tag_number] = nil + storage.nullius_tag_android[event.tag.tag_number] = nil if (android.valid) then - global.nullius_android_tag[android.unit_number] = nil + storage.nullius_android_tag[android.unit_number] = nil if (event.player_index ~= nil) then local player = game.players[event.player_index] if (player ~= nil) then @@ -276,26 +276,26 @@ function change_character_entity(oldunit, newchar) local newunit = newchar.unit_number if ((oldunit == nil) or (newunit == oldunit)) then return end - if ((global.nullius_android_tag ~= nil) and - (global.nullius_tag_android ~= nil)) then - local tag = global.nullius_android_tag[oldunit] + if ((storage.nullius_android_tag ~= nil) and + (storage.nullius_tag_android ~= nil)) then + local tag = storage.nullius_android_tag[oldunit] if ((tag ~= nil) and tag.valid and (tag.tag_number ~= nil)) then - global.nullius_android_tag[oldunit] = nil - global.nullius_android_tag[newunit] = tag - global.nullius_tag_android[tag.tag_number] = newchar + storage.nullius_android_tag[oldunit] = nil + storage.nullius_android_tag[newunit] = tag + storage.nullius_tag_android[tag.tag_number] = newchar end - if (global.nullius_android_name ~= nil) then - local name = global.nullius_android_name[oldunit] + if (storage.nullius_android_name ~= nil) then + local name = storage.nullius_android_name[oldunit] if (name ~= nil) then - global.nullius_android_name[oldunit] = nil - global.nullius_android_name[newunit] = name + storage.nullius_android_name[oldunit] = nil + storage.nullius_android_name[newunit] = name end end end - if (global.nullius_body_queue ~= nil) then - for _,queue in pairs(global.nullius_body_queue) do + if (storage.nullius_body_queue ~= nil) then + for _,queue in pairs(storage.nullius_body_queue) do local node = queue.nodes[oldunit] if (node ~= nil) then node.body = newchar @@ -316,8 +316,8 @@ script.on_event(defines.events.on_player_respawned, function(event) local newchar = player.character if ((newchar == nil) or (not newchar.valid)) then return end - if (global.nullius_body_queue == nil) then return end - local queue = global.nullius_body_queue[player.index] + if (storage.nullius_body_queue == nil) then return end + local queue = storage.nullius_body_queue[player.index] if (queue == nil) then return end if (queue.nodes[newchar.unit_number] ~= nil) then return end @@ -332,8 +332,8 @@ end) function rematerialize_body(event) local player = game.players[event.player_index] update_player_upgrades(player) - if (global.nullius_body_queue == nil) then return end - local queue = global.nullius_body_queue[player.index] + if (storage.nullius_body_queue == nil) then return end + local queue = storage.nullius_body_queue[player.index] if (queue == nil) then return end local newchar = player.character diff --git a/nullius/scripts/build.lua b/nullius/scripts/build.lua index 7be2eb7..765c438 100644 --- a/nullius/scripts/build.lua +++ b/nullius/scripts/build.lua @@ -1,6 +1,6 @@ function entity_added(entity, handbuilt) if (entity.type == "spider-vehicle") then - mecha_added(entity) + mecha_added(entity) return end if (string.sub(entity.name, 1, 8) ~= "nullius-") then @@ -64,10 +64,10 @@ end function entity_hand_built(event) - entity_added(event.created_entity, event) + entity_added(event.entity, event) end function entity_bot_built(event) - entity_added(event.created_entity, nil) + entity_added(event.entity, nil) end function entity_raised(event) entity_added(event.entity, nil) @@ -96,7 +96,7 @@ script.on_event(defines.events.script_raised_revive, entity_raised) script.on_event(defines.events.on_player_mined_entity, entity_mined) script.on_event(defines.events.on_robot_mined_entity, entity_mined) script.on_event(defines.events.on_entity_died, entity_died) -script.on_event(defines.events.on_entity_destroyed, entity_destroyed) +script.on_event(defines.events.on_object_destroyed, entity_destroyed) function update_tick() diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index 4ff2559..438197d 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -174,17 +174,17 @@ local broken_data = { } function init_broken() - if ((global.nullius_broken_status == nil) or - (not global.nullius_alignment)) then - global.nullius_broken_status = {} + if ((storage.nullius_broken_status == nil) or + (not storage.nullius_alignment)) then + storage.nullius_broken_status = {} end - if (global.nullius_alignment) then + if (storage.nullius_alignment) then broken_data["align-transponder"] = 1 end for suffix, count in pairs(broken_data) do local ind = "nullius-broken-" .. suffix - local cur = (global.nullius_broken_status[ind] or 0) - global.nullius_broken_status[ind] = (count + cur) + local cur = (storage.nullius_broken_status[ind] or 0) + storage.nullius_broken_status[ind] = (count + cur) end end @@ -209,8 +209,8 @@ function reset_checkpoints(force) end end - if ((global.nullius_broken_status ~= nil) and - (not global.nullius_alignment)) then + if ((storage.nullius_broken_status ~= nil) and + (not storage.nullius_alignment)) then for suffix, count in pairs(broken_data) do local broken_name = "nullius-broken-" .. suffix if (not broken_disabled(broken_name)) then @@ -221,8 +221,8 @@ function reset_checkpoints(force) end end - global.checkpoint_list[force.index] = checkset - global.checkpoint_number[force.index] = checknum + storage.checkpoint_list[force.index] = checkset + storage.checkpoint_number[force.index] = checknum end function init_force_checkpoints(force) @@ -241,8 +241,8 @@ function init_force_checkpoints(force) end function update_checkpoint_list(techname) - if (global.checkpoint_prereqs == nil) then return end - if (global.checkpoint_prereqs[techname] == true) then + if (storage.checkpoint_prereqs == nil) then return end + if (storage.checkpoint_prereqs[techname] == true) then for _, force in pairs(game.forces) do if (force.research_enabled) then reset_checkpoints(force) @@ -255,15 +255,15 @@ function init_checkpoint_prereqs() local prereqs = { } for suffix, check in pairs(checkpoint_data) do local techname = "nullius-checkpoint-" .. suffix - local tech = game.technology_prototypes[techname] + local tech = prototypes.technology[techname] for _, prereq in pairs(tech.prerequisites) do prereqs[prereq.name] = true end end - global.checkpoint_prereqs = prereqs - global.checkpoint_list = { } - global.checkpoint_number = { } + storage.checkpoint_prereqs = prereqs + storage.checkpoint_list = { } + storage.checkpoint_number = { } end @@ -303,27 +303,27 @@ local function test_checkpoint_req(force, req) local list = req[4] local stats = nil if (ctyp == CHK_ITEM) then - stats = force.item_production_statistics + stats = force.get_item_production_statistics("nauvis") elseif (ctyp == CHK_FLUID) then - stats = force.fluid_production_statistics + stats = force.get_fluid_production_statistics("nauvis") elseif (ctyp == CHK_BUILD) then - stats = force.entity_build_count_statistics + stats = force.get_entity_build_count_statistics("nauvis") elseif (ctyp == CHK_OBJECTIVE) then - if (global.nullius_mission_status == nil) then return 0 end - if (global.nullius_mission_complete) then return 1 end + if (storage.nullius_mission_status == nil) then return 0 end + if (storage.nullius_mission_complete) then return 1 end return math.min(1, math.max(0, - (global.nullius_mission_status[calc] / goal))) + (storage.nullius_mission_status[calc] / goal))) elseif (ctyp == CHK_SPECIAL) then if (calc == 1) then - if (global.nullius_switch_body_count == nil) then return 0 end - local count = global.nullius_switch_body_count[force.name] + if (storage.nullius_switch_body_count == nil) then return 0 end + local count = storage.nullius_switch_body_count[force.name] if (count == nil) then return 0 end return math.min(1, math.max(0, (count / goal))) elseif (calc == 2) then local count = count_req_list(list[1], - force.fluid_production_statistics, STT_CONSUME) + + force.get_fluid_production_statistics("nauvis"), STT_CONSUME) + count_req_list(list[2], - force.item_production_statistics, STT_PRODUCE) + force.get_item_production_statistics("nauvis"), STT_PRODUCE) return math.min(math.max((count / goal), 0), 1) else return 0 @@ -337,25 +337,25 @@ local function test_checkpoint_req(force, req) end local function update_checkpoint_force(force, tick) - local num = global.checkpoint_number[force.index] + local num = storage.checkpoint_number[force.index] if ((num == nil) or (num < 1)) then return end local ind = (tick % num) + 1 - local lst = global.checkpoint_list[force.index] + local lst = storage.checkpoint_list[force.index] local check = lst[ind] local tech = nil if (check.category == CAT_BROKEN) then if (broken_disabled(check.name)) then reset_checkpoints(force) - return - end + return + end else tech = force.technologies[check.name] if (tech == nil) then return end if ((not tech.enabled) or tech.researched) then reset_checkpoints(force) - return - end + return + end end local progress = 0 @@ -372,8 +372,7 @@ local function update_checkpoint_force(force, tick) force.print({"technology-description.nullius-complete-checkpoint", "[technology="..tech.name.."]"}, {1, 0.75, 0.4}) end - if (force.research_queue_enabled and (force.current_research ~= nil) and - (force.current_research.name ~= tech.name)) then + if ((force.current_research ~= nil) and (force.current_research.name ~= tech.name)) then -- When checkpoint is in research queue, researching item -- clears anything else in queue that has it as a dependency. -- Try to restore the original queue afterwards. @@ -408,7 +407,8 @@ local function update_checkpoint_force(force, tick) (force.current_research.name == tech.name)) then force.research_progress = progress else - force.set_saved_technology_progress(tech, progress) + -- force.set_saved_technology_progress(tech, progress) + force.technologies[tech.name].saved_progress = progress end end end diff --git a/nullius/scripts/drone.lua b/nullius/scripts/drone.lua index 5e5aca4..593bb91 100644 --- a/nullius/scripts/drone.lua +++ b/nullius/scripts/drone.lua @@ -241,7 +241,7 @@ function miner_effect(event, ore, size, richness, goal_ind, goal_amount) local c = tile_center(event) local a = area_bound(c, (size+2)) local threshold = size * size * 0.14063 - tiles = s.find_tiles_filtered{area=a, position=c, radius=(size+0.5), collision_mask="ground-tile"} + tiles = s.find_tiles_filtered{area=a, position=c, radius=(size+0.5), collision_mask="ground_tile"} for i, t in pairs(tiles) do local dx = (t.position.x - c.x) local dy = (t.position.y - c.y) @@ -276,7 +276,7 @@ end local function count_resource(event, name, limit, objective) if ((event.source_entity ~= nil) and event.source_entity.valid and - (global.nullius_mission_status ~= nil)) then + (storage.nullius_mission_status ~= nil)) then local s = game.surfaces[event.surface_index] local total = 0 local entities = s.find_entities_filtered{name=name, @@ -308,7 +308,7 @@ function petroleum_effect(event) local angle = 2 * math.pi * math.random() local distance = (math.random() * 32) + (math.random() * 24) - 28 local p = {x = c.x + (math.cos(angle) * distance), y = c.y + (math.sin(angle) * distance)} - local overlap_water = s.count_tiles_filtered{area=area_bound(p, 2), limit=2, collision_mask="water-tile"} + local overlap_water = s.count_tiles_filtered{area=area_bound(p, 2), limit=2, collision_mask="water_tile"} local overlap_obstacle = s.count_entities_filtered{area=area_bound(p, 4), limit=2} if ((overlap_obstacle > 0) or (overlap_water > 0)) then if ((n % 3) == 0) then @@ -347,7 +347,7 @@ function algaculture_effect(event) local s = game.surfaces[event.surface_index] local c = tile_center(event) local a = area_bound(c, 80) - local land_count = s.count_tiles_filtered{area=a, position=c, radius=80, limit=12000, collision_mask="ground-tile"} + local land_count = s.count_tiles_filtered{area=a, position=c, radius=80, limit=12000, collision_mask="ground_tile"} local land_bonus = 1.0 + (math.min(land_count, 12000) / 6000) local nearby_count = count_decoratives(s, a, 120, "nullius-algae") local algae_count = math.floor((((500 * math.random()) + 250) * land_bonus) / (math.min(nearby_count, 120) + 30)) @@ -442,20 +442,20 @@ function horticulture_effect(event) local center = area_center(event) surface.request_to_generate_chunks(center, 6) - if (global.nullius_grass_queue == nil) then - global.nullius_grass_queue = { } - global.nullius_grass_head = 1 - global.nullius_grass_tail = 0 - global.nullius_grass_timer = 0 + if (storage.nullius_grass_queue == nil) then + storage.nullius_grass_queue = { } + storage.nullius_grass_head = 1 + storage.nullius_grass_tail = 0 + storage.nullius_grass_timer = 0 end - global.nullius_grass_tail = global.nullius_grass_tail + 1 + storage.nullius_grass_tail = storage.nullius_grass_tail + 1 local fillsurface = landfill_surface(surface) fillsurface.request_to_generate_chunks(center, 4) local force = nil if ((event.source_entity ~= nil) and event.source_entity.valid) then force = event.source_entity.force end - global.nullius_grass_queue[global.nullius_grass_tail] = { + storage.nullius_grass_queue[storage.nullius_grass_tail] = { surface = surface, center = center, fillsurface = fillsurface, force = force } @@ -489,7 +489,7 @@ function arboriculture_effect(event) area=area_bound(p, 1.2), limit=2} if ((overlap_obstacle < 1) or (math.random() < 0.4)) then local near_tiles = s.find_tiles_filtered{area=area_bound(p, 1.8), - radius=1.6, collision_mask="ground-tile"} + radius=1.6, collision_mask="ground_tile"} local near_num = 0 for _,nt in pairs(near_tiles) do near_num = near_num + 1 @@ -550,13 +550,13 @@ end function entomology_effect(event) scout_effect(event, 3) - if (global.nullius_mission_status == nil) then return end + if (storage.nullius_mission_status == nil) then return end local s = game.surfaces[event.surface_index] local c = tile_center(event) local attempt_count = 8 + (math.random() * 9) - if (global.nullius_mission_status[2] < 35) then - attempt_count = attempt_count - (34 - global.nullius_mission_status[2]) + if (storage.nullius_mission_status[2] < 35) then + attempt_count = attempt_count - (34 - storage.nullius_mission_status[2]) end for _ = 1, attempt_count do @@ -576,7 +576,7 @@ function entomology_effect(event) if ((overlap_worm < 1) and (overlap_water < 3)) then local a = area_bound(p, 25) local grass_count = s.count_tiles_filtered{area=a, position=p, radius=24, limit=1000, - collision_mask="ground-tile", name={"grass-1", "grass-2", "grass-3", "grass-4"}} + collision_mask="ground_tile", name={"grass-1", "grass-2", "grass-3", "grass-4"}} local tree_count = s.count_entities_filtered{area=a, position=p, radius=24, limit=12, type="tree"} local worm_count = count_decoratives(s, a, 10, "worms-decal") worm_count = worm_count + s.count_entities_filtered{limit=10, area=a, @@ -587,8 +587,8 @@ function entomology_effect(event) if (rv < odds) then local change_ground = false local status = 0 - if (global.nullius_mission_status ~= nil) then - status = global.nullius_mission_status[6] + if (storage.nullius_mission_status ~= nil) then + status = storage.nullius_mission_status[6] if (status == nil) then status = 0 end status = math.max(0, math.min(100, status)) end @@ -615,7 +615,7 @@ function entomology_effect(event) if (change_ground) then local near_tiles = s.find_tiles_filtered{area=o, - position=p, radius=5.4, collision_mask="ground-tile"} + position=p, radius=5.4, collision_mask="ground_tile"} for _,nt in pairs(near_tiles) do local dx = nt.position.x - p.x local dy = nt.position.y - p.y @@ -672,7 +672,7 @@ end function aquaculture_effect(event) scout_effect(event, 3) - if (global.nullius_mission_status == nil) then return end + if (storage.nullius_mission_status == nil) then return end local s = game.surfaces[event.surface_index] local c = tile_center(event) @@ -680,15 +680,15 @@ function aquaculture_effect(event) local algae_count = count_decoratives(s, a, 40, "nullius-algae") local fish_count = s.count_entities_filtered{area=a, limit=40, type="fish"} local attempt_count = ((((math.random() * 31) + (6 * algae_count)) / (10 + fish_count)) - 3) / 2 - if (global.nullius_mission_status[2] < 68) then - attempt_count = attempt_count - ((68 - global.nullius_mission_status[2]) / 2) + if (storage.nullius_mission_status[2] < 68) then + attempt_count = attempt_count - ((68 - storage.nullius_mission_status[2]) / 2) end for _ = 1, attempt_count do local angle = 2 * math.pi * math.random() local distance = (math.random() * 96) + (math.random() * 48) - 72 local p = {x = c.x + (math.cos(angle) * distance), y = c.y + (math.sin(angle) * distance)} - local overlap_land = s.count_tiles_filtered{area=area_bound(p, 1), limit=2, collision_mask="ground-tile"} + local overlap_land = s.count_tiles_filtered{area=area_bound(p, 1), limit=2, collision_mask="ground_tile"} local overlap_obstacle = s.count_entities_filtered{area=area_bound(p, 1.5), limit=2} if ((overlap_obstacle < 1) and (overlap_land < 1)) then s.create_entity({name="fish", amount=1, position=p}) @@ -703,7 +703,7 @@ end function husbandry_effect(event) scout_effect(event, 4) - if (global.nullius_mission_status == nil) then return end + if (storage.nullius_mission_status == nil) then return end local s = game.surfaces[event.surface_index] local c = tile_center(event) @@ -742,13 +742,13 @@ function husbandry_effect(event) position=c, radius=64, limit=4, name="nullius-fumarole"}) local penalty = 2.5 * (8 + fumarole_count) * (3 + nest_count) local bonus = (math.sqrt(fish_count * tree_count) * - (global.nullius_mission_status[2] - 55) / 30) + (storage.nullius_mission_status[2] - 55) / 30) local odds = math.sqrt(math.max(0, ((bonus / penalty) - 0.1))) - 0.2 if (math.random() > odds) then return end local nest = s.create_entity{name="biter-spawner", amount=1, position=c} if (nest == nil) then return end - local old_status = global.nullius_mission_status[8] + local old_status = storage.nullius_mission_status[8] if (old_status == nil) then old_status = 0 end if (old_status == 0) then game.forces["enemy"].reset_evolution() @@ -762,19 +762,19 @@ function husbandry_effect(event) local force = source.force if (force == nil) then return end local new_status = 100 - if (not global.nullius_mission_complete) then + if (not storage.nullius_mission_complete) then local new_count = s.count_entities_filtered{name="biter-spawner", limit=500} set_mission_goal(8, new_count, force) - new_status = global.nullius_mission_status[8] + new_status = storage.nullius_mission_status[8] end - local invasions = global.nullius_invasions + local invasions = storage.nullius_invasions if (invasions == nil) then invasions = 0 end - local cooldown = global.nullius_invasion_cooldown + local cooldown = storage.nullius_invasion_cooldown if (cooldown ~= nil) then - global.nullius_invasion_cooldown = cooldown - 1 - if (global.nullius_invasion_cooldown < 1) then - global.nullius_invasion_cooldown = nil + storage.nullius_invasion_cooldown = cooldown - 1 + if (storage.nullius_invasion_cooldown < 1) then + storage.nullius_invasion_cooldown = nil end return end @@ -835,7 +835,7 @@ function husbandry_effect(event) limit=2, name={"deepwater", "water", "water-shallow", "deepwater-green", "water-green", "water-mud"}} local overlap_entity = s.count_entities_filtered{area=box, - limit=2, collision_mask = "object-layer"} + limit=2, collision_mask = "object"} if ((overlap_water < 1) and (overlap_entity < 1)) then local unit = s.create_entity{name=unitname, amount=1, position=p} if ((unit ~= nil) and unit.valid) then @@ -859,8 +859,8 @@ function husbandry_effect(event) end local target = source local assassinate = false - global.nullius_invasions = invasions - global.nullius_invasion_cooldown = cooldown + storage.nullius_invasions = invasions + storage.nullius_invasion_cooldown = cooldown if (math.random() < player_odds) then local pcount = 0 diff --git a/nullius/scripts/equipment.lua b/nullius/scripts/equipment.lua index 858650b..3d05b78 100644 --- a/nullius/scripts/equipment.lua +++ b/nullius/scripts/equipment.lua @@ -101,12 +101,12 @@ local function check_coprocessor_tier(bonuses, armorinv, tier, limit) local upgrade = upgrade_data[suffix] if ((upgrade ~= nil) and (upgrade[1] ~= nil) and (upgrade[1][1] == ind1)) then - global.nullius_in_update_equipment = true + storage.nullius_in_update_equipment = true local pos = equip.position local newname = "nullius-deactivated-" .. suffix grid.take{equipment=equip, position=pos} grid.put{name=newname, position=pos} - global.nullius_in_update_equipment = false + storage.nullius_in_update_equipment = false end end end @@ -125,7 +125,7 @@ end function update_player_upgrades(player) if (player.character == nil) then return end - if (global.nullius_in_update_equipment) then return end + if (storage.nullius_in_update_equipment) then return end local bonuses = { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 } local drain = 0 @@ -240,12 +240,12 @@ function update_player_upgrades(player) local unit = player.character.unit_number if (costlist ~= nil) then - if (global.nullius_crafting_equipment == nil) then - global.nullius_crafting_equipment = { } + if (storage.nullius_crafting_equipment == nil) then + storage.nullius_crafting_equipment = { } end local curr = nil - if (global.nullius_crafting_equipment[unit] ~= nil) then - curr = global.nullius_crafting_equipment[unit].current + if (storage.nullius_crafting_equipment[unit] ~= nil) then + curr = storage.nullius_crafting_equipment[unit].current end local totalcost = (bonuses[UPG_COST] * 1000 * (1 + scale_multiple(bonuses[UPG_COST_MULT], 1))) @@ -254,23 +254,23 @@ function update_player_upgrades(player) end local prodbonus = bonuses[UPG_CRAFT_PROD] if (prodbonus <= 0) then prodbonus = nil end - global.nullius_crafting_equipment[unit] = { + storage.nullius_crafting_equipment[unit] = { cost = totalcost, lst = costlist, current = curr, mod = craftmod, prod = prodbonus } - elseif (global.nullius_crafting_equipment ~= nil) then - global.nullius_crafting_equipment[unit] = nil + elseif (storage.nullius_crafting_equipment ~= nil) then + storage.nullius_crafting_equipment[unit] = nil end if (refueler and (generators ~= nil)) then - if (global.nullius_generator_equipment == nil) then - global.nullius_generator_equipment = { } + if (storage.nullius_generator_equipment == nil) then + storage.nullius_generator_equipment = { } end - global.nullius_generator_equipment[unit] = { + storage.nullius_generator_equipment[unit] = { character = player.character, lst = generators } - elseif (global.nullius_generator_equipment ~= nil) then - global.nullius_generator_equipment[unit] = nil + elseif (storage.nullius_generator_equipment ~= nil) then + storage.nullius_generator_equipment[unit] = nil end end @@ -289,7 +289,7 @@ end local function equipment_placed(event) if ((event.equipment.name == "nullius-refueler") or (event.equipment.type == "generator-equipment")) then - global.nullius_refueler_inserted_tick = event.tick + storage.nullius_refueler_inserted_tick = event.tick end armor_changed(event) end @@ -297,7 +297,7 @@ end local function equipment_removed(event) if ((event.equipment == "nullius-refueler") or (string.sub(event.equipment, 1, 17) == "nullius-portable-")) then - global.nullius_refueler_inserted_tick = event.tick + storage.nullius_refueler_inserted_tick = event.tick end armor_changed(event) end @@ -308,20 +308,20 @@ script.on_event(defines.events.on_player_armor_inventory_changed, armor_changed) function equipment_installed(event) - if (global.nullius_in_update_equipment) then return end + if (storage.nullius_in_update_equipment) then return end local grid = event.grid local eq = event.equipment if ((eq == nil) or (grid == nil)) then return end if (string.sub(eq.name, 1, 8) ~= "nullius-") then return end if (string.sub(eq.name, 9, 24) == "charged-battery-") then - global.nullius_in_update_equipment = true + storage.nullius_in_update_equipment = true local pos = eq.position local newname = "nullius-battery-" .. string.sub(eq.name, 25, -1) grid.take{equipment=eq, position=pos} local eq2 = grid.put{name=newname, position=pos} eq2.energy = eq2.max_energy - global.nullius_in_update_equipment = false + storage.nullius_in_update_equipment = false end end @@ -416,12 +416,12 @@ end script.on_event(defines.events.on_pre_player_crafted_item, function(event) - if (global.nullius_crafting_equipment == nil) then return end + if (storage.nullius_crafting_equipment == nil) then return end local player = game.players[event.player_index] if (player == nil) then return end local character = player.character if (character == nil) then return end - local equipment = global.nullius_crafting_equipment[character.unit_number] + local equipment = storage.nullius_crafting_equipment[character.unit_number] if (equipment == nil) then return end local recipe = event.recipe @@ -441,19 +441,19 @@ script.on_event(defines.events.on_pre_player_crafted_item, script.on_event(defines.events.on_player_crafted_item, function(event) - if ((global.nullius_broken_status ~= nil) and + if ((storage.nullius_broken_status ~= nil) and (string.sub(event.recipe.name, 1, 15) == "nullius-broken-")) then broken_crafted(event.recipe.name) end - if (global.nullius_crafting_equipment == nil) then return end + if (storage.nullius_crafting_equipment == nil) then return end local recipe = event.recipe if (not event.item_stack.valid_for_read) then return end local player = game.players[event.player_index] if (player == nil) then return end local character = player.character if (character == nil) then return end - local equipment = global.nullius_crafting_equipment[character.unit_number] + local equipment = storage.nullius_crafting_equipment[character.unit_number] if (equipment == nil) then return end if (recipe.products[1] == nil) then return end local itemname = event.item_stack.name @@ -477,8 +477,7 @@ script.on_event(defines.events.on_player_crafted_item, local num = math.floor(odds) if ((odds - num) > math.random()) then num = num + 1 end if (num >= 1) then - local tab = global.nullius_productivity_recipes - if ((tab ~= nil) and (tab[recipe.name] == true)) then + if recipe.prototype.allow_productivity then player.insert({name=event.item_stack.name, count=num}) end end @@ -502,22 +501,9 @@ script.on_event(defines.events.on_player_crafted_item, end ) - -function init_productivity_recipes() - local newprod = { } - local proto = game.item_prototypes["nullius-productivity-module-1"] - if ((proto ~= nil) and (proto.limitations ~= nil)) then - for _,name in pairs(proto.limitations) do - newprod[name] = true - end - end - global.nullius_productivity_recipes = newprod -end - - function update_generators() - if (global.nullius_generator_equipment == nil) then return end - for i,e in pairs(global.nullius_generator_equipment) do + if (storage.nullius_generator_equipment == nil) then return end + for i,e in pairs(storage.nullius_generator_equipment) do local c = e.character if ((c == nil) and (e.mech ~= nil)) then c = e.mech.entity @@ -607,32 +593,32 @@ function update_generators() return end else - global.nullius_generator_equipment[i] = nil + storage.nullius_generator_equipment[i] = nil end end end function insert_mecha_list(e) - if (global.nullius_mecha_list == nil) then - global.nullius_mecha_list = { } - elseif (global.nullius_mecha_list[e.unit_number] ~= nil) then + if (storage.nullius_mecha_list == nil) then + storage.nullius_mecha_list = { } + elseif (storage.nullius_mecha_list[e.unit_number] ~= nil) then return end local newlst = { entity = e, tick = -1, unit = e.unit_number } - if (global.nullius_mecha_head ~= nil) then - newlst.prev = global.nullius_mecha_head + if (storage.nullius_mecha_head ~= nil) then + newlst.prev = storage.nullius_mecha_head newlst.next = newlst.prev.next newlst.next.prev = newlst newlst.prev.next = newlst else newlst.next = newlst newlst.prev = newlst - global.nullius_mecha_head = newlst + storage.nullius_mecha_head = newlst end - global.nullius_mecha_list[newlst.unit] = newlst + storage.nullius_mecha_list[newlst.unit] = newlst end function mecha_added(entity) @@ -646,7 +632,7 @@ function mecha_added(entity) end function find_all_mechas() - global.nullius_refueler_inserted_tick = 1 + storage.nullius_refueler_inserted_tick = 1 for _,surface in pairs(game.surfaces) do local mechs = surface.find_entities_filtered{type="spider-vehicle"} for _,mecha in pairs(mechs) do @@ -679,30 +665,30 @@ function check_mecha_equipment(node) if (refueler and (generators ~= nil)) then local new_entry = { mech = node, lst = generators } - if (global.nullius_generator_equipment == nil) then - global.nullius_generator_equipment = { } + if (storage.nullius_generator_equipment == nil) then + storage.nullius_generator_equipment = { } else - local old_entry = global.nullius_generator_equipment[node.unit] + local old_entry = storage.nullius_generator_equipment[node.unit] if (old_entry ~= nil) then new_entry.last_reactor_fuel = old_entry.last_reactor_fuel new_entry.last_generator_fuel = old_entry.last_generator_fuel end end - global.nullius_generator_equipment[node.unit] = new_entry - elseif (global.nullius_generator_equipment ~= nil) then - global.nullius_generator_equipment[node.unit] = nil + storage.nullius_generator_equipment[node.unit] = new_entry + elseif (storage.nullius_generator_equipment ~= nil) then + storage.nullius_generator_equipment[node.unit] = nil end end function update_mechas() - if (global.nullius_mecha_head == nil) then return end - if (global.nullius_refueler_inserted_tick == nil) then return end - local node = global.nullius_mecha_head.next + if (storage.nullius_mecha_head == nil) then return end + if (storage.nullius_refueler_inserted_tick == nil) then return end + local node = storage.nullius_mecha_head.next if (not node.entity.valid) then - global.nullius_mecha_list[node.unit] = nil - if (node == global.nullius_mecha_head) then - global.nullius_mecha_list = nil - global.nullius_mecha_head = nil + storage.nullius_mecha_list[node.unit] = nil + if (node == storage.nullius_mecha_head) then + storage.nullius_mecha_list = nil + storage.nullius_mecha_head = nil else node.next.prev = node.prev node.prev.next = node.next @@ -710,8 +696,8 @@ function update_mechas() return end - global.nullius_mecha_head = node - if (node.tick <= global.nullius_refueler_inserted_tick) then + storage.nullius_mecha_head = node + if (node.tick <= storage.nullius_refueler_inserted_tick) then node.tick = game.tick check_mecha_equipment(node) end diff --git a/nullius/scripts/geothermal.lua b/nullius/scripts/geothermal.lua index 1b7a4d3..a129697 100644 --- a/nullius/scripts/geothermal.lua +++ b/nullius/scripts/geothermal.lua @@ -1,10 +1,10 @@ function init_geothermal() - global.nullius_stirling_buckets = {} + storage.nullius_stirling_buckets = {} for i=0,442 do - global.nullius_stirling_buckets[i] = { } - global.nullius_stirling_buckets[i][1] = { } - global.nullius_stirling_buckets[i][2] = { } - global.nullius_stirling_buckets[i][3] = { } + storage.nullius_stirling_buckets[i] = { } + storage.nullius_stirling_buckets[i][1] = { } + storage.nullius_stirling_buckets[i][2] = { } + storage.nullius_stirling_buckets[i][3] = { } end end @@ -12,9 +12,11 @@ function destroy_stirling_engine(entry) if ((entry.heat ~= nil) and (entry.heat.valid)) then entry.heat.destroy() end - rendering.destroy(entry.turbine) + + entry.turbine.destroy() if (entry.shadow ~= 0) then - rendering.destroy(entry.shadow) + rendering.get_object_by_id(entry.shadow).destroy() + --entry.shadow.destroy() end end @@ -51,17 +53,18 @@ function update_engine(e, threshold, ratio, limit, speed) e.last_offset = offs e.last_speed = aspeed - rendering.set_animation_speed(e.turbine, aspeed) - rendering.set_animation_offset(e.turbine, offs) + e.turbine.animation_speed = aspeed + e.turbine.animation_offset = offs if (e.shadow ~= 0) then - rendering.destroy(e.shadow) + -- rendering.destroy(e.shadow) + rendering.get_object_by_id(e.shadow).destroy() e.shadow = 0 end end end function update_geothermal() - local bucket = global.nullius_stirling_buckets[game.tick % 443] + local bucket = storage.nullius_stirling_buckets[game.tick % 443] for i,e in pairs(bucket[1]) do if (e.electric.valid) then update_engine(e, 120, 200000, 13333.33, 0.5) @@ -131,14 +134,14 @@ function build_stirling_engine(entity, level) entity.electric_buffer_size = (bsz * 1000000) end - script.register_on_entity_destroyed(entity) + script.register_on_object_destroyed(entity) local turbine = rendering.draw_animation{ animation = "nullius-stirling-"..orientation.."-turbine-"..level, target = position, surface = surface, animation_speed = 0, render_layer = "lower-object-above-shadow"} local unit = entity.unit_number - local bucket = global.nullius_stirling_buckets[unit % 443] + local bucket = storage.nullius_stirling_buckets[unit % 443] bucket[level][unit] = { electric = entity, heat = heat, @@ -150,7 +153,7 @@ function build_stirling_engine(entity, level) end function remove_stirling_unit(unit, died, level) - local bucket = global.nullius_stirling_buckets[unit % 443] + local bucket = storage.nullius_stirling_buckets[unit % 443] local entry = bucket[level][unit] if entry == nil then return end @@ -176,7 +179,7 @@ function remove_stirling_engine(entity, died, level) end function destroyed_stirling_engine(unit) - local bucket = global.nullius_stirling_buckets[unit % 443] + local bucket = storage.nullius_stirling_buckets[unit % 443] for lvl=1,3 do local entry = bucket[lvl][unit] if (entry ~= nil) then diff --git a/nullius/scripts/landfill.lua b/nullius/scripts/landfill.lua index 686851e..9539412 100644 --- a/nullius/scripts/landfill.lua +++ b/nullius/scripts/landfill.lua @@ -136,7 +136,7 @@ local function landfill_map(fillname, goalname) end if ((variation == nil) or (variation < 1) or (variation > 9)) then - local proto = game.tile_prototypes[goalname] + local proto = prototypes.tile[goalname] if (proto ~= nil) then variation = (proto.layer % 9) + 1 else @@ -190,7 +190,7 @@ local function landfill_map(fillname, goalname) end end - if ((newname == nil) or (game.tile_prototypes[newname] == nil)) then + if ((newname == nil) or (prototypes.tile[newname] == nil)) then newname = fillname end return newname @@ -221,13 +221,16 @@ function blank_surface(surface, newname) richness = 0 } - for tn, _ in pairs(game.tile_prototypes) do + for tn, _ in pairs(prototypes.tile) do if tn:find("water") then mapgen.property_expression_names["tile:"..tn..":probability"] = -200 end end game.create_surface(newname, mapgen) + for _, force in pairs(game.forces) do + force.set_surface_hidden(newname, true) + end return game.surfaces[newname] end @@ -685,7 +688,7 @@ function beach_tile(oldtile) local variation = tonumber(string.sub(oldtile, -1, -1)) local newvar = math.floor((variation + 1) / 2) local sandname = (string.sub(oldtile, 1, -7) .. "sand-" .. newvar) - if (game.tile_prototypes[sandname] ~= nil) then + if (prototypes.tile[sandname] ~= nil) then return sandname end end @@ -1105,7 +1108,7 @@ function grass_area(surface, center, fillsurface) local grass_matrix = init_grass_matrix() local land_tiles = surface.find_tiles_filtered{ - area=a128, collision_mask="ground-tile"} + area=a128, collision_mask="ground_tile"} local candidates = { } local candtiles = { } local candnum = 0 @@ -1258,9 +1261,9 @@ end function update_grass() - if (global.nullius_grass_queue == nil) then return end + if (storage.nullius_grass_queue == nil) then return end if ((game.tick % 3) ~= 1) then return end - local q = global.nullius_grass_queue[global.nullius_grass_head] + local q = storage.nullius_grass_queue[storage.nullius_grass_head] local qx = q.center.x / 32 local qy = q.center.y / 32 local fs = q.fillsurface @@ -1271,10 +1274,10 @@ function update_grass() local chunkbound = {x=(qx+i), y=(qy+j)} if (not (fs.is_chunk_generated(chunkbound) and qs.is_chunk_generated(chunkbound))) then - if (global.nullius_grass_timer < 20) then - global.nullius_grass_timer = global.nullius_grass_timer + 1 + if (storage.nullius_grass_timer < 20) then + storage.nullius_grass_timer = storage.nullius_grass_timer + 1 else - global.nullius_grass_timer = 0 + storage.nullius_grass_timer = 0 fs.force_generate_chunk_requests() end return @@ -1290,10 +1293,10 @@ function update_grass() bump_mission_goal(4, score, q.force) end - global.nullius_grass_queue[global.nullius_grass_head] = nil - global.nullius_grass_head = global.nullius_grass_head + 1 - global.nullius_grass_timer = 0 - if (global.nullius_grass_head > global.nullius_grass_tail) then - global.nullius_grass_queue = nil + storage.nullius_grass_queue[storage.nullius_grass_head] = nil + storage.nullius_grass_head = storage.nullius_grass_head + 1 + storage.nullius_grass_timer = 0 + if (storage.nullius_grass_head > storage.nullius_grass_tail) then + storage.nullius_grass_queue = nil end end diff --git a/nullius/scripts/landing.lua b/nullius/scripts/landing.lua index f17c6d4..c3f2087 100644 --- a/nullius/scripts/landing.lua +++ b/nullius/scripts/landing.lua @@ -97,7 +97,7 @@ end function landing_site(surface, loc, frc) for _, entity in pairs (surface.find_entities_filtered{ area = {{loc.x - 32, loc.y - 24}, {loc.x + 32, loc.y + 24}}, - force = "neutral", collision_mask = "player-layer"}) do + force = "neutral", collision_mask = "player"}) do if entity.valid then entity.destroy() end diff --git a/nullius/scripts/migrate.lua b/nullius/scripts/migrate.lua index 5cb04e9..9ea7527 100644 --- a/nullius/scripts/migrate.lua +++ b/nullius/scripts/migrate.lua @@ -1,6 +1,6 @@ function init_legacy_recipes(force) - if (global.nullius_legacy == nil) then return end - local legacy = global.nullius_legacy[force.index] + if (storage.nullius_legacy == nil) then return end + local legacy = storage.nullius_legacy[force.index] if (legacy == nil) then return end for recipename, techname in pairs(legacy) do if (force.technologies[techname].researched and @@ -12,13 +12,13 @@ end local function legacy_recipe(force, techname, recipename) if (not force.technologies[techname].researched) then return end - if (global.nullius_legacy == nil) then - global.nullius_legacy = { } + if (storage.nullius_legacy == nil) then + storage.nullius_legacy = { } end - if (global.nullius_legacy[force.index] == nil) then - global.nullius_legacy[force.index] = { } + if (storage.nullius_legacy[force.index] == nil) then + storage.nullius_legacy[force.index] = { } end - global.nullius_legacy[force.index]["nullius-legacy-"..recipename] = techname + storage.nullius_legacy[force.index]["nullius-legacy-"..recipename] = techname end local function legacy_recipe_all(techname, recipename) @@ -146,6 +146,21 @@ function migrate_version(event) local version = parse_version(version_info.old_version) if (version == nil) then return end + if(version >= 20000) then return end + for _,bucket in pairs(storage.nullius_turbine_buckets) do + for _,t in pairs(bucket.turbines) do + t.blade = rendering.get_object_by_id(t.blade) + t.shadow = rendering.get_object_by_id(t.shadow) + end + end + for _,engine_bucket in pairs(storage.nullius_stirling_buckets) do + for _,level in pairs(engine_bucket) do + for _,unit in pairs(level) do + unit.turbine = rendering.get_object_by_id(unit.turbine) + end + end + end + if (version >= 10901) then return end legacy_recipe_all("nullius-lithium-production", "lithium-chloride") legacy_recipe_all("nullius-lithium-production", "boxed-lithium-chloride") @@ -174,16 +189,16 @@ function migrate_version(event) "nullius-genetic-archive-1", "nullius-genetic-archive-2" }) if (version >= 10700) then return end - global.nullius_alignment = false + storage.nullius_alignment = false init_alignment() added_techs({"nullius-nuclear-power-2", "nullius-evolution-1", "nullius-evolution-2", "nullius-evolution-3", "nullius-evolution-4"}) if (version >= 10600) then return end - if ((global.nullius_mission_status ~= nil) and - (global.nullius_mission_count[13] == nil)) then - global.nullius_mission_count[12] = 0 - global.nullius_mission_status[12] = 0 + if ((storage.nullius_mission_status ~= nil) and + (storage.nullius_mission_count[13] == nil)) then + storage.nullius_mission_count[12] = 0 + storage.nullius_mission_status[12] = 0 end legacy_recipe_all("nullius-organic-chemistry-6", "plastic-pex") legacy_recipe_all("nullius-organic-chemistry-6", "boxed-plastic-pex") diff --git a/nullius/scripts/mirror.lua b/nullius/scripts/mirror.lua index b5dc35a..3efb4ff 100644 --- a/nullius/scripts/mirror.lua +++ b/nullius/scripts/mirror.lua @@ -7,7 +7,7 @@ rotate_right = { function update_build_statistics(entity, force, deconstruct) - force.entity_build_count_statistics.on_flow(entity.name, + force.get_entity_build_count_statistics("nauvis").on_flow(entity.name, ((deconstruct and -1) or 1)) end @@ -31,7 +31,7 @@ end function replace_fluid_entity(entity, newname, force, dir) - if (game.entity_prototypes[newname] == nil) then return nil end + if (prototypes.entity[newname] == nil) then return nil end if (dir == nil) then dir = entity.direction end if (entity.type == "entity-ghost") then local pos = entity.position @@ -172,24 +172,24 @@ local function match_pipette(pipette, player, event) end function check_pipette(event) - if ((event == nil) or (global.nullius_pipette == nil)) then return nil end + if ((event == nil) or (storage.nullius_pipette == nil)) then return nil end local player = game.players[event.player_index] if ((player == nil) or (not player.valid)) then return nil end - local pipette = global.nullius_pipette[player.index] + local pipette = storage.nullius_pipette[player.index] if (pipette == nil) then return nil end local ret = match_pipette(pipette, player, event) if (ret ~= nil) then return ret end - global.nullius_pipette[player.index] = nil + storage.nullius_pipette[player.index] = nil return nil end function pipette_event(event) local player = game.players[event.player_index] if ((player == nil) or (not player.valid)) then return end - if (global.nullius_pipette == nil) then - global.nullius_pipette = { } + if (storage.nullius_pipette == nil) then + storage.nullius_pipette = { } end - global.nullius_pipette[player.index] = nil + storage.nullius_pipette[player.index] = nil local target = player.selected if ((target == nil) or (not target.valid)) then return end @@ -207,7 +207,7 @@ function pipette_event(event) if (item.place_result.name == proto.name) then return end if (string.sub(proto.name, 1, 8) ~= "nullius-") then return end - global.nullius_pipette[player.index] = { + storage.nullius_pipette[player.index] = { item = item, entity = proto, tick = event.tick diff --git a/nullius/scripts/mission.lua b/nullius/scripts/mission.lua index 6bf42ca..f657041 100644 --- a/nullius/scripts/mission.lua +++ b/nullius/scripts/mission.lua @@ -23,7 +23,7 @@ function update_mission_panel(player) player.gui.left.nullius_mission_panel.destroy() end - if (global.nullius_mission_show[player.index]) then + if (storage.nullius_mission_show[player.index]) then local gui = player.gui.left.add({type = "frame", name = "nullius_mission_panel", direction = "vertical"}) gui.style.bottom_padding = 8 @@ -33,18 +33,18 @@ function update_mission_panel(player) gui.add({type = "table", name = "table", column_count = 1}) gui.table.add({type = "label", name = "mission_overall", caption = {"", objective_locale(14), ": ", - global.nullius_mission_status[14], "%"}, + storage.nullius_mission_status[14], "%"}, tooltip = {"objective-description.nullius-overall"}}) - local oxygen = global.nullius_mission_status[2] + local oxygen = storage.nullius_mission_status[2] for i = 1, 13 do local str = nil - if (global.nullius_mission_status[i] < 100) then + if (storage.nullius_mission_status[i] < 100) then str = {"", objective_locale(i), ": ", - global.nullius_mission_status[i], "%"} + storage.nullius_mission_status[i], "%"} elseif ((i >= 3) and (i <= 5) and (oxygen < 100) and (oxygen >= (i * 8))) then - local s = math.floor(global.nullius_mission_status[i] + 0.5) + local s = math.floor(storage.nullius_mission_status[i] + 0.5) local m = s - 100 if (i == 3) then m = (m / 100) @@ -59,7 +59,7 @@ function update_mission_panel(player) local r = 0.96 - (0.7 * m) + a local g = 0.96 - (0.7 * (1 - m)) + a str = {"", "[color="..r..","..g..",0.4]", objective_locale(i), ": ", - math.floor(global.nullius_mission_status[i] + 0.5), "%[/color]"} + math.floor(storage.nullius_mission_status[i] + 0.5), "%[/color]"} end if (str ~= nil) then @@ -67,8 +67,8 @@ function update_mission_panel(player) name = "mission_"..objective_name[i], caption = str, tooltip = {"objective-description.nullius-"..objective_name[i]}}) if ((i == 2) and (oxygen >= 16) and - (global.nullius_vent_total ~= nil)) then - local total = math.floor(global.nullius_vent_total / 1000) + (storage.nullius_vent_total ~= nil)) then + local total = math.floor(storage.nullius_vent_total / 1000) local m = total local suffix = "kilo" local scale = math.abs(total) @@ -100,14 +100,14 @@ function update_mission_panel(player) end function update_mission_player(player) - if (global.nullius_mission_status ~= nil) then - if (global.nullius_mission_complete) then - global.nullius_mission_show[player.index] = false + if (storage.nullius_mission_status ~= nil) then + if (storage.nullius_mission_complete) then + storage.nullius_mission_show[player.index] = false if mod_gui.get_button_flow(player).nullius_mission_button then mod_gui.get_button_flow(player).nullius_mission_button.destroy() end - elseif (global.nullius_mission_show[player.index] == nil) then - global.nullius_mission_show[player.index] = true + elseif (storage.nullius_mission_show[player.index] == nil) then + storage.nullius_mission_show[player.index] = true if mod_gui.get_button_flow(player).nullius_mission_button then mod_gui.get_button_flow(player).nullius_mission_button.destroy() end @@ -126,23 +126,23 @@ local function update_mission_global() end function init_mission_global() - if (global.nullius_mission_status == nil) then return end + if (storage.nullius_mission_status == nil) then return end for i = 1, 14 do - if (global.nullius_mission_count[i] == nil) then - global.nullius_mission_count[i] = 0 - global.nullius_mission_status[i] = 0 + if (storage.nullius_mission_count[i] == nil) then + storage.nullius_mission_count[i] = 0 + storage.nullius_mission_status[i] = 0 end end update_mission_global() end function set_mission_goal(goal, amount, force) - if (global.nullius_mission_complete) then return end + if (storage.nullius_mission_complete) then return end local mission_target = {10, 125, 1800, 12000000, 32000, 750, 320, 60, 2500000, 20, 12, 3000000, 12000000} - local count = global.nullius_mission_count - local status = global.nullius_mission_status + local count = storage.nullius_mission_count + local status = storage.nullius_mission_status local oldstatus = status[goal] count[goal] = math.min(math.max(amount, 0), (mission_target[goal] * 4)) status[goal] = (math.floor(100 * @@ -153,7 +153,7 @@ function set_mission_goal(goal, amount, force) local grass_oxygen = (30 * count[4]) / (count[4] + (mission_target[4] / 2)) local tree_oxygen = (30 * count[5]) / (count[5] + (mission_target[5] / 2)) local total_oxygen = algae_oxygen + grass_oxygen + tree_oxygen - global.nullius_oxygen_bio_target = (108 * total_oxygen) / (150 - total_oxygen) + storage.nullius_oxygen_bio_target = (108 * total_oxygen) / (150 - total_oxygen) end local finished = false @@ -168,17 +168,17 @@ function set_mission_goal(goal, amount, force) objective_locale(goal)}, {1, 0.75, 0.4}) end - local overall = global.nullius_mission_status[2] + local overall = storage.nullius_mission_status[2] for i = 1, 13 do - overall = overall + math.min(100, global.nullius_mission_status[i]) + overall = overall + math.min(100, storage.nullius_mission_status[i]) end - global.nullius_mission_status[14] = (math.floor(100 * (overall / 14)) / 100) + storage.nullius_mission_status[14] = (math.floor(100 * (overall / 14)) / 100) if (finished and (force ~= nil)) then - global.nullius_mission_complete = true + storage.nullius_mission_complete = true end update_mission_global() - if (global.nullius_mission_complete) then + if (storage.nullius_mission_complete) then if remote.interfaces["better-victory-screen"] and remote.interfaces["better-victory-screen"]["trigger_victory"] then remote.call("better-victory-screen", "trigger_victory", force) @@ -193,7 +193,7 @@ end function bump_mission_goal(goal, amount, force) if (amount ~= 0) then create_mission(force) - set_mission_goal(goal, (global.nullius_mission_count[goal] + amount), force) + set_mission_goal(goal, (storage.nullius_mission_count[goal] + amount), force) end end @@ -213,21 +213,21 @@ local oxygen_equivalent = { } function update_oxygen() - if (global.nullius_mission_status == nil) then return end - if (global.nullius_mission_complete) then return end - local prev_status = global.nullius_mission_status[2] + if (storage.nullius_mission_status == nil) then return end + if (storage.nullius_mission_complete) then return end + local prev_status = storage.nullius_mission_status[2] if (prev_status >= 100) then return end - local current = (((global.nullius_oxygen_bio_current * 8191) + - global.nullius_oxygen_bio_target) / 8192) - global.nullius_oxygen_bio_current = current + local current = (((storage.nullius_oxygen_bio_current * 8191) + + storage.nullius_oxygen_bio_target) / 8192) + storage.nullius_oxygen_bio_current = current local vent_best = 0 local vent_force = nil - local vent_total = global.nullius_oxygen_legacy + local vent_total = storage.nullius_oxygen_legacy for _, force in pairs(game.forces) do if (force.research_enabled) then - local stats = force.fluid_production_statistics + local stats = force.get_fluid_production_statistics("nauvis") local vent_score = 0 for gasname,multiplier in pairs(oxygen_equivalent) do vent_score = (vent_score + ((stats.get_input_count(gasname) - @@ -242,7 +242,7 @@ function update_oxygen() end if (vent_force == nil) then return end - global.nullius_vent_total = vent_total + storage.nullius_vent_total = vent_total if (vent_total > 0) then vent_total = math.sqrt(vent_total) / 1600 else @@ -261,7 +261,7 @@ function migrate_oxygen() local consumed = 0 for _, force in pairs(game.forces) do if (force.research_enabled) then - local stats = force.fluid_production_statistics + local stats = force.get_fluid_production_statistics("nauvis") for gasname,multiplier in pairs(oxygen_equivalent) do produced = produced + stats.get_input_count(gasname) consumed = consumed + stats.get_output_count(gasname) @@ -269,36 +269,36 @@ function migrate_oxygen() end end - global.nullius_oxygen_legacy = math.max(0, (((2 * consumed) - produced)/3)) - if (global.nullius_mission_status == nil) then return end - global.nullius_oxygen_bio_target = (global.nullius_mission_count[2] / 1.5) - global.nullius_oxygen_bio_current = (global.nullius_oxygen_bio_target / 2) - - if (global.nullius_mission_complete) then return end - if (global.nullius_mission_status[2] >= 100) then return end - local score = (global.nullius_oxygen_bio_current + - (math.sqrt(global.nullius_oxygen_legacy) / 1800)) - global.nullius_mission_count[2] = math.min(score, 150) - global.nullius_mission_status[2] = (math.floor(100 * + storage.nullius_oxygen_legacy = math.max(0, (((2 * consumed) - produced)/3)) + if (storage.nullius_mission_status == nil) then return end + storage.nullius_oxygen_bio_target = (storage.nullius_mission_count[2] / 1.5) + storage.nullius_oxygen_bio_current = (storage.nullius_oxygen_bio_target / 2) + + if (storage.nullius_mission_complete) then return end + if (storage.nullius_mission_status[2] >= 100) then return end + local score = (storage.nullius_oxygen_bio_current + + (math.sqrt(storage.nullius_oxygen_legacy) / 1800)) + storage.nullius_mission_count[2] = math.min(score, 150) + storage.nullius_mission_status[2] = (math.floor(100 * math.min(99, (score / 1.8))) / 100) end function create_mission(force) - if (global.nullius_mission_status == nil) then - global.nullius_mission_status = {} - global.nullius_mission_count = {} - global.nullius_mission_show = {} - global.nullius_mission_complete = false - global.nullius_oxygen_bio_current = 0 - global.nullius_oxygen_bio_target = 0 - if (global.nullius_oxygen_legacy == nil) then - global.nullius_oxygen_legacy = 0 + if (storage.nullius_mission_status == nil) then + storage.nullius_mission_status = {} + storage.nullius_mission_count = {} + storage.nullius_mission_show = {} + storage.nullius_mission_complete = false + storage.nullius_oxygen_bio_current = 0 + storage.nullius_oxygen_bio_target = 0 + if (storage.nullius_oxygen_legacy == nil) then + storage.nullius_oxygen_legacy = 0 end for i = 1, 14 do - global.nullius_mission_count[i] = 0 - global.nullius_mission_status[i] = 0 + storage.nullius_mission_count[i] = 0 + storage.nullius_mission_status[i] = 0 end update_mission_global() @@ -326,10 +326,10 @@ end function gui_clicked(event) if event.element.valid and event.element.name == "nullius_mission_button" then local player = game.players[event.player_index] - if (global.nullius_mission_show[event.player_index]) then - global.nullius_mission_show[event.player_index] = false + if (storage.nullius_mission_show[event.player_index]) then + storage.nullius_mission_show[event.player_index] = false else - global.nullius_mission_show[event.player_index] = true + storage.nullius_mission_show[event.player_index] = true end update_mission_player(player) end diff --git a/nullius/scripts/solar.lua b/nullius/scripts/solar.lua index f42dbd9..ced488a 100644 --- a/nullius/scripts/solar.lua +++ b/nullius/scripts/solar.lua @@ -1,8 +1,8 @@ function init_solar() - if (global.nullius_solar_buckets == nil) then - global.nullius_solar_buckets = {} + if (storage.nullius_solar_buckets == nil) then + storage.nullius_solar_buckets = {} for i=0,540 do - global.nullius_solar_buckets[i] = {} + storage.nullius_solar_buckets[i] = {} end end end @@ -14,10 +14,10 @@ local solar_values = { } function update_solar() - if (global.nullius_solar_buckets == nil) then return end + if (storage.nullius_solar_buckets == nil) then return end local tick = game.tick * 382 for j=0,1 do - local bucket = global.nullius_solar_buckets[(tick + j) % 541] + local bucket = storage.nullius_solar_buckets[(tick + j) % 541] for i,t in pairs(bucket) do if (t.collector.valid) then local surface = t.collector.surface @@ -57,7 +57,7 @@ end function build_solar_collector(entity, level) if ((level < 1) or (level > 3)) then return end init_solar() - local bucket = global.nullius_solar_buckets[entity.unit_number % 541] + local bucket = storage.nullius_solar_buckets[entity.unit_number % 541] bucket[entity.unit_number] = { collector = entity, level = level @@ -65,7 +65,7 @@ function build_solar_collector(entity, level) end function remove_solar_collector(entity, died, level) - if (global.nullius_solar_buckets == nil) then return end - local bucket = global.nullius_solar_buckets[entity.unit_number % 541] + if (storage.nullius_solar_buckets == nil) then return end + local bucket = storage.nullius_solar_buckets[entity.unit_number % 541] bucket[entity.unit_number] = nil end diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index 3605f80..3bd953c 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -11,37 +11,37 @@ end function broken_disabled(name) - if (global.nullius_broken_status == nil) then return true end - local count = global.nullius_broken_status[name] + if (storage.nullius_broken_status == nil) then return true end + local count = storage.nullius_broken_status[name] if ((count == nil) or (count < 1)) then return true end return false end function broken_finished(name) - global.nullius_broken_status[name] = nil + storage.nullius_broken_status[name] = nil for _, force in pairs(game.forces) do force.recipes[name].enabled = false end if (script.active_mods["Companion_Drones"] and - (global.nullius_companion_fix == nil)) then + (storage.nullius_companion_fix == nil)) then fuel_companion_drones(game.surfaces[1]) - global.nullius_companion_fix = true + storage.nullius_companion_fix = true end end function broken_crafted(name) - if (global.nullius_broken_status == nil) then + if (storage.nullius_broken_status == nil) then return end - local count = global.nullius_broken_status[name] + local count = storage.nullius_broken_status[name] if (count == nil) then return end if (count < 2) then broken_finished(name) else - global.nullius_broken_status[name] = (count - 1) + storage.nullius_broken_status[name] = (count - 1) end end @@ -55,9 +55,9 @@ local function init_tech(force) end end - if ((global.nullius_alignment ~= true) and (force.name == "player") and + if ((storage.nullius_alignment ~= true) and (force.name == "player") and force.technologies["nullius-experimental-chemistry"].researched) then - global.nullius_broken_status = nil + storage.nullius_broken_status = nil end for _, recipe in pairs(force.recipes) do @@ -114,7 +114,6 @@ local function reset_config() end init_checkpoint_prereqs() - init_productivity_recipes() update_railloader_bulk() end @@ -143,15 +142,15 @@ script.on_configuration_changed( function(event) migrate_version(event) reset_config() - init_alignment() + init_alignment() init_techs() init_mission_global() - update_all_upgrades() + update_all_upgrades() end ) local function chart_starting_area() - local r = (global.nullius_alignment or 250) + local r = (storage.nullius_alignment or 250) local force = game.forces.player local surface = game.surfaces[1] local origin = force.get_spawn_position(surface) @@ -201,7 +200,7 @@ function equip_player(player) player.insert({name="nullius-grid-battery-1", count=6}) player.insert({name="small-electric-pole", count=15}) player.insert({name="nullius-small-miner-1", count=2}) - if (global.nullius_alignment) then + if (storage.nullius_alignment) then player.insert({name="nullius-broken-align-transponder", count=1}) end end @@ -212,12 +211,12 @@ script.on_event(defines.events.on_player_created, player.remove_item{name = "burner-ore-crusher", count = 1} local intro = {"nullius-intro"} - if (not global.init_landing) then + if (not storage.init_landing) then init_alignment() - global.init_landing = true + storage.init_landing = true local surface = player.surface surface.daytime = 0.7 - if (global.nullius_alignment) then + if (storage.nullius_alignment) then intro = align_first_player_created(player) else init_broken() @@ -226,7 +225,7 @@ script.on_event(defines.events.on_player_created, landing_site(surface, {x=-5, y=-6}, player.force) equip_player(player) end - elseif (global.nullius_alignment) then + elseif (storage.nullius_alignment) then intro = align_player_created(player) else equip_player(player) @@ -246,8 +245,8 @@ script.on_event(defines.events.on_player_created, script.on_event(defines.events.on_research_finished, function(event) local techname = event.research.name - if ((global.nullius_broken_status ~= nil) and - (not global.nullius_alignment)) then + if ((storage.nullius_broken_status ~= nil) and + (not storage.nullius_alignment)) then if (techname == "nullius-experimental-chemistry") then init_techs() elseif (techname == "nullius-distillation-1") then diff --git a/nullius/scripts/turbine.lua b/nullius/scripts/turbine.lua index 7d7174d..461d3ba 100644 --- a/nullius/scripts/turbine.lua +++ b/nullius/scripts/turbine.lua @@ -33,9 +33,9 @@ function build_turbine(entity) if (not (entity.valid and entity.supports_direction)) then return end local entry = { } - if (global.nullius_turbines == nil) then - global.nullius_turbines = { } - elseif (global.nullius_turbines[entity.unit_number] == entry) then + if (storage.nullius_turbines == nil) then + storage.nullius_turbines = { } + elseif (storage.nullius_turbines[entity.unit_number] == entry) then return end @@ -49,8 +49,8 @@ function build_turbine(entity) local priority = turbine_priority(entity.name) if ((typestr == nil) or (priority == nil)) then return end - script.register_on_entity_destroyed(entity) - global.nullius_turbines[entity.unit_number] = entry + script.register_on_object_destroyed(entity) + storage.nullius_turbines[entity.unit_number] = entry local pos = entity.position entry.connector = entity.surface.create_entity{ @@ -80,10 +80,10 @@ local function destroy_if_valid(entity) end function remove_turbine(unit) - if (global.nullius_turbines == nil) then return false end - local entry = global.nullius_turbines[unit] + if (storage.nullius_turbines == nil) then return false end + local entry = storage.nullius_turbines[unit] if (entry == nil) then return false end - global.nullius_turbines[unit] = nil + storage.nullius_turbines[unit] = nil destroy_if_valid(entry.connector) destroy_if_valid(entry.generator) destroy_if_valid(entry.vent) @@ -95,7 +95,7 @@ local function replace_turbine(entity, force, newname) local furnace_contents = save_fluid_contents(entity) local connector_contents = nil local generator_contents = nil - local entry = global.nullius_turbines[entity.unit_number] + local entry = storage.nullius_turbines[entity.unit_number] if (entry ~= nil) then connector_contents = save_fluid_contents(entry.connector) generator_contents = save_fluid_contents(entry.generator) @@ -114,7 +114,7 @@ local function replace_turbine(entity, force, newname) build_turbine(entity) restore_fluid_contents(entity, furnace_contents) - local newentry = global.nullius_turbines[entity.unit_number] + local newentry = storage.nullius_turbines[entity.unit_number] if (newentry ~= nil) then restore_fluid_contents(newentry.connector, connector_contents) restore_fluid_contents(newentry.generator, generator_contents) @@ -284,20 +284,20 @@ script.on_event(defines.events.on_entity_settings_pasted, entity_paste_event) function dolly_moved_entity(event) - if (global.nullius_turbines == nil) then return end + if (storage.nullius_turbines == nil) then return end if (event == nil) then return end local entity = event.moved_entity if ((entity == nil) or (not entity.valid)) then return end if (string.sub(entity.name, 1, 16) ~= "nullius-turbine-") then return end - local entry = global.nullius_turbines[entity.unit_number] + local entry = storage.nullius_turbines[entity.unit_number] if (entry == nil) then return end replace_turbine(entity, force, nil) end function convert_all_turbines() - if (global.nullius_turbines == nil) then - global.nullius_turbines = { } + if (storage.nullius_turbines == nil) then + storage.nullius_turbines = { } end for _,surface in pairs(game.surfaces) do local turbines = surface.find_entities_filtered{name= diff --git a/nullius/scripts/wind.lua b/nullius/scripts/wind.lua index 514d505..26da65c 100644 --- a/nullius/scripts/wind.lua +++ b/nullius/scripts/wind.lua @@ -7,25 +7,25 @@ local multiplier = (settings.startup["nullius-wind-turbine-energy-multiplier"].v local base_wind_power = {1500000*multiplier, 4000000*multiplier, 12000000*multiplier} function init_wind() - global.nullius_wind_orientation = 4 - global.nullius_wind_factor = 0.7 - global.nullius_wind_speed = 0.4 - global.nullius_wind_momentum = 0 - - global.nullius_base_power = { } - global.nullius_current_power = { } - global.nullius_animation_speed = { } + storage.nullius_wind_orientation = 4 + storage.nullius_wind_factor = 0.7 + storage.nullius_wind_speed = 0.4 + storage.nullius_wind_momentum = 0 + + storage.nullius_base_power = { } + storage.nullius_current_power = { } + storage.nullius_animation_speed = { } for i=1,3 do - global.nullius_current_power[i] = global.nullius_wind_speed * base_wind_power[i] - global.nullius_animation_speed[i] = global.nullius_wind_speed * (0.6 + (i * 0.2)) + storage.nullius_current_power[i] = storage.nullius_wind_speed * base_wind_power[i] + storage.nullius_animation_speed[i] = storage.nullius_wind_speed * (0.6 + (i * 0.2)) end - global.nullius_turbine_buckets = {} + storage.nullius_turbine_buckets = {} for i=1,921 do - global.nullius_turbine_buckets[i] = { + storage.nullius_turbine_buckets[i] = { turbines = { }, - orientation = global.nullius_wind_orientation, - last_speed = global.nullius_animation_speed[((i - 1) % 3) + 1], + orientation = storage.nullius_wind_orientation, + last_speed = storage.nullius_animation_speed[((i - 1) % 3) + 1], last_offset = ((i - 1) * 24) / 921.0 } end @@ -47,31 +47,31 @@ function recalculate_wind() local wave = discretize((wave1 * 1.2) + wave2 + wave3 + (wave4 * 0.75)) local noise = (math.random() * 3) + (math.random() * 5) - local momentum = discretize((global.nullius_wind_momentum * 0.9985) + + local momentum = discretize((storage.nullius_wind_momentum * 0.9985) + (math.random() * 0.16) - 0.08) local target = (wave + noise + momentum - 0.1) / 6 local delta = discretize((math.random() * 0.25) + 0.05) - local factor = discretize(global.nullius_wind_factor * (1 - delta) + (delta * target)) - global.nullius_wind_factor = factor - global.nullius_wind_momentum = momentum + local factor = discretize(storage.nullius_wind_factor * (1 - delta) + (delta * target)) + storage.nullius_wind_factor = factor + storage.nullius_wind_momentum = momentum if (factor <= 0) then - global.nullius_wind_speed = 0 + storage.nullius_wind_speed = 0 elseif (factor >= 1.25) then - global.nullius_wind_speed = 1 + storage.nullius_wind_speed = 1 elseif (factor >= 1) then - global.nullius_wind_speed = discretize((factor * 0.4) + 0.5) + storage.nullius_wind_speed = discretize((factor * 0.4) + 0.5) else - global.nullius_wind_speed = discretize(factor * factor * 0.9) + storage.nullius_wind_speed = discretize(factor * factor * 0.9) end - surface.wind_speed = (global.nullius_wind_speed / 20) + surface.wind_speed = (storage.nullius_wind_speed / 20) for i=1,3 do - global.nullius_current_power[i] = global.nullius_wind_speed * base_wind_power[i] - global.nullius_animation_speed[i] = discretize(global.nullius_wind_speed * (0.6 + (i * 0.2))) + storage.nullius_current_power[i] = storage.nullius_wind_speed * base_wind_power[i] + storage.nullius_animation_speed[i] = discretize(storage.nullius_wind_speed * (0.6 + (i * 0.2))) end - global.nullius_wind_orientation = math.floor((surface.wind_orientation * 8) % 8) + storage.nullius_wind_orientation = math.floor((surface.wind_orientation * 8) % 8) end function destroy_turbine(entry) @@ -88,13 +88,13 @@ function destroy_turbine(entry) entry.collision_box4.destroy() end - rendering.destroy(entry.blade) - rendering.destroy(entry.shadow) + entry.blade.destroy() + entry.shadow.destroy() end function update_turbines(ind, level) - local bucket = global.nullius_turbine_buckets[ind] - local orientation = global.nullius_wind_orientation + local bucket = storage.nullius_turbine_buckets[ind] + local orientation = storage.nullius_wind_orientation if (bucket.orientation ~= orientation) then bucket.orientation = orientation local blade_animation = "nullius-wind-blade-"..level.."-"..orientation @@ -102,14 +102,14 @@ function update_turbines(ind, level) for _,t in pairs(bucket.turbines) do if (t.base.valid) then - rendering.set_animation(t.blade, blade_animation) - rendering.set_animation(t.shadow, shadow_animation) + t.blade.animation = blade_animation + t.shadow.animation = shadow_animation end end end - local power = global.nullius_current_power[level] - local aspeed = global.nullius_animation_speed[level] + local power = storage.nullius_current_power[level] + local aspeed = storage.nullius_animation_speed[level] local tick = game.tick local frame = (tick * aspeed) local expected = ((tick * bucket.last_speed) + bucket.last_offset) @@ -122,10 +122,11 @@ function update_turbines(ind, level) for i,t in pairs(bucket.turbines) do if (t.base.valid) then t.base.power_production = power - rendering.set_animation_speed(t.blade, aspeed) - rendering.set_animation_speed(t.shadow, aspeed) - rendering.set_animation_offset(t.blade, offs) - rendering.set_animation_offset(t.shadow, offs) + + t.blade.animation_speed = aspeed + t.shadow.animation_speed = aspeed + t.blade.animation_offset = offs + t.shadow.animation_offset = offs else destroy_turbine(t) bucket.turbines[i] = nil @@ -162,8 +163,8 @@ function build_wind_turbine(entity, level) local newentity = surface.create_entity{ name = "nullius-wind-base-"..level, position = position, force = force} - newentity.power_production = global.nullius_current_power[level] - script.register_on_entity_destroyed(newentity) + newentity.power_production = storage.nullius_current_power[level] + script.register_on_object_destroyed(newentity) local collision1 = create_wind_collision(surface, position, force, "horizontal", 14.5, 17, 16, 13.5) local collision2 = create_wind_collision(surface, position, force, "vertical", 17, -14.5, 13.5, 16) @@ -171,7 +172,7 @@ function build_wind_turbine(entity, level) local collision4 = create_wind_collision(surface, position, force, "vertical", -17, 14.5, 13.5, 16) local ind = level + ((newentity.unit_number % 307) * 3) - local bucket = global.nullius_turbine_buckets[ind] + local bucket = storage.nullius_turbine_buckets[ind] local scale = 0.4 + (level * 0.2) bucket.turbines[newentity.unit_number] = { @@ -199,7 +200,7 @@ end function remove_wind_unit(unit, died, level) local ind = level + ((unit % 307) * 3) - local bucket = global.nullius_turbine_buckets[ind] + local bucket = storage.nullius_turbine_buckets[ind] local entry = bucket.turbines[unit] if entry == nil then return end @@ -229,7 +230,7 @@ end function destroyed_wind_turbine(unit) local offset = ((unit % 307) * 3) for lvl=1,3 do - local entry = global.nullius_turbine_buckets[lvl + offset].turbines[unit] + local entry = storage.nullius_turbine_buckets[lvl + offset].turbines[unit] if (entry ~= nil) then remove_wind_unit(unit, false, lvl) return true From 73a43badcb7eb074566d4572ea5a30df6101f657 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 25 Jul 2025 14:24:34 +0200 Subject: [PATCH 004/236] Updated items --- nullius/prototypes/item/alignment.lua | 44 +- nullius/prototypes/item/biology.lua | 466 ++--- nullius/prototypes/item/box_icons.lua | 10 +- nullius/prototypes/item/boxing.lua | 66 +- nullius/prototypes/item/broken.lua | 46 +- nullius/prototypes/item/buildings.lua | 713 ++++--- nullius/prototypes/item/drone.lua | 146 +- nullius/prototypes/item/equipment.lua | 846 ++++++--- nullius/prototypes/item/fluid.lua | 857 +++++---- nullius/prototypes/item/intermediate.lua | 1661 ++++++++++------- nullius/prototypes/item/landfill.lua | 198 +- nullius/prototypes/item/module.lua | 262 ++- nullius/prototypes/item/module_limitation.lua | 16 +- nullius/prototypes/item/plumbing.lua | 767 +++++--- nullius/prototypes/item/recipe.lua | 586 +++--- nullius/prototypes/item/turbine.lua | 91 +- nullius/prototypes/item/void.lua | 10 +- nullius/prototypes/item/weapon.lua | 186 +- 18 files changed, 4183 insertions(+), 2788 deletions(-) diff --git a/nullius/prototypes/item/alignment.lua b/nullius/prototypes/item/alignment.lua index af29888..43717fe 100644 --- a/nullius/prototypes/item/alignment.lua +++ b/nullius/prototypes/item/alignment.lua @@ -105,7 +105,6 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/rocket-part.png", icon_size = 64, - icon_mipmaps = 4 }}, subgroup = "alignment", order = "nullius-db", @@ -154,14 +153,13 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/piercing-shotgun-shell.png", icon_size = 64, - icon_mipmaps = 4 }}, subgroup = "alignment", order = "nullius-e", magazine_size = 100, stack_size = 20, + ammo_category = "nullius-conscription", ammo_type = { - category = "nullius-conscription", target_type = "position", action = { { @@ -185,7 +183,6 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/combat-shotgun.png", icon_size = 64, - icon_mipmaps = 4 }}, subgroup = "alignment", order = "nullius-f", @@ -209,7 +206,6 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/gun-turret.png", icon_size = 64, - icon_mipmaps = 4 }}, subgroup = "alignment", order = "nullius-g", @@ -249,7 +245,6 @@ data:extend({ { icon = "__base__/graphics/icons/rocket-part.png", icon_size = 64, - icon_mipmaps = 4 }, { icon = "__nullius__/graphics/icons/broken.png", @@ -283,7 +278,9 @@ data:extend({ {"nullius-broken-align-transponder", 1}, {"nullius-iron-wire", 1} }, - result = "nullius-align-transponder" + results = { + {type="item", name="nullius-align-transponder", amount = 1} + } }, { @@ -298,7 +295,9 @@ data:extend({ {"nullius-steel-sheet", 1}, {"nullius-plastic", 1} }, - result = "nullius-align-identification-card" + results = { + {type="item", name="nullius-align-identification-card", amount = 1} + } }, { type = "recipe", @@ -313,7 +312,9 @@ data:extend({ {"nullius-glass", 1}, {"nullius-aluminum-sheet", 1} }, - result = "nullius-align-invitation-card" + results = { + {type="item", name="nullius-align-invitation-card", amount = 1} + } }, { type = "recipe", @@ -328,7 +329,9 @@ data:extend({ {"constant-combinator", 1}, {"nullius-capacitor", 2} }, - result = "nullius-align-transponder" + results = { + {type="item", name="nullius-align-transponder", amount = 1} + } }, { type = "recipe", @@ -345,8 +348,9 @@ data:extend({ {"nullius-align-transponder", 1}, {"nullius-capacitor", 4} }, - result = "nullius-align-conscription-charge", - result_count = 3 + results = { + {type="item", name="nullius-align-conscription-charge", amount = 3} + } }, { type = "recipe", @@ -361,7 +365,9 @@ data:extend({ {"nullius-multi-tool-1", 1}, {"nullius-relay-1", 1} }, - result = "nullius-align-conscription-ray" + results = { + {type="item", name="nullius-align-conscription-ray", amount = 1} + } }, { type = "recipe", @@ -379,7 +385,9 @@ data:extend({ {"nullius-missile-launcher", 2}, {"nullius-steel-beam", 6} }, - result = "nullius-align-conscription-turret" + results = { + {type="item", name="nullius-align-conscription-turret", amount = 1} + } }, { type = "recipe", @@ -394,7 +402,9 @@ data:extend({ {"nullius-large-beacon-1", 2}, {"nullius-align-conscription-charge", 10} }, - result = "nullius-align-concordance-transmitter" + results = { + {type="item", name="nullius-align-concordance-transmitter", amount = 1} + } }, { type = "recipe", @@ -409,7 +419,9 @@ data:extend({ {"nullius-large-beacon-2", 2}, {"nullius-satellite", 1} }, - result = "nullius-align-concordance-satellite" + results = { + {type="item", name="nullius-align-concordance-satellite", amount = 1} + } } }) diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index 4aaa604..f712046 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -18,7 +18,7 @@ data:extend({ type = "item", name = "nullius-cellulose", icons = {{ - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54 }}, subgroup = "biology-material", @@ -29,7 +29,7 @@ data:extend({ type = "item", name = "nullius-fertilizer", icons = {{ - icon = "__angelsrefining__/graphics/icons/solid-mud.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", icon_size = 32 }}, subgroup = "biology-material", @@ -42,7 +42,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/coal-1.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.5, 0.5, 0.5} }}, subgroup = "biology-material", @@ -56,14 +56,14 @@ data:extend({ { type = "recipe", name = "nullius-sugar-1", - localised_name = {"", {"item-name.nullius-sugar"}, " ", 1}, + localised_name = {"", {"item-name.nullius-sugar"}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "sugar.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/glycerol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", icon_size = 72, scale = 0.3, shift = {7, -9} @@ -88,7 +88,7 @@ data:extend({ { type = "recipe", name = "nullius-sugar-2", - localised_name = {"", {"item-name.nullius-sugar"}, " ", 2}, + localised_name = {"", {"item-name.nullius-sugar"}, " ", tostring(2)}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -254,12 +254,12 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-12, -10} } @@ -327,7 +327,7 @@ data:extend({ { type = "recipe", name = "nullius-protocell-1", - localised_name = {"", {"fluid-name.nullius-protocell"}, " ", 1}, + localised_name = {"", {"fluid-name.nullius-protocell"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-fb", @@ -348,7 +348,7 @@ data:extend({ { type = "recipe", name = "nullius-protocell-2", - localised_name = {"", {"fluid-name.nullius-protocell"}, " ", 2}, + localised_name = {"", {"fluid-name.nullius-protocell"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "protocell.png", @@ -378,10 +378,10 @@ data:extend({ { type = "recipe", name = "nullius-fertilizer", - localised_name = {"", {"item-name.nullius-fertilizer"}, " ", 1}, + localised_name = {"", {"item-name.nullius-fertilizer"}, " ", tostring(1)}, icons = { { - icon = "__angelsrefining__/graphics/icons/solid-mud.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", icon_size = 32 }, { @@ -408,16 +408,17 @@ data:extend({ {type="item", name="nullius-algae", amount=4}, {type="item", name="nullius-cellulose", amount=5} }, - result = "nullius-fertilizer", - result_count = 6 + results = { + {type = "item", name = "nullius-fertilizer", amount = 6} + } }, { type = "recipe", name = "nullius-fertilizer-2", - localised_name = {"", {"item-name.nullius-fertilizer"}, " ", 2}, + localised_name = {"", {"item-name.nullius-fertilizer"}, " ", tostring(2)}, icons = { { - icon = "__angelsrefining__/graphics/icons/solid-mud.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", icon_size = 32 }, { @@ -444,17 +445,18 @@ data:extend({ {type="item", name="nullius-wood-chip", amount=12}, {type="item", name="nullius-fish", amount=1} }, - result = "nullius-fertilizer", - result_count = 16 + results = { + {type = "item", name = "nullius-fertilizer", amount = 16} + } }, { type = "recipe", name = "nullius-fatty-acid-pyrolysis", localised_name = {"recipe-name.nullius-pyrolysis", {"fluid-name.nullius-fatty-acids"}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/propene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]} ), enabled = false, @@ -513,10 +515,10 @@ data:extend({ name = "nullius-glycerol-reforming", localised_name = {"recipe-name.nullius-reforming", {"fluid-name.nullius-glycerol"}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/glycerol.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -558,7 +560,7 @@ data:extend({ { type = "recipe", name = "nullius-bacteria-genome", - localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", 1}, + localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-bb", @@ -578,7 +580,7 @@ data:extend({ { type = "recipe", name = "nullius-bacteria-genome-2", - localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", 2}, + localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "bacteria.png", @@ -594,7 +596,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} @@ -623,7 +625,7 @@ data:extend({ { type = "recipe", name = "nullius-bacteria-1", - localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", 1}, + localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "bacteria.png", @@ -660,7 +662,7 @@ data:extend({ { type = "recipe", name = "nullius-bacteria-2", - localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", 2}, + localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "ore-flotation", @@ -683,7 +685,7 @@ data:extend({ { type = "recipe", name = "nullius-bacteria-3", - localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", 3}, + localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", tostring(3)}, icons = { { icon = ICONPATH .. "bacteria.png", @@ -807,7 +809,7 @@ data:extend({ shift = {-9, -11} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/glycerol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", icon_size = 72, scale = 0.23, shift = {-8, 12} @@ -853,7 +855,7 @@ data:extend({ shift = {-8, -10} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/glycerol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", icon_size = 72, scale = 0.21, shift = {-7, 11} @@ -1015,7 +1017,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-genome", - localised_name = {"", {"item-name.nullius-algae-genome"}, " ", 1}, + localised_name = {"", {"item-name.nullius-algae-genome"}, " ", tostring(1)}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -1035,7 +1037,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-genome-2", - localised_name = {"", {"item-name.nullius-algae-genome"}, " ", 2}, + localised_name = {"", {"item-name.nullius-algae-genome"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "algae.png", @@ -1051,7 +1053,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} @@ -1078,7 +1080,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-progenitor", - localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", 1}, + localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-cb", @@ -1100,7 +1102,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-progenitor-2", - localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", 2}, + localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "algae-progenitor.png", @@ -1135,7 +1137,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-1", - localised_name = {"", {"item-name.nullius-algae"}, " ", 1}, + localised_name = {"", {"item-name.nullius-algae"}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "algae.png", @@ -1169,7 +1171,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-2", - localised_name = {"", {"item-name.nullius-algae"}, " ", 2}, + localised_name = {"", {"item-name.nullius-algae"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "ore-flotation", @@ -1191,7 +1193,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-3", - localised_name = {"", {"item-name.nullius-algae"}, " ", 3}, + localised_name = {"", {"item-name.nullius-algae"}, " ", tostring(3)}, icons = { { icon = ICONPATH .. "algae.png", @@ -1258,13 +1260,13 @@ data:extend({ scale = 0.4 }, { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, scale = 0.48, shift = {11, 10} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", icon_size = 72, scale = 0.2, shift = {-10, 10} @@ -1340,7 +1342,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -1385,7 +1387,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -1482,7 +1484,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-genome", - localised_name = {"", {"item-name.nullius-grass-genome"}, " ", 1}, + localised_name = {"", {"item-name.nullius-grass-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 30, @@ -1501,7 +1503,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-genome-2", - localised_name = {"", {"item-name.nullius-grass-genome"}, " ", 2}, + localised_name = {"", {"item-name.nullius-grass-genome"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "grass.png", @@ -1517,7 +1519,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} @@ -1545,7 +1547,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-progenitor", - localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", 1}, + localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-cb", @@ -1567,7 +1569,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-progenitor-2", - localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", 2}, + localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "grass-progenitor.png", @@ -1602,7 +1604,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-1", - localised_name = {"", {"item-name.nullius-grass"}, " ", 1}, + localised_name = {"", {"item-name.nullius-grass"}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "grass.png", @@ -1636,7 +1638,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-2", - localised_name = {"", {"item-name.nullius-grass"}, " ", 2}, + localised_name = {"", {"item-name.nullius-grass"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "nullius-water-treatment", @@ -1659,7 +1661,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-3", - localised_name = {"", {"item-name.nullius-grass"}, " ", 3}, + localised_name = {"", {"item-name.nullius-grass"}, " ", tostring(3)}, icons = { { icon = ICONPATH .. "grass.png", @@ -1739,7 +1741,7 @@ data:extend({ localised_name = {"recipe-name.nullius-grass-seed-milling"}, icons = { { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54 }, { @@ -1783,7 +1785,7 @@ data:extend({ icon_size = 64 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.5333 }, @@ -1828,7 +1830,7 @@ data:extend({ data.raw.fluid["nullius-carbon-dioxide"].icons[3], data.raw.fluid["nullius-carbon-dioxide"].icons[4], { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.32, shift = {-8, -8} @@ -1862,7 +1864,7 @@ data:extend({ data.raw.fluid["nullius-carbon-dioxide"].icons[3], data.raw.fluid["nullius-carbon-dioxide"].icons[4], { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.29, shift = {-7, -7} @@ -1886,15 +1888,15 @@ data:extend({ type = "recipe", name = "nullius-cellulose-pyrolysis", localised_name = {"", {"recipe-name.nullius-pyrolysis", - {"item-name.nullius-cellulose"}}, " ", 1}, + {"item-name.nullius-cellulose"}}, " ", tostring(1)}, icons = { { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.32, shift = {-8, -8} @@ -1918,7 +1920,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-cellulose-pyrolysis", localised_name = {"recipe-name.nullius-boxed", {"", {"recipe-name.nullius-pyrolysis", - {"item-name.nullius-cellulose"}}, " ", 1}}, + {"item-name.nullius-cellulose"}}, " ", tostring(1)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -1927,11 +1929,11 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.29, shift = {-7, -7} @@ -1955,14 +1957,14 @@ data:extend({ type = "recipe", name = "nullius-cellulose-pyrolysis-2", localised_name = {"", {"recipe-name.nullius-pyrolysis", - {"item-name.nullius-cellulose"}}, " ", 2}, + {"item-name.nullius-cellulose"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "carbon-fiber.png", icon_size = 128 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.37, shift = {-7, -7} @@ -1987,7 +1989,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-cellulose-pyrolysis-2", localised_name = {"recipe-name.nullius-boxed", {"", {"recipe-name.nullius-pyrolysis", - {"item-name.nullius-cellulose"}}, " ", 2}}, + {"item-name.nullius-cellulose"}}, " ", tostring(2)}}, icons = { { icon = ICONPATH .. "boxing.png", @@ -1999,7 +2001,7 @@ data:extend({ scale = 0.225 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.33, shift = {-6, -6} @@ -2028,12 +2030,12 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -7} } @@ -2068,13 +2070,13 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-7, -6} } @@ -2104,7 +2106,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "wood-chip.png", @@ -2143,7 +2145,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -2178,7 +2180,7 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "wood-chip.png", @@ -2214,7 +2216,7 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -2325,7 +2327,9 @@ data:extend({ {"nullius-large-dispatch-chest-2", 1}, {"nullius-large-miner-2", 4} }, - result = "nullius-sequestration-coal-drone" + results = { + {type = "item", name = "nullius-sequestration-coal-drone", amount = 1} + } }, { type = "recipe", @@ -2339,7 +2343,9 @@ data:extend({ {"nullius-terraforming-remote-grey", 1}, {"nullius-yield-module-3", 1} }, - result = "nullius-sequestration-coal-remote" + results = { + {type = "item", name = "nullius-sequestration-coal-remote", amount = 1} + } }, { type = "recipe", @@ -2372,7 +2378,9 @@ data:extend({ {"nullius-terraforming-remote-tan", 1}, {"nullius-yield-module-3", 1} }, - result = "nullius-sequestration-petroleum-remote" + results = { + {type = "item", name = "nullius-sequestration-petroleum-remote", amount = 1} + } }, { @@ -2382,7 +2390,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -2401,7 +2409,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/big-worm.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-worm", order = "nullius-c", @@ -2413,7 +2421,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-worm", order = "nullius-d", @@ -2431,7 +2439,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.4 } }, @@ -2442,7 +2450,7 @@ data:extend({ { type = "recipe", name = "nullius-worm-genome", - localised_name = {"", {"item-name.nullius-worm-genome"}, " ", 1}, + localised_name = {"", {"item-name.nullius-worm-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 40, @@ -2461,12 +2469,12 @@ data:extend({ { type = "recipe", name = "nullius-worm-genome-2", - localised_name = {"", {"item-name.nullius-worm-genome"}, " ", 2}, + localised_name = {"", {"item-name.nullius-worm-genome"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -2478,7 +2486,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} @@ -2506,7 +2514,7 @@ data:extend({ { type = "recipe", name = "nullius-worm-progenitor", - localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", 1}, + localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-cb", @@ -2527,17 +2535,17 @@ data:extend({ { type = "recipe", name = "nullius-worm-progenitor-2", - localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", 2}, + localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/big-worm.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-10, -9} } @@ -2564,12 +2572,12 @@ data:extend({ { type = "recipe", name = "nullius-worm-1", - localised_name = {"", {"item-name.nullius-worm"}, " ", 1}, + localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(1)}, icons = { { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "protocell.png", @@ -2601,7 +2609,7 @@ data:extend({ { type = "recipe", name = "nullius-worm-2", - localised_name = {"", {"item-name.nullius-worm"}, " ", 2}, + localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "ore-flotation", @@ -2625,12 +2633,12 @@ data:extend({ { type = "recipe", name = "nullius-worm-3", - localised_name = {"", {"item-name.nullius-worm"}, " ", 3}, + localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(3)}, icons = { { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "genome.png", @@ -2662,7 +2670,7 @@ data:extend({ { type = "recipe", name = "nullius-legacy-worm-2", - localised_name = {"", {"item-name.nullius-worm"}, " ", 2}, + localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, hidden = true, @@ -2688,12 +2696,12 @@ data:extend({ { type = "recipe", name = "nullius-legacy-worm-3", - localised_name = {"", {"item-name.nullius-worm"}, " ", 3}, + localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(3)}, icons = { { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "genome.png", @@ -2735,7 +2743,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.4, shift = {-8, -4} } @@ -2769,12 +2777,12 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm-corpse.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-9, -6} } @@ -2813,7 +2821,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, shift = {-8, -7} } @@ -2857,7 +2865,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, shift = {-8, -7} } @@ -2904,7 +2912,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, shift = {-8, -7} } @@ -2933,7 +2941,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -2952,7 +2960,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/tree-08-red.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-tree", order = "nullius-c", @@ -2964,7 +2972,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-tree", order = "nullius-d", @@ -2982,7 +2990,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.35, } }, @@ -2996,7 +3004,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-tree", order = "nullius-fb", @@ -3016,7 +3024,7 @@ data:extend({ { type = "recipe", name = "nullius-tree-genome", - localised_name = {"", {"item-name.nullius-tree-genome"}, " ", 1}, + localised_name = {"", {"item-name.nullius-tree-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 60, @@ -3034,12 +3042,12 @@ data:extend({ { type = "recipe", name = "nullius-tree-genome-2", - localised_name = {"", {"item-name.nullius-tree-genome"}, " ", 2}, + localised_name = {"", {"item-name.nullius-tree-genome"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -3051,7 +3059,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} @@ -3078,7 +3086,7 @@ data:extend({ { type = "recipe", name = "nullius-tree-progenitor", - localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", 1}, + localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-cb", @@ -3101,17 +3109,17 @@ data:extend({ { type = "recipe", name = "nullius-tree-progenitor-2", - localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", 2}, + localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/tree-08-red.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-10, -10} } @@ -3139,12 +3147,12 @@ data:extend({ { type = "recipe", name = "nullius-tree-1", - localised_name = {"", {"item-name.nullius-tree"}, " ", 1}, + localised_name = {"", {"item-name.nullius-tree"}, " ", tostring(1)}, icons = { { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "protocell.png", @@ -3175,7 +3183,7 @@ data:extend({ { type = "recipe", name = "nullius-tree-2", - localised_name = {"", {"item-name.nullius-tree"}, " ", 2}, + localised_name = {"", {"item-name.nullius-tree"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "nullius-water-treatment", @@ -3199,12 +3207,12 @@ data:extend({ { type = "recipe", name = "nullius-tree-3", - localised_name = {"", {"item-name.nullius-tree"}, " ", 3}, + localised_name = {"", {"item-name.nullius-tree"}, " ", tostring(3)}, icons = { { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "genome.png", @@ -3289,7 +3297,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -3332,7 +3340,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-7, -7} } @@ -3370,7 +3378,7 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.33, shift = {-8, -4} } @@ -3386,8 +3394,9 @@ data:extend({ ingredients = { {type="item", name="nullius-wood", amount=2} }, - result = "nullius-wood-chip", - result_count = 3 + results = { + {type = "item", name = "nullius-wood-chip", amount = 3} + } }, { type = "recipe", @@ -3406,7 +3415,7 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-7, -4} } @@ -3422,8 +3431,9 @@ data:extend({ ingredients = { {type="item", name="nullius-box-wood", amount=2} }, - result = "nullius-box-wood-chip", - result_count = 3 + results = { + {type = "item", name = "nullius-box-wood-chip", amount = 3} + } }, { type = "recipe", @@ -3511,7 +3521,7 @@ data:extend({ localised_name = {"recipe-name.nullius-wood-pulping"}, icons = { { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54 }, { @@ -3551,7 +3561,7 @@ data:extend({ icon_size = 64 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.53 }, @@ -3588,7 +3598,7 @@ data:extend({ localised_name = {"recipe-name.nullius-harvest", {"item-name.nullius-tree-seed"}}, icons = { { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54 }, { @@ -3601,7 +3611,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.28, shift = {-8, -7} } @@ -3631,7 +3641,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -3650,7 +3660,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.9, 1} }}, subgroup = "biology-fish", @@ -3663,7 +3673,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-fish", order = "nullius-d", @@ -3681,7 +3691,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, tint = {1, 1, 1, 0.9} } @@ -3693,7 +3703,7 @@ data:extend({ { type = "recipe", name = "nullius-fish-genome", - localised_name = {"", {"item-name.nullius-fish-genome"}, " ", 1}, + localised_name = {"", {"item-name.nullius-fish-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 60, @@ -3711,12 +3721,12 @@ data:extend({ { type = "recipe", name = "nullius-fish-genome-2", - localised_name = {"", {"item-name.nullius-fish-genome"}, " ", 2}, + localised_name = {"", {"item-name.nullius-fish-genome"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -3728,7 +3738,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} @@ -3755,7 +3765,7 @@ data:extend({ { type = "recipe", name = "nullius-fish-progenitor", - localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", 1}, + localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-cb", @@ -3777,18 +3787,18 @@ data:extend({ { type = "recipe", name = "nullius-fish-progenitor-2", - localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", 2}, + localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.9, 1} }, { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-10, -10} } @@ -3816,12 +3826,12 @@ data:extend({ { type = "recipe", name = "nullius-fish-1", - localised_name = {"", {"item-name.nullius-fish"}, " ", 1}, + localised_name = {"", {"item-name.nullius-fish"}, " ", tostring(1)}, icons = { { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "protocell.png", @@ -3853,7 +3863,7 @@ data:extend({ { type = "recipe", name = "nullius-fish-2", - localised_name = {"", {"item-name.nullius-fish"}, " ", 2}, + localised_name = {"", {"item-name.nullius-fish"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "ore-flotation", @@ -3877,12 +3887,12 @@ data:extend({ { type = "recipe", name = "nullius-fish-3", - localised_name = {"", {"item-name.nullius-fish"}, " ", 3}, + localised_name = {"", {"item-name.nullius-fish"}, " ", tostring(3)}, icons = { { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "genome.png", @@ -3920,7 +3930,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -3958,7 +3968,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -3995,7 +4005,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4038,7 +4048,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4086,7 +4096,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4151,7 +4161,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -4170,7 +4180,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/big-biter.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-arthropod", order = "nullius-c", @@ -4182,7 +4192,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biology-arthropod", order = "nullius-d", @@ -4200,7 +4210,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.35, tint = {1, 1, 1, 0.9} } @@ -4231,7 +4241,7 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-progenitor", - localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", 1}, + localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", order = "nullius-cb", @@ -4255,17 +4265,17 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-progenitor-2", - localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", 2}, + localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/big-biter.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-9, -10} } @@ -4294,12 +4304,12 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-1", - localised_name = {"", {"item-name.nullius-arthropod"}, " ", 1}, + localised_name = {"", {"item-name.nullius-arthropod"}, " ", tostring(1)}, icons = { { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "protocell.png", @@ -4334,7 +4344,7 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-2", - localised_name = {"", {"item-name.nullius-arthropod"}, " ", 2}, + localised_name = {"", {"item-name.nullius-arthropod"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, category = "nullius-water-treatment", @@ -4361,12 +4371,12 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-3", - localised_name = {"", {"item-name.nullius-arthropod"}, " ", 3}, + localised_name = {"", {"item-name.nullius-arthropod"}, " ", tostring(3)}, icons = { { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "genome.png", @@ -4411,7 +4421,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -4457,7 +4467,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-7, -7} } @@ -4493,12 +4503,12 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter-corpse.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-9, -9} } @@ -4534,13 +4544,13 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter-corpse.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-8, -8} } @@ -4582,7 +4592,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.28, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4628,7 +4638,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.28, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4677,7 +4687,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.28, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4708,12 +4718,12 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -4740,7 +4750,7 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "rubber.png", @@ -4778,13 +4788,13 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-7, -7} } @@ -4815,7 +4825,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {-8, -8} } @@ -4849,7 +4859,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {-8, -8} } @@ -4880,7 +4890,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.6 }, data.raw.fluid["nullius-fatty-acids"].icons[2], @@ -4910,7 +4920,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/wooden-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, enabled = false, always_show_made_in = true, @@ -4940,7 +4950,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/small-electric-pole.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.9} }}, enabled = false, @@ -4956,8 +4966,9 @@ data:extend({ {"nullius-aluminum-wire", 2}, {"nullius-wood", 1} }, - result = "small-electric-pole", - result_count = 2 + results = { + {type = "item", name = "small-electric-pole", amount = 2} + } }, { type = "recipe", @@ -4971,7 +4982,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-electric-pole.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.9}, scale = 0.45 } @@ -4988,8 +4999,9 @@ data:extend({ {"nullius-box-aluminum-wire", 2}, {"nullius-box-wood", 1} }, - result = "nullius-box-power-pole-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-power-pole-1", amount = 2} + } }, { type = "recipe", @@ -4998,7 +5010,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/small-electric-pole.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.85, 0.85} }}, enabled = false, @@ -5034,7 +5046,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-electric-pole.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.85, 0.85}, scale = 0.45 } @@ -5068,12 +5080,12 @@ data:extend({ { icon = "__base__/graphics/icons/rail.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -5094,8 +5106,9 @@ data:extend({ {type="item", name="nullius-gravel", amount=6}, {type="fluid", name="nullius-epoxy", amount=1} }, - result = "rail", - result_count = 5 + results = { + {type = "item", name = "rail", amount = 5} + } }, { type = "recipe", @@ -5109,13 +5122,13 @@ data:extend({ { icon = "__base__/graphics/icons/rail.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-7, -7} } @@ -5135,8 +5148,9 @@ data:extend({ {type="item", name="nullius-box-gravel", amount=6}, {type="fluid", name="nullius-epoxy", amount=5} }, - result = "nullius-box-rail", - result_count = 5 + results = { + {type = "item", name = "nullius-box-rail", amount = 5} + } }, { type = "recipe", @@ -5146,12 +5160,12 @@ data:extend({ { icon = "__base__/graphics/icons/wall.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -5192,13 +5206,13 @@ data:extend({ { icon = "__base__/graphics/icons/wall.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-7, -7} } @@ -5298,7 +5312,7 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -5331,7 +5345,7 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-8, -8} } @@ -5366,7 +5380,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/glycerol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", icon_size = 72, scale = 0.28, shift = {0, 6} @@ -5449,7 +5463,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.28, shift = {0, 5} }, @@ -5477,7 +5491,7 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.33, shift = {1, 5} }, @@ -5505,7 +5519,7 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.28, shift = {-1, 5} }, @@ -5567,7 +5581,9 @@ data:extend({ {type="fluid", name="nullius-fatty-acids", amount=500}, {type="fluid", name="nullius-nucleotides", amount=200} }, - result = "nullius-biochemistry-pack" + results = { + {type = "item", name = "nullius-biochemistry-pack", amount = 1} + } }, { type = "recipe", @@ -5580,7 +5596,9 @@ data:extend({ {type="item", name="nullius-algae", amount=100}, {type="fluid", name="nullius-bacteria", amount=200} }, - result = "nullius-microbiology-pack" + results = { + {type = "item", name = "nullius-microbiology-pack", amount = 1} + } }, { type = "recipe", @@ -5594,7 +5612,9 @@ data:extend({ {type="item", name="nullius-grass", amount=120}, {type="item", name="nullius-box-cellulose", amount=120} }, - result = "nullius-botany-pack" + results = { + {type = "item", name = "nullius-botany-pack", amount = 1} + } }, { type = "recipe", @@ -5608,7 +5628,9 @@ data:extend({ {type="item", name="nullius-tree", amount=80}, {type="item", name="nullius-box-wood", amount=200} }, - result = "nullius-dendrology-pack" + results = { + {type = "item", name = "nullius-dendrology-pack", amount = 1} + } }, { type = "recipe", @@ -5621,7 +5643,9 @@ data:extend({ {type="item", name="nullius-worm", amount=150}, {type="fluid", name="nullius-carbon-dioxide", amount=7500} }, - result = "nullius-nematology-pack" + results = { + {type = "item", name = "nullius-nematology-pack", amount = 1} + } }, { type = "recipe", @@ -5635,7 +5659,9 @@ data:extend({ {type="item", name="nullius-fish", amount=120}, {type="fluid", name="nullius-wastewater", amount=10000} }, - result = "nullius-ichthyology-pack" + results = { + {type = "item", name = "nullius-ichthyology-pack", amount = 1} + } }, { type = "recipe", @@ -5649,6 +5675,8 @@ data:extend({ {type="item", name="nullius-arthropod", amount=80}, {type="item", name="nullius-box-plastic", amount=50} }, - result = "nullius-zoology-pack" + results = { + {type = "item", name = "nullius-zoology-pack", amount = 1} + } } }) diff --git a/nullius/prototypes/item/box_icons.lua b/nullius/prototypes/item/box_icons.lua index 7f951b9..ba13d3b 100644 --- a/nullius/prototypes/item/box_icons.lua +++ b/nullius/prototypes/item/box_icons.lua @@ -22,7 +22,7 @@ local function boxed_icons(itemname, suffix) if (base_item == nil) then return nil end local base_icon = base_item.icon - local base_size = base_item.icon_size + local base_size = base_item.icon_size or 64 local base_tint = nil local icons = base_item.icons if ((icons ~= nil) and (icons[1] ~= nil)) then @@ -96,7 +96,7 @@ end for _,recipe in pairs(data.raw.recipe) do if (string.sub(recipe.name, 1, 14) == "nullius-unbox-") then local suffix = string.sub(recipe.name, 15, -1) - local icons = boxed_icons(recipe.result, suffix) + local icons = boxed_icons(recipe.results[1].name, suffix) if (icons ~= nil) then data.raw.item["nullius-box-"..suffix].icons = icons.boxed recipe.icons = icons.unboxed @@ -105,9 +105,9 @@ for _,recipe in pairs(data.raw.recipe) do end end elseif ((string.sub(recipe.name, 1, 14) == "nullius-boxed-") and - (recipe.result ~= nil) and - (string.sub(recipe.result, 1, 12) ~= "nullius-box-")) then - local icons = boxed_icons(recipe.result) + (recipe.results ~= nil) and + (string.sub(recipe.results[1].name, 1, 12) ~= "nullius-box-")) then + local icons = boxed_icons(recipe.results[1].name) if (icons ~= nil) then recipe.icons = icons.boxed if (data.raw["virtual-signal"][recipe.name] ~= nil) then diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index 3587b34..3e3b26f 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -72,8 +72,9 @@ local function create_boxed_item(base_name, group, box_order, ingredients = { {full_name, 4*ratio} }, - result = "nullius-box-"..base_name, - result_count = 4 + results = { + {type="item", name="nullius-box-"..base_name, amount = 4} + } }, { type = "recipe", @@ -95,8 +96,9 @@ local function create_boxed_item(base_name, group, box_order, ingredients = { {"nullius-box-"..base_name, 1} }, - result = full_name, - result_count = ratio + results = { + {type="item", name=full_name, amount = ratio} + } } }) end @@ -114,15 +116,15 @@ data.raw.item["fast-transport-belt"].localised_name = {"entity-name.nullius-belt data.raw.item["fast-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-2"} data.raw.item["express-transport-belt"].localised_name = {"entity-name.nullius-belt-3"} data.raw.item["express-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-3"} -data.raw.item["ultimate-transport-belt"].localised_name = {"entity-name.nullius-belt-4"} -data.raw.item["ultimate-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-4"} +data.raw.item["bob-ultimate-transport-belt"].localised_name = {"entity-name.nullius-belt-4"} +data.raw.item["bob-ultimate-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-4"} data.raw.item["inserter"].localised_name = {"entity-name.nullius-inserter-1"} -data.raw.item["turbo-inserter"].localised_name = {"entity-name.nullius-inserter-2"} -data.raw.item["turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-2"} -data.raw.item["stack-inserter"].localised_name = {"entity-name.nullius-inserter-3"} -data.raw.item["stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-3"} -data.raw.item["express-stack-inserter"].localised_name = {"entity-name.nullius-inserter-4"} -data.raw.item["express-stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-4"} +data.raw.item["bob-turbo-inserter"].localised_name = {"entity-name.nullius-inserter-2"} +-- data.raw.item["turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-2"} +data.raw.item["bulk-inserter"].localised_name = {"entity-name.nullius-inserter-3"} +-- data.raw.item["stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-3"} +data.raw.item["bob-express-bulk-inserter"].localised_name = {"entity-name.nullius-inserter-4"} +-- data.raw.item["express-stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-4"} data.raw.item["storage-tank"].localised_name = {"entity-name.nullius-medium-tank-1"} data.raw.item["small-electric-pole"].localised_name = {"entity-name.nullius-power-pole-1"} data.raw.item["medium-electric-pole"].localised_name = {"entity-name.nullius-power-pole-2"} @@ -145,7 +147,7 @@ data.raw.item["pipe"].localised_name = {"entity-name.nullius-pipe-1"} data.raw.item["pipe-to-ground"].localised_name = {"entity-name.nullius-underground-pipe-1"} data.raw.item["pump"].localised_name = {"entity-name.nullius-pump-3"} -data.raw.item["empty-barrel"].stack_size = 20 +data.raw.item["barrel"].stack_size = 20 data.raw.item["iron-ore"].stack_size = 50 data.raw.item["copper-ore"].stack_size = 50 data.raw.item["uranium-ore"].stack_size = 50 @@ -161,16 +163,16 @@ data.raw.item["fast-transport-belt"].stack_size = 200 data.raw.item["fast-underground-belt"].stack_size = 100 data.raw.item["express-transport-belt"].stack_size = 200 data.raw.item["express-underground-belt"].stack_size = 100 -data.raw.item["ultimate-transport-belt"].stack_size = 200 -data.raw.item["ultimate-underground-belt"].stack_size = 100 +data.raw.item["bob-ultimate-transport-belt"].stack_size = 200 +data.raw.item["bob-ultimate-underground-belt"].stack_size = 100 data.raw.item["inserter"].stack_size = 100 -data.raw.item["turbo-inserter"].stack_size = 100 -data.raw.item["turbo-filter-inserter"].stack_size = 100 -data.raw.item["stack-inserter"].stack_size = 100 -data.raw.item["stack-filter-inserter"].stack_size = 100 -data.raw.item["express-stack-inserter"].stack_size = 100 -data.raw.item["express-stack-filter-inserter"].stack_size = 100 +data.raw.item["bob-turbo-inserter"].stack_size = 100 +-- data.raw.item["turbo-filter-inserter"].stack_size = 100 +data.raw.item["bulk-inserter"].stack_size = 100 +-- data.raw.item["stack-filter-inserter"].stack_size = 100 +data.raw.item["bob-express-bulk-inserter"].stack_size = 100 +-- data.raw.item["express-stack-filter-inserter"].stack_size = 100 create_boxed_item("graphite", "organic", "b") create_boxed_item("iron-ore", "iron", "b", "iron-ore") @@ -246,8 +248,8 @@ create_boxed_item("filter-1", "mechanical", "bb") create_boxed_item("logic-circuit", "circuit", "d", "decider-combinator") create_boxed_item("memory-circuit", "circuit", "f", "constant-combinator") create_boxed_item("arithmetic-circuit", "circuit", "e", "arithmetic-combinator") -create_boxed_item("red-wire", "circuit", "b", "red-wire") -create_boxed_item("green-wire", "circuit", "c", "green-wire") +create_boxed_item("red-wire", "circuit", "b", "nullius-red-wire") +create_boxed_item("green-wire", "circuit", "c", "nullius-green-wire") create_boxed_item("bpa", "organic", "c") create_boxed_item("acrylic-fiber", "organic", "f") create_boxed_item("carbon-fiber", "organic", "g") @@ -301,7 +303,7 @@ create_boxed_item("hazard-concrete", "concrete", "k", "refined-hazard-concrete") create_boxed_item("priority-valve", "plumbing", "c") create_boxed_item("top-up-valve", "plumbing", "d") create_boxed_item("relief-valve", "plumbing", "e") -create_boxed_item("barrel", "canister", "b", "empty-barrel") +create_boxed_item("barrel", "canister", "b", "barrel") create_boxed_item("canister", "canister", "c") create_boxed_item("hydrogen-canister", "canister", "d") create_boxed_item("methanol-canister", "canister", "e", "processed-fuel") @@ -310,10 +312,10 @@ create_boxed_item("water-canister", "canister", "g") create_boxed_item("chain-signal", "rail", "g", "rail-chain-signal") create_boxed_item("rail-signal", "rail", "f", "rail-signal") create_boxed_item("inserter-1", "inserter", "b", "inserter") -create_boxed_item("inserter-2", "inserter", "c", "turbo-inserter") -create_boxed_item("filter-inserter-2", "inserter", "d", "turbo-filter-inserter") -create_boxed_item("inserter-3", "inserter", "e", "stack-inserter") -create_boxed_item("filter-inserter-3", "inserter", "f", "stack-filter-inserter") +create_boxed_item("inserter-2", "inserter", "c", "bob-turbo-inserter") +-- create_boxed_item("filter-inserter-2", "inserter", "d", "turbo-filter-inserter") +create_boxed_item("inserter-3", "inserter", "e", "bulk-inserter") +-- create_boxed_item("filter-inserter-3", "inserter", "f", "stack-filter-inserter") create_boxed_item("belt-1", "belt", "bb", "transport-belt") create_boxed_item("belt-2", "belt", "bc", "fast-transport-belt") create_boxed_item("belt-3", "belt", "bd", "express-transport-belt") @@ -382,10 +384,10 @@ create_boxed_item("graphene", "organic", "j") create_boxed_item("filter-2", "mechanical", "bc") create_boxed_item("pipe-4", "pipe", "h") create_boxed_item("underground-pipe-4", "pipe", "i") -create_boxed_item("inserter-4", "inserter", "g", "express-stack-inserter") -create_boxed_item("filter-inserter-4", "inserter", "h", "express-stack-filter-inserter") -create_boxed_item("belt-4", "belt", "be", "ultimate-transport-belt") -create_boxed_item("underground-belt-4", "belt", "ce", "ultimate-underground-belt") +create_boxed_item("inserter-4", "inserter", "g", "bob-express-bulk-inserter") +-- create_boxed_item("filter-inserter-4", "inserter", "h", "express-stack-filter-inserter") +create_boxed_item("belt-4", "belt", "be", "bob-ultimate-transport-belt") +create_boxed_item("underground-belt-4", "belt", "ce", "bob-ultimate-underground-belt") create_boxed_item("pump-3", "plumbing", "fd", "pump") create_boxed_item("small-pump-2", "plumbing", "hc") create_boxed_item("turbine-open-3", "fluid-energy", "ed") diff --git a/nullius/prototypes/item/broken.lua b/nullius/prototypes/item/broken.lua index 0e3a595..5b4d5da 100644 --- a/nullius/prototypes/item/broken.lua +++ b/nullius/prototypes/item/broken.lua @@ -14,7 +14,7 @@ data:extend({ localised_name = {"item-name.nullius-broken", {"entity-name.nullius-air-filter-1"}}, icons = { { - icon = "__angelspetrochem__/graphics/icons/air-filter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/air-filter.png", icon_size = 32, scale = 0.8 }, @@ -39,7 +39,7 @@ data:extend({ { type = "item", name = "nullius-broken-electrolyzer", - localised_name = {"item-name.nullius-broken", {"", {"entity-name.nullius-electrolyzer"}, " ", 1}}, + localised_name = {"item-name.nullius-broken", {"", {"entity-name.nullius-electrolyzer"}, " ", tostring(1)}}, icons = { data.raw.item["nullius-electrolyzer-1"].icons[1], broken_overlay @@ -130,7 +130,7 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/radar.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = {0.9, 0.9, 0.65} }, broken_overlay @@ -179,7 +179,9 @@ data:extend({ {"nullius-broken-air-filter", 1}, {"nullius-iron-sheet", 2} }, - result = "nullius-air-filter-1" + results = { + {type="item", name="nullius-air-filter-1", amount = 1} + } }, { type = "recipe", @@ -201,7 +203,9 @@ data:extend({ {"nullius-broken-hydro-plant", 1}, {"pipe", 4} }, - result = "nullius-hydro-plant-1" + results = { + {type="item", name="nullius-hydro-plant-1", amount = 1} + } }, { type = "recipe", @@ -223,7 +227,9 @@ data:extend({ {"nullius-broken-electrolyzer", 1}, {"nullius-iron-wire", 5} }, - result = "nullius-electrolyzer-1" + results = { + {type="item", name="nullius-electrolyzer-1", amount = 1} + } }, { type = "recipe", @@ -245,7 +251,9 @@ data:extend({ {"nullius-broken-chemical-plant", 1}, {"nullius-one-way-valve", 2} }, - result = "nullius-chemical-plant-1" + results = { + {type="item", name="nullius-chemical-plant-1", amount = 1} + } }, { type = "recipe", @@ -267,7 +275,9 @@ data:extend({ {"nullius-broken-foundry", 1}, {"stone-brick", 5} }, - result = "nullius-foundry-1" + results = { + {type="item", name="nullius-foundry-1", amount = 1} + } }, { type = "recipe", @@ -289,7 +299,9 @@ data:extend({ {"nullius-broken-assembler", 1}, {"nullius-iron-gear", 2} }, - result = "nullius-medium-assembler-1" + results = { + {type="item", name="nullius-medium-assembler-1", amount = 1} + } }, { type = "recipe", @@ -311,7 +323,9 @@ data:extend({ {"nullius-broken-pylon", 1}, {"nullius-iron-rod", 3} }, - result = "big-electric-pole" + results = { + {type="item", name="big-electric-pole", amount = 1} + } }, { type = "recipe", @@ -333,7 +347,9 @@ data:extend({ {"nullius-broken-solar-panel", 1}, {"nullius-sand", 1} }, - result = "nullius-solar-panel-1" + results = { + {type="item", name="nullius-solar-panel-1", amount = 1} + } }, { type = "recipe", @@ -355,7 +371,9 @@ data:extend({ {"nullius-broken-grid-battery", 1}, {"nullius-graphite", 1} }, - result = "nullius-grid-battery-1" + results = { + {type="item", name="nullius-grid-battery-1", amount = 1} + } }, { type = "recipe", @@ -378,6 +396,8 @@ data:extend({ {"nullius-glass", 2}, {"small-lamp", 2} }, - result = "radar" + results = { + {type="item", name="radar", amount = 1} + } } }) diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index c7f772a..78ee0cc 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -9,7 +9,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/stone-furnace.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "furnace", order = "nullius-bbb", @@ -28,7 +28,9 @@ data:extend({ {"nullius-iron-wire", 2}, {"nullius-iron-plate", 1} }, - result = "nullius-small-furnace-1" + results = { + {type = "item", name = "nullius-small-furnace-1", amount = 1} + } }, { @@ -56,7 +58,9 @@ data:extend({ {"nullius-crucible", 1}, {"nullius-steel-plate", 1} }, - result = "nullius-small-furnace-2" + results = { + {type = "item", name = "nullius-small-furnace-2", amount = 1} + } }, { @@ -87,7 +91,9 @@ data:extend({ {"nullius-aluminum-wire", 6}, {"nullius-sensor-1", 1} }, - result = "nullius-small-furnace-3" + results = { + {type = "item", name = "nullius-small-furnace-3", amount = 1} + } }, { @@ -96,7 +102,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/steel-furnace.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "furnace", order = "nullius-bcb", @@ -114,7 +120,9 @@ data:extend({ {"nullius-small-furnace-2", 2}, {"nullius-chimney-1", 1} }, - result = "nullius-medium-furnace-1" + results = { + {type = "item", name = "nullius-medium-furnace-1", amount = 1} + } }, { @@ -143,7 +151,9 @@ data:extend({ {"nullius-combustion-chamber-2", 1}, {"nullius-heat-pipe-1", 3} }, - result = "nullius-medium-furnace-2" + results = { + {type = "item", name = "nullius-medium-furnace-2", amount = 1} + } }, { @@ -174,7 +184,9 @@ data:extend({ {"nullius-box-titanium-plate", 1}, {"nullius-box-wall", 1} }, - result = "nullius-medium-furnace-3" + results = { + {type = "item", name = "nullius-medium-furnace-3", amount = 1} + } }, { @@ -183,7 +195,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/electric-furnace.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.65, 0.65, 0.8} }}, subgroup = "furnace", @@ -203,7 +215,9 @@ data:extend({ {"nullius-steel-beam", 8}, {"concrete", 20} }, - result = "nullius-large-furnace-1" + results = { + {type = "item", name = "nullius-large-furnace-1", amount = 1} + } }, { @@ -212,7 +226,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/electric-furnace.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "furnace", order = "nullius-bdc", @@ -233,7 +247,9 @@ data:extend({ {"nullius-box-insulation", 2}, {"nullius-box-belt-4", 1} }, - result = "nullius-large-furnace-2" + results = { + {type = "item", name = "nullius-large-furnace-2", amount = 1} + } }, { @@ -285,7 +301,9 @@ data:extend({ {"wooden-chest", 1}, {"nullius-fabrication-tool-1", 1} }, - result = "nullius-small-assembler-1" + results = { + {type = "item", name = "nullius-small-assembler-1", amount = 1} + } }, { type = "recipe", @@ -302,7 +320,9 @@ data:extend({ {"transport-belt", 1}, {"wooden-chest", 1} }, - result = "nullius-small-assembler-1" + results = { + {type = "item", name = "nullius-small-assembler-1", amount = 1} + } }, { type = "recipe", @@ -317,7 +337,9 @@ data:extend({ {"splitter", 1}, {"iron-chest", 1} }, - result = "nullius-small-assembler-2" + results = { + {type = "item", name = "nullius-small-assembler-2", amount = 1} + } }, { type = "recipe", @@ -335,7 +357,9 @@ data:extend({ {"splitter", 1}, {"iron-chest", 2} }, - result = "nullius-small-assembler-2" + results = { + {type = "item", name = "nullius-small-assembler-2", amount = 1} + } }, { type = "recipe", @@ -351,10 +375,11 @@ data:extend({ {"nullius-hangar-1", 1}, {"nullius-construction-bot-2", 1}, {"nullius-large-buffer-chest-1", 1}, - {"express-stack-filter-inserter", 1} + {"bob-express-bulk-inserter", 1} }, - result = "nullius-small-assembler-3", - result_count = 3 + results = { + {type = "item", name = "nullius-small-assembler-3", amount = 3} + } }, { @@ -404,7 +429,9 @@ data:extend({ {"nullius-small-assembler-1", 2}, {"nullius-steel-beam", 1} }, - result = "nullius-medium-assembler-1" + results = { + {type = "item", name = "nullius-medium-assembler-1", amount = 1} + } }, { type = "recipe", @@ -417,9 +444,11 @@ data:extend({ {"nullius-medium-assembler-1", 1}, {"nullius-small-assembler-2", 1}, {"nullius-aluminum-sheet", 6}, - {"red-wire", 4} + {"nullius-red-wire", 4} }, - result = "nullius-medium-assembler-2" + results = { + {type = "item", name = "nullius-medium-assembler-2", amount = 1} + } }, { type = "recipe", @@ -438,8 +467,9 @@ data:extend({ {"express-transport-belt", 4}, {"stone-wall", 6} }, - result = "nullius-medium-assembler-3", - result_count = 2 + results = { + {type = "item", name = "nullius-medium-assembler-3", amount = 2} + } }, { @@ -448,7 +478,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/assembling-machine-2.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "assembler", order = "nullius-db", @@ -461,7 +491,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/assembling-machine-3.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "assembler", order = "nullius-dc", @@ -481,7 +511,9 @@ data:extend({ {"nullius-mortar", 3}, {"fast-transport-belt", 6} }, - result = "nullius-large-assembler-1" + results = { + {type = "item", name = "nullius-large-assembler-1", amount = 1} + } }, { type = "recipe", @@ -497,15 +529,17 @@ data:extend({ {"gate", 2}, {"nullius-substation-2", 1} }, - result = "nullius-large-assembler-2" + results = { + {type = "item", name = "nullius-large-assembler-2", amount = 1} + } }, { type = "item", name = "nullius-boxer", icons = {{ - icon = "__angelssmelting__/graphics/icons/powder-mixer-ico.png", - icon_size = 64, icon_mipmaps = 4, + icon = "__angelssmeltinggraphics__/graphics/icons/powder-mixer-ico.png", + icon_size = 64, scale = 0.5 }}, subgroup = "assembler", @@ -522,10 +556,12 @@ data:extend({ energy_required = 8, ingredients = { {"nullius-small-assembler-2", 1}, - {"stack-inserter", 1}, + {"bulk-inserter", 1}, {"nullius-speed-module-1", 1} }, - result = "nullius-boxer" + results = { + {type = "item", name = "nullius-boxer", amount = 1} + } }, { @@ -579,7 +615,9 @@ data:extend({ {"nullius-iron-gear", 1}, {"nullius-mining-tool-1", 1} }, - result = "nullius-small-miner-1" + results = { + {type = "item", name = "nullius-small-miner-1", amount = 1} + } }, { type = "recipe", @@ -598,8 +636,9 @@ data:extend({ {"nullius-iron-gear", 2}, {"nullius-iron-plate", 3} }, - result = "nullius-small-miner-1", - result_count = 2 + results = { + {type = "item", name = "nullius-small-miner-1", amount = 2} + } }, { type = "recipe", @@ -614,7 +653,9 @@ data:extend({ {"nullius-steel-plate", 5}, {"nullius-aluminum-carbide", 2} }, - result = "nullius-small-miner-2" + results = { + {type = "item", name = "nullius-small-miner-2", amount = 1} + } }, { type = "recipe", @@ -632,8 +673,9 @@ data:extend({ {type="item", name="nullius-box-ceramic-powder", amount=3}, {type="item", name="express-splitter", amount=1} }, - result = "nullius-small-miner-3", - result_count = 2 + results = { + {type = "item", name = "nullius-small-miner-3", amount = 2} + } }, { @@ -642,7 +684,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/burner-mining-drill.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "miner", order = "nullius-cb", @@ -685,7 +727,9 @@ data:extend({ {"nullius-small-miner-1", 2}, {"nullius-steel-beam", 1} }, - result = "nullius-medium-miner-1" + results = { + {type = "item", name = "nullius-medium-miner-1", amount = 1} + } }, { type = "recipe", @@ -700,7 +744,9 @@ data:extend({ {"nullius-steel-gear", 4}, {"nullius-aluminum-plate", 2} }, - result = "nullius-medium-miner-2" + results = { + {type = "item", name = "nullius-medium-miner-2", amount = 1} + } }, { type = "recipe", @@ -717,7 +763,9 @@ data:extend({ {type="item", name="nullius-transformer", amount=1}, {type="fluid", name="nullius-lubricant", amount=50} }, - result = "nullius-medium-miner-3" + results = { + {type = "item", name = "nullius-medium-miner-3", amount = 1} + } }, { @@ -726,7 +774,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/electric-mining-drill.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.7, 0.8} }}, subgroup = "miner", @@ -740,7 +788,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/electric-mining-drill.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "miner", order = "nullius-dc", @@ -759,7 +807,9 @@ data:extend({ {"nullius-steel-cable", 6}, {"nullius-steel-sheet", 4} }, - result = "nullius-large-miner-1" + results = { + {type = "item", name = "nullius-large-miner-1", amount = 1} + } }, { type = "recipe", @@ -775,7 +825,9 @@ data:extend({ {"nullius-cargo-wagon-1", 1}, {"nullius-locomotive-1", 1} }, - result = "nullius-large-miner-2" + results = { + {type = "item", name = "nullius-large-miner-2", amount = 1} + } }, { @@ -825,7 +877,9 @@ data:extend({ {"nullius-turbine-open-1", 2}, {"small-electric-pole", 2} }, - result = "nullius-wind-turbine-1" + results = { + {type = "item", name = "nullius-wind-turbine-1", amount = 1} + } }, { type = "recipe", @@ -839,7 +893,9 @@ data:extend({ {"nullius-box-turbine-open-1", 2}, {"nullius-box-power-pole-1", 2} }, - result = "nullius-box-wind-turbine-1" + results = { + {type = "item", name = "nullius-box-wind-turbine-1", amount = 1} + } }, { type = "recipe", @@ -855,7 +911,9 @@ data:extend({ {"nullius-steel-cable", 5}, {"concrete", 10} }, - result = "nullius-wind-turbine-2" + results = { + {type = "item", name = "nullius-wind-turbine-2", amount = 1} + } }, { type = "recipe", @@ -872,7 +930,9 @@ data:extend({ {"nullius-box-steel-cable", 5}, {"nullius-box-concrete", 5} }, - result = "nullius-box-wind-turbine-2" + results = { + {type = "item", name = "nullius-box-wind-turbine-2", amount = 1} + } }, { type = "recipe", @@ -888,7 +948,9 @@ data:extend({ {"nullius-carbon-composite", 10}, {"refined-concrete", 16} }, - result = "nullius-wind-turbine-3" + results = { + {type = "item", name = "nullius-wind-turbine-3", amount = 1} + } }, { type = "recipe", @@ -905,14 +967,16 @@ data:extend({ {"nullius-box-carbon-composite", 10}, {"nullius-box-reinforced-concrete", 8} }, - result = "nullius-box-wind-turbine-3" + results = { + {type = "item", name = "nullius-box-wind-turbine-3", amount = 1} + } }, { type = "item", name = "nullius-foundry-1", icons = {{ - icon = "__angelssmelting__/graphics/icons/casting-machine.png", + icon = "__angelssmeltinggraphics__/graphics/icons/casting-machine.png", icon_size = 64, tint = {0.6, 0.8, 0.7} }}, @@ -925,7 +989,7 @@ data:extend({ type = "item", name = "nullius-foundry-2", icons = {{ - icon = "__angelssmelting__/graphics/icons/casting-machine.png", + icon = "__angelssmeltinggraphics__/graphics/icons/casting-machine.png", icon_size = 64, tint = {0.7, 0.8, 1} }}, @@ -938,7 +1002,7 @@ data:extend({ type = "item", name = "nullius-foundry-3", icons = {{ - icon = "__angelssmelting__/graphics/icons/casting-machine.png", + icon = "__angelssmeltinggraphics__/graphics/icons/casting-machine.png", icon_size = 64 }}, subgroup = "ore-processing", @@ -958,7 +1022,9 @@ data:extend({ {"inserter", 2}, {"nullius-iron-plate", 3} }, - result = "nullius-foundry-1" + results = { + {type = "item", name = "nullius-foundry-1", amount = 1} + } }, { type = "recipe", @@ -971,10 +1037,12 @@ data:extend({ {"nullius-foundry-1", 1}, {"nullius-medium-furnace-1", 1}, {"nullius-crucible", 2}, - {"turbo-filter-inserter", 2}, + {"bob-turbo-inserter", 2}, {"fast-transport-belt", 3} }, - result = "nullius-foundry-2" + results = { + {type = "item", name = "nullius-foundry-2", amount = 1} + } }, { type = "recipe", @@ -989,15 +1057,17 @@ data:extend({ {"nullius-medium-assembler-3", 1}, {"nullius-thermal-tank-2", 1} }, - result = "nullius-foundry-3" + results = { + {type = "item", name = "nullius-foundry-3", amount = 1} + } }, { type = "item", name = "nullius-crusher-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/ore-crusher.png", - icon_size = 64, icon_mipmaps = 4, + icon = "__angelsrefininggraphics__/graphics/icons/ore-crusher.png", + icon_size = 64, tint = {0.6, 0.6, 0.6} }}, subgroup = "ore-processing", @@ -1009,8 +1079,8 @@ data:extend({ type = "item", name = "nullius-crusher-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/ore-crusher.png", - icon_size = 64, icon_mipmaps = 4, + icon = "__angelsrefininggraphics__/graphics/icons/ore-crusher.png", + icon_size = 64, tint = {0.6, 0.65, 0.85} }}, subgroup = "ore-processing", @@ -1022,8 +1092,8 @@ data:extend({ type = "item", name = "nullius-crusher-3", icons = {{ - icon = "__angelsrefining__/graphics/icons/ore-crusher.png", - icon_size = 64, icon_mipmaps = 4 + icon = "__angelsrefininggraphics__/graphics/icons/ore-crusher.png", + icon_size = 64, }}, subgroup = "ore-processing", order = "nullius-bd", @@ -1043,7 +1113,9 @@ data:extend({ {"nullius-iron-wire", 3}, {"stone-brick", 8} }, - result = "nullius-crusher-1" + results = { + {type = "item", name = "nullius-crusher-1", amount = 1} + } }, { type = "recipe", @@ -1060,8 +1132,9 @@ data:extend({ {"copper-cable", 8}, {"fast-splitter", 1} }, - result = "nullius-crusher-2", - result_count = 2 + results = { + {type = "item", name = "nullius-crusher-2", amount = 2} + } }, { type = "recipe", @@ -1073,11 +1146,13 @@ data:extend({ ingredients = { {"nullius-crusher-2", 1}, {"nullius-medium-miner-3", 1}, - {"ultimate-splitter", 1}, + {"bob-ultimate-splitter", 1}, {"nullius-box-wall", 2}, - {"nullius-trash-compactor", 1} + {"nullius-trash-compactor", 1} }, - result = "nullius-crusher-3" + results = { + {type = "item", name = "nullius-crusher-3", amount = 1} + } }, { type = "recipe", @@ -1092,10 +1167,12 @@ data:extend({ ingredients = { {"nullius-crusher-2", 2}, {"nullius-medium-miner-3", 1}, - {"ultimate-splitter", 1}, + {"bob-ultimate-splitter", 1}, {"nullius-box-wall", 2} }, - result = "nullius-crusher-3" + results = { + {type = "item", name = "nullius-crusher-3", amount = 1} + } }, { @@ -1109,7 +1186,9 @@ data:extend({ {"nullius-iron-sheet", 2}, {"nullius-iron-rod", 1} }, - result = "wooden-chest" + results = { + {type = "item", name = "wooden-chest", amount = 1} + } }, { type = "recipe", @@ -1124,7 +1203,9 @@ data:extend({ {"nullius-steel-rod", 2}, {"nullius-rubber", 1} }, - result = "iron-chest" + results = { + {type = "item", name = "iron-chest", amount = 1} + } }, { type = "recipe", @@ -1139,7 +1220,9 @@ data:extend({ {type="item", name="nullius-titanium-rod", amount=2}, {type="fluid", name="nullius-epoxy", amount=4, fluidbox_index=1} }, - result = "steel-chest" + results = { + {type = "item", name = "steel-chest", amount = 1} + } }, { @@ -1148,7 +1231,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/steel-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "storage", order = "nullius-cb", @@ -1178,7 +1261,9 @@ data:extend({ {"iron-chest", 4}, {"nullius-aluminum-plate", 3} }, - result = "nullius-large-chest-1" + results = { + {type = "item", name = "nullius-large-chest-1", amount = 1} + } }, { type = "recipe", @@ -1192,7 +1277,9 @@ data:extend({ {"steel-chest", 2}, {"nullius-titanium-plate", 2} }, - result = "nullius-large-chest-2" + results = { + {type = "item", name = "nullius-large-chest-2", amount = 1} + } }, { @@ -1249,9 +1336,9 @@ data:extend({ type = "item", name = "nullius-large-storage-chest-2", icons = {{ - icon = "__base__/graphics/icons/logistic-chest-storage.png", + icon = "__base__/graphics/icons/storage-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "large-logistic-storage", order = "nullius-bc", @@ -1270,7 +1357,9 @@ data:extend({ {"programmable-speaker", 1}, {"arithmetic-combinator", 1} }, - result = "nullius-small-storage-chest-1" + results = { + {type = "item", name = "nullius-small-storage-chest-1", amount = 1} + } }, { type = "recipe", @@ -1283,9 +1372,11 @@ data:extend({ {"nullius-small-storage-chest-1", 1}, {"nullius-large-chest-1", 1}, {"nullius-sensor-1", 1}, - {"red-wire", 4} + {"nullius-red-wire", 4} }, - result = "nullius-large-storage-chest-1" + results = { + {type = "item", name = "nullius-large-storage-chest-1", amount = 1} + } }, { type = "recipe", @@ -1300,7 +1391,9 @@ data:extend({ {"nullius-relay-2", 1}, {"nullius-processor-2", 1} }, - result = "logistic-chest-storage" + results = { + {type = "item", name = "storage-chest", amount = 1} + } }, { type = "recipe", @@ -1313,12 +1406,13 @@ data:extend({ energy_required = 20, ingredients = { {"nullius-large-storage-chest-1", 1}, - {"logistic-chest-storage", 1}, + {"storage-chest", 1}, {"nullius-large-chest-2", 1}, - {"express-stack-filter-inserter", 1} + {"bob-express-bulk-inserter", 1} }, - result = "nullius-large-storage-chest-2", - result_count = 2 + results = { + {type = "item", name = "nullius-large-storage-chest-2", amount = 2} + } }, { @@ -1375,9 +1469,9 @@ data:extend({ type = "item", name = "nullius-large-supply-chest-2", icons = {{ - icon = "__base__/graphics/icons/logistic-chest-passive-provider.png", + icon = "__base__/graphics/icons/passive-provider-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "large-logistic-storage", order = "nullius-cc", @@ -1393,9 +1487,11 @@ data:extend({ energy_required = 2, ingredients = { {"nullius-small-storage-chest-1", 1}, - {"red-wire", 1} + {"nullius-red-wire", 1} }, - result = "nullius-small-supply-chest-1" + results = { + {type = "item", name = "nullius-small-supply-chest-1", amount = 1} + } }, { type = "recipe", @@ -1408,7 +1504,9 @@ data:extend({ {"nullius-large-storage-chest-1", 1}, {"nullius-small-supply-chest-1", 1} }, - result = "nullius-large-supply-chest-1" + results = { + {type = "item", name = "nullius-large-supply-chest-1", amount = 1} + } }, { type = "recipe", @@ -1419,9 +1517,11 @@ data:extend({ energy_required = 4, ingredients = { {"nullius-small-supply-chest-1", 1}, - {"logistic-chest-storage", 1} + {"storage-chest", 1} }, - result = "logistic-chest-passive-provider" + results = { + {type = "item", name = "passive-provider-chest", amount = 1} + } }, { type = "recipe", @@ -1434,7 +1534,9 @@ data:extend({ {"nullius-large-supply-chest-1", 1}, {"nullius-large-storage-chest-2", 1} }, - result = "nullius-large-supply-chest-2" + results = { + {type = "item", name = "nullius-large-supply-chest-2", amount = 1} + } }, { @@ -1491,9 +1593,9 @@ data:extend({ type = "item", name = "nullius-large-demand-chest-2", icons = {{ - icon = "__base__/graphics/icons/logistic-chest-requester.png", + icon = "__base__/graphics/icons/requester-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "large-logistic-storage", order = "nullius-dc", @@ -1511,7 +1613,9 @@ data:extend({ {"nullius-small-storage-chest-1", 1}, {"nullius-sensor-1", 1} }, - result = "nullius-small-demand-chest-1" + results = { + {type = "item", name = "nullius-small-demand-chest-1", amount = 1} + } }, { type = "recipe", @@ -1524,7 +1628,9 @@ data:extend({ {"nullius-large-storage-chest-1", 1}, {"nullius-small-demand-chest-1", 1} }, - result = "nullius-large-demand-chest-1" + results = { + {type = "item", name = "nullius-large-demand-chest-1", amount = 1} + } }, { type = "recipe", @@ -1535,9 +1641,11 @@ data:extend({ energy_required = 4, ingredients = { {"nullius-small-demand-chest-1", 1}, - {"logistic-chest-storage", 1} + {"storage-chest", 1} }, - result = "logistic-chest-requester" + results = { + {type = "item", name = "requester-chest", amount = 1} + } }, { type = "recipe", @@ -1550,7 +1658,9 @@ data:extend({ {"nullius-large-demand-chest-1", 1}, {"nullius-large-storage-chest-2", 1} }, - result = "nullius-large-demand-chest-2" + results = { + {type = "item", name = "nullius-large-demand-chest-2", amount = 1} + } }, { @@ -1607,9 +1717,9 @@ data:extend({ type = "item", name = "nullius-large-buffer-chest-2", icons = {{ - icon = "__base__/graphics/icons/logistic-chest-buffer.png", + icon = "__base__/graphics/icons/buffer-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "large-logistic-storage", order = "nullius-ec", @@ -1625,9 +1735,11 @@ data:extend({ energy_required = 2, ingredients = { {"nullius-small-demand-chest-1", 1}, - {"green-wire", 2} + {"nullius-green-wire", 2} }, - result = "nullius-small-buffer-chest-1" + results = { + {type = "item", name = "nullius-small-buffer-chest-1", amount = 1} + } }, { type = "recipe", @@ -1640,7 +1752,9 @@ data:extend({ {"nullius-large-storage-chest-1", 1}, {"nullius-small-buffer-chest-1", 1} }, - result = "nullius-large-buffer-chest-1" + results = { + {type = "item", name = "nullius-large-buffer-chest-1", amount = 1} + } }, { type = "recipe", @@ -1651,9 +1765,11 @@ data:extend({ energy_required = 4, ingredients = { {"nullius-small-buffer-chest-1", 1}, - {"logistic-chest-storage", 1} + {"storage-chest", 1} }, - result = "logistic-chest-buffer" + results = { + {type = "item", name = "buffer-chest", amount = 1} + } }, { type = "recipe", @@ -1666,7 +1782,9 @@ data:extend({ {"nullius-large-buffer-chest-1", 1}, {"nullius-large-storage-chest-2", 1} }, - result = "nullius-large-buffer-chest-2" + results = { + {type = "item", name = "nullius-large-buffer-chest-2", amount = 1} + } }, { @@ -1723,9 +1841,9 @@ data:extend({ type = "item", name = "nullius-large-dispatch-chest-2", icons = {{ - icon = "__base__/graphics/icons/logistic-chest-active-provider.png", + icon = "__base__/graphics/icons/active-provider-chest.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "large-logistic-storage", order = "nullius-fc", @@ -1741,9 +1859,11 @@ data:extend({ energy_required = 2, ingredients = { {"nullius-small-supply-chest-1", 1}, - {"green-wire", 1} + {"nullius-green-wire", 1} }, - result = "nullius-small-dispatch-chest-1" + results = { + {type = "item", name = "nullius-small-dispatch-chest-1", amount = 1} + } }, { type = "recipe", @@ -1756,7 +1876,9 @@ data:extend({ {"nullius-large-storage-chest-1", 1}, {"nullius-small-dispatch-chest-1", 1} }, - result = "nullius-large-dispatch-chest-1" + results = { + {type = "item", name = "nullius-large-dispatch-chest-1", amount = 1} + } }, { type = "recipe", @@ -1767,9 +1889,11 @@ data:extend({ energy_required = 4, ingredients = { {"nullius-small-dispatch-chest-1", 1}, - {"logistic-chest-storage", 1} + {"storage-chest", 1} }, - result = "logistic-chest-active-provider" + results = { + {type = "item", name = "active-provider-chest", amount = 1} + } }, { type = "recipe", @@ -1782,7 +1906,9 @@ data:extend({ {"nullius-large-dispatch-chest-1", 1}, {"nullius-large-storage-chest-2", 1} }, - result = "nullius-large-dispatch-chest-2" + results = { + {type = "item", name = "nullius-large-dispatch-chest-2", amount = 1} + } }, { @@ -1791,7 +1917,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/accumulator.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.9, 0.85, 0.7} }}, subgroup = "energy", @@ -1805,7 +1931,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/accumulator.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "energy", order = "nullius-fc", @@ -1818,7 +1944,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/accumulator.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.85, 1} }}, subgroup = "energy", @@ -1841,7 +1967,9 @@ data:extend({ {"nullius-capacitor", 3}, {"nullius-transformer", 1} }, - result = "nullius-grid-battery-1" + results = { + {type = "item", name = "nullius-grid-battery-1", amount = 1} + } }, { type = "recipe", @@ -1859,7 +1987,9 @@ data:extend({ {"nullius-box-capacitor", 3}, {"nullius-box-transformer", 1} }, - result = "nullius-box-grid-battery-1" + results = { + {type = "item", name = "nullius-box-grid-battery-1", amount = 1} + } }, { type = "recipe", @@ -1876,7 +2006,9 @@ data:extend({ {"nullius-power-pole-4", 1}, {"nullius-heat-pipe-2", 2} }, - result = "nullius-grid-battery-2" + results = { + {type = "item", name = "nullius-grid-battery-2", amount = 1} + } }, { type = "recipe", @@ -1894,7 +2026,9 @@ data:extend({ {"nullius-box-power-pole-4", 1}, {"nullius-box-heat-pipe-2", 2} }, - result = "nullius-box-grid-battery-2" + results = { + {type = "item", name = "nullius-box-grid-battery-2", amount = 1} + } }, { type = "recipe", @@ -1907,7 +2041,9 @@ data:extend({ {"nullius-box-grid-battery-2", 1}, {"nullius-battery-3", 3} }, - result = "nullius-grid-battery-3" + results = { + {type = "item", name = "nullius-grid-battery-3", amount = 1} + } }, { @@ -1936,7 +2072,9 @@ data:extend({ {"inserter", 3}, {"small-lamp", 2} }, - result = "nullius-lab-1" + results = { + {type = "item", name = "nullius-lab-1", amount = 1} + } }, { @@ -1963,11 +2101,13 @@ data:extend({ {"radar", 1}, {"nullius-beacon-1", 1}, {"nullius-processor-1", 8}, - {"stack-filter-inserter", 2}, + {"bulk-inserter", 2}, {"stone-wall", 6}, {"gate", 2} }, - result = "nullius-lab-2" + results = { + {type = "item", name = "nullius-lab-2", amount = 1} + } }, { @@ -1996,7 +2136,9 @@ data:extend({ {"nullius-box-processor-2", 2}, {"nullius-logistic-bot-3", 2} }, - result = "nullius-lab-3" + results = { + {type = "item", name = "nullius-lab-3", amount = 1} + } }, { @@ -2020,12 +2162,14 @@ data:extend({ energy_required = 150, ingredients = { {"nullius-lab-2", 3}, - {"nullius-sensor-node-2", 1}, + {"nullius-sensor-node-2", 1}, {"nullius-nanofabricator-1", 1}, - {"nullius-logistic-bot-2", 2}, + {"nullius-logistic-bot-2", 2}, {"nullius-box-insulation", 10} }, - result = "nullius-biology-lab" + results = { + {type = "item", name = "nullius-biology-lab", amount = 1} + } }, { @@ -2055,7 +2199,9 @@ data:extend({ {"nullius-iron-sheet", 2}, {"nullius-capacitor", 1} }, - result = "nullius-beacon-1" + results = { + {type = "item", name = "nullius-beacon-1", amount = 1} + } }, { type = "recipe", @@ -2088,8 +2234,9 @@ data:extend({ {"nullius-box-iron-sheet", 2}, {"nullius-box-capacitor", 1} }, - result = "nullius-beacon-1", - result_count = 5 + results = { + {type = "item", name = "nullius-beacon-1", amount = 5} + } }, { @@ -2119,7 +2266,9 @@ data:extend({ {"nullius-relay-1", 1}, {"substation", 1} }, - result = "nullius-beacon-2" + results = { + {type = "item", name = "nullius-beacon-2", amount = 1} + } }, { type = "recipe", @@ -2152,8 +2301,9 @@ data:extend({ {"nullius-box-relay-1", 1}, {"substation", 5} }, - result = "nullius-beacon-2", - result_count = 5 + results = { + {type = "item", name = "nullius-beacon-2", amount = 5} + } }, { @@ -2183,8 +2333,9 @@ data:extend({ {"nullius-relay-3", 1}, {"nullius-substation-2", 1} }, - result = "nullius-beacon-3", - result_count = 2 + results = { + {type = "item", name = "nullius-beacon-3", amount = 2} + } }, { type = "recipe", @@ -2215,8 +2366,9 @@ data:extend({ {"nullius-box-relay-3", 1}, {"nullius-substation-2", 5} }, - result = "nullius-beacon-3", - result_count = 10 + results = { + {type = "item", name = "nullius-beacon-3", amount = 10} + } }, { @@ -2238,7 +2390,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/beacon.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "beacon", order = "nullius-cc", @@ -2260,8 +2412,9 @@ data:extend({ {"nullius-relay-2", 1}, {"nullius-productivity-module-1", 1} }, - result = "nullius-large-beacon-1", - result_count = 2 + results = { + {type = "item", name = "nullius-large-beacon-1", amount = 2} + } }, { type = "recipe", @@ -2279,8 +2432,9 @@ data:extend({ {"nullius-sensor-node-3", 1}, {"nullius-productivity-module-2", 1} }, - result = "nullius-large-beacon-2", - result_count = 3 + results = { + {type = "item", name = "nullius-large-beacon-2", amount = 3} + } }, { type = "recipe", @@ -2298,12 +2452,15 @@ data:extend({ {"nullius-sensor-node-3", 1}, {"nullius-productivity-module-2", 1} }, - result = "nullius-large-beacon-2" + results = { + {type = "item", name = "nullius-large-beacon-2", amount = 1} + } }, { type = "recipe", name = "nullius-sensor-node-1", + localised_name = {"entity-name.nullius-sensor-node-1"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -2315,7 +2472,9 @@ data:extend({ {"nullius-iron-sheet", 3}, {"nullius-motor-2", 1} }, - result = "radar" + results = { + {type = "item", name = "radar", amount = 1} + } }, { type = "recipe", @@ -2348,8 +2507,9 @@ data:extend({ {"nullius-box-iron-sheet", 3}, {"nullius-box-motor-2", 1} }, - result = "radar", - result_count = 5 + results = { + {type = "item", name = "radar", amount = 5} + } }, { @@ -2358,7 +2518,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/radar.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 1} }}, subgroup = "laboratory", @@ -2380,7 +2540,9 @@ data:extend({ {"nullius-fiberglass", 4}, {"nullius-optical-cable", 6} }, - result = "nullius-sensor-node-2" + results = { + {type = "item", name = "nullius-sensor-node-2", amount = 1} + } }, { type = "recipe", @@ -2413,8 +2575,9 @@ data:extend({ {"nullius-box-fiberglass", 4}, {"nullius-box-optical-cable", 6} }, - result = "nullius-sensor-node-2", - result_count = 5 + results = { + {type = "item", name = "nullius-sensor-node-2", amount = 5} + } }, { @@ -2423,7 +2586,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/radar.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "laboratory", order = "nullius-dd", @@ -2444,12 +2607,15 @@ data:extend({ {"nullius-yield-module-3", 1}, {"nullius-box-reinforced-concrete", 1} }, - result = "nullius-sensor-node-3" + results = { + {type = "item", name = "nullius-sensor-node-3", amount = 1} + } }, { type = "recipe", name = "nullius-logic-circuit", + localised_name = {"entity-name.nullius-logic-circuit"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -2461,8 +2627,9 @@ data:extend({ {"nullius-polycrystalline-silicon", 2}, {"nullius-graphite", 1} }, - result = "decider-combinator", - result_count = 3 + results = { + {type = "item", name = "decider-combinator", amount = 3} + } }, { type = "recipe", @@ -2480,13 +2647,14 @@ data:extend({ {"nullius-box-polycrystalline-silicon", 2}, {"nullius-box-graphite", 1} }, - result = "nullius-box-logic-circuit", - result_count = 3 + results = { + {type = "item", name = "nullius-box-logic-circuit", amount = 3} + } }, { type = "recipe", name = "nullius-logic-circuit-2", - localised_name = {"", {"item-name.nullius-box", {"entity-name.nullius-logic-circuit"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"entity-name.nullius-logic-circuit"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -2512,12 +2680,14 @@ data:extend({ {type="item", name="nullius-box-graphite", amount=1}, {type="fluid", name="nullius-argon", amount=2, fluidbox_index=1} }, - result = "nullius-box-logic-circuit", - result_count = 5 + results = { + {type = "item", name = "nullius-box-logic-circuit", amount = 5} + } }, { type = "recipe", name = "nullius-memory-circuit", + localised_name = {"entity-name.nullius-memory-circuit"}, enabled = false, category = "tiny-crafting", always_show_made_in = true, @@ -2528,8 +2698,9 @@ data:extend({ {"decider-combinator", 2}, {"nullius-capacitor", 3} }, - result = "constant-combinator", - result_count = 4 + results = { + {type = "item", name = "constant-combinator", amount = 4} + } }, { type = "recipe", @@ -2546,13 +2717,14 @@ data:extend({ {"nullius-box-logic-circuit", 2}, {"nullius-box-capacitor", 3} }, - result = "nullius-box-memory-circuit", - result_count = 4 + results = { + {type = "item", name = "nullius-box-memory-circuit", amount = 4} + } }, { type = "recipe", name = "nullius-memory-circuit-2", - localised_name = {"", {"item-name.nullius-box", {"entity-name.nullius-memory-circuit"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"entity-name.nullius-memory-circuit"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -2577,12 +2749,14 @@ data:extend({ {type="item", name="nullius-box-capacitor", amount=3}, {type="fluid", name="nullius-argon", amount=1, fluidbox_index=1} }, - result = "nullius-box-memory-circuit", - result_count = 5 + results = { + {type = "item", name = "nullius-box-memory-circuit", amount = 5} + } }, { type = "recipe", name = "nullius-arithmetic-circuit", + localised_name = {"entity-name.nullius-arithmetic-circuit"}, enabled = false, category = "tiny-crafting", always_show_made_in = true, @@ -2592,7 +2766,9 @@ data:extend({ {"constant-combinator", 1}, {"nullius-aluminum-wire", 1} }, - result = "arithmetic-combinator" + results = { + {type = "item", name = "arithmetic-combinator", amount = 1} + } }, { type = "recipe", @@ -2607,22 +2783,27 @@ data:extend({ {"nullius-box-memory-circuit", 1}, {"nullius-box-aluminum-wire", 1} }, - result = "nullius-box-arithmetic-circuit" + results = { + {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1} + } }, { type = "recipe", name = "nullius-antenna", + localised_name = {"entity-name.nullius-antenna"}, enabled = false, category = "small-crafting", always_show_made_in = true, energy_required = 6, ingredients = { {"nullius-aluminum-rod", 2}, - {"red-wire", 1}, + {"nullius-red-wire", 1}, {"nullius-rubber", 1}, {"nullius-capacitor", 1} }, - result = "programmable-speaker" + results = { + {type = "item", name = "programmable-speaker", amount = 1} + } }, { type = "recipe", @@ -2638,7 +2819,9 @@ data:extend({ {"nullius-box-rubber", 1}, {"nullius-box-capacitor", 1} }, - result = "nullius-box-antenna" + results = { + {type = "item", name = "nullius-box-antenna", amount = 1} + } }, { @@ -2664,7 +2847,9 @@ data:extend({ {"nullius-glass", 1}, {"nullius-iron-sheet", 1} }, - result = "small-lamp" + results = { + {type = "item", name = "small-lamp", amount = 1} + } }, { type = "recipe", @@ -2693,8 +2878,9 @@ data:extend({ {"nullius-glass", 2}, {"nullius-aluminum-sheet", 2} }, - result = "small-lamp", - result_count = 5 + results = { + {type = "item", name = "small-lamp", amount = 5} + } }, { type = "recipe", @@ -2711,8 +2897,9 @@ data:extend({ {"nullius-box-glass", 2}, {"nullius-box-aluminum-sheet", 2} }, - result = "nullius-box-lamp-1", - result_count = 5 + results = { + {type = "item", name = "nullius-box-lamp-1", amount = 5} + } }, { type = "recipe", @@ -2728,11 +2915,12 @@ data:extend({ {type="item", name="nullius-hard-glass", amount=2}, {type="item", name="nullius-sodium", amount=1}, {type="item", name="nullius-ceramic-powder", amount=1}, - {type="item", name="green-wire", amount=2}, + {type="item", name="nullius-green-wire", amount=2}, {type="fluid", name="nullius-compressed-argon", amount=10, fluidbox_index=1} }, - result = "nullius-lamp-2", - result_count = 2 + results = { + {type = "item", name = "nullius-lamp-2", amount = 2} + } }, { type = "recipe", @@ -2752,8 +2940,9 @@ data:extend({ {type="item", name="nullius-box-green-wire", amount=2}, {type="fluid", name="nullius-compressed-argon", amount=50, fluidbox_index=1} }, - result = "nullius-box-lamp-2", - result_count = 2 + results = { + {type = "item", name = "nullius-box-lamp-2", amount = 2} + } }, { @@ -2773,7 +2962,7 @@ data:extend({ name = "nullius-power-pole-4", icons = {{ icon = "__base__/graphics/icons/medium-electric-pole.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }}, subgroup = "electric-pole", order = "nullius-be", @@ -2785,7 +2974,7 @@ data:extend({ name = "nullius-pylon-2", icons = {{ icon = "__base__/graphics/icons/big-electric-pole.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }}, subgroup = "electric-pole", order = "nullius-cc", @@ -2809,7 +2998,7 @@ data:extend({ name = "nullius-substation-2", icons = {{ icon = "__base__/graphics/icons/substation.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }}, subgroup = "electric-pole", order = "nullius-dc", @@ -2841,7 +3030,9 @@ data:extend({ {"nullius-iron-rod", 1}, {"nullius-plastic", 1} }, - result = "small-electric-pole" + results = { + {type = "item", name = "small-electric-pole", amount = 1} + } }, { type = "recipe", @@ -2857,8 +3048,9 @@ data:extend({ {"nullius-box-insulated-wire", 2}, {"nullius-box-steel-rod", 1} }, - result = "nullius-box-power-pole-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-power-pole-1", amount = 2} + } }, { type = "recipe", @@ -2872,7 +3064,9 @@ data:extend({ {"copper-cable", 2}, {"nullius-aluminum-rod", 1} }, - result = "medium-electric-pole" + results = { + {type = "item", name = "medium-electric-pole", amount = 1} + } }, { type = "recipe", @@ -2887,7 +3081,9 @@ data:extend({ {"nullius-box-insulated-wire", 2}, {"nullius-box-aluminum-rod", 1} }, - result = "nullius-box-power-pole-2" + results = { + {type = "item", name = "nullius-box-power-pole-2", amount = 1} + } }, { type = "recipe", @@ -2898,11 +3094,13 @@ data:extend({ energy_required = 5, ingredients = { {"medium-electric-pole", 1}, - {"red-wire", 3}, + {"nullius-red-wire", 3}, {"nullius-fiberglass", 2}, {"nullius-ceramic-powder", 1} }, - result = "nullius-power-pole-3" + results = { + {type = "item", name = "nullius-power-pole-3", amount = 1} + } }, { type = "recipe", @@ -2918,7 +3116,9 @@ data:extend({ {"nullius-box-fiberglass", 2}, {"nullius-box-ceramic-powder", 1} }, - result = "nullius-box-power-pole-3" + results = { + {type = "item", name = "nullius-box-power-pole-3", amount = 1} + } }, { type = "recipe", @@ -2935,7 +3135,9 @@ data:extend({ {"power-switch", 1}, {"concrete", 2} }, - result = "nullius-power-pole-4" + results = { + {type = "item", name = "nullius-power-pole-4", amount = 1} + } }, { type = "recipe", @@ -2953,7 +3155,9 @@ data:extend({ {"nullius-box-power-switch", 1}, {"nullius-box-concrete", 1} }, - result = "nullius-box-power-pole-4" + results = { + {type = "item", name = "nullius-box-power-pole-4", amount = 1} + } }, { @@ -2968,7 +3172,9 @@ data:extend({ {"copper-cable", 3}, {"nullius-steel-beam", 2} }, - result = "big-electric-pole" + results = { + {type = "item", name = "big-electric-pole", amount = 1} + } }, { type = "recipe", @@ -2983,7 +3189,9 @@ data:extend({ {"nullius-box-insulated-wire", 3}, {"nullius-box-steel-beam", 2} }, - result = "nullius-box-pylon-1" + results = { + {type = "item", name = "nullius-box-pylon-1", amount = 1} + } }, { type = "recipe", @@ -3000,7 +3208,9 @@ data:extend({ {"nullius-transformer", 1}, {"concrete", 4} }, - result = "nullius-pylon-2" + results = { + {type = "item", name = "nullius-pylon-2", amount = 1} + } }, { type = "recipe", @@ -3018,7 +3228,9 @@ data:extend({ {"nullius-box-transformer", 1}, {"nullius-box-concrete", 2} }, - result = "nullius-box-pylon-2" + results = { + {type = "item", name = "nullius-box-pylon-2", amount = 1} + } }, { type = "recipe", @@ -3034,7 +3246,9 @@ data:extend({ {"nullius-efficiency-module-1", 1}, {"refined-concrete", 6} }, - result = "nullius-pylon-3" + results = { + {type = "item", name = "nullius-pylon-3", amount = 1} + } }, { type = "recipe", @@ -3051,7 +3265,9 @@ data:extend({ {"nullius-box-efficiency-module-1", 1}, {"nullius-box-reinforced-concrete", 3} }, - result = "nullius-box-pylon-3" + results = { + {type = "item", name = "nullius-box-pylon-3", amount = 1} + } }, { @@ -3068,7 +3284,9 @@ data:extend({ {"concrete", 6}, {"nullius-transformer", 1} }, - result = "substation" + results = { + {type = "item", name = "substation", amount = 1} + } }, { type = "recipe", @@ -3100,8 +3318,9 @@ data:extend({ {"nullius-box-concrete", 3}, {"nullius-box-transformer", 1} }, - result = "substation", - result_count = 5 + results = { + {type = "item", name = "substation", amount = 5} + } }, { type = "recipe", @@ -3117,7 +3336,9 @@ data:extend({ {"nullius-sensor-1", 2}, {"nullius-battery-1", 2} }, - result = "nullius-substation-2" + results = { + {type = "item", name = "nullius-substation-2", amount = 1} + } }, { type = "recipe", @@ -3149,8 +3370,9 @@ data:extend({ {"nullius-box-sensor-1", 2}, {"nullius-box-battery-1", 2} }, - result = "nullius-substation-2", - result_count = 5 + results = { + {type = "item", name = "nullius-substation-2", amount = 5} + } }, { type = "recipe", @@ -3167,7 +3389,9 @@ data:extend({ {"nullius-grid-battery-1", 1}, {"refined-concrete", 20} }, - result = "nullius-substation-3" + results = { + {type = "item", name = "nullius-substation-3", amount = 1} + } }, { type = "recipe", @@ -3200,8 +3424,9 @@ data:extend({ {"nullius-box-grid-battery-1", 1}, {"nullius-box-reinforced-concrete", 10} }, - result = "nullius-substation-3", - result_count = 5 + results = { + {type = "item", name = "nullius-substation-3", amount = 5} + } }, { @@ -3209,7 +3434,7 @@ data:extend({ name = "nullius-reactor", icon = "__base__/graphics/icons/nuclear-reactor.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "nuclear", order = "nullius-b", place_result = "nullius-reactor", @@ -3230,7 +3455,9 @@ data:extend({ {type="item", name="nullius-large-furnace-2", amount=1}, {type="item", name="nullius-box-processor-2", amount=1} }, - result = "nullius-reactor" + results = { + {type = "item", name = "nullius-reactor", amount = 1} + } }, { @@ -3238,7 +3465,7 @@ data:extend({ name = "nullius-silo", icon = "__base__/graphics/icons/rocket-silo.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "space", order = "nullius-b", place_result = "nullius-silo", @@ -3261,13 +3488,15 @@ data:extend({ {type="item", name="nullius-box-productivity-module-2", amount=1}, {type="item", name="nullius-lab-3", amount=1} }, - result = "nullius-silo" + results = { + {type = "item", name = "nullius-silo", amount = 1} + } }, { type = "item", name = "nullius-solar-collector-1", - localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", tostring(1)}, icons = {{ icon = ENTICONPATH .. "collector1.png", icon_size = 64 @@ -3280,7 +3509,7 @@ data:extend({ { type = "item", name = "nullius-solar-collector-2", - localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", tostring(2)}, icons = {{ icon = ENTICONPATH .. "collector2.png", icon_size = 64 @@ -3293,7 +3522,7 @@ data:extend({ { type = "item", name = "nullius-solar-collector-3", - localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", 3}, + localised_name = {"", {"entity-name.nullius-solar-collector"}, " ", tostring(3)}, icons = {{ icon = ENTICONPATH .. "collector3.png", icon_size = 64 @@ -3316,7 +3545,9 @@ data:extend({ {"nullius-steel-rod", 3}, {"nullius-heat-pipe-1", 4} }, - result = "nullius-solar-collector-1" + results = { + {type = "item", name = "nullius-solar-collector-1", amount = 1} + } }, { type = "recipe", @@ -3332,7 +3563,9 @@ data:extend({ {"nullius-box-steel-rod", 3}, {"nullius-box-heat-pipe-1", 4} }, - result = "nullius-box-solar-collector-1" + results = { + {type = "item", name = "nullius-box-solar-collector-1", amount = 1} + } }, { type = "recipe", @@ -3348,7 +3581,9 @@ data:extend({ {"nullius-steel-cable", 4}, {"nullius-titanium-sheet", 5} }, - result = "nullius-solar-collector-2" + results = { + {type = "item", name = "nullius-solar-collector-2", amount = 1} + } }, { type = "recipe", @@ -3365,7 +3600,9 @@ data:extend({ {"nullius-box-steel-cable", 4}, {"nullius-box-titanium-sheet", 5} }, - result = "nullius-box-solar-collector-2" + results = { + {type = "item", name = "nullius-box-solar-collector-2", amount = 1} + } }, { type = "recipe", @@ -3382,7 +3619,9 @@ data:extend({ {"nullius-sensor-1", 1}, {"nullius-monocrystalline-silicon", 12} }, - result = "nullius-solar-collector-3" + results = { + {type = "item", name = "nullius-solar-collector-3", amount = 1} + } }, { type = "recipe", @@ -3400,7 +3639,9 @@ data:extend({ {"nullius-box-sensor-1", 1}, {"nullius-box-monocrystalline-silicon", 12} }, - result = "nullius-box-solar-collector-3" + results = { + {type = "item", name = "nullius-box-solar-collector-3", amount = 1} + } } }) @@ -3409,15 +3650,15 @@ if mods["reskins-bobs"] then data.raw.item["nullius-grid-battery-1"].icons = { { icon = "__reskins-bobs__/graphics/icons/power/accumulator/accumulator-3-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }, { icon = "__reskins-bobs__/graphics/icons/power/accumulator/accumulator-icon-mask.png", - icon_size = 64, icon_mipmaps = 4, tint = tiercolor("red") + icon_size = 64, tint = tiercolor("red") }, { icon = "__reskins-bobs__/graphics/icons/power/accumulator/accumulator-icon-highlights.png", - icon_size = 64, icon_mipmaps = 4, tint = {1, 1, 1, 0} + icon_size = 64, tint = {1, 1, 1, 0} } } data.raw.item["nullius-grid-battery-2"].icons = @@ -3551,15 +3792,15 @@ data.raw.item["nullius-large-beacon-2"].icons = { data.raw.item["radar"].icons = { { icon = "__reskins-bobs__/graphics/icons/warfare/radar/radar-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }, { icon = "__reskins-bobs__/graphics/icons/warfare/radar/radar-icon-mask.png", - icon_size = 64, icon_mipmaps = 4, tint = tiercolor("yellow") + icon_size = 64, tint = tiercolor("yellow") }, { icon = "__reskins-bobs__/graphics/icons/warfare/radar/radar-icon-highlights.png", - icon_size = 64, icon_mipmaps = 4, tint = {1, 1, 1, 0} + icon_size = 64, tint = {1, 1, 1, 0} } } data.raw.item["nullius-sensor-node-2"].icons = diff --git a/nullius/prototypes/item/drone.lua b/nullius/prototypes/item/drone.lua index aa9f33d..2f71fc9 100644 --- a/nullius/prototypes/item/drone.lua +++ b/nullius/prototypes/item/drone.lua @@ -49,7 +49,7 @@ local function create_drone(base_name, group, suborder, base_suffix, stack, flar local lname = nil if (number ~= nil) then - lname = {"", {"item-name."..prefix.."-drone"..suffix1}, " ", number} + lname = {"", {"item-name."..prefix.."-drone"..suffix1}, " ", tostring(number)} end data:extend({ @@ -61,8 +61,8 @@ local function create_drone(base_name, group, suborder, base_suffix, stack, flar subgroup = group, order = "nullius-"..suborder, stack_size = stack, + ammo_category = flare, ammo_type = { - category = flare, target_type = "position", action = { type = "direct", @@ -100,7 +100,9 @@ local function create_terraform(suffix, tile, suborder) {"rocket-fuel", 2}, {"nullius-box-land-fill-"..tile, 200} }, - result = "nullius-terraforming-drone-"..suffix + results = { + {type="item", name="nullius-terraforming-drone-"..suffix, amount = 1} + } }, { type = "recipe", @@ -114,7 +116,9 @@ local function create_terraform(suffix, tile, suborder) {"nullius-shallow-excavation-remote", 1}, {"nullius-productivity-module-1", 1} }, - result = "nullius-terraforming-remote-"..suffix + results = { + {type="item", name="nullius-terraforming-remote-"..suffix, amount = 1} + } } }) end @@ -138,7 +142,9 @@ local function create_paving(suffix, landfill, suborder, tile) {"rocket-fuel", 1}, {"nullius-box-"..tile.."-concrete", 300} }, - result = "nullius-paving-drone-"..suffix + results = { + {type="item", name="nullius-paving-drone-"..suffix, amount = 1} + } }, { type = "recipe", @@ -152,7 +158,9 @@ local function create_paving(suffix, landfill, suborder, tile) {"nullius-terraforming-remote-"..landfill, 1}, {"nullius-productivity-module-2", 1} }, - result = "nullius-paving-remote-"..suffix + results = { + {type="item", name="nullius-paving-remote-"..suffix, amount = 1} + } } }) end @@ -225,7 +233,9 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it {"nullius-terraforming-remote-"..landfill, 1}, {"nullius-yield-module-3", 1} }, - result = "nullius-guide-remote-"..mineral + results = { + {type="item", name="nullius-guide-remote-"..mineral, amount = 1} + } }, { type = "recipe", @@ -258,7 +268,9 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it {"nullius-guide-drone-"..mineral.."-1", 2}, {"nullius-box-astronomy-pack", 1} }, - result = "nullius-asteroid-miner-1" + results = { + {type="item", name="nullius-asteroid-miner-1", amount = 1} + } }, { type = "recipe", @@ -272,7 +284,9 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it {"nullius-guide-drone-"..mineral.."-1", 40}, {"nullius-relay-3", 1} }, - result = "nullius-guide-drone-"..mineral.."-2" + results = { + {type="item", name="nullius-guide-drone-"..mineral.."-2", amount = 1} + } } }) end @@ -283,7 +297,7 @@ local function create_bio_drone(base, suborder, iname) { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = iname, @@ -325,7 +339,9 @@ local function create_farmer(base, suborder, species, spore, spore_count, {"nullius-"..spore, spore_count}, cost1, cost2, cost3, cost4 }, - result = "nullius-"..base.."-drone" + results = { + {type="item", name="nullius-"..base.."-drone", amount = 1} + } }, { type = "recipe", @@ -339,7 +355,9 @@ local function create_farmer(base, suborder, species, spore, spore_count, {"nullius-"..remote, 1}, {"nullius-"..modtype, 1} }, - result = "nullius-"..base.."-remote" + results = { + {type="item", name="nullius-"..base.."-remote", amount = 1} + } } }) end @@ -370,10 +388,10 @@ create_paving("hazard", "tan", "k") create_miner("iron", "b", 1, "red", "__base__/graphics/icons/iron-ore.png", 64) create_miner("sandstone", "c", 1, "tan", - "__angelsrefining__/graphics/icons/angels-ore6/angels-ore6-2.png", 64, {184, 125, 73}) -create_miner("bauxite", "d", 1, "brown", "__angelssmelting__/graphics/icons/ore-bauxite.png", 32) + "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-2.png", 64, {184, 125, 73}) +create_miner("bauxite", "d", 1, "brown", "__angelssmeltinggraphics__/graphics/icons/ore-bauxite.png", 32) create_miner("limestone", "e", 2, "beige", - "__angelsrefining__/graphics/icons/angels-ore6/angels-ore6-3.png", 64, {0.898, 0.773, 0.688}) + "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-3.png", 64, {0.898, 0.773, 0.688}) create_miner("copper", "f", 2, "grey", "__base__/graphics/icons/copper-ore.png", 64) create_miner("uranium", "g", 2, "grey", "__base__/graphics/icons/uranium-ore.png", 64) @@ -414,7 +432,9 @@ data:extend({ {"nullius-sensor-2", 1}, {"nullius-missile-1", 1} }, - result = "nullius-scout-drone-1" + results = { + {type="item", name="nullius-scout-drone-1", amount = 1} + } }, { type = "recipe", @@ -428,7 +448,9 @@ data:extend({ {"nullius-robot-frame-2", 1}, {"nullius-processor-2", 2} }, - result = "nullius-scout-drone-2" + results = { + {type="item", name="nullius-scout-drone-2", amount = 1} + } }, { @@ -455,7 +477,9 @@ data:extend({ {"nullius-sensor-2", 1}, {"programmable-speaker", 1} }, - result = "nullius-scout-remote" + results = { + {type="item", name="nullius-scout-remote", amount = 1} + } }, { @@ -471,7 +495,9 @@ data:extend({ {"nullius-box-missile-1", 2}, {"nullius-rock-picker", 1} }, - result = "nullius-demolition-drone" + results = { + {type="item", name="nullius-demolition-drone", amount = 1} + } }, { type = "recipe", @@ -488,7 +514,9 @@ data:extend({ {"nullius-missile-launcher", 1}, {"nullius-box-missile-1", 2} }, - result = "nullius-demolition-drone" + results = { + {type="item", name="nullius-demolition-drone", amount = 1} + } }, { type = "recipe", @@ -502,7 +530,9 @@ data:extend({ {"nullius-scout-remote", 1}, {"nullius-processor-1", 1} }, - result = "nullius-demolition-remote" + results = { + {type="item", name="nullius-demolition-remote", amount = 1} + } }, { @@ -518,7 +548,9 @@ data:extend({ {"nullius-trash-compactor", 1}, {"nullius-large-cargo-pod-2", 2} }, - result = "nullius-shallow-excavation-drone" + results = { + {type="item", name="nullius-shallow-excavation-drone", amount = 1} + } }, { type = "recipe", @@ -532,7 +564,9 @@ data:extend({ {"nullius-shallow-excavation-drone", 1}, {"nullius-missile-2", 2} }, - result = "nullius-excavation-drone" + results = { + {type="item", name="nullius-excavation-drone", amount = 1} + } }, { type = "recipe", @@ -548,7 +582,9 @@ data:extend({ {"nullius-demolition-drone", 1}, {"nullius-box-missile-2", 1} }, - result = "nullius-excavation-drone" + results = { + {type="item", name="nullius-excavation-drone", amount = 1} + } }, { type = "recipe", @@ -562,7 +598,9 @@ data:extend({ {"nullius-demolition-remote", 1}, {"nullius-processor-2", 1} }, - result = "nullius-shallow-excavation-remote" + results = { + {type="item", name="nullius-shallow-excavation-remote", amount = 1} + } }, { type = "recipe", @@ -574,9 +612,11 @@ data:extend({ energy_required = 3, ingredients = { {"nullius-shallow-excavation-remote", 1}, - {"red-wire", 1} + {"nullius-red-wire", 1} }, - result = "nullius-excavation-remote" + results = { + {type="item", name="nullius-excavation-remote", amount = 1} + } }, { @@ -585,7 +625,6 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/artillery-turret.png", icon_size = 64, - icon_mipmaps = 4, tint = {0.7, 0.7, 0.9} }}, subgroup = "drone-launcher", @@ -608,7 +647,9 @@ data:extend({ {"nullius-motor-2", 2}, {"nullius-bearing", 3} }, - result = "nullius-drone-launcher-1" + results = { + {type="item", name="nullius-drone-launcher-1", amount = 1} + } }, { @@ -617,7 +658,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/artillery-turret.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "drone-launcher", order = "nullius-ec", @@ -637,7 +678,9 @@ data:extend({ {"nullius-hangar-2", 1}, {"nullius-productivity-module-1", 1} }, - result = "nullius-drone-launcher-2" + results = { + {type="item", name="nullius-drone-launcher-2", amount = 1} + } }, { @@ -646,7 +689,6 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/artillery-wagon.png", icon_size = 64, - icon_mipmaps = 4, tint = {0.7, 0.7, 0.9} }}, subgroup = "drone-launcher", @@ -665,7 +707,9 @@ data:extend({ {"nullius-cargo-wagon-2", 1}, {"nullius-drone-launcher-1", 1} }, - result = "nullius-drone-carrier-1" + results = { + {type="item", name="nullius-drone-carrier-1", amount = 1} + } }, { @@ -674,7 +718,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/artillery-wagon.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "drone-launcher", order = "nullius-fc", @@ -693,7 +737,9 @@ data:extend({ {"nullius-cargo-wagon-3", 1}, {"nullius-drone-launcher-2", 1} }, - result = "nullius-drone-carrier-2" + results = { + {type="item", name="nullius-drone-carrier-2", amount = 1} + } }, { @@ -732,7 +778,9 @@ data:extend({ {"nullius-box-astronomy-pack", 6}, {"nullius-large-buffer-chest-2", 4} }, - result = "nullius-asteroid-miner-1" + results = { + {type="item", name="nullius-asteroid-miner-1", amount = 1} + } }, { @@ -770,12 +818,14 @@ data:extend({ {"nullius-construction-bot-4", 3}, {"nullius-trash-compactor-2", 2} }, - result = "nullius-asteroid-miner-2" + results = { + {type="item", name="nullius-asteroid-miner-2", amount = 1} + } }, { type = "item", name = "nullius-android-1", - localised_name = {"", {"item-name.nullius-android"}, " ", 1}, + localised_name = {"", {"item-name.nullius-android"}, " ", tostring(1)}, localised_description = {"item-description.nullius-android"}, icons = {{ icon = ICONPATH .. "android1.png", @@ -789,7 +839,7 @@ data:extend({ { type = "item", name = "nullius-android-2", - localised_name = {"", {"item-name.nullius-android"}, " ", 2}, + localised_name = {"", {"item-name.nullius-android"}, " ", tostring(2)}, localised_description = {"item-description.nullius-android"}, icons = {{ icon = ICONPATH .. "android2.png", @@ -817,7 +867,9 @@ data:extend({ {"nullius-night-vision-2", 2}, {"nullius-large-cargo-pod-2", 2} }, - result = "nullius-android-1" + results = { + {type="item", name="nullius-android-1", amount = 1} + } }, { type = "recipe", @@ -838,9 +890,11 @@ data:extend({ {"nullius-solar-panel-2", 3}, {"nullius-night-vision-2", 2}, {"nullius-hangar-2", 1}, - {"express-stack-filter-inserter", 4} + {"bob-express-bulk-inserter", 4} }, - result = "nullius-android-1" + results = { + {type="item", name="nullius-android-1", amount = 1} + } }, { type = "recipe", @@ -858,7 +912,9 @@ data:extend({ {"nullius-battery-2", 4}, {"nullius-solar-panel-3", 3} }, - result = "nullius-android-2" + results = { + {type="item", name="nullius-android-2", amount = 1} + } }, { type = "recipe", @@ -882,7 +938,9 @@ data:extend({ {"nullius-heat-pipe-3", 2}, {"nullius-hangar-3", 1} }, - result = "nullius-android-2" + results = { + {type="item", name="nullius-android-2", amount = 1} + } } }) diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index a8492d4..26e5213 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -8,7 +8,7 @@ data:extend({ name = "nullius-chassis-1", icon = "__base__/graphics/icons/light-armor.png", icon_size = 64, - icon_mipmaps = 4, + resistances = { { type = "explosion", decrease = 2, percent = 20 }, { type = "impact", decrease = 2, percent = 20 }, @@ -25,7 +25,7 @@ data:extend({ name = "nullius-chassis-2", icon = "__base__/graphics/icons/heavy-armor.png", icon_size = 64, - icon_mipmaps = 4, + resistances = { { type = "explosion", decrease = 10, percent = 40 }, { type = "impact", decrease = 5, percent = 30 }, @@ -45,7 +45,7 @@ data:extend({ name = "nullius-chassis-3", icon = "__base__/graphics/icons/modular-armor.png", icon_size = 64, - icon_mipmaps = 4, + resistances = { { type = "explosion", decrease = 20, percent = 50 }, { type = "impact", decrease = 10, percent = 40 }, @@ -66,7 +66,7 @@ data:extend({ name = "nullius-chassis-4", icon = "__base__/graphics/icons/power-armor.png", icon_size = 64, - icon_mipmaps = 4, + resistances = { { type = "explosion", decrease = 30, percent = 60 }, { type = "impact", decrease = 20, percent = 50 }, @@ -87,7 +87,7 @@ data:extend({ name = "nullius-chassis-5", icon = "__base__/graphics/icons/power-armor-mk2.png", icon_size = 64, - icon_mipmaps = 4, + resistances = { { type = "explosion", decrease = 40, percent = 75 }, { type = "impact", decrease = 30, percent = 60 }, @@ -136,7 +136,9 @@ data:extend({ {"nullius-rubber", 8}, {"inserter", 4} }, - result = "nullius-chassis-2" + results = { + {type = "item", name = "nullius-chassis-2", amount = 1} + } }, { type = "recipe", @@ -153,7 +155,9 @@ data:extend({ {"nullius-efficiency-module-1", 1}, {"nullius-transformer", 1} }, - result = "nullius-chassis-3" + results = { + {type = "item", name = "nullius-chassis-3", amount = 1} + } }, { type = "recipe", @@ -171,7 +175,9 @@ data:extend({ {"nullius-efficiency-module-2", 2}, {"nullius-small-cargo-pod-2", 3} }, - result = "nullius-chassis-4" + results = { + {type = "item", name = "nullius-chassis-4", amount = 1} + } }, { type = "recipe", @@ -189,7 +195,9 @@ data:extend({ {"nullius-productivity-module-3", 2}, {"nullius-large-cargo-pod-3", 2} }, - result = "nullius-chassis-5" + results = { + {type = "item", name = "nullius-chassis-5", amount = 1} + } }, { type = "recipe", @@ -212,7 +220,9 @@ data:extend({ {"nullius-box-productivity-module-3", 1}, {"nullius-large-buffer-chest-2", 1} }, - result = "nullius-chassis-5" + results = { + {type = "item", name = "nullius-chassis-5", amount = 1} + } }, { type = "recipe", @@ -228,7 +238,9 @@ data:extend({ {"nullius-leg-augmentation-4", 2}, {"nullius-relay-4", 1} }, - result = "nullius-chassis-6" + results = { + {type = "item", name = "nullius-chassis-6", amount = 1} + } }, { @@ -237,7 +249,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/solar-panel.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.77, 0.77, 0.68} }}, subgroup = "solar", @@ -252,7 +264,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/solar-panel.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 0.9} }}, subgroup = "solar", @@ -267,7 +279,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/solar-panel.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "solar", order = "nullius-bd", @@ -281,7 +293,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/solar-panel.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.75, 0.85} }}, subgroup = "solar", @@ -305,7 +317,9 @@ data:extend({ {"nullius-plastic", 2}, {"nullius-aluminum-rod", 1} }, - result = "nullius-solar-panel-1" + results = { + {type = "item", name = "nullius-solar-panel-1", amount = 1} + } }, { type = "recipe", @@ -322,7 +336,9 @@ data:extend({ {"nullius-box-plastic", 2}, {"nullius-box-aluminum-rod", 1} }, - result = "nullius-box-solar-panel-1" + results = { + {type = "item", name = "nullius-box-solar-panel-1", amount = 1} + } }, { type = "recipe", @@ -340,8 +356,9 @@ data:extend({ {type="item", name="nullius-ceramic-powder", amount=5}, {type="fluid", name="nullius-epoxy", amount=8, fluidbox_index=1} }, - result = "nullius-solar-panel-2", - result_count = 2 + results = { + {type = "item", name = "nullius-solar-panel-2", amount = 2} + } }, { type = "recipe", @@ -360,8 +377,9 @@ data:extend({ {type="item", name="nullius-box-ceramic-powder", amount=5}, {type="fluid", name="nullius-epoxy", amount=40, fluidbox_index=1} }, - result = "nullius-box-solar-panel-2", - result_count = 2 + results = { + {type = "item", name = "nullius-box-solar-panel-2", amount = 2} + } }, { type = "recipe", @@ -420,7 +438,9 @@ data:extend({ {type="item", name="nullius-productivity-module-3", amount=1}, {type="item", name="nullius-antimatter", amount=1} }, - result = "nullius-solar-panel-4" + results = { + {type = "item", name = "nullius-solar-panel-4", amount = 1} + } }, { @@ -428,7 +448,7 @@ data:extend({ name = "nullius-capacitor", icon = "__base__/graphics/icons/battery.png", icon_size = 64, - icon_mipmaps = 4, + placed_as_equipment_result = "nullius-capacitor", subgroup = "battery", order = "nullius-c", @@ -448,8 +468,9 @@ data:extend({ {type="item", name="nullius-alumina", amount=1}, {type="item", name="nullius-graphite", amount=1} }, - result = "nullius-capacitor", - result_count = 2 + results = { + {type = "item", name = "nullius-capacitor", amount = 2} + } }, { type = "recipe", @@ -467,13 +488,14 @@ data:extend({ {type="item", name="nullius-box-alumina", amount=1}, {type="item", name="nullius-box-graphite", amount=1} }, - result = "nullius-box-capacitor", - result_count = 2 + results = { + {type = "item", name = "nullius-box-capacitor", amount = 2} + } }, { type = "recipe", name = "nullius-capacitor-2", - localised_name = {"", {"item-name.nullius-box", {"equipment-name.nullius-capacitor"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"equipment-name.nullius-capacitor"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -499,8 +521,9 @@ data:extend({ {type="item", name="nullius-box-graphite", amount=1}, {type="fluid", name="nullius-argon", amount=3, fluidbox_index=1} }, - result = "nullius-box-capacitor", - result_count = 3 + results = { + {type = "item", name = "nullius-box-capacitor", amount = 3} + } }, { @@ -510,7 +533,7 @@ data:extend({ localised_description = {"equipment-description.nullius-battery"}, icon = "__base__/graphics/icons/battery-equipment.png", icon_size = 64, - icon_mipmaps = 4, + placed_as_equipment_result = "nullius-charged-battery-1", subgroup = "battery", order = "nullius-db", @@ -552,7 +575,9 @@ data:extend({ {type="item", name="nullius-aluminum-sheet", amount=3}, {type="item", name="nullius-plastic", amount=4} }, - result = "nullius-battery-1" + results = { + {type = "item", name = "nullius-battery-1", amount = 1} + } }, { type = "recipe", @@ -576,7 +601,9 @@ data:extend({ {type="item", name="nullius-box-aluminum-sheet", amount=3}, {type="item", name="nullius-box-plastic", amount=4} }, - result = "nullius-box-battery-1" + results = { + {type = "item", name = "nullius-box-battery-1", amount = 1} + } }, { type = "recipe", @@ -591,7 +618,7 @@ data:extend({ { icon = "__base__/graphics/icons/battery-equipment.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.36 } }, @@ -614,7 +641,9 @@ data:extend({ {type="item", name="nullius-box-copper-sheet", amount=2}, {type="item", name="nullius-box-plastic", amount=3} }, - result = "nullius-box-battery-1" + results = { + {type = "item", name = "nullius-box-battery-1", amount = 1} + } }, { type = "recipe", @@ -631,7 +660,9 @@ data:extend({ ingredients = { {"nullius-uncharged-battery-1", 1} }, - result = "nullius-battery-1" + results = { + {type = "item", name = "nullius-battery-1", amount = 1} + } }, { type = "recipe", @@ -658,7 +689,9 @@ data:extend({ ingredients = { {"nullius-uncharged-battery-1", 5} }, - result = "nullius-box-battery-1" + results = { + {type = "item", name = "nullius-box-battery-1", amount = 1} + } }, { @@ -668,7 +701,7 @@ data:extend({ localised_description = {"equipment-description.nullius-battery"}, icon = "__base__/graphics/icons/battery-mk2-equipment.png", icon_size = 64, - icon_mipmaps = 4, + placed_as_equipment_result = "nullius-charged-battery-2", subgroup = "battery", order = "nullius-dc", @@ -704,7 +737,9 @@ data:extend({ {type="item", name="nullius-lithium", amount=2}, {type="item", name="nullius-capacitor", amount=2} }, - result = "nullius-battery-2" + results = { + {type = "item", name = "nullius-battery-2", amount = 1} + } }, { type = "recipe", @@ -721,7 +756,9 @@ data:extend({ {type="item", name="nullius-box-lithium", amount=3}, {type="item", name="nullius-box-capacitor", amount=2} }, - result = "nullius-box-battery-2" + results = { + {type = "item", name = "nullius-box-battery-2", amount = 1} + } }, { type = "recipe", @@ -738,7 +775,9 @@ data:extend({ ingredients = { {"nullius-uncharged-battery-2", 1} }, - result = "nullius-battery-2" + results = { + {type = "item", name = "nullius-battery-2", amount = 1} + } }, { type = "recipe", @@ -765,7 +804,9 @@ data:extend({ ingredients = { {"nullius-uncharged-battery-2", 5} }, - result = "nullius-box-battery-2" + results = { + {type = "item", name = "nullius-box-battery-2", amount = 1} + } }, { @@ -811,7 +852,9 @@ data:extend({ {type="item", name="nullius-antimatter", amount=1}, {type="item", name="nullius-efficiency-module-3", amount=1} }, - result = "nullius-battery-3" + results = { + {type = "item", name = "nullius-battery-3", amount = 1} + } }, { type = "recipe", @@ -828,7 +871,9 @@ data:extend({ ingredients = { {"nullius-uncharged-battery-3", 1} }, - result = "nullius-battery-3" + results = { + {type = "item", name = "nullius-battery-3", amount = 1} + } }, { @@ -838,7 +883,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/roboport.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.6, 0.65} }}, placed_as_equipment_result = "nullius-hangar-1", @@ -854,7 +899,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/roboport.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.85, 0.9, 1} }}, placed_as_equipment_result = "nullius-hangar-2", @@ -870,7 +915,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/roboport.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.55, 0.7, 0.55} }}, placed_as_equipment_result = "nullius-hangar-3", @@ -908,7 +953,9 @@ data:extend({ {name="fast-transport-belt", amount=4}, {name="train-stop", amount=1} }, - result = "nullius-hangar-1" + results = { + {type = "item", name = "nullius-hangar-1", amount = 1} + } }, { type = "recipe", @@ -924,7 +971,9 @@ data:extend({ {name="nullius-charger-2", amount=1}, {name="fast-splitter", amount=2} }, - result = "nullius-hangar-2" + results = { + {type = "item", name = "nullius-hangar-2", amount = 1} + } }, { type = "recipe", @@ -938,10 +987,12 @@ data:extend({ {name="nullius-large-buffer-chest-2", amount=1}, {name="nullius-relay-3", amount=1}, {name="nullius-charger-3", amount=1}, - {name="express-stack-filter-inserter", amount=2}, + {name="bob-express-bulk-inserter", amount=2}, {name="gate", amount=3} }, - result = "nullius-hangar-3" + results = { + {type = "item", name = "nullius-hangar-3", amount = 1} + } }, { type = "recipe", @@ -955,7 +1006,9 @@ data:extend({ {name="nullius-yield-module-4", amount=1}, {name="nullius-charger-4", amount=1} }, - result = "nullius-hangar-4" + results = { + {type = "item", name = "nullius-hangar-4", amount = 1} + } }, { @@ -1026,7 +1079,9 @@ data:extend({ {"nullius-capacitor", 3}, {"programmable-speaker", 1} }, - result = "nullius-charger-1" + results = { + {type = "item", name = "nullius-charger-1", amount = 1} + } }, { type = "recipe", @@ -1041,7 +1096,9 @@ data:extend({ {"nullius-box-capacitor", 3}, {"nullius-box-antenna", 1} }, - result = "nullius-box-charger-1" + results = { + {type = "item", name = "nullius-box-charger-1", amount = 1} + } }, { type = "recipe", @@ -1055,7 +1112,9 @@ data:extend({ {"nullius-grid-battery-1", 1}, {"rail-signal", 3} }, - result = "nullius-charger-2" + results = { + {type = "item", name = "nullius-charger-2", amount = 1} + } }, { type = "recipe", @@ -1070,7 +1129,9 @@ data:extend({ {"nullius-box-grid-battery-1", 1}, {"nullius-box-rail-signal", 3} }, - result = "nullius-box-charger-2" + results = { + {type = "item", name = "nullius-box-charger-2", amount = 1} + } }, { type = "recipe", @@ -1084,7 +1145,9 @@ data:extend({ {"nullius-relay-2", 1}, {"nullius-grid-battery-2", 1} }, - result = "nullius-charger-3" + results = { + {type = "item", name = "nullius-charger-3", amount = 1} + } }, { type = "recipe", @@ -1099,7 +1162,9 @@ data:extend({ {"nullius-box-relay-2", 1}, {"nullius-box-grid-battery-2", 1} }, - result = "nullius-box-charger-3" + results = { + {type = "item", name = "nullius-box-charger-3", amount = 1} + } }, { type = "recipe", @@ -1114,7 +1179,9 @@ data:extend({ {"nullius-copper-wire", 5}, {"nullius-lithium", 2} }, - result = "nullius-charger-4" + results = { + {type = "item", name = "nullius-charger-4", amount = 1} + } }, { type = "recipe", @@ -1130,7 +1197,9 @@ data:extend({ {"nullius-box-copper-wire", 5}, {"nullius-box-lithium", 2} }, - result = "nullius-box-charger-4" + results = { + {type = "item", name = "nullius-box-charger-4", amount = 1} + } }, { @@ -1203,7 +1272,9 @@ data:extend({ {"constant-combinator", 1}, {"small-lamp", 1} }, - result = "nullius-relay-1" + results = { + {type = "item", name = "nullius-relay-1", amount = 1} + } }, { type = "recipe", @@ -1219,7 +1290,9 @@ data:extend({ {"nullius-box-memory-circuit", 1}, {"nullius-box-lamp-1", 1} }, - result = "nullius-box-relay-1" + results = { + {type = "item", name = "nullius-box-relay-1", amount = 1} + } }, { type = "recipe", @@ -1234,7 +1307,9 @@ data:extend({ {"nullius-transformer", 1}, {"rail-chain-signal", 2} }, - result = "nullius-relay-2" + results = { + {type = "item", name = "nullius-relay-2", amount = 1} + } }, { type = "recipe", @@ -1250,7 +1325,9 @@ data:extend({ {"nullius-box-transformer", 1}, {"nullius-box-chain-signal", 2} }, - result = "nullius-box-relay-2" + results = { + {type = "item", name = "nullius-box-relay-2", amount = 1} + } }, { type = "recipe", @@ -1266,7 +1343,9 @@ data:extend({ {"nullius-lamp-2", 3}, {"nullius-processor-2", 1} }, - result = "nullius-relay-3" + results = { + {type = "item", name = "nullius-relay-3", amount = 1} + } }, { type = "recipe", @@ -1283,7 +1362,9 @@ data:extend({ {"nullius-box-lamp-2", 3}, {"nullius-box-processor-2", 1} }, - result = "nullius-box-relay-3" + results = { + {type = "item", name = "nullius-box-relay-3", amount = 1} + } }, { type = "recipe", @@ -1296,7 +1377,9 @@ data:extend({ {"nullius-box-copper-wire", 3}, {"nullius-speed-module-4", 1} }, - result = "nullius-relay-4" + results = { + {type = "item", name = "nullius-relay-4", amount = 1} + } }, { @@ -1305,7 +1388,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/repair-pack.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.6, 0.8} }}, subgroup = "tool-upgrades", @@ -1349,7 +1432,9 @@ data:extend({ {"nullius-plastic", 2}, {"nullius-aluminum-carbide", 1} }, - result = "repair-pack" + results = { + {type = "item", name = "repair-pack", amount = 1} + } }, { type = "recipe", @@ -1366,7 +1451,9 @@ data:extend({ {"nullius-box-plastic", 2}, {"nullius-box-aluminum-carbide", 1} }, - result = "nullius-box-repair-pack" + results = { + {type = "item", name = "nullius-box-repair-pack", amount = 1} + } }, { type = "recipe", @@ -1385,7 +1472,9 @@ data:extend({ {"nullius-plastic", 1}, {"nullius-aluminum-carbide", 1} }, - result = "repair-pack" + results = { + {type = "item", name = "repair-pack", amount = 1} + } }, { type = "recipe", @@ -1405,7 +1494,9 @@ data:extend({ {"nullius-box-plastic", 1}, {"nullius-box-aluminum-carbide", 1} }, - result = "nullius-box-repair-pack" + results = { + {type = "item", name = "nullius-box-repair-pack", amount = 1} + } }, { type = "recipe", @@ -1415,27 +1506,28 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-fabrication-tool-2", 1}, - {"turbo-filter-inserter", 1}, + {"nullius-fabrication-tool-2", 1}, + {"bob-turbo-inserter", 1}, {"repair-pack", 2}, {"nullius-steel-plate", 2}, {"nullius-rubber", 2} }, - result = "nullius-self-repair-pack", - reult_count = 10 + results = { + {type = "item", name = "nullius-self-repair-pack", amount = 10} + } }, { type = "item", name = "nullius-levitation-field-1", - localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", 1}, + localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", tostring(1)}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-levitation-field"}, - {"entity-description.nullius-kilojoule", 100}}, + {"entity-description.nullius-kilojoule", tostring(100)}}, icons = {{ icon = "__base__/graphics/icons/belt-immunity-equipment.png", icon_size = 64, - icon_mipmaps = 4 + }}, placed_as_equipment_result = "nullius-levitation-field-1", subgroup = "equipment", @@ -1447,7 +1539,7 @@ data:extend({ name = "nullius-levitation-field-2", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-levitation-field"}, - {"entity-description.nullius-kilojoule", 200}}, + {"entity-description.nullius-kilojoule", tostring(200)}}, icons = {{ icon = ICONPATH .. "levitation2.png", icon_size = 64 @@ -1472,7 +1564,9 @@ data:extend({ {"programmable-speaker", 2}, {"nullius-capacitor", 3} }, - result = "nullius-levitation-field-1" + results = { + {type = "item", name = "nullius-levitation-field-1", amount = 1} + } }, { type = "recipe", @@ -1490,7 +1584,9 @@ data:extend({ {"nullius-box-antenna", 2}, {"nullius-box-capacitor", 3} }, - result = "nullius-box-levitation-field-1" + results = { + {type = "item", name = "nullius-box-levitation-field-1", amount = 1} + } }, { type = "recipe", @@ -1508,7 +1604,9 @@ data:extend({ {"nullius-processor-3", 1}, {"nullius-copper-sheet", 4} }, - result = "nullius-levitation-field-2" + results = { + {type = "item", name = "nullius-levitation-field-2", amount = 1} + } }, { type = "recipe", @@ -1530,7 +1628,9 @@ data:extend({ {"nullius-processor-3", 1}, {"nullius-copper-sheet", 4} }, - result = "nullius-levitation-field-2" + results = { + {type = "item", name = "nullius-levitation-field-2", amount = 1} + } }, { @@ -1538,7 +1638,7 @@ data:extend({ name = "nullius-night-vision-1", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-night-vision-1"}, - {"entity-description.nullius-kilojoule", 150}}, + {"entity-description.nullius-kilojoule", tostring(150)}}, icon = "__base__/graphics/equipment/night-vision-equipment.png", icon_size = 64, placed_as_equipment_result = "nullius-night-vision-1", @@ -1551,7 +1651,7 @@ data:extend({ name = "nullius-night-vision-2", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-night-vision-2"}, - {"entity-description.nullius-kilojoule", 400}}, + {"entity-description.nullius-kilojoule", tostring(400)}}, icon = ICONPATH .. "night-vision-2.png", icon_size = 64, placed_as_equipment_result = "nullius-night-vision-2", @@ -1564,7 +1664,7 @@ data:extend({ name = "nullius-night-vision-3", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-night-vision-3"}, - {"entity-description.nullius-megajoule", 1}}, + {"entity-description.nullius-megajoule", tostring(1)}}, icon = ICONPATH .. "night-vision-3.png", icon_size = 64, placed_as_equipment_result = "nullius-night-vision-3", @@ -1586,7 +1686,9 @@ data:extend({ {"nullius-aluminum-sheet", 1}, {"nullius-capacitor", 2} }, - result = "nullius-night-vision-1" + results = { + {type = "item", name = "nullius-night-vision-1", amount = 1} + } }, { type = "recipe", @@ -1602,7 +1704,9 @@ data:extend({ {"nullius-box-aluminum-sheet", 1}, {"nullius-box-capacitor", 2} }, - result = "nullius-box-night-vision-1" + results = { + {type = "item", name = "nullius-box-night-vision-1", amount = 1} + } }, { type = "recipe", @@ -1616,7 +1720,9 @@ data:extend({ {"nullius-sensor-2", 2}, {"nullius-hard-glass", 2} }, - result = "nullius-night-vision-2" + results = { + {type = "item", name = "nullius-night-vision-2", amount = 1} + } }, { type = "recipe", @@ -1631,7 +1737,9 @@ data:extend({ {"nullius-graphene", 2}, {"nullius-battery-2", 1} }, - result = "nullius-night-vision-3" + results = { + {type = "item", name = "nullius-night-vision-3", amount = 1} + } }, { @@ -1639,11 +1747,11 @@ data:extend({ name = "nullius-leg-augmentation-1", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", 6}}, + {"entity-description.nullius-megajoule", tostring(6)}}, icons = {{ icon = "__base__/graphics/icons/exoskeleton-equipment.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.6} }}, placed_as_equipment_result = "nullius-leg-augmentation-1", @@ -1655,18 +1763,20 @@ data:extend({ type = "recipe", name = "nullius-leg-augmentation-1", enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "medium-crafting", energy_required = 15, ingredients = { - {"stack-inserter", 2}, + {"bulk-inserter", 2}, {"nullius-sensor-2", 1}, {"nullius-motor-2", 3}, {"nullius-titanium-rod", 5}, {"nullius-jump-boots", 1}, {"nullius-battery-1", 2} }, - result = "nullius-leg-augmentation-1" + results = { + {type = "item", name = "nullius-leg-augmentation-1", amount = 1} + } }, { type = "recipe", @@ -1679,14 +1789,16 @@ data:extend({ category = "medium-crafting", energy_required = 15, ingredients = { - {"stack-inserter", 4}, + {"bulk-inserter", 4}, {"nullius-sensor-2", 2}, {"nullius-motor-2", 6}, {"nullius-titanium-rod", 6}, {"nullius-steel-gear", 4}, {"nullius-battery-1", 2} }, - result = "nullius-leg-augmentation-1" + results = { + {type = "item", name = "nullius-leg-augmentation-1", amount = 1} + } }, { @@ -1694,11 +1806,11 @@ data:extend({ name = "nullius-leg-augmentation-2", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", 15}}, + {"entity-description.nullius-megajoule", tostring(15)}}, icons = {{ icon = "__base__/graphics/icons/exoskeleton-equipment.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 0.95} }}, placed_as_equipment_result = "nullius-leg-augmentation-2", @@ -1715,14 +1827,16 @@ data:extend({ energy_required = 30, ingredients = { {"nullius-leg-augmentation-1", 2}, - {"express-stack-filter-inserter", 4}, + {"bob-express-bulk-inserter", 4}, {"nullius-motor-3", 5}, {"nullius-carbon-composite", 6}, {"nullius-levitation-field-1", 1}, {"nullius-battery-2", 3}, {"nullius-speed-module-3", 1} }, - result = "nullius-leg-augmentation-2" + results = { + {type = "item", name = "nullius-leg-augmentation-2", amount = 1} + } }, { @@ -1730,11 +1844,11 @@ data:extend({ name = "nullius-leg-augmentation-3", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", 30}}, + {"entity-description.nullius-megajoule", tostring(30)}}, icons = {{ icon = "__base__/graphics/icons/exoskeleton-equipment.png", icon_size = 64, - icon_mipmaps = 4 + }}, placed_as_equipment_result = "nullius-leg-augmentation-3", subgroup = "leg-augmentation", @@ -1757,7 +1871,9 @@ data:extend({ {type="fluid", name="nullius-compressed-argon", amount=100}, {type="fluid", name="nullius-lubricant", amount=40} }, - result = "nullius-leg-augmentation-3" + results = { + {type = "item", name = "nullius-leg-augmentation-3", amount = 1} + } }, { @@ -1765,7 +1881,7 @@ data:extend({ name = "nullius-leg-augmentation-4", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", 30}}, + {"entity-description.nullius-megajoule", tostring(30)}}, icons = {{ icon = ICONPATH .. "legs.png", icon_size = 64 @@ -1789,17 +1905,19 @@ data:extend({ {type="item", name="nullius-productivity-module-3", amount=1}, {type="item", name="nullius-graphene", amount=4} }, - result = "nullius-leg-augmentation-4" + results = { + {type = "item", name = "nullius-leg-augmentation-4", amount = 1} + } }, { type = "item", name = "nullius-quadrupedal-adaptation-1", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", 3}, "\n", - {"equipment-description.nullius-penalty-craft", 25}, "\n", - {"equipment-description.nullius-penalty-reach", 2}}, - {"entity-description.nullius-megajoule", 8}}, + {"equipment-description.nullius-bonus-cargo", tostring(3)}, "\n", + {"equipment-description.nullius-penalty-craft", tostring(25)}, "\n", + {"equipment-description.nullius-penalty-reach", tostring(2)}}, + {"entity-description.nullius-megajoule", tostring(8)}}, icons = {{ icon = ICONPATH.."equipment/quadruped.png", icon_size = 128, @@ -1814,10 +1932,10 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-2", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", 5}, "\n", - {"equipment-description.nullius-penalty-craft", 30}, "\n", - {"equipment-description.nullius-penalty-reach", 2}}, - {"entity-description.nullius-megajoule", 20}}, + {"equipment-description.nullius-bonus-cargo", tostring(5)}, "\n", + {"equipment-description.nullius-penalty-craft", tostring(30)}, "\n", + {"equipment-description.nullius-penalty-reach", tostring(2)}}, + {"entity-description.nullius-megajoule", tostring(20)}}, icons = {{ icon = ICONPATH.."equipment/quadruped.png", icon_size = 128, @@ -1832,10 +1950,10 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-3", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", 6}, "\n", - {"equipment-description.nullius-penalty-craft", 40}, "\n", - {"equipment-description.nullius-penalty-reach", 2}}, - {"entity-description.nullius-megajoule", 40}}, + {"equipment-description.nullius-bonus-cargo", tostring(6)}, "\n", + {"equipment-description.nullius-penalty-craft", tostring(40)}, "\n", + {"equipment-description.nullius-penalty-reach", tostring(2)}}, + {"entity-description.nullius-megajoule", tostring(40)}}, icons = {{ icon = ICONPATH.."equipment/quadruped.png", icon_size = 128 @@ -1849,10 +1967,10 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-4", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", 6}, "\n", - {"equipment-description.nullius-penalty-craft", 30}, "\n", - {"equipment-description.nullius-penalty-reach", 2}}, - {"entity-description.nullius-megajoule", 40}}, + {"equipment-description.nullius-bonus-cargo", tostring(6)}, "\n", + {"equipment-description.nullius-penalty-craft", tostring(30)}, "\n", + {"equipment-description.nullius-penalty-reach", tostring(2)}}, + {"entity-description.nullius-megajoule", tostring(40)}}, icons = {{ icon = ICONPATH.."equipment/quadruped-4.png", icon_size = 128 @@ -1872,9 +1990,11 @@ data:extend({ ingredients = { {"nullius-leg-augmentation-1", 2}, {"nullius-steel-beam", 2}, - {"red-wire", 4} + {"nullius-red-wire", 4} }, - result = "nullius-quadrupedal-adaptation-1" + results = { + {type = "item", name = "nullius-quadrupedal-adaptation-1", amount = 1} + } }, { type = "recipe", @@ -1888,7 +2008,9 @@ data:extend({ {"nullius-quadrupedal-adaptation-1", 1}, {"nullius-steel-gear", 8} }, - result = "nullius-quadrupedal-adaptation-2" + results = { + {type = "item", name = "nullius-quadrupedal-adaptation-2", amount = 1} + } }, { type = "recipe", @@ -1902,7 +2024,9 @@ data:extend({ {"nullius-quadrupedal-adaptation-2", 1}, {"nullius-titanium-plate", 4} }, - result = "nullius-quadrupedal-adaptation-3" + results = { + {type = "item", name = "nullius-quadrupedal-adaptation-3", amount = 1} + } }, { type = "recipe", @@ -1916,7 +2040,9 @@ data:extend({ {"nullius-quadrupedal-adaptation-3", 1}, {"nullius-sensor-2", 2} }, - result = "nullius-quadrupedal-adaptation-4" + results = { + {type = "item", name = "nullius-quadrupedal-adaptation-4", amount = 1} + } }, { @@ -1924,8 +2050,8 @@ data:extend({ name = "nullius-jump-boots", localised_description = {"equipment-description.nullius-buffer", {"", {"equipment-description.nullius-jump-boots"}, "\n", - {"equipment-description.nullius-penalty-cargo", 2}}, - {"entity-description.nullius-megajoule", 1}}, + {"equipment-description.nullius-penalty-cargo", tostring(2)}}, + {"entity-description.nullius-megajoule", tostring(1)}}, icons = {{ icon = ICONPATH.."equipment/boot.png", icon_size = 128 @@ -1943,13 +2069,15 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"turbo-inserter", 2}, - {"nullius-steel-gear", 3}, - {"nullius-aluminum-plate", 2}, - {"red-wire", 2}, - {"nullius-capacitor", 1} + {"bob-turbo-inserter", 2}, + {"nullius-steel-gear", 3}, + {"nullius-aluminum-plate", 2}, + {"nullius-red-wire", 2}, + {"nullius-capacitor", 1} }, - result = "nullius-jump-boots" + results = { + {type = "item", name = "nullius-jump-boots", amount = 1} + } }, { @@ -1957,11 +2085,11 @@ data:extend({ name = "nullius-shield", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-shield"}, - {"entity-description.nullius-kilojoule", 500}}, + {"entity-description.nullius-kilojoule", tostring(500)}}, icons = {{ icon = "__base__/graphics/icons/energy-shield-equipment.png", icon_size = 64, - icon_mipmaps = 4 + }}, placed_as_equipment_result = "nullius-shield", subgroup = "armor", @@ -1981,7 +2109,9 @@ data:extend({ {"nullius-armor-plate", 1}, {"nullius-optical-cable", 8} }, - result = "nullius-shield" + results = { + {type = "item", name = "nullius-shield", amount = 1} + } }, { @@ -2002,7 +2132,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/locomotive.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "train-wagon", order = "nullius-bc", @@ -2047,7 +2177,9 @@ data:extend({ {"nullius-steel-gear", 10}, {"nullius-glass", 3} }, - result = "nullius-locomotive-1" + results = { + {type = "item", name = "nullius-locomotive-1", amount = 1} + } }, { type = "recipe", @@ -2067,7 +2199,9 @@ data:extend({ {"nullius-steel-gear", 10}, {"nullius-glass", 3} }, - result = "nullius-locomotive-1" + results = { + {type = "item", name = "nullius-locomotive-1", amount = 1} + } }, { type = "recipe", @@ -2084,7 +2218,9 @@ data:extend({ {"nullius-motor-2", 4}, {"nullius-sensor-1", 1} }, - result = "nullius-locomotive-2" + results = { + {type = "item", name = "nullius-locomotive-2", amount = 1} + } }, { type = "recipe", @@ -2104,7 +2240,9 @@ data:extend({ {"nullius-motor-2", 4}, {"nullius-sensor-1", 1} }, - result = "nullius-locomotive-2" + results = { + {type = "item", name = "nullius-locomotive-2", amount = 1} + } }, { type = "recipe", @@ -2119,7 +2257,9 @@ data:extend({ {"nullius-motor-3", 4}, {"nullius-speed-module-2", 1} }, - result = "nullius-locomotive-3" + results = { + {type = "item", name = "nullius-locomotive-3", amount = 1} + } }, { type = "recipe", @@ -2138,7 +2278,9 @@ data:extend({ {"nullius-motor-3", 4}, {"nullius-speed-module-2", 1} }, - result = "nullius-locomotive-3" + results = { + {type = "item", name = "nullius-locomotive-3", amount = 1} + } }, { type = "recipe", @@ -2154,7 +2296,9 @@ data:extend({ {"nullius-motor-3", 2}, {"nullius-efficiency-module-2", 1} }, - result = "nullius-solar-locomotive" + results = { + {type = "item", name = "nullius-solar-locomotive", amount = 1} + } }, { @@ -2163,7 +2307,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/cargo-wagon.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.9, 0.9, 0.7} }}, subgroup = "train-wagon", @@ -2177,7 +2321,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/cargo-wagon.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.85, 0.85} }}, subgroup = "train-wagon", @@ -2191,7 +2335,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/cargo-wagon.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "train-wagon", order = "nullius-cd", @@ -2213,7 +2357,9 @@ data:extend({ {type="item", name="nullius-graphite", amount=2}, {type="fluid", name="nullius-lubricant", amount=10, fluidbox_index=1} }, - result = "nullius-cargo-wagon-1" + results = { + {type = "item", name = "nullius-cargo-wagon-1", amount = 1} + } }, { type = "recipe", @@ -2232,7 +2378,9 @@ data:extend({ {"nullius-steel-rod", 3}, {"nullius-graphite", 2} }, - result = "nullius-cargo-wagon-1" + results = { + {type = "item", name = "nullius-cargo-wagon-1", amount = 1} + } }, { type = "recipe", @@ -2249,7 +2397,9 @@ data:extend({ {type="item", name="nullius-sensor-1", amount=1}, {type="fluid", name="nullius-lubricant", amount=50, fluidbox_index=1} }, - result = "nullius-cargo-wagon-2" + results = { + {type = "item", name = "nullius-cargo-wagon-2", amount = 1} + } }, { type = "recipe", @@ -2264,7 +2414,9 @@ data:extend({ {type="item", name="nullius-carbon-composite", amount=8}, {type="item", name="nullius-logistic-bot-3", amount=1} }, - result = "nullius-cargo-wagon-3" + results = { + {type = "item", name = "nullius-cargo-wagon-3", amount = 1} + } }, { @@ -2273,7 +2425,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fluid-wagon.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.9, 0.9, 0.7} }}, subgroup = "train-wagon", @@ -2287,7 +2439,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fluid-wagon.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.85, 0.85} }}, subgroup = "train-wagon", @@ -2301,7 +2453,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fluid-wagon.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "train-wagon", order = "nullius-dd", @@ -2319,7 +2471,9 @@ data:extend({ {"nullius-cargo-wagon-1", 1}, {"nullius-small-tank-1", 3} }, - result = "nullius-fluid-wagon-1" + results = { + {type = "item", name = "nullius-fluid-wagon-1", amount = 1} + } }, { type = "recipe", @@ -2333,7 +2487,9 @@ data:extend({ {"nullius-cargo-wagon-2", 1}, {"nullius-small-tank-2", 3} }, - result = "nullius-fluid-wagon-2" + results = { + {type = "item", name = "nullius-fluid-wagon-2", amount = 1} + } }, { type = "recipe", @@ -2347,7 +2503,9 @@ data:extend({ {"nullius-large-tank-2", 1}, {"nullius-box-steel-cable", 1} }, - result = "nullius-fluid-wagon-3" + results = { + {type = "item", name = "nullius-fluid-wagon-3", amount = 1} + } }, { @@ -2410,7 +2568,9 @@ data:extend({ {"decider-combinator", 1}, {"nullius-fabrication-tool-2", 1} }, - result = "nullius-construction-bot-1" + results = { + {type = "item", name = "nullius-construction-bot-1", amount = 1} + } }, { type = "recipe", @@ -2425,7 +2585,9 @@ data:extend({ {"nullius-box-logic-circuit", 1}, {"nullius-box-fabrication-tool-2", 1} }, - result = "nullius-box-construction-bot-1" + results = { + {type = "item", name = "nullius-box-construction-bot-1", amount = 1} + } }, { type = "recipe", @@ -2442,7 +2604,9 @@ data:extend({ {"decider-combinator", 1}, {"repair-pack", 1} }, - result = "nullius-construction-bot-1" + results = { + {type = "item", name = "nullius-construction-bot-1", amount = 1} + } }, { type = "recipe", @@ -2460,7 +2624,9 @@ data:extend({ {"nullius-box-logic-circuit", 1}, {"nullius-box-repair-pack", 1} }, - result = "nullius-box-construction-bot-1" + results = { + {type = "item", name = "nullius-box-construction-bot-1", amount = 1} + } }, { type = "recipe", @@ -2475,7 +2641,9 @@ data:extend({ {"nullius-yield-module-1", 1}, {"nullius-multi-tool-1", 1} }, - result = "nullius-construction-bot-2" + results = { + {type = "item", name = "nullius-construction-bot-2", amount = 1} + } }, { type = "recipe", @@ -2491,7 +2659,9 @@ data:extend({ {"nullius-box-yield-module-1", 1}, {"nullius-multi-tool-1", 5} }, - result = "nullius-box-construction-bot-2" + results = { + {type = "item", name = "nullius-box-construction-bot-2", amount = 1} + } }, { type = "recipe", @@ -2508,7 +2678,9 @@ data:extend({ {"nullius-robot-frame-2", 1}, {"nullius-yield-module-1", 1} }, - result = "nullius-construction-bot-2" + results = { + {type = "item", name = "nullius-construction-bot-2", amount = 1} + } }, { type = "recipe", @@ -2526,7 +2698,9 @@ data:extend({ {"nullius-box-robot-frame-2", 1}, {"nullius-box-yield-module-1", 1} }, - result = "nullius-box-construction-bot-2" + results = { + {type = "item", name = "nullius-box-construction-bot-2", amount = 1} + } }, { type = "recipe", @@ -2541,7 +2715,9 @@ data:extend({ {"nullius-productivity-module-1", 1}, {"nullius-fabrication-tool-3", 1} }, - result = "nullius-construction-bot-3" + results = { + {type = "item", name = "nullius-construction-bot-3", amount = 1} + } }, { type = "recipe", @@ -2557,7 +2733,9 @@ data:extend({ {"nullius-box-productivity-module-1", 1}, {"nullius-fabrication-tool-3", 5} }, - result = "nullius-box-construction-bot-3" + results = { + {type = "item", name = "nullius-box-construction-bot-3", amount = 1} + } }, { type = "recipe", @@ -2575,7 +2753,9 @@ data:extend({ {"nullius-productivity-module-1", 1}, {"nullius-small-miner-3", 1} }, - result = "nullius-construction-bot-3" + results = { + {type = "item", name = "nullius-construction-bot-3", amount = 1} + } }, { type = "recipe", @@ -2594,7 +2774,9 @@ data:extend({ {"nullius-box-productivity-module-1", 1}, {"nullius-small-miner-3", 5} }, - result = "nullius-box-construction-bot-3" + results = { + {type = "item", name = "nullius-box-construction-bot-3", amount = 1} + } }, { type = "recipe", @@ -2611,8 +2793,9 @@ data:extend({ {"nullius-productivity-module-3", 1}, {"nullius-multi-tool-2", 2} }, - result = "nullius-construction-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-construction-bot-4", amount = 2} + } }, { type = "recipe", @@ -2630,8 +2813,9 @@ data:extend({ {"nullius-box-productivity-module-3", 1}, {"nullius-multi-tool-2", 10} }, - result = "nullius-box-construction-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-box-construction-bot-4", amount = 2} + } }, { type = "recipe", @@ -2650,8 +2834,9 @@ data:extend({ {"nullius-robot-frame-4", 2}, {"nullius-productivity-module-3", 1} }, - result = "nullius-construction-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-construction-bot-4", amount = 2} + } }, { type = "recipe", @@ -2671,8 +2856,9 @@ data:extend({ {"nullius-box-robot-frame-4", 2}, {"nullius-box-productivity-module-3", 1} }, - result = "nullius-box-construction-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-box-construction-bot-4", amount = 2} + } }, { @@ -2735,7 +2921,9 @@ data:extend({ {"arithmetic-combinator", 1}, {"nullius-small-cargo-pod-1", 1} }, - result = "nullius-logistic-bot-1" + results = { + {type = "item", name = "nullius-logistic-bot-1", amount = 1} + } }, { type = "recipe", @@ -2750,7 +2938,9 @@ data:extend({ {"nullius-box-arithmetic-circuit", 1}, {"nullius-small-cargo-pod-1", 5} }, - result = "nullius-box-logistic-bot-1" + results = { + {type = "item", name = "nullius-box-logistic-bot-1", amount = 1} + } }, { type = "recipe", @@ -2767,7 +2957,9 @@ data:extend({ {"arithmetic-combinator", 1}, {"nullius-small-storage-chest-1", 1} }, - result = "nullius-logistic-bot-1" + results = { + {type = "item", name = "nullius-logistic-bot-1", amount = 1} + } }, { type = "recipe", @@ -2785,7 +2977,9 @@ data:extend({ {"nullius-box-arithmetic-circuit", 1}, {"nullius-small-storage-chest-1", 5} }, - result = "nullius-box-logistic-bot-1" + results = { + {type = "item", name = "nullius-box-logistic-bot-1", amount = 1} + } }, { type = "recipe", @@ -2800,7 +2994,9 @@ data:extend({ {"nullius-efficiency-module-1", 1}, {"nullius-large-cargo-pod-1", 1} }, - result = "nullius-logistic-bot-2" + results = { + {type = "item", name = "nullius-logistic-bot-2", amount = 1} + } }, { type = "recipe", @@ -2816,7 +3012,9 @@ data:extend({ {"nullius-box-efficiency-module-1", 1}, {"nullius-large-cargo-pod-1", 5} }, - result = "nullius-box-logistic-bot-2" + results = { + {type = "item", name = "nullius-box-logistic-bot-2", amount = 1} + } }, { type = "recipe", @@ -2833,7 +3031,9 @@ data:extend({ {"nullius-robot-frame-2", 1}, {"nullius-efficiency-module-1", 1} }, - result = "nullius-logistic-bot-2" + results = { + {type = "item", name = "nullius-logistic-bot-2", amount = 1} + } }, { type = "recipe", @@ -2851,7 +3051,9 @@ data:extend({ {"nullius-box-robot-frame-2", 1}, {"nullius-box-efficiency-module-1", 1} }, - result = "nullius-box-logistic-bot-2" + results = { + {type = "item", name = "nullius-box-logistic-bot-2", amount = 1} + } }, { type = "recipe", @@ -2866,7 +3068,9 @@ data:extend({ {"nullius-speed-module-2", 1}, {"nullius-large-cargo-pod-2", 1} }, - result = "nullius-logistic-bot-3" + results = { + {type = "item", name = "nullius-logistic-bot-3", amount = 1} + } }, { type = "recipe", @@ -2882,7 +3086,9 @@ data:extend({ {"nullius-box-speed-module-2", 1}, {"nullius-large-cargo-pod-2", 5} }, - result = "nullius-box-logistic-bot-3" + results = { + {type = "item", name = "nullius-box-logistic-bot-3", amount = 1} + } }, { type = "recipe", @@ -2898,9 +3104,11 @@ data:extend({ {"nullius-logistic-bot-2", 2}, {"nullius-robot-frame-3", 1}, {"nullius-speed-module-2", 1}, - {"logistic-chest-buffer", 1} + {"buffer-chest", 1} }, - result = "nullius-logistic-bot-3" + results = { + {type = "item", name = "nullius-logistic-bot-3", amount = 1} + } }, { type = "recipe", @@ -2917,9 +3125,11 @@ data:extend({ {"nullius-box-logistic-bot-2", 2}, {"nullius-box-robot-frame-3", 1}, {"nullius-box-speed-module-2", 1}, - {"logistic-chest-buffer", 5} + {"buffer-chest", 5} }, - result = "nullius-box-logistic-bot-3" + results = { + {type = "item", name = "nullius-box-logistic-bot-3", amount = 1} + } }, { type = "recipe", @@ -2936,8 +3146,9 @@ data:extend({ {"nullius-speed-module-4", 1}, {"nullius-large-cargo-pod-3", 2} }, - result = "nullius-logistic-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-logistic-bot-4", amount = 2} + } }, { type = "recipe", @@ -2955,8 +3166,9 @@ data:extend({ {"nullius-box-speed-module-4", 1}, {"nullius-large-cargo-pod-3", 10} }, - result = "nullius-box-logistic-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-box-logistic-bot-4", amount = 2} + } }, { type = "recipe", @@ -2975,8 +3187,9 @@ data:extend({ {"nullius-robot-frame-4", 2}, {"nullius-speed-module-4", 1} }, - result = "nullius-logistic-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-logistic-bot-4", amount = 2} + } }, { type = "recipe", @@ -2996,8 +3209,9 @@ data:extend({ {"nullius-box-robot-frame-4", 2}, {"nullius-box-speed-module-4", 1} }, - result = "nullius-box-logistic-bot-4", - result_count = 2 + results = { + {type = "item", name = "nullius-box-logistic-bot-4", amount = 2} + } }, { @@ -3006,7 +3220,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/car.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.6} }}, subgroup = "vehicle", @@ -3020,7 +3234,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/car.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.8, 0.9} }}, subgroup = "vehicle", @@ -3034,7 +3248,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/car.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.65, 0.75, 1} }}, subgroup = "vehicle", @@ -3048,7 +3262,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/tank.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "vehicle", order = "nullius-cb", @@ -3061,7 +3275,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/tank.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.85} }}, subgroup = "vehicle", @@ -3083,7 +3297,9 @@ data:extend({ {type="item", name="nullius-steel-rod", amount=4}, {type="fluid", name="nullius-air", amount=20, fluidbox_index=1} }, - result = "nullius-car-1" + results = { + {type = "item", name = "nullius-car-1", amount = 1} + } }, { type = "recipe", @@ -3101,7 +3317,9 @@ data:extend({ {type="item", name="nullius-iron-wire", amount=4}, {type="fluid", name="nullius-air", amount=15, fluidbox_index=1} }, - result = "nullius-car-1" + results = { + {type = "item", name = "nullius-car-1", amount = 1} + } }, { type = "recipe", @@ -3118,7 +3336,9 @@ data:extend({ {type="item", name="nullius-battery-1", amount=4}, {type="item", name="nullius-gun", amount=2} }, - result = "nullius-car-2" + results = { + {type = "item", name = "nullius-car-2", amount = 1} + } }, { type = "recipe", @@ -3132,7 +3352,9 @@ data:extend({ {type="item", name="nullius-solar-locomotive", amount=1}, {type="item", name="nullius-missile-launcher", amount=2} }, - result = "nullius-car-3" + results = { + {type = "item", name = "nullius-car-3", amount = 1} + } }, { type = "recipe", @@ -3148,7 +3370,9 @@ data:extend({ {type="item", name="nullius-rubber", amount=8}, {type="fluid", name="nullius-compressed-air", amount=40, fluidbox_index=1} }, - result = "nullius-truck-1" + results = { + {type = "item", name = "nullius-truck-1", amount = 1} + } }, { type = "recipe", @@ -3161,7 +3385,9 @@ data:extend({ {type="item", name="nullius-truck-1", amount=1}, {type="item", name="nullius-locomotive-3", amount=1} }, - result = "nullius-truck-2" + results = { + {type = "item", name = "nullius-truck-2", amount = 1} + } }, { @@ -3170,7 +3396,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/spidertron.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "vehicle", order = "nullius-db", @@ -3183,7 +3409,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/spidertron-tintable.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "vehicle", order = "nullius-dc", @@ -3206,7 +3432,9 @@ data:extend({ {type="item", name="nullius-efficiency-module-3", amount=4}, {type="item", name="nullius-stabilizer-1", amount=2} }, - result = "nullius-mecha" + results = { + {type = "item", name = "nullius-mecha", amount = 1} + } }, { type = "recipe", @@ -3223,7 +3451,9 @@ data:extend({ {type="item", name="nullius-armor-plate", amount=16}, {type="item", name="nullius-stabilizer-2", amount=4} }, - result = "nullius-mecha-2" + results = { + {type = "item", name = "nullius-mecha-2", amount = 1} + } }, { @@ -3232,10 +3462,21 @@ data:extend({ icon = "__base__/graphics/icons/spidertron-remote.png", icon_color_indicator_mask = "__base__/graphics/icons/spidertron-remote-mask.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "vehicle", order = "nullius-df", - stack_size = 1 + stack_size = 1, + + select = { + border_color = {1,0,0}, + cursor_box_type = "spidertron-remote-selected", + mode = "controllable" + }, + alt_select = { + border_color = {1,0,0}, + cursor_box_type = "spidertron-remote-selected", + mode = "controllable" + } }, { type = "recipe", @@ -3249,7 +3490,9 @@ data:extend({ {"nullius-scout-remote", 1}, {"nullius-processor-2", 1} }, - result = "nullius-mecha-remote" + results = { + {type = "item", name = "nullius-mecha-remote", amount = 1} + } }, { @@ -3257,7 +3500,7 @@ data:extend({ name = "nullius-rocket", icon = "__base__/graphics/icons/rocket.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "space", order = "nullius-c", stack_size = 1 @@ -3282,7 +3525,9 @@ data:extend({ {"nullius-box-logistic-bot-2", 1}, {"nullius-box-gate", 1} }, - result = "nullius-rocket" + results = { + {type = "item", name = "nullius-rocket", amount = 1} + } }, { @@ -3290,7 +3535,7 @@ data:extend({ name = "nullius-satellite", icon = "__base__/graphics/icons/satellite.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "space", order = "nullius-d", stack_size = 1, @@ -3313,7 +3558,9 @@ data:extend({ {"nullius-box-solar-panel-2", 3}, {"nullius-grid-battery-2", 4} }, - result = "nullius-satellite" + results = { + {type = "item", name = "nullius-satellite", amount = 1} + } }, { @@ -3321,15 +3568,15 @@ data:extend({ name = "nullius-probe", icon = "__base__/graphics/icons/crash-site-spaceship.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "space", order = "nullius-l", stack_size = 1, rocket_launch_products = { - {"nullius-box-astronomy-pack", 1000}, - {"nullius-box-physics-pack", 200}, - {"nullius-box-chemical-pack", 200}, - {"nullius-box-electrical-pack", 200} + {type = "item", name = "nullius-box-astronomy-pack", amount = 1000}, + {type = "item", name = "nullius-box-physics-pack", amount = 200}, + {type = "item", name = "nullius-box-chemical-pack", amount = 200}, + {type = "item", name = "nullius-box-electrical-pack", amount = 200} } }, { @@ -3348,12 +3595,15 @@ data:extend({ {"nullius-nanofabricator-2", 1}, {"nullius-reactor", 1} }, - result = "nullius-probe" + results = { + {type = "item", name = "nullius-probe", amount = 1} + } }, { type = "item", name = "nullius-armor-plate", + localised_name = {"nullius-upgrade-armor-plate"}, icons = {{ icon = EQUIPPATH.."armor-plate.png", icon_size = 128 @@ -3366,6 +3616,7 @@ data:extend({ { type = "recipe", name = "nullius-armor-plate", + localised_name = {"entity-name.nullius-upgrade-armor-plate"}, enabled = false, always_show_made_in = true, category = "hand-casting", @@ -3377,7 +3628,9 @@ data:extend({ {"nullius-textile", 2}, {"nullius-rubber", 1} }, - result = "nullius-armor-plate" + results = { + {type = "item", name = "nullius-armor-plate", amount = 1} + } }, { @@ -3451,7 +3704,9 @@ data:extend({ {type="item", name="wooden-chest", amount=1}, {type="item", name="nullius-iron-wire", amount=1} }, - result = "nullius-small-cargo-pod-1" + results = { + {type = "item", name = "nullius-small-cargo-pod-1", amount = 1} + } }, { type = "recipe", @@ -3463,9 +3718,11 @@ data:extend({ ingredients = { {type="item", name="nullius-small-cargo-pod-1", amount=1}, {type="item", name="nullius-textile", amount=2}, - {type="item", name="logistic-chest-buffer", amount=1} + {type="item", name="buffer-chest", amount=1} }, - result = "nullius-small-cargo-pod-2" + results = { + {type = "item", name = "nullius-small-cargo-pod-2", amount = 1} + } }, { type = "recipe", @@ -3478,7 +3735,9 @@ data:extend({ {type="item", name="nullius-small-cargo-pod-1", amount=2}, {type="item", name="nullius-large-chest-1", amount=1} }, - result = "nullius-large-cargo-pod-1" + results = { + {type = "item", name = "nullius-large-cargo-pod-1", amount = 1} + } }, { type = "recipe", @@ -3493,7 +3752,9 @@ data:extend({ {type="item", name="nullius-textile", amount=4}, {type="item", name="nullius-steel-cable", amount=2} }, - result = "nullius-large-cargo-pod-2" + results = { + {type = "item", name = "nullius-large-cargo-pod-2", amount = 1} + } }, { type = "recipe", @@ -3507,7 +3768,9 @@ data:extend({ {type="item", name="nullius-small-cargo-pod-2", amount=2}, {type="item", name="nullius-large-buffer-chest-2", amount=1} }, - result = "nullius-large-cargo-pod-3" + results = { + {type = "item", name = "nullius-large-cargo-pod-3", amount = 1} + } }, { @@ -3546,7 +3809,9 @@ data:extend({ {type="item", name="nullius-crusher-2", amount=1}, {type="item", name="nullius-battery-1", amount=1} }, - result = "nullius-trash-compactor" + results = { + {type = "item", name = "nullius-trash-compactor", amount = 1} + } }, { type = "recipe", @@ -3560,7 +3825,9 @@ data:extend({ {type="item", name="nullius-trash-compactor", amount=2}, {type="item", name="nullius-mining-tool-2", amount=1} }, - result = "nullius-trash-compactor-2" + results = { + {type = "item", name = "nullius-trash-compactor-2", amount = 1} + } }, { @@ -3671,7 +3938,9 @@ data:extend({ {type="item", name="nullius-iron-rod", amount=1}, {type="item", name="nullius-iron-gear", amount=1} }, - result = "nullius-fabrication-tool-1" + results = { + {type = "item", name = "nullius-fabrication-tool-1", amount = 1} + } }, { type = "recipe", @@ -3686,7 +3955,9 @@ data:extend({ {type="item", name="nullius-box-iron-rod", amount=1}, {type="item", name="nullius-box-iron-gear", amount=1} }, - result = "nullius-box-fabrication-tool-1" + results = { + {type = "item", name = "nullius-box-fabrication-tool-1", amount = 1} + } }, { type = "recipe", @@ -3702,7 +3973,9 @@ data:extend({ {type="item", name="nullius-capacitor", amount=1}, {type="item", name="nullius-steel-rod", amount=2} }, - result = "nullius-fabrication-tool-2" + results = { + {type = "item", name = "nullius-fabrication-tool-2", amount = 1} + } }, { type = "recipe", @@ -3719,7 +3992,9 @@ data:extend({ {type="item", name="nullius-box-capacitor", amount=1}, {type="item", name="nullius-box-steel-rod", amount=2} }, - result = "nullius-box-fabrication-tool-2" + results = { + {type = "item", name = "nullius-box-fabrication-tool-2", amount = 1} + } }, { type = "recipe", @@ -3733,7 +4008,9 @@ data:extend({ {type="item", name="nullius-nanofabricator-1", amount=1}, {type="item", name="nullius-battery-1", amount=1} }, - result = "nullius-fabrication-tool-3" + results = { + {type = "item", name = "nullius-fabrication-tool-3", amount = 1} + } }, { type = "recipe", @@ -3748,7 +4025,9 @@ data:extend({ {type="item", name="nullius-iron-plate", amount=2}, {type="item", name="nullius-iron-rod", amount=2} }, - result = "nullius-mining-tool-1" + results = { + {type = "item", name = "nullius-mining-tool-1", amount = 1} + } }, { type = "recipe", @@ -3764,7 +4043,9 @@ data:extend({ {type="item", name="nullius-small-miner-3", amount=1}, {type="item", name="nullius-battery-1", amount=1} }, - result = "nullius-mining-tool-2" + results = { + {type = "item", name = "nullius-mining-tool-2", amount = 1} + } }, { type = "recipe", @@ -3780,7 +4061,9 @@ data:extend({ {type="item", name="nullius-yield-module-1", amount=1}, {type="item", name="nullius-aluminum-rod", amount=2} }, - result = "nullius-multi-tool-1" + results = { + {type = "item", name = "nullius-multi-tool-1", amount = 1} + } }, { type = "recipe", @@ -3796,7 +4079,9 @@ data:extend({ {type="item", name="nullius-productivity-module-2", amount=1}, {type="item", name="nullius-lithium", amount=2} }, - result = "nullius-multi-tool-2" + results = { + {type = "item", name = "nullius-multi-tool-2", amount = 1} + } }, { type = "recipe", @@ -3812,7 +4097,9 @@ data:extend({ {type="item", name="nullius-copper-sheet", amount=2}, {type="item", name="nullius-enriched-uranium", amount=1} }, - result = "nullius-multi-tool-3" + results = { + {type = "item", name = "nullius-multi-tool-3", amount = 1} + } }, { @@ -3863,7 +4150,9 @@ data:extend({ {type="item", name="nullius-levitation-field-1", amount=2}, {type="item", name="nullius-speed-module-1", amount=1} }, - result = "nullius-telekinesis-field-1" + results = { + {type = "item", name = "nullius-telekinesis-field-1", amount = 1} + } }, { type = "recipe", @@ -3878,7 +4167,9 @@ data:extend({ {type="item", name="nullius-multi-tool-1", amount=1}, {type="item", name="nullius-battery-2", amount=1} }, - result = "nullius-telekinesis-field-2" + results = { + {type = "item", name = "nullius-telekinesis-field-2", amount = 1} + } }, { type = "recipe", @@ -3893,7 +4184,9 @@ data:extend({ {type="item", name="nullius-multi-tool-2", amount=1}, {type="item", name="nullius-copper-wire", amount=8} }, - result = "nullius-telekinesis-field-3" + results = { + {type = "item", name = "nullius-telekinesis-field-3", amount = 1} + } }, { @@ -3934,7 +4227,9 @@ data:extend({ {type="item", name="nullius-steel-plate", amount=3}, {type="item", name="nullius-steel-gear", amount=3} }, - result = "nullius-stabilizer-1" + results = { + {type = "item", name = "nullius-stabilizer-1", amount = 1} + } }, { type = "recipe", @@ -3949,7 +4244,9 @@ data:extend({ {type="item", name="nullius-uranium", amount=3}, {type="item", name="nullius-battery-3", amount=1} }, - result = "nullius-stabilizer-2" + results = { + {type = "item", name = "nullius-stabilizer-2", amount = 1} + } }, { @@ -3976,7 +4273,9 @@ data:extend({ {type="item", name="nullius-steel-rod", amount=3}, {type="item", name="nullius-steel-plate", amount=1} }, - result = "nullius-shackle" + results = { + {type = "item", name = "nullius-shackle", amount = 1} + } }, { @@ -4000,17 +4299,19 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {type="item", name="turbo-filter-inserter", amount=1}, + {type="item", name="bob-turbo-inserter", amount=1}, {type="item", name="nullius-pump-2", amount=1}, {type="item", name="nullius-rubber", amount=3} }, - result = "nullius-refueler" + results = { + {type = "item", name = "nullius-refueler", amount = 1} + } }, { type = "item", name = "nullius-portable-generator-1", - localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", 1}, + localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", tostring(1)}, localised_description = {"equipment-description.nullius-portable-generator"}, icons = {{ icon = ICONPATH.."equipment/generator-1.png", @@ -4024,7 +4325,7 @@ data:extend({ { type = "item", name = "nullius-portable-generator-2", - localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", 2}, + localised_name = {"", {"equipment-name.nullius-portable-generator"}, " ", tostring(2)}, localised_description = {"equipment-description.nullius-portable-generator"}, icons = {{ icon = ICONPATH.."equipment/generator-2.png", @@ -4077,7 +4378,9 @@ data:extend({ {type="item", name="nullius-small-cargo-pod-1", amount=1}, {type="item", name="copper-cable", amount=4} }, - result = "nullius-portable-generator-1" + results = { + {type = "item", name = "nullius-portable-generator-1", amount = 1} + } }, { type = "recipe", @@ -4092,7 +4395,9 @@ data:extend({ {type="item", name="nullius-large-cargo-pod-1", amount=1}, {type="item", name="nullius-portable-generator-1", amount=1} }, - result = "nullius-portable-generator-2" + results = { + {type = "item", name = "nullius-portable-generator-2", amount = 1} + } }, { type = "recipe", @@ -4106,7 +4411,9 @@ data:extend({ {type="item", name="nullius-portable-generator-2", amount=1}, {type="item", name="power-switch", amount=1} }, - result = "nullius-portable-generator-backup" + results = { + {type = "item", name = "nullius-portable-generator-backup", amount = 1} + } }, { type = "recipe", @@ -4137,7 +4444,9 @@ data:extend({ {"nullius-portable-generator-backup", 1}, {"copper-cable", 1} }, - result = "nullius-portable-generator-2" + results = { + {type = "item", name = "nullius-portable-generator-2", amount = 1} + } }, { type = "recipe", @@ -4153,8 +4462,9 @@ data:extend({ {type="item", name="nullius-reactor", amount=1}, {type="item", name="nullius-stirling-engine-3", amount=2} }, - result = "nullius-portable-reactor", - result_count = 6 + results = { + {type = "item", name = "nullius-portable-reactor", amount = 6} + } } }) @@ -4163,16 +4473,16 @@ if mods["reskins-bobs"] then data.raw.item["nullius-solar-panel-1"].icons = { { icon = "__reskins-bobs__/graphics/icons/power/solar-panel/solar-panel-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }, { icon = "__reskins-bobs__/graphics/icons/power/solar-panel/solar-panel-icon-mask.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = tiercolor("yellow") }, { icon = "__reskins-bobs__/graphics/icons/power/solar-panel/solar-panel-icon-highlights.png", - icon_size = 64, icon_mipmaps = 4, tint = {1, 1, 1, 0} + icon_size = 64, tint = {1, 1, 1, 0} } } data.raw.item["nullius-solar-panel-2"].icons = diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 3f97ddf..435ea22 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -39,22 +39,22 @@ data:extend({ order = "nullius-b", base_color = {r=18, g=193, b=200}, flow_color = {r=18, g=193, b=200}, - heat_capacity = "0.075KJ", + heat_capacity = "0.075kJ", default_temperature = 15, max_temperature = 100 }, { type = "fluid", name = "nullius-steam", - fuel_value = "6KJ", + fuel_value = "6kJ", icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "nullius-water-treatment", order = "nullius-cb", base_color = {r=0.5, g=0.5, b=0.5}, flow_color = {r=0.6, g=0.6, b=0.6}, - heat_capacity = "0.05KJ", + heat_capacity = "0.05kJ", default_temperature = 165, max_temperature = 200, gas_temperature = 100 @@ -62,14 +62,14 @@ data:extend({ { type = "fluid", name = "nullius-pressure-steam", - fuel_value = "20KJ", + fuel_value = "20kJ", icon = FLUIDPATH .. "steam2.png", icon_size = 64, subgroup = "nullius-water-treatment", order = "nullius-cc", base_color = {r=0.7, g=0.7, b=0.7}, flow_color = {r=0.8, g=0.8, b=0.8}, - heat_capacity = "0.1KJ", + heat_capacity = "0.1kJ", default_temperature = 500, max_temperature = 600, gas_temperature = 100 @@ -83,7 +83,7 @@ data:extend({ order = "nullius-d", base_color = {r=72, g=144, b=140}, flow_color = {r=72, g=144, b=140}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 15, max_temperature = 100 }, @@ -96,7 +96,7 @@ data:extend({ order = "nullius-e", base_color = {r=76, g=160, b=148}, flow_color = {r=76, g=160, b=148}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 15, max_temperature = 100 }, @@ -105,12 +105,12 @@ data:extend({ name = "nullius-saline", icon = "__base__/graphics/icons/fluid/water.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "nullius-water-treatment", order = "nullius-f", base_color = {r=34, g=169, b=187}, flow_color = {r=34, g=169, b=187}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 15, max_temperature = 100 }, @@ -123,7 +123,7 @@ data:extend({ order = "nullius-g", base_color = {r=36, g=94, b=142}, flow_color = {r=36, g=94, b=142}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 20, max_temperature = 100 }, @@ -131,14 +131,14 @@ data:extend({ type = "fluid", name = "nullius-heavy-water", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/semiheavy-water.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/semiheavy-water.png", 72 }, {element_tint["heavy"], element_tint["oxygen"], element_tint["hydrogen"]} ), subgroup = "nullius-water-treatment", order = "nullius-h", base_color = {r=18, g=180, b=180}, flow_color = {r=18, g=180, b=180}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 20, max_temperature = 100 }, @@ -151,7 +151,7 @@ data:extend({ order = "nullius-i", base_color = {r=97, g=127, b=104}, flow_color = {r=97, g=127, b=104}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 20, max_temperature = 100 }, @@ -164,7 +164,7 @@ data:extend({ order = "nullius-j", base_color = {r=115, g=94, b=57}, flow_color = {r=115, g=94, b=57}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -179,7 +179,7 @@ data:extend({ order = "nullius-b", base_color = {r = 32, g = 144, b = 255}, flow_color = {r = 32, g = 144, b = 255}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -194,7 +194,7 @@ data:extend({ order = "nullius-c", base_color = {r = 122, g = 175, b = 232}, flow_color = {r = 122, g = 175, b = 232}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -209,7 +209,7 @@ data:extend({ order = "nullius-d", base_color = {r = 152, g = 176, b = 204}, flow_color = {r = 152, g = 176, b = 204}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -220,13 +220,13 @@ data:extend({ icons = angelsmods.functions.create_gas_fluid_icon(nil, {element_tint["volcanic"], element_tint["air"], element_tint["volcanic"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 20, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(20), {"fluid-description.nullius-volcanic-gas"}}, subgroup = "air-filtration", order = "nullius-e", base_color = {r = 224, g = 128, b = 0}, flow_color = {r = 224, g = 128, b = 0}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 200, max_temperature = 500, gas_temperature = 0 @@ -241,7 +241,7 @@ data:extend({ order = "nullius-f", base_color = { r = 40, g = 80, b = 192 }, flow_color = { r = 40, g = 80, b = 192 }, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -256,7 +256,7 @@ data:extend({ order = "nullius-g", base_color = { r = 164, g = 140, b = 204 }, flow_color = { r = 164, g = 140, b = 204 }, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -271,7 +271,7 @@ data:extend({ order = "nullius-h", base_color = { r = 224, g = 200, b = 255 }, flow_color = { r = 224, g = 200, b = 255 }, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -281,14 +281,14 @@ data:extend({ type = "fluid", name = "nullius-carbon-dioxide", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), subgroup = "carbon", order = "nullius-b", base_color = {r = 1, g = 0.4, b = 0.4}, flow_color = {r = 1, g = 0.4, b = 0.4}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -297,16 +297,16 @@ data:extend({ type = "fluid", name = "nullius-carbon-monoxide", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 50, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), {"fluid-description.nullius-carbon-monoxide"}}, subgroup = "carbon", order = "nullius-c", base_color = {r = 0.5, g = 0.2, b = 0.2}, flow_color = {r = 0.5, g = 0.2, b = 0.2}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -315,16 +315,16 @@ data:extend({ type = "fluid", name = "nullius-methane", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/methane.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 200, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), {"fluid-description.nullius-methane"}}, subgroup = "carbon", order = "nullius-d", base_color = {r = 0.68, g = 0.68, b = 0.68}, flow_color = {r = 0.68, g = 0.68, b = 0.68}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -333,14 +333,14 @@ data:extend({ type = "fluid", name = "nullius-ethylene", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]} ), subgroup = "carbon", order = "nullius-f", base_color = {r = 0.45, g = 0.45, b = 0.45}, flow_color = {r = 0.45, g = 0.45, b = 0.45}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -349,14 +349,14 @@ data:extend({ type = "fluid", name = "nullius-propene", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/propene.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["carbon"]} ), subgroup = "carbon", order = "nullius-g", base_color = {r = 0.3, g = 0.3, b = 0.3}, flow_color = {r = 0.3, g = 0.3, b = 0.3}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -365,14 +365,14 @@ data:extend({ type = "fluid", name = "nullius-benzene", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), subgroup = "carbon", order = "nullius-h", base_color = {r = 0.15, g = 0.15, b = 0.15}, flow_color = {r = 0.15, g = 0.15, b = 0.15}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -381,12 +381,12 @@ data:extend({ name = "nullius-petroleum", icon = "__base__/graphics/icons/fluid/crude-oil.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "carbon", order = "nullius-k", base_color = {r = 0, g = 0, b = 0}, flow_color = {r = 0, g = 0, b = 0}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -395,14 +395,14 @@ data:extend({ type = "fluid", name = "nullius-methanol", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/methanol.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["hydrogen"]} ), subgroup = "organic-chemistry", order = "nullius-b", base_color = {r = 0.7, g = 0.575, b = 0.575}, flow_color = {r = 0.7, g = 0.575, b = 0.575}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -410,14 +410,14 @@ data:extend({ type = "fluid", name = "nullius-butadiene", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/butadiene.png", 75 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/butadiene.png", 75 }, {element_tint["hydrogen"], element_tint["carbon"], element_tint["carbon"]} ), subgroup = "organic-chemistry", order = "nullius-c", base_color = {r = 0.8, g = 0.8, b = 0.8}, flow_color = {r = 0.8, g = 0.8, b = 0.8}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -426,14 +426,14 @@ data:extend({ type = "fluid", name = "nullius-styrene", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/styrene.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/styrene.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["carbon"]} ), subgroup = "organic-chemistry", order = "nullius-d", base_color = {r = 0, g = 0, b = 0}, flow_color = {r = 0, g = 0, b = 0}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -441,14 +441,14 @@ data:extend({ type = "fluid", name = "nullius-acrylonitrile", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/methylamine.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/methylamine.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["nitrogen"]} ), subgroup = "organic-chemistry", order = "nullius-e", base_color = {r = 0.2, g = 0.2, b = 0.4}, flow_color = {r = 0.2, g = 0.2, b = 0.4}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -456,14 +456,14 @@ data:extend({ type = "fluid", name = "nullius-ech", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/epichlorohydrin.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/epichlorohydrin.png", 72 }, {element_tint["carbon"], element_tint["chlorine"], element_tint["oxygen"]} ), subgroup = "organic-chemistry", order = "nullius-f", base_color = {r = 224, g = 212, b = 168}, flow_color = {r = 224, g = 212, b = 168}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -471,14 +471,14 @@ data:extend({ type = "fluid", name = "nullius-glycerol", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/glycerol.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["oxygen"]} ), subgroup = "organic-chemistry", order = "nullius-g", base_color = {r = 224, g = 192, b = 128}, flow_color = {r = 224, g = 192, b = 128}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -487,12 +487,12 @@ data:extend({ name = "nullius-lubricant", icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "organic-chemistry", order = "nullius-h", base_color = {r = 0.43, g = 0.65, b = 0.31}, flow_color = {r = 0.43, g = 0.65, b = 0.31}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -505,7 +505,7 @@ data:extend({ order = "nullius-i", base_color = {r = 232, g = 228, b = 200}, flow_color = {r = 232, g = 228, b = 200}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -518,7 +518,7 @@ data:extend({ order = "nullius-j", base_color = {r = 192, g = 184, b = 136}, flow_color = {r = 192, g = 184, b = 136}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -533,7 +533,7 @@ data:extend({ order = "nullius-c", base_color = {r = 0.5, g = 0.4, b = 0.2}, flow_color = {r = 0.5, g = 0.4, b = 0.2}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -547,7 +547,7 @@ data:extend({ order = "nullius-d", base_color = {r = 0.7, g = 0.9, b = 0.5}, flow_color = {r = 0.7, g = 0.9, b = 0.5}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -561,7 +561,7 @@ data:extend({ order = "nullius-e", base_color = {r = 0.8, g = 0.8, b = 0.4}, flow_color = {r = 0.8, g = 0.8, b = 0.4}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -571,13 +571,13 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biochemistry", order = "nullius-f", base_color = {r=0.57, g=0.33, b=0}, flow_color = {r=1, g=0.73, b=0.07}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -587,13 +587,13 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/fluid/heavy-oil.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "biochemistry", order = "nullius-g", base_color = {r=0.5, g=0.04, b=0}, flow_color = {r=0.85, g=0.6, b=0.3}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -608,7 +608,7 @@ data:extend({ order = "nullius-h", base_color = {r = 0.9, g = 0.7, b = 0.5}, flow_color = {r = 0.9, g = 0.7, b = 0.5}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -623,7 +623,7 @@ data:extend({ order = "nullius-i", base_color = {r = 0.8, g = 0.5, b = 0.3}, flow_color = {r = 0.8, g = 0.5, b = 0.3}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -634,13 +634,13 @@ data:extend({ icons = angelsmods.functions.create_gas_fluid_icon(nil, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 50, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), {"fluid-description.nullius-hydrogen"}}, subgroup = "inorganic-chemistry", order = "nullius-bb", base_color = {r = 1, g = 1, b = 1}, flow_color = {r = 1, g = 1, b = 1}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -651,13 +651,13 @@ data:extend({ icons = angelsmods.functions.create_gas_fluid_icon(nil, {element_tint["hydrogen"], element_tint["heavy"], element_tint["heavy"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 50, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), {"fluid-description.nullius-deuterium"}}, subgroup = "inorganic-chemistry", order = "nullius-bc", base_color = {r = 1, g = 0.95, b = 0.85}, flow_color = {r = 1, g = 0.95, b = 0.85}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -672,7 +672,7 @@ data:extend({ order = "nullius-bd", base_color = {r = 1, g = 0.9, b = 0.7}, flow_color = {r = 1, g = 0.9, b = 0.7}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -683,13 +683,13 @@ data:extend({ icons = angelsmods.functions.create_gas_fluid_icon(nil, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygenation", 100, + localised_description = {"fluid-description.nullius-oxygenation", tostring(100), {"fluid-description.nullius-oxygen"}}, subgroup = "inorganic-chemistry", order = "nullius-c", base_color = {r = 1, g = 0, b = 0}, flow_color = {r = 1, g = 0, b = 0}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -704,7 +704,7 @@ data:extend({ order = "nullius-d", base_color = {r = 0, g = 1, b = 0}, flow_color = {r = 0, g = 1, b = 0}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -721,7 +721,7 @@ data:extend({ order = "nullius-g", base_color = { r = 150, g = 40, b = 180 }, flow_color = { r = 150, g = 40, b = 180 }, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -737,7 +737,7 @@ data:extend({ order = "nullius-i", base_color = {r = 0.9, g = 1, b = 0.7}, flow_color = {r = 0.9, g = 1, b = 0.7}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100 }, @@ -751,7 +751,7 @@ data:extend({ order = "nullius-l", base_color = {r = 120, g = 60, b = 90}, flow_color = {r = 120, g = 60, b = 90}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -765,7 +765,7 @@ data:extend({ order = "nullius-m", base_color = {r=0.803, g=0.388, b=0.215}, flow_color = {r=0.803, g=0.388, b=0.215}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -774,7 +774,7 @@ data:extend({ type = "fluid", name = "nullius-hydrogen-chloride", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", 72, nil, 0.15}, {element_tint["chlorine"], element_tint["chlorine"], element_tint["hydrogen"]} ), @@ -782,7 +782,7 @@ data:extend({ order = "nullius-e", base_color = {r = 0.7, g = 1, b = 0.7}, flow_color = {r = 0.7, g = 1, b = 0.7}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -791,7 +791,7 @@ data:extend({ type = "fluid", name = "nullius-acid-hydrochloric", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", 72, nil, 0.15 }, {element_tint["chlorine"], element_tint["chlorine"], element_tint["hydrogen"]} ), @@ -799,7 +799,7 @@ data:extend({ order = "nullius-f", base_color = {r = 0.4, g = 1, b = 0.4}, flow_color = {r = 0.4, g = 1, b = 0.4}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100 }, @@ -807,7 +807,7 @@ data:extend({ type = "fluid", name = "nullius-sulfur-dioxide", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", + {"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72, nil, 0.17}, {element_tint["sulfur"], element_tint["oxygen"], element_tint["oxygen"]} ), @@ -815,7 +815,7 @@ data:extend({ order = "nullius-h", base_color = {r = 0.9, g = 0.9, b = 0.2}, flow_color = {r = 0.9, g = 0.9, b = 0.2}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -824,7 +824,7 @@ data:extend({ type = "fluid", name = "nullius-acid-sulfuric", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + {"__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", 72, nil, 0.18}, {element_tint["sulfur"], element_tint["oxygen"], element_tint["hydrogen"]} ), @@ -832,7 +832,7 @@ data:extend({ order = "nullius-i", base_color = {r = 0.75, g = 0.65, b = 0.1}, flow_color = {r = 0.75, g = 0.65, b = 0.1}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -840,16 +840,16 @@ data:extend({ type = "fluid", name = "nullius-ammonia", icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/ammonia.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/ammonia.png", 72 }, {element_tint["nitrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 100, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(100), {"fluid-description.nullius-ammonia"}}, subgroup = "acid-chemistry", order = "nullius-j", base_color = {r = 0.4, g = 0.4, b = 0.7}, flow_color = {r = 0.4, g = 0.4, b = 0.7}, - heat_capacity = "0.04KJ", + heat_capacity = "0.04kJ", default_temperature = 25, max_temperature = 100, gas_temperature = 0 @@ -858,7 +858,7 @@ data:extend({ type = "fluid", name = "nullius-acid-nitric", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/nitric-acid.png", + {"__angelspetrochemgraphics__/graphics/icons/molecules/nitric-acid.png", 72, nil, 0.18}, {element_tint["nitrogen"], element_tint["oxygen"], element_tint["hydrogen"]} ), @@ -866,7 +866,7 @@ data:extend({ order = "nullius-k", base_color = {r = 148, g = 112, b = 224}, flow_color = {r = 148, g = 112, b = 224}, - heat_capacity = "0.08KJ", + heat_capacity = "0.08kJ", default_temperature = 25, max_temperature = 100 }, @@ -877,14 +877,14 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["air"], element_tint["residual"], element_tint["air"]} ), - localised_description = {"fluid-description.nullius-recapture", 85, + localised_description = {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-air"}}, subgroup = "compressed-air", order = "nullius-b", base_color = {r = 32, g = 144, b = 255}, flow_color = {r = 32, g = 144, b = 255}, - heat_capacity = "0.08KJ", - fuel_value = "14KJ", + heat_capacity = "0.08kJ", + fuel_value = "14kJ", default_temperature = 50, max_temperature = 100 }, @@ -894,14 +894,14 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["residual"], element_tint["trace"], element_tint["residual"]} ), - localised_description = {"fluid-description.nullius-recapture", 90, + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-residual-gas"}}, subgroup = "compressed-air", order = "nullius-cc", base_color = {r = 122, g = 175, b = 232}, flow_color = {r = 122, g = 175, b = 232}, - heat_capacity = "0.08KJ", - fuel_value = "15KJ", + heat_capacity = "0.08kJ", + fuel_value = "15kJ", default_temperature = 50, max_temperature = 100 }, @@ -911,14 +911,14 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["trace"], element_tint["volcanic"], element_tint["trace"]} ), - localised_description = {"fluid-description.nullius-recapture", 90, + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-trace-gas"}}, subgroup = "compressed-air", order = "nullius-dc", base_color = {r = 152, g = 176, b = 204}, flow_color = {r = 152, g = 176, b = 204}, - heat_capacity = "0.08KJ", - fuel_value = "15KJ", + heat_capacity = "0.08kJ", + fuel_value = "15kJ", default_temperature = 50, max_temperature = 100 }, @@ -928,14 +928,14 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["nitrogen"], element_tint["nitrogen"], element_tint["nitrogen"]} ), - localised_description = {"fluid-description.nullius-recapture", 90, + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-nitrogen"}}, subgroup = "compressed-air", order = "nullius-e", base_color = { r = 40, g = 80, b = 192}, flow_color = { r = 40, g = 80, b = 192}, - heat_capacity = "0.08KJ", - fuel_value = "18KJ", + heat_capacity = "0.08kJ", + fuel_value = "18kJ", default_temperature = 50, max_temperature = 100 }, @@ -945,14 +945,14 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["argon"], element_tint["argon"], element_tint["argon"]} ), - localised_description = {"fluid-description.nullius-recapture", 96, + localised_description = {"fluid-description.nullius-recapture", tostring(96), {"fluid-description.nullius-compressed-argon"}}, subgroup = "compressed-air", order = "nullius-f", base_color = { r = 164, g = 140, b = 204}, flow_color = { r = 164, g = 140, b = 204}, - heat_capacity = "0.08KJ", - fuel_value = "24KJ", + heat_capacity = "0.08kJ", + fuel_value = "24kJ", default_temperature = 50, max_temperature = 100 }, @@ -962,14 +962,14 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["helium"], element_tint["helium"], element_tint["helium"]} ), - localised_description = {"fluid-description.nullius-recapture", 99, + localised_description = {"fluid-description.nullius-recapture", tostring(99), {"fluid-description.nullius-compressed-helium"}}, subgroup = "compressed-air", order = "nullius-g", base_color = { r = 224, g = 200, b = 255}, flow_color = { r = 224, g = 200, b = 255}, - heat_capacity = "0.08KJ", - fuel_value = "32KJ", + heat_capacity = "0.08kJ", + fuel_value = "32kJ", default_temperature = 50, max_temperature = 100 }, @@ -979,15 +979,15 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 200, - {"fluid-description.nullius-recapture", 85, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), + {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-hydrogen"}}}, subgroup = "compression", order = "nullius-h", base_color = {r = 1, g = 1, b = 1}, flow_color = {r = 1, g = 1, b = 1}, - heat_capacity = "0.08KJ", - fuel_value = "4KJ", + heat_capacity = "0.08kJ", + fuel_value = "4kJ", default_temperature = 50, max_temperature = 100 }, @@ -997,15 +997,15 @@ data:extend({ icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygenation", 400, - {"fluid-description.nullius-recapture", 85, + localised_description = {"fluid-description.nullius-oxygenation", tostring(400), + {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-oxygen"}}}, subgroup = "compression", order = "nullius-i", base_color = {r = 1, g = 0, b = 0}, flow_color = {r = 1, g = 0, b = 0}, - heat_capacity = "0.08KJ", - fuel_value = "4KJ", + heat_capacity = "0.08kJ", + fuel_value = "4kJ", default_temperature = 50, max_temperature = 100 }, @@ -1013,17 +1013,17 @@ data:extend({ type = "fluid", name = "nullius-compressed-carbon-dioxide", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-recapture", 90, + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-carbon-dioxide"}}, subgroup = "compression", order = "nullius-j", base_color = {r = 1, g = 0.4, b = 0.4}, flow_color = {r = 1, g = 0.4, b = 0.4}, - heat_capacity = "0.08KJ", - fuel_value = "12KJ", + heat_capacity = "0.08kJ", + fuel_value = "12kJ", default_temperature = 50, max_temperature = 100 }, @@ -1031,18 +1031,18 @@ data:extend({ type = "fluid", name = "nullius-compressed-carbon-monoxide", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 200, - {"fluid-description.nullius-recapture", 90, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), + {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-carbon-monoxide"}}}, subgroup = "compression", order = "nullius-k", base_color = {r = 0.5, g = 0.2, b = 0.2}, flow_color = {r = 0.5, g = 0.2, b = 0.2}, - heat_capacity = "0.08KJ", - fuel_value = "8KJ", + heat_capacity = "0.08kJ", + fuel_value = "8kJ", default_temperature = 50, max_temperature = 100 }, @@ -1050,18 +1050,18 @@ data:extend({ type = "fluid", name = "nullius-compressed-methane", icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/methane.png", 72 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", 800, - {"fluid-description.nullius-recapture", 85, + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(800), + {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-methane"}}}, subgroup = "compression", order = "nullius-l", base_color = {r = 0.68, g = 0.68, b = 0.68}, flow_color = {r = 0.68, g = 0.68, b = 0.68}, - heat_capacity = "0.08KJ", - fuel_value = "6KJ", + heat_capacity = "0.08kJ", + fuel_value = "6kJ", default_temperature = 50, max_temperature = 100 }, @@ -1077,8 +1077,8 @@ data:extend({ order = "nullius-x", base_color = {r=1, g=1, b=0}, flow_color = {r=1, g=1, b=0}, - heat_capacity = "0.1KJ", - fuel_value = "10KJ", + heat_capacity = "0.1kJ", + fuel_value = "10kJ", default_temperature = 100, max_temperature = 200, gas_temperature = 0 @@ -1095,12 +1095,12 @@ data:extend({ { icon = "__base__/graphics/icons/chemical-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {1, 7}, tint = {r=1, g=1, b=1, a=0.75} @@ -1115,7 +1115,7 @@ data:extend({ { type = "recipe", name = "nullius-climatology-pack-1", - localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", 1}, + localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(1)}, show_amount_in_title = false, always_show_products = true, enabled = false, @@ -1126,17 +1126,19 @@ data:extend({ {type="fluid", name="nullius-air", amount=5000}, {type="fluid", name="nullius-seawater", amount=4000} }, - result = "nullius-climatology-pack" + results = { + {type = "item", name = "nullius-climatology-pack", amount = 1} + } }, { type = "recipe", name = "nullius-climatology-pack-2", - localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", 2}, + localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/chemical-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = FLUIDPATH .. "wastewater.png", @@ -1162,7 +1164,9 @@ data:extend({ {type="fluid", name="nullius-wastewater", amount=100}, {type="fluid", name="nullius-volcanic-gas", amount=5} }, - result = "nullius-climatology-pack" + results = { + {type = "item", name = "nullius-climatology-pack", amount = 1} + } }, { type = "recipe", @@ -1183,7 +1187,9 @@ data:extend({ {type="fluid", name="nullius-wastewater", amount=500}, {type="fluid", name="nullius-volcanic-gas", amount=25} }, - result = "nullius-box-climatology-pack" + results = { + {type = "item", name = "nullius-box-climatology-pack", amount = 1} + } }, { @@ -1192,7 +1198,7 @@ data:extend({ order = "nullius-f", icon = "__base__/graphics/icons/logistic-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "research-pack", stack_size = 200, durability = 1, @@ -1202,7 +1208,7 @@ data:extend({ { type = "recipe", name = "nullius-chemical-pack", - localised_name = {"", {"item-name.nullius-chemical-pack"}, " ", 1}, + localised_name = {"", {"item-name.nullius-chemical-pack"}, " ", tostring(1)}, enabled = false, category = "basic-chemistry", show_amount_in_title = false, @@ -1220,12 +1226,14 @@ data:extend({ {type="fluid", name="nullius-acid-sulfuric", amount=20}, {type="fluid", name="nullius-lubricant", amount=4} }, - result = "nullius-chemical-pack" + results = { + {type = "item", name = "nullius-chemical-pack", amount = 1} + } }, { type = "recipe", name = "nullius-boxed-chemical-pack", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-chemical-pack"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-chemical-pack"}}, " ", tostring(1)}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -1244,12 +1252,14 @@ data:extend({ {type="fluid", name="nullius-acid-sulfuric", amount=100}, {type="fluid", name="nullius-lubricant", amount=20} }, - result = "nullius-box-chemical-pack" + results = { + {type = "item", name = "nullius-box-chemical-pack", amount = 1} + } }, { type = "recipe", name = "nullius-chemical-pack-2", - localised_name = {"", {"item-name.nullius-chemical-pack"}, " ", 2}, + localised_name = {"", {"item-name.nullius-chemical-pack"}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -1258,13 +1268,13 @@ data:extend({ { icon = "__base__/graphics/icons/logistic-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {0, 5}, tint = {r=0.9, g=0.8, b=0.9, a=0.9} @@ -1303,7 +1313,7 @@ data:extend({ { type = "recipe", name = "nullius-saline-caustic-solution", - localised_name = {"", {"fluid-name.nullius-caustic-solution"}, " ", 1}, + localised_name = {"", {"fluid-name.nullius-caustic-solution"}, " ", tostring(1)}, icons = angelsmods.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "sodium-hydroxide.png", 64}}, {element_tint["sodium"], element_tint["oxygen"], element_tint["hydrogen"]}, @@ -1328,7 +1338,7 @@ data:extend({ { type = "recipe", name = "nullius-caustic-solution", - localised_name = {"", {"fluid-name.nullius-caustic-solution"}, " ", 2}, + localised_name = {"", {"fluid-name.nullius-caustic-solution"}, " ", tostring(2)}, icons = angelsmods.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "sodium-hydroxide.png", 64}}, {element_tint["hydrogen"], element_tint["oxygen"], element_tint["sodium"]}, @@ -1409,8 +1419,8 @@ data:extend({ type = "recipe", name = "nullius-hydrogen-chloride-electrolysis", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/chlorine.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", 72}}, {element_tint["hydrogen"], element_tint["chlorine"], element_tint["chlorine"]}, nil ), @@ -1467,7 +1477,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.11, shift = {-13, -12} @@ -1504,10 +1514,10 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/water.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.12, shift = {-13, -12} @@ -1608,7 +1618,7 @@ data:extend({ { type = "item", name = "nullius-soda-ash", - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32, subgroup = "sodium-product", order = "nullius-f", @@ -1617,7 +1627,7 @@ data:extend({ { type = "item", name = "nullius-sodium-sulfate", - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32, subgroup = "sodium-product", order = "nullius-e", @@ -1652,11 +1662,11 @@ data:extend({ localised_name = {"recipe-name.nullius-soda-ash-2"}, icons = { { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32, scale = 0.5, shift = {9, -9} @@ -1715,7 +1725,7 @@ data:extend({ localised_name = {"recipe-name.nullius-sodium-sulfate-1"}, icons = { { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32 }, { @@ -1746,14 +1756,14 @@ data:extend({ { type = "recipe", name = "nullius-boxed-sodium-sulfate-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium-sulfate"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium-sulfate"}}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32, scale = 0.9 }, @@ -1789,7 +1799,7 @@ data:extend({ localised_name = {"recipe-name.nullius-sodium-sulfate-2"}, icons = { { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32 }, { @@ -1820,14 +1830,14 @@ data:extend({ { type = "recipe", name = "nullius-boxed-sodium-sulfate-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium-sulfate"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium-sulfate"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32, scale = 0.9 }, @@ -1861,6 +1871,7 @@ data:extend({ { type = "recipe", name = "nullius-air-filtration", + localised_name = {"fluid-name.nullius-air"}, enabled = true, hide_from_player_crafting = true, category = "air-filtration", @@ -1988,9 +1999,9 @@ data:extend({ localised_name = {"recipe-name.nullius-dehydration", {"fluid-name.nullius-sludge"}}, icons = { { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = FLUIDPATH .. "sludge.png", @@ -2017,7 +2028,7 @@ data:extend({ { type = "recipe", name = "nullius-desalination", - localised_name = {"", {"recipe-name.nullius-desalination"}, " ", 1}, + localised_name = {"", {"recipe-name.nullius-desalination"}, " ", tostring(1)}, icons = angelsmods.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "brine.png", 64 }, {FLUIDPATH .. "purewater.png", 64 }}, @@ -2041,7 +2052,7 @@ data:extend({ { type = "recipe", name = "nullius-desalination-2", - localised_name = {"", {"recipe-name.nullius-desalination"}, " ", 2}, + localised_name = {"", {"recipe-name.nullius-desalination"}, " ", tostring(2)}, icons = angelsmods.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "brine.png", 64 }, {FLUIDPATH .. "purewater.png", 64 }, @@ -2068,7 +2079,7 @@ data:extend({ { type = "recipe", name = "nullius-desalination-3", - localised_name = {"", {"recipe-name.nullius-desalination"}, " ", 3}, + localised_name = {"", {"recipe-name.nullius-desalination"}, " ", tostring(3)}, icons = angelsmods.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "purewater.png", 64 }, {FLUIDPATH .. "brine.png", 64 }, @@ -2097,9 +2108,9 @@ data:extend({ type = "recipe", name = "nullius-saline-electrolysis", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/chlorine.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}}, {element_tint["saline"], element_tint["hydrogen"], element_tint["chlorine"]}, nil ), @@ -2122,8 +2133,8 @@ data:extend({ type = "recipe", name = "nullius-water-electrolysis", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["water"], element_tint["oxygen"], element_tint["hydrogen"]}, nil ), @@ -2144,8 +2155,8 @@ data:extend({ type = "recipe", name = "nullius-pressure-water-electrolysis", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], element_tint["water"]}, nil ), @@ -2167,8 +2178,8 @@ data:extend({ name = "nullius-steam-electrolysis", localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {{ 56, 142, 147 }, element_tint["oxygen"], element_tint["hydrogen"]}, {{"__base__/graphics/icons/fluid/steam.png", 64}} ), @@ -2191,8 +2202,8 @@ data:extend({ localised_name = {"recipe-name.nullius-pressure", {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], { 56, 142, 147 }}, {{"__base__/graphics/icons/fluid/steam.png", 64}} ), @@ -2214,8 +2225,8 @@ data:extend({ name = "nullius-high-pressure-steam-electrolysis", localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-pressure-steam"}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], { 129, 202, 210 }}, {{FLUIDPATH .. "steam2.png", 64}} ), @@ -2236,8 +2247,8 @@ data:extend({ type = "recipe", name = "nullius-brine-electrolysis", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/chlorine.png", 72}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", 72}, {FLUIDPATH .. "sodium-hydroxide.png", 64, nil, 0.9}}, {element_tint["brine"], element_tint["sodium"], element_tint["chlorine"]}, nil @@ -2306,7 +2317,7 @@ data:extend({ { type = "item", name = "nullius-sodium", - icon = "__angelspetrochem__/graphics/icons/solid-sodium.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium.png", icon_size = 32, subgroup = "sodium-product", order = "nullius-d", @@ -2356,7 +2367,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/water.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "salt.png", @@ -2422,7 +2433,7 @@ data:extend({ localised_name = {"recipe-name.nullius-salt-electrolysis"}, icons = { { - icon = "__angelspetrochem__/graphics/icons/solid-sodium.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium.png", icon_size = 32 }, { @@ -2448,14 +2459,14 @@ data:extend({ { type = "recipe", name = "nullius-boxed-sodium-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium"}}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium.png", icon_size = 32, scale = 0.9 }, @@ -2486,7 +2497,7 @@ data:extend({ localised_name = {"recipe-name.nullius-sodium-hydroxide-electrolysis"}, icons = { { - icon = "__angelspetrochem__/graphics/icons/solid-sodium.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium.png", icon_size = 32 }, { @@ -2513,14 +2524,14 @@ data:extend({ { type = "recipe", name = "nullius-boxed-sodium-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-sodium"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium.png", icon_size = 32, scale = 0.9 }, @@ -2688,8 +2699,8 @@ data:extend({ type = "recipe", name = "nullius-air-separation-1", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/nitrogen.png", 64}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", 64}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["air"], element_tint["nitrogen"], element_tint["carbon"]}, nil ), @@ -2712,8 +2723,8 @@ data:extend({ type = "recipe", name = "nullius-air-separation-2", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/nitrogen.png", 64}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", 64}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["air"], element_tint["carbon"], element_tint["residual"]}, nil ), @@ -2737,8 +2748,8 @@ data:extend({ type = "recipe", name = "nullius-pressure-air-separation", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/nitrogen.png", 64}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", 64}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["air"], element_tint["carbon"], element_tint["residual"]}, nil ), @@ -2762,8 +2773,8 @@ data:extend({ type = "recipe", name = "nullius-oxygen-separation", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["oxygen"], element_tint["carbon"], element_tint["residual"]}, nil ), @@ -2787,8 +2798,8 @@ data:extend({ type = "recipe", name = "nullius-pressure-oxygen-separation", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["oxygen"], element_tint["carbon"], element_tint["residual"]}, nil ), @@ -2889,7 +2900,7 @@ data:extend({ name = "nullius-trace-separation", icons = angelsmods.functions.create_gas_recipe_icon( {{FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}, - {"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["trace"], element_tint["helium"], element_tint["methane"]}, nil ), @@ -2914,7 +2925,7 @@ data:extend({ name = "nullius-pressure-trace-separation", icons = angelsmods.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}, - {"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["trace"], element_tint["helium"], element_tint["methane"]}, nil ), @@ -2937,10 +2948,10 @@ data:extend({ { type = "recipe", name = "nullius-volcanic-separation-1", - localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", 1}, + localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(1)}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["volcanic"], element_tint["sulfur"], element_tint["carbon"]}, nil ), @@ -2963,10 +2974,10 @@ data:extend({ { type = "recipe", name = "nullius-volcanic-separation-2", - localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", 2}, + localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(2)}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["sulfur"], element_tint["carbon"], element_tint["boron"]}, nil ), @@ -2991,7 +3002,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-volcanic", localised_name = {"", {"recipe-name.nullius-boxed", - {"recipe-name.nullius-volcanic-separation"}}, " ", 1}, + {"recipe-name.nullius-volcanic-separation"}}, " ", tostring(1)}, enabled = false, allow_decomposition = false, category = "distillation", @@ -3013,9 +3024,9 @@ data:extend({ { type = "recipe", name = "nullius-volcanic-separation-3", - localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", 3}, + localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(3)}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", 72}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, {FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}}, {element_tint["sulfur"], element_tint["helium"], element_tint["boron"]}, nil @@ -3041,7 +3052,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-volcanic-2", localised_name = {"", {"recipe-name.nullius-boxed", - {"recipe-name.nullius-volcanic-separation"}}, " ", 2}, + {"recipe-name.nullius-volcanic-separation"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -3085,9 +3096,9 @@ data:extend({ name = "nullius-carbon-dioxide-to-monoxide", localised_name = {"recipe-name.nullius-carbon-dioxide-to-monoxide"}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -3112,9 +3123,9 @@ data:extend({ type = "recipe", name = "nullius-pressure-carbon-monoxide", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -3139,9 +3150,9 @@ data:extend({ name = "nullius-carbon-monoxide-to-dioxide", localised_name = {"recipe-name.nullius-carbon-monoxide-to-dioxide"}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -3167,9 +3178,9 @@ data:extend({ type = "recipe", name = "nullius-pressure-carbon-dioxide", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -3197,10 +3208,10 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", icon_size = 72, scale = 0.25, shift = {-9, -10} @@ -3231,10 +3242,10 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", icon_size = 72, scale = 0.16, shift = {-11, -11} @@ -3261,9 +3272,9 @@ data:extend({ { type = "recipe", name = "nullius-carbon-gasification-1", - localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", 1}, + localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(1)}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__base__/graphics/icons/coal-dark-background.png", 64}} ), @@ -3289,9 +3300,9 @@ data:extend({ { type = "recipe", name = "nullius-carbon-gasification-2", - localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", 2}, + localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(2)}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__base__/graphics/icons/coal-dark-background.png", 64}} ), @@ -3321,7 +3332,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-carbon-gasification-1", localised_name = {"recipe-name.nullius-boxed", - {"", {"recipe-name.nullius-carbon-gasification"}, " ", 1}}, + {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(1)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -3357,7 +3368,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-carbon-gasification-2", localised_name = {"recipe-name.nullius-boxed", - {"", {"recipe-name.nullius-carbon-gasification"}, " ", 2}}, + {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(2)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -3393,7 +3404,7 @@ data:extend({ type = "recipe", name = "nullius-legacy-graphite-to-carbon-monoxide", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__base__/graphics/icons/coal-dark-background.png", 64}} ), @@ -3428,7 +3439,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", icon_size = 72, scale = 0.4 } @@ -3459,10 +3470,10 @@ data:extend({ name = "nullius-carbon-dioxide-electrolysis", localised_name = {"recipe-name.nullius-carbon-dioxide-electrolysis"}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/oxygen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, category = "nullius-electrolysis", @@ -3483,9 +3494,9 @@ data:extend({ name = "nullius-carbon-monoxide-to-alkenes", localised_name = {"recipe-name.nullius-alkene-synthesis"}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/propene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["oxygen"]}, nil ), @@ -3510,9 +3521,9 @@ data:extend({ type = "recipe", name = "nullius-pressure-alkene-synthesis", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/propene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["oxygen"]}, nil ), @@ -3537,9 +3548,9 @@ data:extend({ name = "nullius-alkene-synthesis-light", localised_name = {"recipe-name.nullius-light", {"recipe-name.nullius-alkene-synthesis"}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/propene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], element_tint["carbon"]}, nil ), @@ -3564,9 +3575,9 @@ data:extend({ type = "recipe", name = "nullius-carbon-dioxide-to-methane", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -3591,9 +3602,9 @@ data:extend({ type = "recipe", name = "nullius-pressure-methane", icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -3617,9 +3628,9 @@ data:extend({ type = "recipe", name = "nullius-methane-to-ethylene", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -3645,9 +3656,9 @@ data:extend({ name = "nullius-pressure-ethylene", localised_name = {"recipe-name.nullius-pressure-ethylene"}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -3672,9 +3683,9 @@ data:extend({ type = "recipe", name = "nullius-methanol", icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methanol.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, show_amount_in_title = false, @@ -3700,9 +3711,9 @@ data:extend({ name = "nullius-pressure-methanol", localised_name = {"recipe-name.nullius-pressure-methanol"}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methanol.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, show_amount_in_title = false, @@ -3748,7 +3759,7 @@ data:extend({ name = "nullius-pressure-butadiene", localised_name = {"recipe-name.nullius-pressure", {"fluid-name.nullius-butadiene"}}, icons = angelsmods.functions.create_liquid_fluid_icon( - {"__angelspetrochem__/graphics/icons/molecules/butadiene.png", 75 }, + {"__angelspetrochemgraphics__/graphics/icons/molecules/butadiene.png", 75 }, {element_tint["hydrogen"], element_tint["carbon"], element_tint["carbon"]} ), enabled = false, @@ -3852,7 +3863,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methylamine.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methylamine.png", icon_size = 72, scale = 0.2, shift = {11, -10} @@ -3917,7 +3928,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -3978,12 +3989,12 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/water.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4016,7 +4027,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/water.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.36 } }, @@ -4051,7 +4062,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4118,7 +4129,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4185,7 +4196,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4252,7 +4263,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4320,7 +4331,7 @@ data:extend({ }, { icon = "__base__/graphics/icons/fluid/steam.png", - icon_mipmaps = 4, + scale = 0.25, shift = {-8, -8} } @@ -4349,7 +4360,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/barreling-pump.png", + icon = "__angelsrefininggraphics__/graphics/icons/barreling-pump.png", icon_size = 32, scale = 0.5, shift = {-8, -8} @@ -4401,7 +4412,7 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - icon_mipmaps = 4 + }, { icon = FLUIDPATH .. "atom2.png", @@ -4433,7 +4444,7 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - icon_mipmaps = 4 + }, { icon = FLUIDPATH .. "atom2.png", @@ -4466,7 +4477,7 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - icon_mipmaps = 4 + }, { icon = FLUIDPATH .. "atom2.png", @@ -4500,10 +4511,10 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, scale = 0.25, shift = {-8, -8} @@ -4533,10 +4544,10 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, scale = 0.15, shift = {-11, -11} @@ -4567,10 +4578,10 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/ethylene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", icon_size = 72, scale = 0.2, shift = {-8, -8} @@ -4600,10 +4611,10 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/propene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", icon_size = 72, scale = 0.2, shift = {-8, -8} @@ -4633,11 +4644,11 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/benzene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", icon_size = 72, scale = 0.2, shift = {-8, -8} @@ -4667,11 +4678,11 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.2, shift = {-8, -8} @@ -4701,12 +4712,12 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/heavy-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {-8, -8} } @@ -4735,7 +4746,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -4775,7 +4786,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -4810,17 +4821,17 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-7, -7} }, { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32, scale = 0.5, shift = {7, 7} @@ -4857,18 +4868,18 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-6, -6} }, { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32, scale = 0.45, shift = {6, 6} @@ -4900,10 +4911,10 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, scale = 0.24, shift = {-8, -8} @@ -4930,10 +4941,10 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, scale = 0.16, shift = {-10, -10} @@ -4964,11 +4975,11 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, scale = 0.21, shift = {-6, -6} @@ -5000,11 +5011,11 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, scale = 0.14, shift = {-8, -8} @@ -5036,11 +5047,11 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", icon_size = 72, scale = 0.18, shift = {-7, -7} @@ -5065,11 +5076,11 @@ data:extend({ name = "nullius-ethylene-pyrolysis", localised_name = {"recipe-name.nullius-ethylene-pyrolysis"}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/propene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -5092,11 +5103,11 @@ data:extend({ name = "nullius-propene-pyrolysis", localised_name = {"recipe-name.nullius-propene-pyrolysis"}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/ethylene.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["carbon"]}, - {{"__angelspetrochem__/graphics/icons/molecules/propene.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -5119,10 +5130,10 @@ data:extend({ name = "nullius-methane-reforming", localised_name = {"recipe-name.nullius-reforming", {"fluid-name.nullius-methane"}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["hydrogen"], element_tint["carbon"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/methane.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -5145,11 +5156,11 @@ data:extend({ name = "nullius-benzene-reforming", localised_name = {"recipe-name.nullius-reforming", {"fluid-name.nullius-benzene"}}, icons = angelsmods.functions.create_gas_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["hydrogen"], element_tint["carbon"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -5174,11 +5185,11 @@ data:extend({ localised_name = {"recipe-name.nullius-pressure", {"recipe-name.nullius-reforming", {"fluid-name.nullius-benzene"}}}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72}, - {"__angelspetrochem__/graphics/icons/molecules/carbon-monoxide.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}, + {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["hydrogen"], element_tint["carbon"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/benzene.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}} ), enabled = false, allow_as_intermediate = false, @@ -5321,13 +5332,14 @@ data:extend({ { type = "recipe", name = "nullius-hydrogen-canister-1", + localised_name = {"item-name.nullius-hydrogen-canister"}, icons = { { icon = ICONPATH .. "canister-hydrogen.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72, scale = 0.21, shift = {10, -10} @@ -5349,7 +5361,9 @@ data:extend({ {type="fluid", name="nullius-hydrogen", amount=300, fluidbox_index=1}, {type="fluid", name="nullius-oxygen", amount=150, fluidbox_index=2} }, - result = "nullius-hydrogen-canister" + results = { + {type = "item", name = "nullius-hydrogen-canister", amount = 1} + } }, { type = "recipe", @@ -5365,7 +5379,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72, scale = 0.18, shift = {9, -9} @@ -5388,7 +5402,9 @@ data:extend({ {type="fluid", name="nullius-hydrogen", amount=1500, fluidbox_index=1}, {type="fluid", name="nullius-oxygen", amount=750, fluidbox_index=2} }, - result = "nullius-box-hydrogen-canister" + results = { + {type = "item", name = "nullius-box-hydrogen-canister", amount = 1} + } }, { type = "recipe", @@ -5400,7 +5416,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72, scale = 0.15, shift = {11, -11} @@ -5422,7 +5438,9 @@ data:extend({ {type="fluid", name="nullius-compressed-hydrogen", amount=70, fluidbox_index=1}, {type="fluid", name="nullius-compressed-oxygen", amount=35, fluidbox_index=2} }, - result = "nullius-hydrogen-canister" + results = { + {type = "item", name = "nullius-hydrogen-canister", amount = 1} + } }, { type = "recipe", @@ -5440,7 +5458,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72, scale = 0.13, shift = {10, -10} @@ -5463,19 +5481,22 @@ data:extend({ {type="fluid", name="nullius-compressed-hydrogen", amount=350, fluidbox_index=1}, {type="fluid", name="nullius-compressed-oxygen", amount=175, fluidbox_index=2} }, - result = "nullius-box-hydrogen-canister" + results = { + {type = "item", name = "nullius-box-hydrogen-canister", amount = 1} + } }, { type = "recipe", name = "nullius-methanol-canister-1", + localised_name = {"item-name.nullius-methanol-canister"}, icons = { { icon = ICONPATH .. "canister-methanol.png", icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.21, shift = {10, -10} @@ -5498,7 +5519,9 @@ data:extend({ {type="fluid", name="nullius-oxygen", amount=420}, {type="fluid", name="nullius-benzene", amount=3} }, - result = "processed-fuel" + results = { + {type = "item", name = "processed-fuel", amount = 1} + } }, { type = "recipe", @@ -5514,7 +5537,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.18, shift = {9, -9} @@ -5538,7 +5561,9 @@ data:extend({ {type="fluid", name="nullius-oxygen", amount=2100}, {type="fluid", name="nullius-benzene", amount=15} }, - result = "nullius-box-methanol-canister" + results = { + {type = "item", name = "nullius-box-methanol-canister", amount = 1} + } }, { type = "recipe", @@ -5550,7 +5575,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.15, shift = {11, -11} @@ -5573,7 +5598,9 @@ data:extend({ {type="fluid", name="nullius-compressed-oxygen", amount=95}, {type="fluid", name="nullius-benzene", amount=2} }, - result = "processed-fuel" + results = { + {type = "item", name = "processed-fuel", amount = 1} + } }, { type = "recipe", @@ -5590,7 +5617,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.13, shift = {10, -10} @@ -5614,7 +5641,9 @@ data:extend({ {type="fluid", name="nullius-compressed-oxygen", amount=475}, {type="fluid", name="nullius-benzene", amount=10} }, - result = "nullius-box-methanol-canister" + results = { + {type = "item", name = "nullius-box-methanol-canister", amount = 1} + } }, { type = "recipe", @@ -5631,7 +5660,9 @@ data:extend({ {type="fluid", name="nullius-biodiesel", amount=25}, {type="fluid", name="nullius-compressed-oxygen", amount=120} }, - result = "nullius-biodiesel-canister" + results = { + {type = "item", name = "nullius-biodiesel-canister", amount = 1} + } }, { type = "recipe", @@ -5649,7 +5680,9 @@ data:extend({ {type="fluid", name="nullius-biodiesel", amount=125}, {type="fluid", name="nullius-compressed-oxygen", amount=600} }, - result = "nullius-box-biodiesel-canister" + results = { + {type = "item", name = "nullius-box-biodiesel-canister", amount = 1} + } }, { @@ -5663,7 +5696,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72, scale = 0.25, shift = {-8, 8} @@ -5694,7 +5727,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.25, shift = {-8, 8} @@ -5727,7 +5760,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/heavy-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.26, shift = {-4, 6} } @@ -5750,6 +5783,7 @@ data:extend({ { type = "recipe", name = "nullius-rocket-fuel", + localised_name = {"item-name.rocket-fuel"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -6065,7 +6099,7 @@ data:extend({ name = "nullius-decompress-air", localised_name = {"recipe-name.nullius-decompress-air"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["air"], element_tint["residual"], element_tint["air"]} ), enabled = false, @@ -6091,7 +6125,7 @@ data:extend({ name = "nullius-decompress-nitrogen", localised_name = {"recipe-name.nullius-decompress-nitrogen"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["nitrogen"], element_tint["nitrogen"], element_tint["nitrogen"]} ), enabled = false, @@ -6117,7 +6151,7 @@ data:extend({ name = "nullius-decompress-argon", localised_name = {"recipe-name.nullius-decompress-argon"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["argon"], element_tint["argon"], element_tint["argon"]} ), enabled = false, @@ -6143,7 +6177,7 @@ data:extend({ name = "nullius-decompress-helium", localised_name = {"recipe-name.nullius-decompress-helium"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["helium"], element_tint["helium"], element_tint["helium"]} ), enabled = false, @@ -6169,7 +6203,7 @@ data:extend({ name = "nullius-decompress-hydrogen", localised_name = {"recipe-name.nullius-decompress-hydrogen"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), enabled = false, @@ -6195,7 +6229,7 @@ data:extend({ name = "nullius-decompress-oxygen", localised_name = {"recipe-name.nullius-decompress-oxygen"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), enabled = false, @@ -6221,7 +6255,7 @@ data:extend({ name = "nullius-decompress-carbon-dioxide", localised_name = {"recipe-name.nullius-decompress-carbon-dioxide"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), enabled = false, @@ -6247,7 +6281,7 @@ data:extend({ name = "nullius-decompress-carbon-monoxide", localised_name = {"recipe-name.nullius-decompress-carbon-monoxide"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), enabled = false, @@ -6273,7 +6307,7 @@ data:extend({ name = "nullius-decompress-methane", localised_name = {"recipe-name.nullius-decompress-methane"}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), enabled = false, @@ -6300,7 +6334,7 @@ data:extend({ name = "nullius-decompress-residual-gas", localised_name = {"recipe-name.nullius-decompression", {"fluid-name.nullius-residual-gas"}}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["residual"], element_tint["trace"], element_tint["residual"]} ), enabled = false, @@ -6326,7 +6360,7 @@ data:extend({ name = "nullius-decompress-trace-gas", localised_name = {"recipe-name.nullius-decompression", {"fluid-name.nullius-trace-gas"}}, icons = angelsmods.functions.create_gas_fluid_icon( - {"__angelsrefining__/graphics/icons/barreling-pump.png", 32 }, + {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["trace"], element_tint["volcanic"], element_tint["trace"]} ), enabled = false, @@ -6459,7 +6493,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.14, shift = {-12, -10} @@ -6483,7 +6517,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-sludge-1", - localised_name = {"recipe-name.nullius-boxed", {"", {"fluid-name.nullius-sludge"}, " ", 1}}, + localised_name = {"recipe-name.nullius-boxed", {"", {"fluid-name.nullius-sludge"}, " ", tostring(1)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -6495,7 +6529,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.12, shift = {-11, -9} @@ -6526,7 +6560,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.16, shift = {-12, -10} @@ -6550,7 +6584,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-sludge-2", - localised_name = {"recipe-name.nullius-boxed", {"", {"fluid-name.nullius-sludge"}, " ", 2}}, + localised_name = {"recipe-name.nullius-boxed", {"", {"fluid-name.nullius-sludge"}, " ", tostring(2)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -6562,7 +6596,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.14, shift = {-11, -9} @@ -6589,7 +6623,7 @@ data:extend({ name = "nullius-plastic", icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "organic-material-2", order = "nullius-b", stack_size = 100 @@ -6602,10 +6636,10 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/chlorine.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", icon_size = 72, scale = 0.2, shift = {9, -10} @@ -6637,10 +6671,10 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/propene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", icon_size = 72, scale = 0.2, shift = {9, -10} @@ -6660,8 +6694,9 @@ data:extend({ {type="fluid", name="nullius-propene", amount=45}, {type="fluid", name="nullius-ethylene", amount=5} }, - result = "nullius-plastic", - result_count = 4 + results = { + {type = "item", name = "nullius-plastic", amount = 4} + } }, { type = "recipe", @@ -6671,10 +6706,10 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/styrene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/styrene.png", icon_size = 72, scale = 0.2, shift = {10, -9} @@ -6696,8 +6731,9 @@ data:extend({ {type="fluid", name="nullius-styrene", amount=4}, {type="fluid", name="nullius-acrylonitrile", amount=3} }, - result = "nullius-plastic", - result_count = 8 + results = { + {type = "item", name = "nullius-plastic", amount = 8} + } }, { type = "recipe", @@ -6711,11 +6747,11 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/styrene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/styrene.png", icon_size = 72, scale = 0.18, shift = {9, -8} @@ -6738,8 +6774,9 @@ data:extend({ {type="fluid", name="nullius-styrene", amount=20}, {type="fluid", name="nullius-acrylonitrile", amount=15} }, - result = "nullius-box-plastic", - result_count = 8 + results = { + {type = "item", name = "nullius-box-plastic", amount = 8} + } }, { type = "recipe", @@ -6749,10 +6786,10 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/ethylene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", icon_size = 72, scale = 0.2, shift = {10, -9} @@ -6778,8 +6815,7 @@ data:extend({ {type="item", name="nullius-plastic", amount=45}, {type="fluid", name="nullius-sludge", amount=40} }, - main_product = "nullius-plastic", - result_count = 45 + main_product = "nullius-plastic" }, { type = "recipe", @@ -6793,11 +6829,11 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/ethylene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", icon_size = 72, scale = 0.18, shift = {9, -8} @@ -6825,7 +6861,6 @@ data:extend({ {type="fluid", name="nullius-sludge", amount=40} }, main_product = "nullius-box-plastic", - result_count = 9 }, { type = "recipe", @@ -6835,10 +6870,10 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/ethylene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", icon_size = 72, scale = 0.2, shift = {10, -9} @@ -6868,7 +6903,6 @@ data:extend({ {type="fluid", name="nullius-sludge", amount=40} }, main_product = "nullius-plastic", - result_count = 40 }, { type = "recipe", @@ -6882,11 +6916,11 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/ethylene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", icon_size = 72, scale = 0.18, shift = {9, -8} @@ -6917,7 +6951,6 @@ data:extend({ {type="fluid", name="nullius-sludge", amount=40} }, main_product = "nullius-box-plastic", - result_count = 8 }, { @@ -7033,7 +7066,7 @@ data:extend({ type = "item", name = "nullius-bpa", icons = {{ - icon = "__angelsrefining__/graphics/icons/solid-salt.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-salt.png", icon_size = 32, tint = {1, 0.95, 0.9, 0.6} }}, @@ -7070,12 +7103,12 @@ data:extend({ name = "nullius-pressure-bpa", icons = { { - icon = "__angelsrefining__/graphics/icons/solid-salt.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-salt.png", icon_size = 32, tint = {1, 0.95, 0.9, 0.6} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/oxygen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", icon_size = 72, scale = 0.22, shift = {9, -12} @@ -7137,13 +7170,13 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/solid-salt.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-salt.png", icon_size = 32, tint = {1, 0.95, 0.9, 0.6}, scale = 0.9 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/oxygen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", icon_size = 72, scale = 0.18, shift = {7, -10} @@ -7174,7 +7207,7 @@ data:extend({ { type = "recipe", name = "nullius-ech", - localised_name = {"", {"fluid-name.nullius-ech"}, " ", 1}, + localised_name = {"", {"fluid-name.nullius-ech"}, " ", tostring(1)}, enabled = false, category = "basic-chemistry", subgroup = "chlorine-chemistry", @@ -7228,7 +7261,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/glycerol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", icon_size = 72, scale = 0.4 } @@ -7256,11 +7289,11 @@ data:extend({ { type = "recipe", name = "nullius-glycerol-to-ech", - localised_name = {"", {"fluid-name.nullius-ech"}, " ", 2}, + localised_name = {"", {"fluid-name.nullius-ech"}, " ", tostring(2)}, icons = angelsmods.functions.create_liquid_recipe_icon( - {{"__angelspetrochem__/graphics/icons/molecules/epichlorohydrin.png", 72}}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/epichlorohydrin.png", 72}}, {element_tint["carbon"], element_tint["chlorine"], element_tint["oxygen"]}, - {{"__angelspetrochem__/graphics/icons/molecules/glycerol.png", 72}} + {{"__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", 72}} ), enabled = false, category = "basic-chemistry", @@ -7346,7 +7379,7 @@ data:extend({ localised_name = {"recipe-name.nullius-limestone-recovery"}, icons = { { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32 }, { @@ -7381,7 +7414,7 @@ data:extend({ localised_name = {"recipe-name.nullius-iron-recovery"}, icons = { { - icon = "__angelsrefining__/graphics/icons/iron-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/iron-pebbles.png", icon_size = 32 }, { @@ -7415,7 +7448,7 @@ data:extend({ localised_name = {"recipe-name.nullius-bauxite-recovery"}, icons = { { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-6.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-6.png", icon_size = 64, tint = {0.867, 0.820, 0.609} }, @@ -7488,7 +7521,7 @@ data:extend({ { icon = "__base__/graphics/icons/stone.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = FLUIDPATH .. "sludge.png", @@ -7651,7 +7684,9 @@ data:extend({ {type="fluid", name="nullius-compressed-hydrogen", amount=50}, {type="item", name="nullius-boron", amount=5} }, - result = "nullius-aneutronic-cell" + results = { + {type = "item", name = "nullius-aneutronic-cell", amount = 1} + } }, { type = "recipe", @@ -7670,7 +7705,9 @@ data:extend({ {type="fluid", name="nullius-deuterium", amount=7}, {type="fluid", name="nullius-tritium", amount=4} }, - result = "nullius-fusion-cell" + results = { + {type = "item", name = "nullius-fusion-cell", amount = 1} + } }, { type = "recipe", @@ -7714,7 +7751,9 @@ data:extend({ {type="fluid", name="nullius-deuterium", amount=12}, {type="fluid", name="nullius-compressed-helium", amount=10} }, - result = "nullius-breeder-cell" + results = { + {type = "item", name = "nullius-breeder-cell", amount = 1} + } }, { type = "recipe", diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 116c68c..51f1ae9 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -7,7 +7,7 @@ data:extend({ type = "item", name = "nullius-bauxite", icons = {{ - icon = "__angelssmelting__/graphics/icons/ore-bauxite.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ore-bauxite.png", icon_size = 32 }}, subgroup = "aluminum-ingot", @@ -18,7 +18,7 @@ data:extend({ type = "item", name = "nullius-sandstone", icons = {{ - icon = "__angelsrefining__/graphics/icons/angels-ore6/angels-ore6-2.png", + icon = "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-2.png", icon_size = 64, tint = {184, 125, 73} }}, @@ -30,7 +30,7 @@ data:extend({ type = "item", name = "nullius-limestone", icons = {{ - icon = "__angelsrefining__/graphics/icons/angels-ore6/angels-ore6-3.png", + icon = "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-3.png", icon_size = 64, tint = {0.898, 0.773, 0.688} }}, @@ -43,7 +43,7 @@ data:extend({ name = "nullius-gypsum", icons = { { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8} } @@ -57,7 +57,7 @@ data:extend({ name = "nullius-graphite", icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "organic-material-1", order = "nullius-b", stack_size = 100 @@ -71,10 +71,10 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4 + } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", stack_size = 1, durability = 1, @@ -89,10 +89,10 @@ data:extend({ { icon = "__base__/graphics/icons/construction-robot.png", icon_size = 64, - icon_mipmaps = 4 + } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", stack_size = 1, durability = 1, @@ -109,7 +109,7 @@ data:extend({ icon_size = 64 } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", stack_size = 1, durability = 1, @@ -125,12 +125,12 @@ data:extend({ { icon = "__base__/graphics/icons/utility-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/stone.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {0, 7}, tint = {r=0.6, g=0.4, b=0.2, a=0.75} @@ -145,7 +145,7 @@ data:extend({ { type = "recipe", name = "nullius-geology-pack-1", - localised_name = {"", {"item-name.nullius-geology-pack"}, " ", 1}, + localised_name = {"", {"item-name.nullius-geology-pack"}, " ", tostring(1)}, show_amount_in_title = false, always_show_products = true, always_show_made_in = true, @@ -157,20 +157,22 @@ data:extend({ {"nullius-sandstone", 4}, {"iron-ore", 4} }, - result = "nullius-geology-pack" + results = { + {type = "item", name = "nullius-geology-pack", amount = 1} + } }, { type = "recipe", name = "nullius-geology-pack-2", - localised_name = {"", {"item-name.nullius-geology-pack"}, " ", 2}, + localised_name = {"", {"item-name.nullius-geology-pack"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/utility-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelsrefining__/graphics/icons/iron-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/iron-pebbles.png", icon_size = 32, scale = 0.55, shift = {0, 6}, @@ -191,7 +193,9 @@ data:extend({ {"nullius-sand", 1}, {"nullius-mineral-dust", 4} }, - result = "nullius-geology-pack" + results = { + {type = "item", name = "nullius-geology-pack", amount = 1} + } }, { type = "recipe", @@ -210,7 +214,9 @@ data:extend({ {"nullius-box-sand", 1}, {"nullius-box-mineral-dust", 4} }, - result = "nullius-box-geology-pack" + results = { + {type = "item", name = "nullius-box-geology-pack", amount = 1} + } }, { @@ -221,12 +227,12 @@ data:extend({ { icon = "__base__/graphics/icons/automation-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/iron-gear-wheel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.22, shift = {1, 6}, tint = {r=0.9, g=1, b=1, a=0.8} @@ -241,7 +247,7 @@ data:extend({ { type = "recipe", name = "nullius-mechanical-pack-1", - localised_name = {"", {"item-name.nullius-mechanical-pack"}, " ", 1}, + localised_name = {"", {"item-name.nullius-mechanical-pack"}, " ", tostring(1)}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -253,12 +259,14 @@ data:extend({ {"nullius-motor-1", 1}, {"nullius-iron-gear", 3} }, - result = "nullius-mechanical-pack" + results = { + {type = "item", name = "nullius-mechanical-pack", amount = 1} + } }, { type = "recipe", name = "nullius-boxed-mechanical-pack-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-mechanical-pack"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-mechanical-pack"}}, " ", tostring(1)}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -271,20 +279,22 @@ data:extend({ {"nullius-box-motor-1", 1}, {"nullius-box-iron-gear", 3} }, - result = "nullius-box-mechanical-pack" + results = { + {type = "item", name = "nullius-box-mechanical-pack", amount = 1} + } }, { type = "recipe", name = "nullius-mechanical-pack-2", - localised_name = {"", {"item-name.nullius-mechanical-pack"}, " ", 2}, + localised_name = {"", {"item-name.nullius-mechanical-pack"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/automation-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/wire-silver.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-silver.png", icon_size = 32, scale = 0.48, shift = {0, 6}, @@ -303,13 +313,14 @@ data:extend({ {"pump", 1}, {"nullius-steel-cable", 3} }, - result = "nullius-mechanical-pack", - result_count = 25 + results = { + {type = "item", name = "nullius-mechanical-pack", amount = 25} + } }, { type = "recipe", name = "nullius-boxed-mechanical-pack-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-mechanical-pack"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-mechanical-pack"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -318,11 +329,11 @@ data:extend({ { icon = "__base__/graphics/icons/automation-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/wire-silver.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-silver.png", icon_size = 32, scale = 0.44, shift = {0, 5.4}, @@ -341,8 +352,9 @@ data:extend({ {"nullius-box-pump-3", 1}, {"nullius-box-steel-cable", 3} }, - result = "nullius-box-mechanical-pack", - result_count = 25 + results = { + {type = "item", name = "nullius-box-mechanical-pack", amount = 25} + } }, { @@ -353,12 +365,12 @@ data:extend({ { icon = "__base__/graphics/icons/production-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/processing-unit.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.18, shift = {0, 6}, tint = {r=1, g=1, b=1, a=0.5} @@ -373,7 +385,7 @@ data:extend({ { type = "recipe", name = "nullius-electrical-pack", - localised_name = {"", {"item-name.nullius-electrical-pack"}, " ", 1}, + localised_name = {"", {"item-name.nullius-electrical-pack"}, " ", tostring(1)}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -386,12 +398,14 @@ data:extend({ {"copper-cable", 2}, {"nullius-capacitor", 1} }, - result = "nullius-electrical-pack" + results = { + {type = "item", name = "nullius-electrical-pack", amount = 1} + } }, { type = "recipe", name = "nullius-boxed-electrical-pack", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-electrical-pack"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-electrical-pack"}}, " ", tostring(1)}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -405,22 +419,24 @@ data:extend({ {"nullius-box-insulated-wire", 2}, {"nullius-box-capacitor", 1} }, - result = "nullius-box-electrical-pack" + results = { + {type = "item", name = "nullius-box-electrical-pack", amount = 1} + } }, { type = "recipe", name = "nullius-electrical-pack-2", - localised_name = {"", {"item-name.nullius-electrical-pack"}, " ", 2}, + localised_name = {"", {"item-name.nullius-electrical-pack"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/production-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/advanced-circuit.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.18, shift = {0, 6}, tint = {r=1, g=1, b=1, a=0.8} @@ -439,13 +455,14 @@ data:extend({ {"nullius-sensor-2", 1}, {"nullius-battery-2", 1} }, - result = "nullius-electrical-pack", - result_count = 50 + results = { + {type = "item", name = "nullius-electrical-pack", amount = 50} + } }, { type = "recipe", name = "nullius-boxed-electrical-pack-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-electrical-pack"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-electrical-pack"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -454,13 +471,13 @@ data:extend({ { icon = "__base__/graphics/icons/production-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { icon = "__base__/graphics/icons/advanced-circuit.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.162, shift = {0, 5.4}, tint = {r=1, g=1, b=1, a=0.8} @@ -479,8 +496,9 @@ data:extend({ {"nullius-box-sensor-2", 1}, {"nullius-box-battery-2", 1} }, - result = "nullius-box-electrical-pack", - result_count = 50 + results = { + {type = "item", name = "nullius-box-electrical-pack", amount = 50} + } }, { @@ -490,7 +508,7 @@ data:extend({ { icon = "__base__/graphics/icons/space-science-pack.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/tooltips/tooltip-category-nuclear.png", @@ -510,6 +528,7 @@ data:extend({ { type = "recipe", name = "nullius-physics-pack", + localised_name = {"item-name.nullius-physics-pack"}, enabled = false, category = "huge-assembly", subgroup = "research-pack", @@ -528,8 +547,9 @@ data:extend({ {"nullius-drone-launcher-1", 1}, {"nullius-box-missile-1", 3} }, - result = "nullius-box-physics-pack", - result_count = 25 + results = { + {type = "item", name = "nullius-box-physics-pack", amount = 25} + } }, { @@ -539,7 +559,7 @@ data:extend({ { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.72, 0.78} } }, @@ -554,7 +574,7 @@ data:extend({ { type = "item", name = "nullius-crushed-copper-ore", - icon = "__angelsrefining__/graphics/icons/copper-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/copper-pebbles.png", icon_size = 32, subgroup = "copper", order = "nullius-c", @@ -680,8 +700,9 @@ data:extend({ {type="item", name="nullius-copper-ingot", amount=1}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-copper-wire", - result_count = 2 + results = { + {type = "item", name = "nullius-copper-wire", amount = 2} + } }, { type = "recipe", @@ -696,8 +717,9 @@ data:extend({ {type="item", name="nullius-box-copper-ingot", amount=1}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-copper-wire", - result_count = 2 + results = { + {type = "item", name = "nullius-box-copper-wire", amount = 2} + } }, { type = "recipe", @@ -711,7 +733,9 @@ data:extend({ {type="item", name="nullius-copper-ingot", amount=1}, {type="fluid", name="nullius-acid-sulfuric", amount=1} }, - result = "nullius-copper-sheet" + results = { + {type = "item", name = "nullius-copper-sheet", amount = 1} + } }, { type = "recipe", @@ -726,13 +750,15 @@ data:extend({ {type="item", name="nullius-box-copper-ingot", amount=1}, {type="fluid", name="nullius-acid-sulfuric", amount=5} }, - result = "nullius-box-copper-sheet" + results = { + {type = "item", name = "nullius-box-copper-sheet", amount = 1} + } }, { type = "item", name = "nullius-crushed-iron-ore", - icon = "__angelsrefining__/graphics/icons/iron-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/iron-pebbles.png", icon_size = 32, subgroup = "iron-ingot", order = "nullius-c", @@ -769,7 +795,7 @@ data:extend({ type = "item", name = "nullius-iron-oxide", icons = {{ - icon = "__angelssmelting__/graphics/icons/solid-iron-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", icon_size = 32, tint = {0.77, 0.54, 0.48} }}, @@ -816,14 +842,14 @@ data:extend({ localised_name = {"recipe-name.nullius-oxidation", {"item-name.nullius-iron"}}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-iron-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", icon_size = 32, tint = {0.77, 0.54, 0.48} }, { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-7, -7} } @@ -840,8 +866,9 @@ data:extend({ {type="fluid", name="nullius-water", amount=20}, {type="fluid", name="nullius-oxygen", amount=40} }, - result = "nullius-iron-oxide", - result_count = 2 + results = { + {type = "item", name = "nullius-iron-oxide", amount = 2} + } }, { type = "recipe", @@ -854,15 +881,15 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/solid-iron-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", icon_size = 32, tint = {0.77, 0.54, 0.48}, scale = 0.9 }, { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-6, -6} } @@ -880,14 +907,15 @@ data:extend({ {type="fluid", name="nullius-water", amount=100}, {type="fluid", name="nullius-oxygen", amount=200} }, - result = "nullius-box-iron-oxide", - result_count = 2 + results = { + {type = "item", name = "nullius-box-iron-oxide", amount = 2} + } }, { type = "item", name = "nullius-crushed-limestone", - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, subgroup = "calcium-product", order = "nullius-d", @@ -896,7 +924,7 @@ data:extend({ { type = "recipe", name = "nullius-crushed-limestone-1", - localised_name = {"", {"item-name.nullius-crushed-limestone"}, " ", 1}, + localised_name = {"", {"item-name.nullius-crushed-limestone"}, " ", tostring(1)}, enabled = false, icon_size = 32, category = "ore-crushing", @@ -912,7 +940,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-crushed-limestone-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-crushed-limestone"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-crushed-limestone"}}, " ", tostring(1)}, enabled = false, icon_size = 32, category = "ore-crushing", @@ -929,14 +957,14 @@ data:extend({ { type = "recipe", name = "nullius-crushed-limestone-2", - localised_name = {"", {"item-name.nullius-crushed-limestone"}, " ", 2}, + localised_name = {"", {"item-name.nullius-crushed-limestone"}, " ", tostring(2)}, icons = { { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32 }, { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8}, scale = 0.2, @@ -959,19 +987,19 @@ data:extend({ { type = "recipe", name = "nullius-boxed-crushed-limestone-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-crushed-limestone"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-crushed-limestone"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, scale = 0.9 }, { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8}, scale = 0.18, @@ -999,7 +1027,7 @@ data:extend({ icons = { { icon_size = 64, - icon = "__angelsrefining__/graphics/icons/crushed/crushed-6.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-6.png", tint = {0.867, 0.820, 0.609} } }, @@ -1051,6 +1079,7 @@ data:extend({ { type = "recipe", name = "nullius-crushed-sandstone", + localised_name = {"item-name.nullius-sand"}, enabled = false, category = "hand-crushing", always_show_made_in = true, @@ -1083,6 +1112,7 @@ data:extend({ { type = "recipe", name = "nullius-crushed-stone", + localised_name = {"item-name.nullius-gravel"}, enabled = false, icon_size = 32, category = "hand-crushing", @@ -1092,7 +1122,9 @@ data:extend({ allow_decomposition = false, energy_required = 0.5, ingredients = {{"stone", 1}}, - result = "nullius-gravel" + results = { + {type = "item", name = "nullius-gravel", amount = 1} + } }, { type = "recipe", @@ -1107,15 +1139,17 @@ data:extend({ allow_decomposition = false, energy_required = 2.5, ingredients = {{"nullius-box-stone", 1}}, - result = "nullius-box-gravel" + results = { + {type = "item", name = "nullius-box-gravel", amount = 1} + } }, { type = "item", name = "nullius-mineral-dust", - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "masonry-material", order = "nullius-m", stack_size = 100 @@ -1132,8 +1166,9 @@ data:extend({ order = "nullius-nb", energy_required = 3, ingredients = {{"nullius-gravel", 6}}, - result = "nullius-mineral-dust", - result_count = 5 + results = { + {type = "item", name = "nullius-mineral-dust", amount = 5} + } }, { type = "recipe", @@ -1147,8 +1182,9 @@ data:extend({ order = "nullius-nb", energy_required = 15, ingredients = {{"nullius-box-gravel", 6}}, - result = "nullius-box-mineral-dust", - result_count = 5 + results = { + {type = "item", name = "nullius-box-mineral-dust", amount = 5} + } }, { type = "recipe", @@ -1156,9 +1192,9 @@ data:extend({ localised_name = {"recipe-name.nullius-slag-reprocessing"}, icons = { { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "sand.png", @@ -1192,9 +1228,9 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -1226,12 +1262,12 @@ data:extend({ localised_name = {"recipe-name.nullius-iron-disposal"}, icons = { { - icon = "__angelsrefining__/graphics/icons/stone-crushed.png", + icon = "__angelsrefininggraphics__/graphics/icons/stone-crushed.png", icon_size = 32, tint = {r=0.95, g=0.85, b=0.75} }, { - icon = "__angelsrefining__/graphics/icons/iron-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/iron-pebbles.png", icon_size = 32, scale = 0.5, shift = {10, -9} @@ -1246,8 +1282,9 @@ data:extend({ no_productivity = true, energy_required = 2, ingredients = {{"nullius-crushed-iron-ore", 4}}, - result = "nullius-gravel", - result_count = 3 + results = { + {type = "item", name = "nullius-gravel", amount = 3} + } }, { type = "recipe", @@ -1259,13 +1296,13 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/stone-crushed.png", + icon = "__angelsrefininggraphics__/graphics/icons/stone-crushed.png", icon_size = 32, scale = 0.9, tint = {r=0.95, g=0.85, b=0.75} }, { - icon = "__angelsrefining__/graphics/icons/iron-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/iron-pebbles.png", icon_size = 32, scale = 0.45, shift = {9, -8} @@ -1280,8 +1317,9 @@ data:extend({ order = "nullius-n", energy_required = 10, ingredients = {{"nullius-box-crushed-iron-ore", 4}}, - result = "nullius-box-gravel", - result_count = 3 + results = { + {type = "item", name = "nullius-box-gravel", amount = 3} + } }, { type = "recipe", @@ -1289,12 +1327,12 @@ data:extend({ localised_name = {"recipe-name.nullius-bauxite-disposal"}, icons = { { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-6.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-6.png", icon_size = 64, tint = {0.867, 0.820, 0.609}, scale = 0.25, @@ -1309,8 +1347,9 @@ data:extend({ order = "nullius-n", energy_required = 2, ingredients = {{"nullius-crushed-bauxite", 5}}, - result = "nullius-mineral-dust", - result_count = 4 + results = { + {type = "item", name = "nullius-mineral-dust", amount = 4} + } }, { type = "recipe", @@ -1323,13 +1362,13 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-6.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-6.png", icon_size = 64, tint = {0.867, 0.820, 0.609}, scale = 0.22, @@ -1344,8 +1383,9 @@ data:extend({ order = "nullius-l", energy_required = 10, ingredients = {{"nullius-box-crushed-bauxite", 5}}, - result = "nullius-box-mineral-dust", - result_count = 4 + results = { + {type = "item", name = "nullius-box-mineral-dust", amount = 4} + } }, { type = "recipe", @@ -1353,14 +1393,14 @@ data:extend({ localised_name = {"recipe-name.nullius-disposal", {"item-name.nullius-rutile"}}, icons = { { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/powder-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-titanium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {10, -9} } @@ -1374,8 +1414,9 @@ data:extend({ order = "nullius-xr", energy_required = 5, ingredients = {{"nullius-rutile", 8}}, - result = "nullius-mineral-dust", - result_count = 7 + results = { + {type = "item", name = "nullius-mineral-dust", amount = 7} + } }, { type = "recipe", @@ -1388,15 +1429,15 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/powder-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-titanium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.22, shift = {9, -8} } @@ -1410,8 +1451,9 @@ data:extend({ order = "nullius-xr", energy_required = 25, ingredients = {{"nullius-box-rutile", 8}}, - result = "nullius-box-mineral-dust", - result_count = 7 + results = { + {type = "item", name = "nullius-box-mineral-dust", amount = 7} + } }, { type = "recipe", @@ -1419,12 +1461,12 @@ data:extend({ localised_name = {"recipe-name.nullius-limestone-disposal"}, icons = { { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, scale = 0.5, shift = {10, -9} @@ -1438,8 +1480,9 @@ data:extend({ order = "nullius-m", energy_required = 2, ingredients = {{"nullius-crushed-limestone", 3}}, - result = "nullius-mineral-dust", - result_count = 3 + results = { + {type = "item", name = "nullius-mineral-dust", amount = 3} + } }, { type = "recipe", @@ -1451,13 +1494,13 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, scale = 0.45, shift = {9, -8} @@ -1471,16 +1514,17 @@ data:extend({ order = "nullius-y", energy_required = 10, ingredients = {{"nullius-box-crushed-limestone", 3}}, - result = "nullius-box-mineral-dust", - result_count = 3 + results = { + {type = "item", name = "nullius-box-mineral-dust", amount = 3} + } }, { type = "item", name = "nullius-iron-ingot", - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "iron-ingot", order = "nullius-e", stack_size = 100 @@ -1508,14 +1552,14 @@ data:extend({ localised_name = {"recipe-name.nullius-iron-ingot-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/coal.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {10, -10} } @@ -1540,12 +1584,12 @@ data:extend({ localised_name = {"recipe-name.nullius-iron-ingot-3"}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/solid-iron-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", icon_size = 32, tint = {0.77, 0.54, 0.48}, scale = 0.5, @@ -1597,14 +1641,14 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminothermic", {"item-name.nullius-iron-ingot"}}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {10, -10} } @@ -1636,15 +1680,15 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.22, shift = {9, -9} } @@ -1670,9 +1714,9 @@ data:extend({ { type = "item", name = "nullius-steel-ingot", - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "iron-ingot", order = "nullius-f", stack_size = 100 @@ -1701,12 +1745,12 @@ data:extend({ localised_name = {"recipe-name.nullius-steel-ingot-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.5, shift = {10, -10} @@ -1730,7 +1774,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-steel-ingot-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-steel-ingot"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-steel-ingot"}}, " ", tostring(1)}, enabled = false, category = "bulk-smelting", subgroup = "boxed-steel", @@ -1751,12 +1795,12 @@ data:extend({ { type = "recipe", name = "nullius-steel-ingot-3", - localised_name = {"", {"item-name.nullius-steel-ingot"}, " ", 3}, + localised_name = {"", {"item-name.nullius-steel-ingot"}, " ", tostring(3)}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "calcium.png", @@ -1784,16 +1828,16 @@ data:extend({ { type = "recipe", name = "nullius-boxed-steel-ingot-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-steel-ingot"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-steel-ingot"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -1831,13 +1875,13 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72, scale = 0.18, shift = {8, -10} @@ -1864,9 +1908,9 @@ data:extend({ type = "item", name = "nullius-silicon-ingot", icons = {{ - icon = "__angelssmelting__/graphics/icons/ingot-silicon.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-silicon.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.925, 0.85} }}, subgroup = "silicon-product", @@ -1876,9 +1920,9 @@ data:extend({ { type = "item", name = "nullius-copper-ingot", - icon = "__angelssmelting__/graphics/icons/ingot-copper.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-copper.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "copper", order = "nullius-e", stack_size = 100 @@ -1886,9 +1930,9 @@ data:extend({ { type = "item", name = "nullius-aluminum-ingot", - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "aluminum-ingot", order = "nullius-g", stack_size = 100 @@ -1896,7 +1940,7 @@ data:extend({ { type = "item", name = "nullius-aluminum-hydroxide", - icon = "__angelssmelting__/graphics/icons/solid-aluminium-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32, subgroup = "aluminum-ingot", order = "nullius-d", @@ -1915,7 +1959,7 @@ data:extend({ type = "item", name = "nullius-calcium-chloride", icons = {{ - icon = "__angelspetrochem__/graphics/icons/solid-calcium-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-calcium-chloride.png", icon_size = 32 }}, subgroup = "calcium-product", @@ -1935,7 +1979,7 @@ data:extend({ { type = "item", name = "nullius-lime", - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, subgroup = "masonry-material", order = "nullius-b", @@ -1974,11 +2018,11 @@ data:extend({ localised_name = {"recipe-name.nullius-limestone-precipitation"}, icons = { { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32 }, { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.4, shift = {-11, -11} @@ -2010,12 +2054,12 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, scale = 0.9 }, { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.36, shift = {-10, -10} @@ -2045,11 +2089,11 @@ data:extend({ localised_name = {"recipe-name.nullius-gypsum-decomposition"}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", icon_size = 72, scale = 0.16, shift = {12, 13} @@ -2078,12 +2122,12 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.9 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfur-dioxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", icon_size = 72, scale = 0.14, shift = {11, 12} @@ -2108,12 +2152,12 @@ data:extend({ localised_name = {"recipe-name.nullius-gypsum-1"}, icons = { { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.22, shift = {-9, -11} @@ -2140,20 +2184,20 @@ data:extend({ { type = "recipe", name = "nullius-boxed-gypsum-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-gypsum"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-gypsum"}}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8}, scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.2, shift = {-8, -10} @@ -2185,12 +2229,12 @@ data:extend({ localised_name = {"recipe-name.nullius-gypsum-2"}, icons = { { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8} }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32, scale = 0.55, shift = {-9, -9} @@ -2217,20 +2261,20 @@ data:extend({ { type = "recipe", name = "nullius-boxed-gypsum-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-gypsum"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-gypsum"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/crushed/crushed-4.png", + icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", icon_size = 64, tint = {1, 1, 0.8}, scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-sulfate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-sulfate.png", icon_size = 32, scale = 0.5, shift = {-8, -8} @@ -2260,7 +2304,7 @@ data:extend({ { type = "recipe", name = "nullius-calcium-chloride-1", - localised_name = {"", {"item-name.nullius-calcium-chloride"}, " ", 1}, + localised_name = {"", {"item-name.nullius-calcium-chloride"}, " ", tostring(1)}, category = "basic-chemistry", subgroup = "chlorine-chemistry", order = "nullius-fb", @@ -2284,7 +2328,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-calcium-chloride-1", - localised_name = {"recipe-name.nullius-boxed", {"", {"item-name.nullius-calcium-chloride"}, " ", 1}}, + localised_name = {"recipe-name.nullius-boxed", {"", {"item-name.nullius-calcium-chloride"}, " ", tostring(1)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -2317,13 +2361,13 @@ data:extend({ { type = "recipe", name = "nullius-calcium-chloride-2", - localised_name = {"", {"item-name.nullius-calcium-chloride"}, " ", 2}, + localised_name = {"", {"item-name.nullius-calcium-chloride"}, " ", tostring(2)}, icons = { data.raw.fluid["nullius-calcium-chloride-solution"].icons[2], data.raw.fluid["nullius-calcium-chloride-solution"].icons[3], data.raw.fluid["nullius-calcium-chloride-solution"].icons[4], { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.4, shift = {-11, -12} @@ -2352,7 +2396,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-calcium-chloride-2", - localised_name = {"recipe-name.nullius-boxed", {"", {"item-name.nullius-calcium-chloride"}, " ", 2}}, + localised_name = {"recipe-name.nullius-boxed", {"", {"item-name.nullius-calcium-chloride"}, " ", tostring(2)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -2362,7 +2406,7 @@ data:extend({ data.raw.fluid["nullius-calcium-chloride-solution"].icons[3], data.raw.fluid["nullius-calcium-chloride-solution"].icons[4], { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.36, shift = {-10, -11} @@ -2439,7 +2483,7 @@ data:extend({ name = "nullius-legacy-calcium-chloride-dehydration", localised_name = {"recipe-name.nullius-dehydration", {"item-name.nullius-calcium-chloride"}}, enabled = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "distillation", @@ -2464,7 +2508,7 @@ data:extend({ localised_name = {"recipe-name.nullius-dehydration", {"item-name.nullius-box", {"item-name.nullius-calcium-chloride"}}}, enabled = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "distillation", @@ -2493,7 +2537,7 @@ data:extend({ data.raw.fluid["nullius-calcium-chloride-solution"].icons[3], data.raw.fluid["nullius-calcium-chloride-solution"].icons[4], { - icon = "__angelspetrochem__/graphics/icons/solid-calcium-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-calcium-chloride.png", icon_size = 32, scale = 0.4, shift = {-11, -12} @@ -2529,7 +2573,7 @@ data:extend({ data.raw.fluid["nullius-calcium-chloride-solution"].icons[3], data.raw.fluid["nullius-calcium-chloride-solution"].icons[4], { - icon = "__angelspetrochem__/graphics/icons/solid-calcium-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-calcium-chloride.png", icon_size = 32, scale = 0.36, shift = {-10, -11} @@ -2557,11 +2601,11 @@ data:extend({ localised_name = {"recipe-name.nullius-calcium-chloride-decomposition"}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.15, shift = {12, 12} @@ -2593,12 +2637,12 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", icon_size = 32, scale = 0.9 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.13, shift = {11, 11} @@ -2658,9 +2702,9 @@ data:extend({ subgroup = "silicon-product", order = "nullius-d", icons = {{ - icon = "__angelssmelting__/graphics/icons/powder-silica.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-silica.png", icon_size = 64, - icon_mipmaps = 4 + }}, stack_size = 100 }, @@ -2669,9 +2713,9 @@ data:extend({ name = "nullius-rutile", subgroup = "titanium-product", order = "nullius-b", - icon = "__angelssmelting__/graphics/icons/powder-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-titanium.png", icon_size = 64, - icon_mipmaps = 4, + stack_size = 100 }, { @@ -2697,14 +2741,14 @@ data:extend({ localised_name = {"recipe-name.nullius-silica-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/powder-silica.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-silica.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/powder-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-titanium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {9, 9} } @@ -2727,7 +2771,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-silica-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-silica"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-silica"}}, " ", tostring(1)}, enabled = false, category = "ore-flotation", subgroup = "boxed-silicon", @@ -2745,22 +2789,22 @@ data:extend({ { type = "recipe", name = "nullius-boxed-silica-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-silica"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-silica"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-silica.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-silica.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/powder-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-titanium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.23, shift = {8, 8} } @@ -2822,7 +2866,7 @@ data:extend({ type = "item", name = "nullius-glass", icons = {{ - icon = "__angelssmelting__/graphics/icons/plate-glass.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-glass.png", icon_size = 32, tint = {0.8, 0.8, 0.9} }}, @@ -2841,7 +2885,9 @@ data:extend({ order = "nullius-bb", energy_required = 30, ingredients = {{"nullius-silica", 3}}, - result = "nullius-glass" + results = { + {type = "item", name = "nullius-glass", amount = 1} + } }, { type = "recipe", @@ -2849,12 +2895,12 @@ data:extend({ localised_name = {"recipe-name.nullius-soda-lime-glass-1"}, icons = { { - icon = "__angelssmelting__/graphics/icons/plate-glass.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-glass.png", icon_size = 32, tint = {0.8, 0.8, 0.9} }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32, scale = 0.4, shift = {10, -11} @@ -2883,12 +2929,12 @@ data:extend({ localised_name = {"recipe-name.nullius-soda-lime-glass-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/plate-glass.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-glass.png", icon_size = 32, tint = {0.8, 0.8, 0.9} }, { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-oxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-oxide.png", icon_size = 32, scale = 0.4, shift = {10, -11} @@ -2940,7 +2986,7 @@ data:extend({ type = "item", name = "nullius-hard-glass", icons = {{ - icon = "__angelssmelting__/graphics/icons/plate-glass.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-glass.png", icon_size = 32, tint = {1, 1, 1, 0.5} }}, @@ -2962,8 +3008,9 @@ data:extend({ {"nullius-lime", 2}, {"nullius-acid-boric", 1} }, - result = "nullius-hard-glass", - result_count = 4 + results = { + {type = "item", name = "nullius-hard-glass", amount = 4} + } }, { type = "recipe", @@ -2980,16 +3027,17 @@ data:extend({ {"nullius-box-lime", 2}, {"nullius-box-acid-boric", 1} }, - result = "nullius-box-hard-glass", - result_count = 4 + results = { + {type = "item", name = "nullius-box-hard-glass", amount = 4} + } }, { type = "item", name = "nullius-glass-fiber", - icon = "__angelssmelting__/graphics/icons/wire-coil-glass.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-glass.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "glass-product", order = "nullius-d", stack_size = 100 @@ -3098,7 +3146,7 @@ data:extend({ subgroup = "masonry-material", order = "nullius-l", icons = {{ - icon = "__angelsrefining__/graphics/icons/stone-crushed.png", + icon = "__angelsrefininggraphics__/graphics/icons/stone-crushed.png", icon_size = 32, tint = {r=0.95, g=0.85, b=0.75} }}, @@ -3111,7 +3159,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/iron-plate.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.75, g=0.85, b=0.95} }}, subgroup = "iron-product", @@ -3124,7 +3172,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/iron-stick.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.65, g=0.75, b=0.8} }}, subgroup = "iron-product", @@ -3134,7 +3182,7 @@ data:extend({ { type = "item", name = "nullius-steel-rod", - icon = "__angelssmelting__/graphics/icons/rod-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/rod-steel.png", icon_size = 32, subgroup = "steel-product", order = "nullius-e", @@ -3143,7 +3191,7 @@ data:extend({ { type = "item", name = "nullius-aluminum-rod", - icon = "__angelssmelting__/graphics/icons/rod-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/rod-aluminium.png", icon_size = 32, subgroup = "aluminum-product", order = "nullius-g", @@ -3152,6 +3200,7 @@ data:extend({ { type = "recipe", name = "nullius-iron-rod-1", + localised_name = {"item-name.nullius-iron-rod"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -3160,8 +3209,9 @@ data:extend({ ingredients = { {"nullius-iron-ingot", 4} }, - result = "nullius-iron-rod", - result_count = 5 + results = { + {type = "item", name = "nullius-iron-rod", amount = 5} + } }, { type = "recipe", @@ -3171,11 +3221,11 @@ data:extend({ { icon = "__base__/graphics/icons/iron-stick.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.65, g=0.75, b=0.8} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.16, shift = {11, -12} @@ -3215,6 +3265,7 @@ data:extend({ { type = "recipe", name = "nullius-steel-rod-1", + localised_name = {"item-name.nullius-steel-rod"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -3223,8 +3274,9 @@ data:extend({ ingredients = { {"nullius-steel-ingot", 4} }, - result = "nullius-steel-rod", - result_count = 5 + results = { + {type = "item", name = "nullius-steel-rod", amount = 5} + } }, { type = "recipe", @@ -3232,11 +3284,11 @@ data:extend({ localised_name = {"recipe-name.nullius-steel-rod-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/rod-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/rod-steel.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.18, shift = {-10, -11} @@ -3276,6 +3328,7 @@ data:extend({ { type = "recipe", name = "nullius-aluminum-rod-1", + localised_name = {"item-name.nullius-aluminum-rod"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -3284,8 +3337,9 @@ data:extend({ ingredients = { {"nullius-aluminum-ingot", 4} }, - result = "nullius-aluminum-rod", - result_count = 5 + results = { + {type = "item", name = "nullius-aluminum-rod", amount = 5} + } }, { type = "recipe", @@ -3293,7 +3347,7 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminum-rod-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/rod-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/rod-aluminium.png", icon_size = 32 }, { @@ -3339,7 +3393,7 @@ data:extend({ name = "nullius-steel-beam", icon = "__base__/graphics/icons/steel-plate.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "steel-product", order = "nullius-l", stack_size = 100 @@ -3355,8 +3409,9 @@ data:extend({ ingredients = { {"nullius-steel-ingot", 3} }, - result = "nullius-steel-beam", - result_count = 2 + results = { + {type = "item", name = "nullius-steel-beam", amount = 2} + } }, { type = "recipe", @@ -3370,14 +3425,15 @@ data:extend({ ingredients = { {"nullius-box-steel-ingot", 3} }, - result = "nullius-box-steel-beam", - result_count = 2 + results = { + {type = "item", name = "nullius-box-steel-beam", amount = 2} + } }, { type = "item", name = "nullius-aluminum-plate", - icon = "__angelssmelting__/graphics/icons/plate-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-aluminium.png", icon_size = 32, subgroup = "aluminum-product", order = "nullius-f", @@ -3386,7 +3442,7 @@ data:extend({ { type = "item", name = "nullius-steel-plate", - icon = "__angelssmelting__/graphics/icons/plate-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-steel.png", icon_size = 32, subgroup = "steel-product", order = "nullius-c", @@ -3395,6 +3451,7 @@ data:extend({ { type = "recipe", name = "nullius-aluminum-plate-1", + localised_name = {"item-name.nullius-aluminum-plate"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -3403,8 +3460,9 @@ data:extend({ ingredients = { {"nullius-aluminum-ingot", 4} }, - result = "nullius-aluminum-plate", - result_count = 3 + results = { + {type = "item", name = "nullius-aluminum-plate", amount = 3} + } }, { type = "recipe", @@ -3412,7 +3470,7 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminum-plate-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/plate-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-aluminium.png", icon_size = 32 }, { @@ -3456,6 +3514,7 @@ data:extend({ { type = "recipe", name = "nullius-iron-plate-1", + localised_name = {"item-name.nullius-iron-plate"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -3464,8 +3523,9 @@ data:extend({ ingredients = { {"nullius-iron-ingot", 4} }, - result = "nullius-iron-plate", - result_count = 3 + results = { + {type = "item", name = "nullius-iron-plate", amount = 3} + }, }, { type = "recipe", @@ -3475,11 +3535,11 @@ data:extend({ { icon = "__base__/graphics/icons/iron-plate.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.75, g=0.85, b=0.95} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen-chloride.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", icon_size = 72, scale = 0.16, shift = {11, -12} @@ -3519,6 +3579,7 @@ data:extend({ { type = "recipe", name = "nullius-steel-plate-1", + localised_name = {"item-name.nullius-steel-plate"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -3527,8 +3588,9 @@ data:extend({ ingredients = { {"nullius-steel-ingot", 4} }, - result = "nullius-steel-plate", - result_count = 3 + results = { + {type = "item", name = "nullius-steel-plate", amount = 3} + } }, { type = "recipe", @@ -3536,11 +3598,11 @@ data:extend({ localised_name = {"recipe-name.nullius-steel-plate-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/plate-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-steel.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.18, shift = {10, -11} @@ -3580,9 +3642,9 @@ data:extend({ { type = "item", name = "nullius-iron-sheet", - icon = "__angelssmelting__/graphics/icons/roll-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-iron.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "iron-product", order = "nullius-d", stack_size = 100 @@ -3591,9 +3653,9 @@ data:extend({ type = "item", name = "nullius-steel-sheet", order = "nullius-f", - icon = "__angelssmelting__/graphics/icons/roll-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-steel.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "steel-product", stack_size = 100 }, @@ -3601,9 +3663,9 @@ data:extend({ type = "item", name = "nullius-aluminum-sheet", order = "nullius-e", - icon = "__angelssmelting__/graphics/icons/roll-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "aluminum-product", order = "nullius-h", stack_size = 100 @@ -3611,9 +3673,9 @@ data:extend({ { type = "item", name = "nullius-copper-sheet", - icon = "__angelssmelting__/graphics/icons/roll-copper.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-copper.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "copper", order = "nullius-f", stack_size = 100 @@ -3621,6 +3683,7 @@ data:extend({ { type = "recipe", name = "nullius-iron-sheet-1", + localised_name = {"item-name.nullius-iron-sheet"}, enabled = false, category = "hand-casting", always_show_made_in = true, @@ -3630,8 +3693,9 @@ data:extend({ ingredients = { {"nullius-iron-plate", 5} }, - result = "nullius-iron-sheet", - result_count = 6 + results = { + {type = "item", name = "nullius-iron-sheet", amount = 6} + } }, { type = "recipe", @@ -3639,14 +3703,14 @@ data:extend({ localised_name = {"recipe-name.nullius-iron-sheet-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/roll-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-iron.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {12, -10} } @@ -3662,8 +3726,9 @@ data:extend({ {type="item", name="nullius-iron-plate", amount=6}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-iron-sheet", - result_count = 8 + results = { + {type = "item", name = "nullius-iron-sheet", amount = 8} + } }, { type = "recipe", @@ -3680,13 +3745,15 @@ data:extend({ {type="item", name="nullius-box-iron-plate", amount=6}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-iron-sheet", - result_count = 8 + results = { + {type = "item", name = "nullius-box-iron-sheet", amount = 8} + } }, { type = "recipe", name = "nullius-steel-sheet-1", + localised_name = {"item-name.nullius-steel-sheet"}, enabled = false, category = "hand-casting", always_show_made_in = true, @@ -3696,8 +3763,9 @@ data:extend({ ingredients = { {"nullius-steel-plate", 5} }, - result = "nullius-steel-sheet", - result_count = 6 + results = { + {type = "item", name = "nullius-steel-sheet", amount = 6} + } }, { type = "recipe", @@ -3705,14 +3773,14 @@ data:extend({ localised_name = {"recipe-name.nullius-steel-sheet-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/roll-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-steel.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {12, -10} } @@ -3728,8 +3796,9 @@ data:extend({ {type="item", name="nullius-steel-plate", amount=5}, {type="fluid", name="nullius-lubricant", amount=2} }, - result = "nullius-steel-sheet", - result_count = 7 + results = { + {type = "item", name = "nullius-steel-sheet", amount = 7} + } }, { type = "recipe", @@ -3746,13 +3815,15 @@ data:extend({ {type="item", name="nullius-box-steel-plate", amount=5}, {type="fluid", name="nullius-lubricant", amount=10} }, - result = "nullius-box-steel-sheet", - result_count = 7 + results = { + {type = "item", name = "nullius-box-steel-sheet", amount = 7} + } }, { type = "recipe", name = "nullius-aluminum-sheet-1", + localised_name = {"item-name.nullius-aluminum-sheet"}, enabled = false, category = "hand-casting", always_show_made_in = true, @@ -3762,8 +3833,9 @@ data:extend({ ingredients = { {"nullius-aluminum-plate", 4} }, - result = "nullius-aluminum-sheet", - result_count = 5 + results = { + {type = "item", name = "nullius-aluminum-sheet", amount = 5} + } }, { type = "recipe", @@ -3771,14 +3843,14 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminum-sheet-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/roll-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-aluminium.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {12, -10} } @@ -3794,8 +3866,9 @@ data:extend({ {type="item", name="nullius-aluminum-plate", amount=5}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-aluminum-sheet", - result_count = 7 + results = { + {type = "item", name = "nullius-aluminum-sheet", amount = 7} + } }, { type = "recipe", @@ -3812,8 +3885,9 @@ data:extend({ {type="item", name="nullius-box-aluminum-plate", amount=5}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-aluminum-sheet", - result_count = 7 + results = { + {type = "item", name = "nullius-box-aluminum-sheet", amount = 7} + } }, { @@ -3822,7 +3896,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/iron-gear-wheel.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.8, g=0.9, b=1} }}, subgroup = "iron-product", @@ -3842,8 +3916,9 @@ data:extend({ {"nullius-iron-plate", 2}, {"nullius-iron-rod", 1} }, - result = "nullius-iron-gear", - result_count = 2 + results = { + {type = "item", name = "nullius-iron-gear", amount = 2} + } }, { type = "recipe", @@ -3859,8 +3934,9 @@ data:extend({ {"nullius-box-iron-plate", 2}, {"nullius-box-iron-rod", 1} }, - result = "nullius-box-iron-gear", - result_count = 2 + results = { + {type = "item", name = "nullius-box-iron-gear", amount = 2} + } }, { @@ -3885,8 +3961,9 @@ data:extend({ {"nullius-steel-plate", 2}, {"nullius-steel-rod", 1} }, - result = "nullius-steel-gear", - result_count = 2 + results = { + {type = "item", name = "nullius-steel-gear", amount = 2} + } }, { type = "recipe", @@ -3902,8 +3979,9 @@ data:extend({ {"nullius-box-steel-plate", 2}, {"nullius-box-steel-rod", 1} }, - result = "nullius-box-steel-gear", - result_count = 2 + results = { + {type = "item", name = "nullius-box-steel-gear", amount = 2} + } }, { @@ -3911,9 +3989,9 @@ data:extend({ name = "nullius-iron-wire", icons = { { - icon = "__angelssmelting__/graphics/icons/wire-coil-silver.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-silver.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.825, 0.85} } }, @@ -3925,9 +4003,9 @@ data:extend({ type = "item", name = "nullius-copper-wire", icons = {{ - icon = "__angelssmelting__/graphics/icons/wire-coil-copper.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-copper.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "copper", order = "nullius-g", @@ -3938,9 +4016,9 @@ data:extend({ name = "nullius-aluminum-wire", icons = { { - icon = "__angelssmelting__/graphics/icons/wire-coil-gold.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-gold.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.8, g=0.9, b=1} } }, @@ -3953,9 +4031,9 @@ data:extend({ name = "nullius-aluminum-powder", icons = { { - icon = "__angelssmelting__/graphics/icons/powder-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - icon_mipmaps = 4 + } }, subgroup = "aluminum-product", @@ -3967,9 +4045,9 @@ data:extend({ name = "nullius-steel-wire", icons = { { - icon = "__angelssmelting__/graphics/icons/wire-coil-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-platinum.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.75, g=0.875, b=1} } }, @@ -3980,7 +4058,7 @@ data:extend({ { type = "item", name = "nullius-steel-cable", - icon = "__angelssmelting__/graphics/icons/wire-silver.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-silver.png", icon_size = 32, subgroup = "steel-product", order = "nullius-i", @@ -3989,6 +4067,7 @@ data:extend({ { type = "recipe", name = "nullius-iron-wire-1", + localised_name = {"item-name.nullius-iron-wire"}, enabled = false, category = "hand-casting", always_show_made_in = true, @@ -3998,8 +4077,9 @@ data:extend({ ingredients = { {"nullius-iron-rod", 3} }, - result = "nullius-iron-wire", - result_count = 4 + results = { + {type = "item", name = "nullius-iron-wire", amount = 4} + } }, { type = "recipe", @@ -4007,15 +4087,15 @@ data:extend({ localised_name = {"recipe-name.nullius-iron-wire-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/wire-coil-silver.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-silver.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.825, 0.85} }, { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {12, -10} } @@ -4031,8 +4111,9 @@ data:extend({ {type="item", name="nullius-iron-rod", amount=5}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-iron-wire", - result_count = 8 + results = { + {type = "item", name = "nullius-iron-wire", amount = 8} + } }, { type = "recipe", @@ -4049,13 +4130,15 @@ data:extend({ {type="item", name="nullius-box-iron-rod", amount=5}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-iron-wire", - result_count = 8 + results = { + {type = "item", name = "nullius-box-iron-wire", amount = 8} + } }, { type = "recipe", name = "nullius-aluminum-wire-1", + localised_name = {"item-name.nullius-aluminum-wire"}, enabled = false, category = "hand-casting", always_show_made_in = true, @@ -4065,8 +4148,9 @@ data:extend({ ingredients = { {"nullius-aluminum-rod", 5} }, - result = "nullius-aluminum-wire", - result_count = 7 + results = { + {type = "item", name = "nullius-aluminum-wire", amount = 7} + } }, { type = "recipe", @@ -4074,15 +4158,15 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminum-wire-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/wire-coil-gold.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-gold.png", icon_size = 64, - icon_mipmaps = 4, + tint = {r=0.8, g=0.9, b=1} }, { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {12, -10} } @@ -4098,8 +4182,9 @@ data:extend({ {type="item", name="nullius-aluminum-rod", amount=6}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-aluminum-wire", - result_count = 10 + results = { + {type = "item", name = "nullius-aluminum-wire", amount = 10} + } }, { type = "recipe", @@ -4116,8 +4201,9 @@ data:extend({ {type="item", name="nullius-box-aluminum-rod", amount=6}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-aluminum-wire", - result_count = 10 + results = { + {type = "item", name = "nullius-box-aluminum-wire", amount = 10} + } }, { type = "recipe", @@ -4132,8 +4218,9 @@ data:extend({ {type="item", name="nullius-aluminum-wire", amount=2}, {type="fluid", name="nullius-nitrogen", amount=12} }, - result = "nullius-aluminum-powder", - result_count = 3 + results = { + {type = "item", name = "nullius-aluminum-powder", amount = 3} + } }, { type = "recipe", @@ -4150,8 +4237,9 @@ data:extend({ {type="item", name="nullius-box-aluminum-wire", amount=2}, {type="fluid", name="nullius-nitrogen", amount=60} }, - result = "nullius-box-aluminum-powder", - result_count = 3 + results = { + {type = "item", name = "nullius-box-aluminum-powder", amount = 3} + } }, { @@ -4166,8 +4254,9 @@ data:extend({ {type="item", name="nullius-steel-rod", amount=2}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-steel-wire", - result_count = 3 + results = { + {type = "item", name = "nullius-steel-wire", amount = 3} + } }, { type = "recipe", @@ -4182,8 +4271,9 @@ data:extend({ {type="item", name="nullius-box-steel-rod", amount=2}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-steel-wire", - result_count = 3 + results = { + {type = "item", name = "nullius-box-steel-wire", amount = 3} + } }, { type = "recipe", @@ -4197,8 +4287,9 @@ data:extend({ {type="item", name="nullius-steel-wire", amount=7}, {type="fluid", name="nullius-lubricant", amount=2, fluidbox_index=1} }, - result = "nullius-steel-cable", - result_count = 2 + results = { + {type = "item", name = "nullius-steel-cable", amount = 2} + } }, { type = "recipe", @@ -4213,13 +4304,14 @@ data:extend({ {type="item", name="nullius-box-steel-wire", amount=7}, {type="fluid", name="nullius-lubricant", amount=10, fluidbox_index=1} }, - result = "nullius-box-steel-cable", - result_count = 2 + results = { + {type = "item", name = "nullius-box-steel-cable", amount = 2} + } }, { type = "recipe", name = "nullius-insulated-wire-1", - localised_name = {"", {"item-name.nullius-insulated-wire"}, " ", 1}, + localised_name = {"", {"item-name.nullius-insulated-wire"}, " ", tostring(1)}, enabled = false, category = "small-crafting", always_show_made_in = true, @@ -4230,13 +4322,14 @@ data:extend({ {"nullius-aluminum-wire", 3}, {"nullius-rubber", 2} }, - result = "copper-cable", - result_count = 4 + results = { + {type = "item", name = "copper-cable", amount = 4} + } }, { type = "recipe", name = "nullius-boxed-insulated-wire-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-insulated-wire"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-insulated-wire"}}, " ", tostring(1)}, enabled = false, category = "large-assembly", subgroup = "boxed-electrical", @@ -4248,23 +4341,24 @@ data:extend({ {"nullius-box-aluminum-wire", 3}, {"nullius-box-rubber", 2} }, - result = "nullius-box-insulated-wire", - result_count = 4 + results = { + {type = "item", name = "nullius-box-insulated-wire", amount = 4} + } }, { type = "recipe", name = "nullius-insulated-wire-2", - localised_name = {"", {"item-name.nullius-insulated-wire"}, " ", 2}, + localised_name = {"", {"item-name.nullius-insulated-wire"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/wire-coil-tin.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/ingot-copper.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-copper.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {12, -10} } @@ -4279,28 +4373,29 @@ data:extend({ {"nullius-copper-wire", 1}, {"nullius-rubber", 2} }, - result = "copper-cable", - result_count = 6 + results = { + {type = "item", name = "copper-cable", amount = 6} + } }, { type = "recipe", name = "nullius-boxed-insulated-wire-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-insulated-wire"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-insulated-wire"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/wire-coil-tin.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/ingot-copper.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-copper.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.22, shift = {11, -9} } @@ -4316,17 +4411,18 @@ data:extend({ {"nullius-box-copper-wire", 1}, {"nullius-box-rubber", 2} }, - result = "nullius-box-insulated-wire", - result_count = 6 + results = { + {type = "item", name = "nullius-box-insulated-wire", amount = 6} + } }, { type = "item", name = "nullius-optical-cable", icons = {{ - icon = "__angelssmelting__/graphics/icons/wire-coil-gold.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-gold.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.6, 1} }}, subgroup = "electronic-intermediate", @@ -4340,13 +4436,15 @@ data:extend({ category = "small-fluid-assembly", energy_required = 3, ingredients = { - {type="item", name="red-wire", amount=2}, + {type="item", name="nullius-red-wire", amount=2}, {type="item", name="nullius-glass-fiber", amount=1}, {type="item", name="nullius-plastic", amount=1}, {type="fluid", name="nullius-epoxy", amount=1}, {type="fluid", name="nullius-argon", amount=1} }, - result = "nullius-optical-cable" + results = { + {type = "item", name = "nullius-optical-cable", amount = 1} + } }, { type = "recipe", @@ -4362,7 +4460,9 @@ data:extend({ {type="fluid", name="nullius-epoxy", amount=5}, {type="fluid", name="nullius-argon", amount=5} }, - result = "nullius-box-optical-cable" + results = { + {type = "item", name = "nullius-box-optical-cable", amount = 1} + } }, { @@ -4379,7 +4479,7 @@ data:extend({ name = "nullius-motor-2", icon = "__base__/graphics/icons/electric-engine-unit.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "mechanical-intermediate", order = "nullius-dc", stack_size = 50 @@ -4406,7 +4506,9 @@ data:extend({ {"nullius-plastic", 1}, {"nullius-iron-rod", 1} }, - result = "nullius-motor-1" + results = { + {type = "item", name = "nullius-motor-1", amount = 1} + } }, { type = "recipe", @@ -4422,7 +4524,9 @@ data:extend({ {"nullius-box-iron-plate", 1}, {"nullius-box-iron-rod", 1} }, - result = "nullius-box-motor-1" + results = { + {type = "item", name = "nullius-box-motor-1", amount = 1} + } }, { type = "recipe", @@ -4437,7 +4541,9 @@ data:extend({ {type="item", name="nullius-steel-rod", amount=1}, {type="fluid", name="nullius-lubricant", amount=5, fluidbox_index=1} }, - result = "nullius-motor-2" + results = { + {type = "item", name = "nullius-motor-2", amount = 1} + } }, { type = "recipe", @@ -4454,7 +4560,9 @@ data:extend({ {type="item", name="nullius-box-steel-rod", amount=1}, {type="fluid", name="nullius-lubricant", amount=30, fluidbox_index=1} }, - result = "nullius-box-motor-2" + results = { + {type = "item", name = "nullius-box-motor-2", amount = 1} + } }, { type = "recipe", @@ -4471,7 +4579,9 @@ data:extend({ {type="item", name="nullius-bearing", amount=1}, {type="fluid", name="nullius-epoxy", amount=5, fluidbox_index=1} }, - result = "nullius-motor-3" + results = { + {type = "item", name = "nullius-motor-3", amount = 1} + } }, { type = "recipe", @@ -4490,13 +4600,15 @@ data:extend({ {type="item", name="nullius-box-bearing", amount=1}, {type="fluid", name="nullius-epoxy", amount=25, fluidbox_index=1} }, - result = "nullius-box-motor-3" + results = { + {type = "item", name = "nullius-box-motor-3", amount = 1} + } }, { type = "item", name = "nullius-refractory-brick", - icon = "__angelssmelting__/graphics/icons/brick-clay.png", + icon = "__angelssmeltinggraphics__/graphics/icons/brick-clay.png", icon_size = 32, subgroup = "masonry", order = "nullius-c", @@ -4504,13 +4616,13 @@ data:extend({ place_as_tile = { result = "clay-bricks", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { type = "recipe", name = "nullius-refractory-brick-1", - localised_name = {"", {"item-name.nullius-refractory-brick"}, " ", 1}, + localised_name = {"", {"item-name.nullius-refractory-brick"}, " ", tostring(1)}, order = "nullius-cb", enabled = false, show_amount_in_title = false, @@ -4520,22 +4632,23 @@ data:extend({ ingredients = { {"nullius-silica", 3} }, - result = "nullius-refractory-brick", - result_count = 5 + results = { + {type = "item", name = "nullius-refractory-brick", amount = 5} + } }, { type = "recipe", name = "nullius-refractory-brick-2", - localised_name = {"", {"item-name.nullius-refractory-brick"}, " ", 2}, + localised_name = {"", {"item-name.nullius-refractory-brick"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/brick-clay.png", + icon = "__angelssmeltinggraphics__/graphics/icons/brick-clay.png", icon_size = 32 }, { - icon = "__angelssmelting__/graphics/icons/powder-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-platinum.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-10, -12} } @@ -4549,8 +4662,9 @@ data:extend({ ingredients = { {"nullius-ceramic-powder", 2} }, - result = "nullius-refractory-brick", - result_count = 12 + results = { + {type = "item", name = "nullius-refractory-brick", amount = 12} + } }, { type = "recipe", @@ -4564,15 +4678,16 @@ data:extend({ ingredients = { {"nullius-box-ceramic-powder", 2} }, - result = "nullius-box-refractory-brick", - result_count = 6 + results = { + {type = "item", name = "nullius-box-refractory-brick", amount = 6} + } }, { type = "item", name = "nullius-crucible", icons = {{ - icon = "__angelssmelting__/graphics/icons/silicon-crucible.png", + icon = "__angelssmeltinggraphics__/graphics/icons/silicon-crucible.png", icon_size = 32, tint = {1, 1, 1, 0.6} }}, @@ -4583,7 +4698,7 @@ data:extend({ { type = "recipe", name = "nullius-crucible", - localised_name = {"", {"item-name.nullius-crucible"}, " ", 1}, + localised_name = {"", {"item-name.nullius-crucible"}, " ", tostring(1)}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -4593,22 +4708,24 @@ data:extend({ ingredients = { {"nullius-silica", 12} }, - result = "nullius-crucible" + results = { + {type = "item", name = "nullius-crucible", amount = 1} + } }, { type = "recipe", name = "nullius-crucible-2", - localised_name = {"", {"item-name.nullius-crucible"}, " ", 2}, + localised_name = {"", {"item-name.nullius-crucible"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/silicon-crucible.png", + icon = "__angelssmeltinggraphics__/graphics/icons/silicon-crucible.png", icon_size = 32, tint = {1, 1, 1, 0.6} }, { - icon = "__angelssmelting__/graphics/icons/powder-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-platinum.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-10, -12} } @@ -4636,9 +4753,9 @@ data:extend({ { type = "item", name = "nullius-aluminum-carbide", - icon = "__angelssmelting__/graphics/icons/powder-lead.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "aluminum-ingot", order = "nullius-f", stack_size = 100 @@ -4646,7 +4763,7 @@ data:extend({ { type = "item", name = "nullius-alumina", - icon = "__angelssmelting__/graphics/icons/solid-aluminium-oxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-oxide.png", icon_size = 32, subgroup = "aluminum-ingot", order = "nullius-e", @@ -4655,7 +4772,7 @@ data:extend({ { type = "recipe", name = "nullius-bauxite-flotation-1", - localised_name = {"", {"item-name.nullius-aluminum-hydroxide"}, " ", 1}, + localised_name = {"", {"item-name.nullius-aluminum-hydroxide"}, " ", tostring(1)}, enabled = false, category = "ore-flotation", subgroup = "alumina", @@ -4674,7 +4791,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-bauxite-flotation-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-hydroxide"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-hydroxide"}}, " ", tostring(1)}, enabled = false, category = "ore-flotation", subgroup = "boxed-aluminum-1", @@ -4693,14 +4810,14 @@ data:extend({ { type = "recipe", name = "nullius-bauxite-flotation-2", - localised_name = {"", {"item-name.nullius-aluminum-hydroxide"}, " ", 2}, + localised_name = {"", {"item-name.nullius-aluminum-hydroxide"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.19, shift = {10, -11} @@ -4726,19 +4843,19 @@ data:extend({ { type = "recipe", name = "nullius-boxed-bauxite-flotation-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-hydroxide"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-hydroxide"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32, scale = 0.9 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/sulfuric-acid.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", icon_size = 72, scale = 0.17, shift = {9, -10} @@ -4776,8 +4893,9 @@ data:extend({ ingredients = { {"nullius-aluminum-hydroxide", 4} }, - result = "nullius-alumina", - result_count = 3 + results = { + {type = "item", name = "nullius-alumina", amount = 3} + } }, { type = "recipe", @@ -4785,7 +4903,7 @@ data:extend({ localised_name = {"recipe-name.nullius-alumina-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-oxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-oxide.png", icon_size = 32 }, { @@ -4835,13 +4953,13 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminum-carbide-reprocessing"}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32 }, { - icon = "__angelssmelting__/graphics/icons/powder-lead.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {10, -10} } @@ -4889,14 +5007,14 @@ data:extend({ localised_name = {"recipe-name.nullius-aluminum-ingot-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/powder-lead.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {9, -9} } @@ -4918,20 +5036,20 @@ data:extend({ { type = "recipe", name = "nullius-boxed-aluminum-carbide", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-carbide"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-carbide"}}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-lead.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/solid-aluminium-oxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-oxide.png", icon_size = 32, scale = 0.5, shift = {-6, -6} @@ -4955,7 +5073,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-aluminum-ingot-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-ingot"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-ingot"}}, " ", tostring(1)}, enabled = false, category = "bulk-smelting", subgroup = "boxed-aluminum-2", @@ -4974,15 +5092,15 @@ data:extend({ { type = "recipe", name = "nullius-aluminum-ingot-3", - localised_name = {"", {"item-name.nullius-aluminum-ingot"}, " ", 3}, + localised_name = {"", {"item-name.nullius-aluminum-ingot"}, " ", tostring(3)}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32, scale = 0.5, shift = {9, -9} @@ -5009,20 +5127,20 @@ data:extend({ { type = "recipe", name = "nullius-boxed-aluminum-ingot-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-ingot"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-ingot"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32, scale = 0.4, shift = {8, -8} @@ -5054,9 +5172,9 @@ data:extend({ {"item-name.nullius-box", {"item-name.nullius-aluminum-ingot"}}}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -5096,28 +5214,29 @@ data:extend({ {"nullius-aluminum-powder", 20}, {"nullius-graphite", 2} }, - result = "nullius-aluminum-carbide", - result_count = 3 + results = { + {type = "item", name = "nullius-aluminum-carbide", amount = 3} + } }, { type = "recipe", name = "nullius-boxed-aluminum-carbide-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-carbide"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-carbide"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-lead.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/powder-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-6, -6} } @@ -5134,8 +5253,9 @@ data:extend({ {"nullius-box-aluminum-powder", 20}, {"nullius-box-graphite", 2} }, - result = "nullius-box-aluminum-carbide", - result_count = 3 + results = { + {type = "item", name = "nullius-box-aluminum-carbide", amount = 3} + } }, { @@ -5151,8 +5271,9 @@ data:extend({ {"nullius-silica", 5}, {"nullius-graphite", 2} }, - result = "nullius-silicon-ingot", - result_count = 3 + results = { + {type = "item", name = "nullius-silicon-ingot", amount = 3} + } }, { type = "recipe", @@ -5160,13 +5281,13 @@ data:extend({ localised_name = {"recipe-name.nullius-silicon-ingot-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-silicon.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-silicon.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 0.925, 0.85} }, { - icon = "__angelspetrochem__/graphics/icons/molecules/oxygen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", icon_size = 72, scale = 0.22, shift = {9, -12} @@ -5209,7 +5330,7 @@ data:extend({ type = "item", name = "nullius-polycrystalline-silicon", icons = {{ - icon = "__angelssmelting__/graphics/icons/silicon-mono.png", + icon = "__angelssmeltinggraphics__/graphics/icons/silicon-mono.png", icon_size = 32, tint = {0.8, 0.75, 0.7, 0.9} }}, @@ -5232,7 +5353,7 @@ data:extend({ { type = "recipe", name = "nullius-polycrystalline-silicon", - localised_name = {"", {"item-name.nullius-polycrystalline-silicon"}, " ", 1}, + localised_name = {"", {"item-name.nullius-polycrystalline-silicon"}, " ", tostring(1)}, enabled = false, category = "basic-chemistry", order = "nullius-fb", @@ -5256,7 +5377,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-polycrystalline-silicon", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-polycrystalline-silicon"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-polycrystalline-silicon"}}, " ", tostring(1)}, enabled = false, category = "basic-chemistry", subgroup = "boxed-silicon", @@ -5281,10 +5402,10 @@ data:extend({ { type = "recipe", name = "nullius-polycrystalline-silicon-2", - localised_name = {"", {"item-name.nullius-polycrystalline-silicon"}, " ", 2}, + localised_name = {"", {"item-name.nullius-polycrystalline-silicon"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/silicon-mono.png", + icon = "__angelssmeltinggraphics__/graphics/icons/silicon-mono.png", icon_size = 32, tint = {0.8, 0.75, 0.7, 0.9} }, @@ -5319,14 +5440,14 @@ data:extend({ { type = "recipe", name = "nullius-boxed-polycrystalline-silicon-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-polycrystalline-silicon"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-polycrystalline-silicon"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/silicon-mono.png", + icon = "__angelssmeltinggraphics__/graphics/icons/silicon-mono.png", icon_size = 32, tint = {0.8, 0.75, 0.7, 0.9}, scale = 0.9 @@ -5372,8 +5493,9 @@ data:extend({ {type="item", name="nullius-polycrystalline-silicon", amount=5}, {type="fluid", name="nullius-argon", amount=10, fluidbox_index=1} }, - result = "nullius-monocrystalline-silicon", - result_count = 3 + results = { + {type = "item", name = "nullius-monocrystalline-silicon", amount = 3} + } }, { type = "recipe", @@ -5388,8 +5510,9 @@ data:extend({ {type="item", name="nullius-box-polycrystalline-silicon", amount=5}, {type="fluid", name="nullius-argon", amount=50, fluidbox_index=1} }, - result = "nullius-box-monocrystalline-silicon", - result_count = 3 + results = { + {type = "item", name = "nullius-box-monocrystalline-silicon", amount = 3} + } }, { @@ -5403,7 +5526,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-empty-canister", + name = "nullius-canister", enabled = false, category = "hand-casting", always_show_made_in = true, @@ -5411,12 +5534,13 @@ data:extend({ always_show_products = true, energy_required = 8, ingredients = { - {type="item", name="empty-barrel", amount=1}, + {type="item", name="barrel", amount=1}, {type="item", name="nullius-aluminum-sheet", amount=2}, {type="item", name="nullius-top-up-valve", amount=1} }, - result = "nullius-canister", - result_count = 5 + results = { + {type = "item", name = "nullius-canister", amount = 5} + } }, { type = "recipe", @@ -5433,8 +5557,9 @@ data:extend({ {type="item", name="nullius-box-aluminum-sheet", amount=2}, {type="item", name="nullius-box-top-up-valve", amount=1} }, - result = "nullius-box-canister", - result_count = 5 + results = { + {type = "item", name = "nullius-box-canister", amount = 5} + } }, { type = "recipe", @@ -5444,17 +5569,18 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, energy_required = 7, ingredients = { - {type="item", name="empty-barrel", amount=1}, + {type="item", name="barrel", amount=1}, {type="item", name="nullius-aluminum-sheet", amount=2}, {type="item", name="nullius-top-up-valve", amount=1} }, - result = "nullius-canister", - result_count = 5 + results = { + {type = "item", name = "nullius-canister", amount = 5} + } }, { type = "recipe", @@ -5465,7 +5591,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, energy_required = 35, @@ -5474,15 +5600,16 @@ data:extend({ {type="item", name="nullius-box-aluminum-sheet", amount=2}, {type="item", name="nullius-box-top-up-valve", amount=1} }, - result = "nullius-box-canister", - result_count = 5 + results = { + {type = "item", name = "nullius-box-canister", amount = 5} + } }, { type = "item", name = "nullius-filter-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/filter-coal.png", + icon = "__angelsrefininggraphics__/graphics/icons/filter-coal.png", icon_size = 32 }}, subgroup = "mechanical-intermediate", @@ -5508,7 +5635,9 @@ data:extend({ {type="item", name="nullius-iron-sheet", amount=1}, {type="fluid", name="nullius-carbon-dioxide", amount=10, fluidbox_index=3} }, - result = "nullius-filter-1" + results = { + {type = "item", name = "nullius-filter-1", amount = 1} + } }, { type = "recipe", @@ -5530,7 +5659,9 @@ data:extend({ {type="item", name="nullius-box-iron-sheet", amount=1}, {type="fluid", name="nullius-carbon-dioxide", amount=50, fluidbox_index=3} }, - result = "nullius-box-filter-1" + results = { + {type = "item", name = "nullius-box-filter-1", amount = 1} + } }, { type = "recipe", @@ -5538,13 +5669,13 @@ data:extend({ localised_name = {"recipe-name.nullius-pressure", {"item-name.nullius-filter-1"}}, icons = { { - icon = "__angelsrefining__/graphics/icons/filter-coal.png", + icon = "__angelsrefininggraphics__/graphics/icons/filter-coal.png", icon_size = 32 }, { - icon = "__angelssmelting__/graphics/icons/roll-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {11, -10} } @@ -5565,8 +5696,9 @@ data:extend({ {type="item", name="nullius-aluminum-sheet", amount=1}, {type="fluid", name="nullius-compressed-carbon-dioxide", amount=4, fluidbox_index=3} }, - result = "nullius-filter-1", - result_count = 2 + results = { + {type = "item", name = "nullius-filter-1", amount = 2} + } }, { type = "recipe", @@ -5578,14 +5710,14 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/filter-coal.png", + icon = "__angelsrefininggraphics__/graphics/icons/filter-coal.png", icon_size = 32, scale = 0.9 }, { - icon = "__angelssmelting__/graphics/icons/roll-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.25, shift = {10, -9} } @@ -5607,15 +5739,16 @@ data:extend({ {type="item", name="nullius-box-aluminum-sheet", amount=1}, {type="fluid", name="nullius-compressed-carbon-dioxide", amount=20, fluidbox_index=3} }, - result = "nullius-box-filter-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-filter-1", amount = 2} + } }, { type = "item", name = "nullius-filter-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/filter-ceramic.png", + icon = "__angelsrefininggraphics__/graphics/icons/filter-ceramic.png", icon_size = 32 }}, subgroup = "mechanical-intermediate", @@ -5638,7 +5771,9 @@ data:extend({ {type="item", name="nullius-textile", amount=2}, {type="item", name="nullius-alumina", amount=3} }, - result = "nullius-filter-2" + results = { + {type = "item", name = "nullius-filter-2", amount = 1} + } }, { type = "recipe", @@ -5658,13 +5793,15 @@ data:extend({ {type="item", name="nullius-box-textile", amount=2}, {type="item", name="nullius-box-alumina", amount=3} }, - result = "nullius-box-filter-2" + results = { + {type = "item", name = "nullius-box-filter-2", amount = 1} + } }, { type = "item", name = "nullius-cement", - icon = "__angelssmelting__/graphics/icons/solid-cement.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-cement.png", icon_size = 32, subgroup = "masonry-material", order = "nullius-cb", @@ -5673,7 +5810,7 @@ data:extend({ { type = "item", name = "nullius-mortar", - icon = "__angelsrefining__/graphics/icons/solid-sand.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-sand.png", icon_size = 32, subgroup = "masonry-material", order = "nullius-cd", @@ -5693,8 +5830,9 @@ data:extend({ {type="item", name="nullius-silica", amount=4}, {type="item", name="nullius-aluminum-hydroxide", amount=1} }, - result = "nullius-cement", - result_count = 4 + results = { + {type = "item", name = "nullius-cement", amount = 4} + } }, { type = "recipe", @@ -5702,11 +5840,11 @@ data:extend({ localised_name = {"recipe-name.nullius-cement-2"}, icons = { { - icon = "__angelssmelting__/graphics/icons/solid-cement.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-cement.png", icon_size = 32 }, { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32, scale = 0.45, shift = {-10, -10} @@ -5726,8 +5864,9 @@ data:extend({ {type="item", name="nullius-iron-oxide", amount=2}, {type="item", name="nullius-soda-ash", amount=1} }, - result = "nullius-cement", - result_count = 16 + results = { + {type = "item", name = "nullius-cement", amount = 16} + } }, { type = "recipe", @@ -5746,8 +5885,9 @@ data:extend({ {type="item", name="nullius-box-iron-oxide", amount=2}, {type="item", name="nullius-box-soda-ash", amount=1} }, - result = "nullius-box-cement", - result_count = 16 + results = { + {type = "item", name = "nullius-box-cement", amount = 16} + } }, { @@ -5764,8 +5904,9 @@ data:extend({ {type="item", name="nullius-sand", amount=5}, {type="fluid", name="nullius-water", amount=8, fluidbox_index=1} }, - result = "nullius-mortar", - result_count = 4 + results = { + {type = "item", name = "nullius-mortar", amount = 4} + } }, { type = "recipe", @@ -5777,7 +5918,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/solid-sand.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-sand.png", icon_size = 32, scale = 0.9 } @@ -5795,14 +5936,15 @@ data:extend({ {type="item", name="nullius-box-sand", amount=5}, {type="fluid", name="nullius-water", amount=40, fluidbox_index=1} }, - result = "nullius-mortar", - result_count = 20 + results = { + {type = "item", name = "nullius-mortar", amount = 20} + } }, { type = "recipe", name = "nullius-concrete-1", - localised_name = {"", {"item-name.concrete"}, " ", 1}, + localised_name = {"", {"item-name.concrete"}, " ", tostring(1)}, order = "nullius-bb", enabled = false, show_amount_in_title = false, @@ -5815,18 +5957,19 @@ data:extend({ {type="item", name="nullius-gravel", amount=4}, {type="fluid", name="nullius-water", amount=6, fluidbox_index=1} }, - result = "concrete", - result_count = 5 + results = { + {type = "item", name = "concrete", amount = 5} + } }, { type = "recipe", name = "nullius-concrete-2", - localised_name = {"", {"item-name.concrete"}, " ", 2}, + localised_name = {"", {"item-name.concrete"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "fluid/calcium-chloride.png", @@ -5848,8 +5991,9 @@ data:extend({ {type="fluid", name="nullius-calcium-chloride-solution", amount=5}, {type="fluid", name="nullius-water", amount=15} }, - result = "concrete", - result_count = 20 + results = { + {type = "item", name = "concrete", amount = 20} + } }, { type = "recipe", @@ -5868,13 +6012,15 @@ data:extend({ {type="fluid", name="nullius-calcium-chloride-solution", amount=25}, {type="fluid", name="nullius-water", amount=75} }, - result = "nullius-box-concrete", - result_count = 10 + results = { + {type = "item", name = "nullius-box-concrete", amount = 10} + } }, { type = "recipe", name = "nullius-reinforced-concrete", + localised_name = {"item-name.nullius-reinforced-concrete"}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -5889,8 +6035,9 @@ data:extend({ {type="item", name="nullius-steel-wire", amount=2}, {type="item", name="nullius-steel-rod", amount=2} }, - result = "refined-concrete", - result_count = 10 + results = { + {type = "item", name = "refined-concrete", amount = 10} + } }, { type = "recipe", @@ -5911,8 +6058,9 @@ data:extend({ {type="item", name="nullius-box-steel-wire", amount=2}, {type="item", name="nullius-box-steel-rod", amount=2} }, - result = "nullius-box-reinforced-concrete", - result_count = 5 + results = { + {type = "item", name = "nullius-box-reinforced-concrete", amount = 5} + } }, { @@ -5920,7 +6068,7 @@ data:extend({ name = "nullius-red-concrete", icons = {{ icon = "__base__/graphics/icons/refined-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 1.000, g = 0.266, b = 0.241 } }}, subgroup = "colored-concrete", @@ -5929,7 +6077,7 @@ data:extend({ place_as_tile = { result = "red-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -5940,7 +6088,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "basic-chemistry", - crafting_machine_tint = { + crafting_machine_tint = { primary = {r=1, g=0, b=0}, secondary = {r=1, g=0, b=0} }, @@ -5951,8 +6099,9 @@ data:extend({ {type="fluid", name="nullius-water", amount=4}, {type="fluid", name="nullius-epoxy", amount=3} }, - result = "nullius-red-concrete", - result_count = 60 + results = { + {type = "item", name = "nullius-red-concrete", amount = 60} + } }, { type = "recipe", @@ -5974,8 +6123,9 @@ data:extend({ {type="fluid", name="nullius-water", amount=20}, {type="fluid", name="nullius-epoxy", amount=15} }, - result = "nullius-box-red-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-box-red-concrete", amount = 30} + } }, { @@ -5983,7 +6133,7 @@ data:extend({ name = "nullius-blue-concrete", icons = {{ icon = "__base__/graphics/icons/refined-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.343, g = 0.683, b = 1.000 } }}, subgroup = "colored-concrete", @@ -5992,7 +6142,7 @@ data:extend({ place_as_tile = { result = "blue-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6017,8 +6167,9 @@ data:extend({ {type="fluid", name="nullius-water", amount=3}, {type="fluid", name="nullius-epoxy", amount=3} }, - result = "nullius-blue-concrete", - result_count = 60 + results = { + {type = "item", name = "nullius-blue-concrete", amount = 60} + } }, { type = "recipe", @@ -6043,8 +6194,9 @@ data:extend({ {type="fluid", name="nullius-water", amount=15}, {type="fluid", name="nullius-epoxy", amount=15} }, - result = "nullius-box-blue-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-box-blue-concrete", amount = 30} + } }, { @@ -6052,7 +6204,7 @@ data:extend({ name = "nullius-yellow-concrete", icons = {{ icon = ICONPATH.."entity/white-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.9, g = 0.8, b = 0.2 } }}, subgroup = "colored-concrete", @@ -6061,7 +6213,7 @@ data:extend({ place_as_tile = { result = "yellow-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6084,8 +6236,9 @@ data:extend({ {type="fluid", name="nullius-acid-hydrochloric", amount=5}, {type="fluid", name="nullius-epoxy", amount=3} }, - result = "nullius-yellow-concrete", - result_count = 60 + results = { + {type = "item", name = "nullius-yellow-concrete", amount = 60} + } }, { type = "recipe", @@ -6108,8 +6261,9 @@ data:extend({ {type="fluid", name="nullius-acid-hydrochloric", amount=25}, {type="fluid", name="nullius-epoxy", amount=15} }, - result = "nullius-box-yellow-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-box-yellow-concrete", amount = 30} + } }, { @@ -6117,7 +6271,7 @@ data:extend({ name = "nullius-green-concrete", icons = {{ icon = "__base__/graphics/icons/refined-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.173, g = 0.824, b = 0.250 } }}, subgroup = "colored-concrete", @@ -6126,7 +6280,7 @@ data:extend({ place_as_tile = { result = "green-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6143,8 +6297,9 @@ data:extend({ {type="item", name="nullius-yellow-concrete", amount=15}, {type="item", name="nullius-blue-concrete", amount=15} }, - result = "nullius-green-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-green-concrete", amount = 30} + } }, { type = "recipe", @@ -6161,8 +6316,9 @@ data:extend({ {type="item", name="nullius-box-yellow-concrete", amount=3}, {type="item", name="nullius-box-blue-concrete", amount=3} }, - result = "nullius-box-green-concrete", - result_count = 6 + results = { + {type = "item", name = "nullius-box-green-concrete", amount = 6} + } }, { @@ -6170,7 +6326,7 @@ data:extend({ name = "nullius-purple-concrete", icons = {{ icon = "__base__/graphics/icons/refined-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.821, g = 0.440, b = 0.998 } }}, subgroup = "colored-concrete", @@ -6179,7 +6335,7 @@ data:extend({ place_as_tile = { result = "purple-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6196,8 +6352,9 @@ data:extend({ {type="item", name="nullius-red-concrete", amount=15}, {type="item", name="nullius-blue-concrete", amount=15} }, - result = "nullius-purple-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-purple-concrete", amount = 30} + } }, { type = "recipe", @@ -6214,8 +6371,9 @@ data:extend({ {type="item", name="nullius-box-red-concrete", amount=3}, {type="item", name="nullius-box-blue-concrete", amount=3} }, - result = "nullius-box-purple-concrete", - result_count = 6 + results = { + {type = "item", name = "nullius-box-purple-concrete", amount = 6} + } }, { @@ -6223,7 +6381,7 @@ data:extend({ name = "nullius-brown-concrete", icons = {{ icon = "__base__/graphics/icons/refined-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.757, g = 0.522, b = 0.371 } }}, subgroup = "colored-concrete", @@ -6232,7 +6390,7 @@ data:extend({ place_as_tile = { result = "brown-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6249,8 +6407,9 @@ data:extend({ {type="item", name="nullius-yellow-concrete", amount=15}, {type="item", name="nullius-red-concrete", amount=15} }, - result = "nullius-brown-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-brown-concrete", amount = 30} + } }, { type = "recipe", @@ -6267,8 +6426,9 @@ data:extend({ {type="item", name="nullius-box-yellow-concrete", amount=3}, {type="item", name="nullius-box-red-concrete", amount=3} }, - result = "nullius-box-brown-concrete", - result_count = 6 + results = { + {type = "item", name = "nullius-box-brown-concrete", amount = 6} + } }, { @@ -6276,7 +6436,7 @@ data:extend({ name = "nullius-black-concrete", icons = {{ icon = "__base__/graphics/icons/refined-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.5, g = 0.5, b = 0.5 } }}, subgroup = "colored-concrete", @@ -6285,7 +6445,7 @@ data:extend({ place_as_tile = { result = "black-refined-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6304,8 +6464,9 @@ data:extend({ {type="item", name="nullius-yellow-concrete", amount=20}, {type="item", name="nullius-graphite", amount=1} }, - result = "nullius-black-concrete", - result_count = 60 + results = { + {type = "item", name = "nullius-black-concrete", amount = 60} + } }, { type = "recipe", @@ -6324,8 +6485,9 @@ data:extend({ {type="item", name="nullius-box-yellow-concrete", amount=10}, {type="item", name="nullius-box-graphite", amount=1} }, - result = "nullius-box-black-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-box-black-concrete", amount = 30} + } }, { @@ -6333,7 +6495,7 @@ data:extend({ name = "nullius-white-concrete", icons = {{ icon = ICONPATH.."entity/white-concrete.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }}, subgroup = "colored-concrete", order = "nullius-ad", @@ -6341,7 +6503,7 @@ data:extend({ place_as_tile = { result = "nullius-white-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6360,8 +6522,9 @@ data:extend({ {type="fluid", name="nullius-epoxy", amount=3}, {type="fluid", name="nullius-solvent", amount=4} }, - result = "nullius-white-concrete", - result_count = 60 + results = { + {type = "item", name = "nullius-white-concrete", amount = 60} + } }, { type = "recipe", @@ -6380,8 +6543,9 @@ data:extend({ {type="fluid", name="nullius-epoxy", amount=15}, {type="fluid", name="nullius-solvent", amount=20} }, - result = "nullius-box-white-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-box-white-concrete", amount = 30} + } }, { @@ -6389,7 +6553,7 @@ data:extend({ name = "nullius-orange-concrete", icons = {{ icon = ICONPATH.."entity/white-concrete.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = { r = 0.9, g = 0.5, b = 0.1 } }}, subgroup = "colored-concrete", @@ -6398,7 +6562,7 @@ data:extend({ place_as_tile = { result = "nullius-orange-concrete", condition_size = 1, - condition = { "water-tile" } + condition = { layers = {water_tile=true} } } }, { @@ -6416,8 +6580,9 @@ data:extend({ {type="item", name="nullius-red-concrete", amount=10}, {type="item", name="nullius-white-concrete", amount=5} }, - result = "nullius-orange-concrete", - result_count = 30 + results = { + {type = "item", name = "nullius-orange-concrete", amount = 30} + } }, { type = "recipe", @@ -6435,13 +6600,15 @@ data:extend({ {type="item", name="nullius-box-red-concrete", amount=2}, {type="item", name="nullius-box-white-concrete", amount=1} }, - result = "nullius-box-orange-concrete", - result_count = 6 + results = { + {type = "item", name = "nullius-box-orange-concrete", amount = 6} + } }, { type = "recipe", name = "nullius-hazard-concrete", + localised_name = {"item-name.nullius-hazard-concrete"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -6453,8 +6620,9 @@ data:extend({ {type="item", name="nullius-yellow-concrete", amount=24}, {type="item", name="nullius-black-concrete", amount=16} }, - result = "refined-hazard-concrete", - result_count = 40 + results = { + {type = "item", name = "refined-hazard-concrete", amount = 40} + } }, { type = "recipe", @@ -6471,8 +6639,9 @@ data:extend({ {type="item", name="nullius-box-yellow-concrete", amount=12}, {type="item", name="nullius-box-black-concrete", amount=8} }, - result = "nullius-box-hazard-concrete", - result_count = 20 + results = { + {type = "item", name = "nullius-box-hazard-concrete", amount = 20} + } }, { @@ -6480,7 +6649,7 @@ data:extend({ name = "nullius-sensor-1", icon = "__base__/graphics/icons/discharge-defense-equipment-controller.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "robotic-intermediate", order = "nullius-bb", stack_size = 100 @@ -6500,10 +6669,11 @@ data:extend({ {"small-lamp", 1}, {"nullius-capacitor", 1}, {"nullius-polycrystalline-silicon", 1}, - {"red-wire", 2} + {"nullius-red-wire", 2} }, - result = "nullius-sensor-1", - result_count = 2 + results = { + {type = "item", name = "nullius-sensor-1", amount = 2} + } }, { type = "recipe", @@ -6524,8 +6694,9 @@ data:extend({ {"nullius-box-polycrystalline-silicon", 1}, {"nullius-box-red-wire", 2} }, - result = "nullius-box-sensor-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-sensor-1", amount = 2} + } }, { @@ -6587,9 +6758,9 @@ data:extend({ { type = "item", name = "nullius-ceramic-powder", - icon = "__angelssmelting__/graphics/icons/powder-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-platinum.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "glass-product", order = "nullius-l", stack_size = 100 @@ -6654,7 +6825,9 @@ data:extend({ {type="item", name="nullius-ceramic-powder", amount=1}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-bearing" + results = { + {type = "item", name = "nullius-bearing", amount = 1} + } }, { type = "recipe", @@ -6668,14 +6841,16 @@ data:extend({ {type="item", name="nullius-box-ceramic-powder", amount=1}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-bearing" + results = { + {type = "item", name = "nullius-box-bearing", amount = 1} + } }, { type = "item", name = "nullius-acrylic-fiber", icons = {{ - icon = "__angelssmelting__/graphics/icons/wire-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-platinum.png", icon_size = 32, tint = { 0.4, 0.8, 0.8 } }}, @@ -6696,7 +6871,9 @@ data:extend({ {type="fluid", name="nullius-acrylonitrile", amount=4}, {type="fluid", name="nullius-water", amount=3} }, - result = "nullius-acrylic-fiber" + results = { + {type = "item", name = "nullius-acrylic-fiber", amount = 1} + } }, { type = "recipe", @@ -6713,7 +6890,9 @@ data:extend({ {type="fluid", name="nullius-acrylonitrile", amount=20}, {type="fluid", name="nullius-water", amount=15} }, - result = "nullius-box-acrylic-fiber" + results = { + {type = "item", name = "nullius-box-acrylic-fiber", amount = 1} + } }, { @@ -6837,9 +7016,9 @@ data:extend({ { type = "item", name = "nullius-textile", - icon = "__angelssmelting__/graphics/icons/roll-zinc.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-zinc.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "organic-material-2", order = "nullius-d", stack_size = 100 @@ -6847,7 +7026,7 @@ data:extend({ { type = "recipe", name = "nullius-textile-1", - localised_name = {"", {"item-name.nullius-textile"}, " ", 1}, + localised_name = {"", {"item-name.nullius-textile"}, " ", tostring(1)}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -6859,13 +7038,14 @@ data:extend({ {type="item", name="nullius-acrylic-fiber", amount=10}, {type="item", name="nullius-sodium-sulfate", amount=1} }, - result = "nullius-textile", - result_count = 5 + results = { + {type = "item", name = "nullius-textile", amount = 5} + } }, { type = "recipe", name = "nullius-boxed-textile-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-textile"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-textile"}}, " ", tostring(1)}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -6878,21 +7058,22 @@ data:extend({ {type="item", name="nullius-box-acrylic-fiber", amount=10}, {type="item", name="nullius-box-sodium-sulfate", amount=1} }, - result = "nullius-box-textile", - result_count = 5 + results = { + {type = "item", name = "nullius-box-textile", amount = 5} + } }, { type = "recipe", name = "nullius-textile-2", - localised_name = {"", {"item-name.nullius-textile"}, " ", 2}, + localised_name = {"", {"item-name.nullius-textile"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/roll-zinc.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-zinc.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.35, shift = {7, -10} @@ -6910,26 +7091,27 @@ data:extend({ {type="item", name="nullius-cellulose", amount=6}, {type="item", name="nullius-sodium-sulfate", amount=1} }, - result = "nullius-textile", - result_count = 12 + results = { + {type = "item", name = "nullius-textile", amount = 12} + } }, { type = "recipe", name = "nullius-boxed-textile-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-textile"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-textile"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/roll-zinc.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-zinc.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.32, shift = {6, -9} @@ -6948,16 +7130,17 @@ data:extend({ {type="item", name="nullius-box-cellulose", amount=6}, {type="item", name="nullius-box-sodium-sulfate", amount=1} }, - result = "nullius-box-textile", - result_count = 12 + results = { + {type = "item", name = "nullius-box-textile", amount = 12} + } }, { type = "item", name = "nullius-titanium-ingot", - icon = "__angelssmelting__/graphics/icons/ingot-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-titanium.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "titanium-product", order = "nullius-d", stack_size = 100 @@ -7014,7 +7197,7 @@ data:extend({ { type = "recipe", name = "nullius-titanium-ingot-1", - localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", 1}, + localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", tostring(1)}, enabled = false, category = "ore-flotation", order = "nullius-db", @@ -7033,7 +7216,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-titanium-ingot-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-titanium-ingot"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-titanium-ingot"}}, " ", tostring(1)}, enabled = false, category = "ore-flotation", subgroup = "boxed-titanium", @@ -7053,12 +7236,12 @@ data:extend({ { type = "recipe", name = "nullius-titanium-ingot-2", - localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", 2}, + localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", tostring(2)}, icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-titanium.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "calcium.png", @@ -7086,16 +7269,16 @@ data:extend({ { type = "recipe", name = "nullius-boxed-titanium-ingot-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-titanium-ingot"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-titanium-ingot"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/ingot-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-titanium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { @@ -7126,7 +7309,7 @@ data:extend({ { type = "item", name = "nullius-titanium-plate", - icon = "__angelssmelting__/graphics/icons/plate-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-titanium.png", icon_size = 32, subgroup = "titanium-product", order = "nullius-e", @@ -7170,7 +7353,7 @@ data:extend({ type = "item", name = "nullius-titanium-rod", icons = {{ - icon = "__angelssmelting__/graphics/icons/rod-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/rod-steel.png", icon_size = 32, tint = {0.8, 0.6, 0.8} }}, @@ -7215,9 +7398,9 @@ data:extend({ { type = "item", name = "nullius-titanium-sheet", - icon = "__angelssmelting__/graphics/icons/roll-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-titanium.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "titanium-product", order = "nullius-g", stack_size = 100 @@ -7235,8 +7418,9 @@ data:extend({ {type="item", name="nullius-titanium-plate", amount=4}, {type="fluid", name="nullius-lubricant", amount=1} }, - result = "nullius-titanium-sheet", - result_count = 5 + results = { + {type = "item", name = "nullius-titanium-sheet", amount = 5} + } }, { type = "recipe", @@ -7252,8 +7436,9 @@ data:extend({ {type="item", name="nullius-box-titanium-plate", amount=4}, {type="fluid", name="nullius-lubricant", amount=5} }, - result = "nullius-box-titanium-sheet", - result_count = 5 + results = { + {type = "item", name = "nullius-box-titanium-sheet", amount = 5} + } }, { @@ -7304,14 +7489,15 @@ data:extend({ ingredients = { {"nullius-turbine-open-2", 1}, {"nullius-capacitor", 4}, - {"turbo-filter-inserter", 3}, + {"bob-turbo-inserter", 3}, {"constant-combinator", 3}, {"programmable-speaker", 2}, {"nullius-sensor-1", 2}, {"nullius-aluminum-plate", 3} }, - result = "nullius-robot-frame-1", - result_count = 2 + results = { + {type = "item", name = "nullius-robot-frame-1", amount = 2} + } }, { type = "recipe", @@ -7327,20 +7513,21 @@ data:extend({ ingredients = { {"nullius-box-turbine-open-2", 1}, {"nullius-box-capacitor", 4}, - {"nullius-box-filter-inserter-2", 3}, + {"nullius-box-inserter-2", 3}, {"nullius-box-memory-circuit", 3}, {"nullius-box-antenna", 2}, {"nullius-box-sensor-1", 2}, {"nullius-box-aluminum-plate", 3} }, - result = "nullius-box-robot-frame-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-robot-frame-1", amount = 2} + } }, { type = "recipe", name = "nullius-legacy-robot-frame-1", enabled = false, - hidden = true, + hidden = true, show_amount_in_title = false, always_show_products = true, always_show_made_in = true, @@ -7352,19 +7539,20 @@ data:extend({ ingredients = { {"nullius-turbine-open-1", 1}, {"nullius-capacitor", 2}, - {"turbo-filter-inserter", 2}, + {"bob-turbo-inserter", 2}, {"constant-combinator", 2}, {"programmable-speaker", 1}, {"nullius-aluminum-sheet", 3} }, - result = "nullius-robot-frame-1", - result_count = 2 + results = { + {type = "item", name = "nullius-robot-frame-1", amount = 2} + } }, { type = "recipe", name = "nullius-legacy-boxed-robot-frame-1", enabled = false, - hidden = true, + hidden = true, show_amount_in_title = false, always_show_products = true, always_show_made_in = true, @@ -7377,13 +7565,14 @@ data:extend({ ingredients = { {"nullius-box-turbine-open-1", 1}, {"nullius-box-capacitor", 2}, - {"nullius-box-filter-inserter-2", 2}, + {"nullius-box-inserter-2", 2}, {"nullius-box-memory-circuit", 2}, {"nullius-box-antenna", 1}, {"nullius-box-aluminum-sheet", 3} }, - result = "nullius-box-robot-frame-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-robot-frame-1", amount = 2} + } }, { type = "recipe", @@ -7401,7 +7590,9 @@ data:extend({ {"nullius-night-vision-1", 1}, {"nullius-fiberglass", 3} }, - result = "nullius-robot-frame-2" + results = { + {type = "item", name = "nullius-robot-frame-2", amount = 1} + } }, { type = "recipe", @@ -7421,13 +7612,15 @@ data:extend({ {"nullius-box-night-vision-1", 1}, {"nullius-box-fiberglass", 3} }, - result = "nullius-box-robot-frame-2" + results = { + {type = "item", name = "nullius-box-robot-frame-2", amount = 1} + } }, { type = "recipe", name = "nullius-legacy-robot-frame-2", enabled = false, - hidden = true, + hidden = true, show_amount_in_title = false, always_show_products = true, always_show_made_in = true, @@ -7443,14 +7636,15 @@ data:extend({ {"nullius-sensor-1", 2}, {"nullius-fiberglass", 5} }, - result = "nullius-robot-frame-2", - result_count = 2 + results = { + {type = "item", name = "nullius-robot-frame-2", amount = 2} + } }, { type = "recipe", name = "nullius-legacy-boxed-robot-frame-2", enabled = false, - hidden = true, + hidden = true, show_amount_in_title = false, always_show_products = true, always_show_made_in = true, @@ -7467,8 +7661,9 @@ data:extend({ {"nullius-box-sensor-1", 2}, {"nullius-box-fiberglass", 5} }, - result = "nullius-box-robot-frame-2", - result_count = 2 + results = { + {type = "item", name = "nullius-box-robot-frame-2", amount = 2} + } }, { type = "recipe", @@ -7485,10 +7680,11 @@ data:extend({ {"nullius-battery-2", 2}, {"nullius-carbon-composite", 5}, {"nullius-relay-3", 1}, - {"express-stack-filter-inserter", 3} + {"bob-express-bulk-inserter", 3} }, - result = "nullius-robot-frame-3", - result_count = 2 + results = { + {type = "item", name = "nullius-robot-frame-3", amount = 2} + } }, { type = "recipe", @@ -7507,10 +7703,11 @@ data:extend({ {"nullius-box-battery-2", 2}, {"nullius-box-carbon-composite", 5}, {"nullius-box-relay-3", 1}, - {"nullius-box-filter-inserter-4", 3} + {"nullius-box-inserter-4", 3} }, - result = "nullius-box-robot-frame-3", - result_count = 2 + results = { + {type = "item", name = "nullius-box-robot-frame-3", amount = 2} + } }, { type = "recipe", @@ -7529,7 +7726,9 @@ data:extend({ {"nullius-levitation-field-2", 1}, {"nullius-processor-3", 2} }, - result = "nullius-robot-frame-4" + results = { + {type = "item", name = "nullius-robot-frame-4", amount = 1} + } }, { type = "recipe", @@ -7550,14 +7749,16 @@ data:extend({ {"nullius-levitation-field-2", 5}, {"nullius-box-processor-3", 2} }, - result = "nullius-box-robot-frame-4" + results = { + {type = "item", name = "nullius-box-robot-frame-4", amount = 1} + } }, { type = "item", name = "nullius-fiberglass", icons = {{ - icon = "__angelssmelting__/graphics/icons/plate-nickel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-nickel.png", icon_size = 32, tint = {0.5, 0.7, 1} }}, @@ -7577,8 +7778,9 @@ data:extend({ {type="item", name="nullius-glass-fiber", amount=2}, {type="fluid", name="nullius-epoxy", amount=15, fluidbox_index=1} }, - result = "nullius-fiberglass", - result_count = 5 + results = { + {type = "item", name = "nullius-fiberglass", amount = 5} + } }, { type = "recipe", @@ -7593,8 +7795,9 @@ data:extend({ {type="item", name="nullius-box-glass-fiber", amount=2}, {type="fluid", name="nullius-epoxy", amount=75, fluidbox_index=1} }, - result = "nullius-box-fiberglass", - result_count = 5 + results = { + {type = "item", name = "nullius-box-fiberglass", amount = 5} + } }, { @@ -7621,7 +7824,9 @@ data:extend({ {type="item", name="nullius-carbon-fiber", amount=2}, {type="fluid", name="nullius-epoxy", amount=8} }, - result = "nullius-carbon-composite" + results = { + {type = "item", name = "nullius-carbon-composite", amount = 1} + } }, { type = "recipe", @@ -7637,7 +7842,9 @@ data:extend({ {type="item", name="nullius-box-carbon-fiber", amount=2}, {type="fluid", name="nullius-epoxy", amount=40} }, - result = "nullius-box-carbon-composite" + results = { + {type = "item", name = "nullius-box-carbon-composite", amount = 1} + } }, { @@ -7696,9 +7903,9 @@ data:extend({ { type = "item", name = "nullius-insulation", - icon = "__angelssmelting__/graphics/icons/roll-manganese.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-manganese.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "glass-product", order = "nullius-f", stack_size = 100 @@ -7717,8 +7924,9 @@ data:extend({ {"nullius-plastic", 2}, {"nullius-textile", 1} }, - result = "nullius-insulation", - result_count = 2 + results = { + {type = "item", name = "nullius-insulation", amount = 2} + } }, { type = "recipe", @@ -7735,8 +7943,9 @@ data:extend({ {"nullius-box-plastic", 2}, {"nullius-box-textile", 1} }, - result = "nullius-box-insulation", - result_count = 2 + results = { + {type = "item", name = "nullius-box-insulation", amount = 2} + } }, { @@ -7744,7 +7953,7 @@ data:extend({ name = "nullius-processor-1", icon = "__base__/graphics/icons/electronic-circuit.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "electronic-intermediate", order = "nullius-fb", stack_size = 50 @@ -7760,11 +7969,13 @@ data:extend({ {type="item", name="nullius-monocrystalline-silicon", amount=2}, {type="item", name="nullius-ceramic-powder", amount=1}, {type="item", name="constant-combinator", amount=2}, - {type="item", name="green-wire", amount=2}, + {type="item", name="nullius-green-wire", amount=2}, {type="fluid", name="nullius-acid-nitric", amount=3, fluidbox_index=2}, {type="fluid", name="nullius-argon", amount=2, fluidbox_index=3} }, - result = "nullius-processor-1" + results = { + {type = "item", name = "nullius-processor-1", amount = 1} + } }, { type = "recipe", @@ -7782,14 +7993,16 @@ data:extend({ {type="fluid", name="nullius-acid-nitric", amount=15, fluidbox_index=2}, {type="fluid", name="nullius-argon", amount=10, fluidbox_index=3} }, - result = "nullius-box-processor-1" + results = { + {type = "item", name = "nullius-box-processor-1", amount = 1} + } }, { type = "item", name = "nullius-processor-2", icon = "__base__/graphics/icons/advanced-circuit.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "electronic-intermediate", order = "nullius-fc", stack_size = 50 @@ -7809,7 +8022,9 @@ data:extend({ {type="fluid", name="nullius-acid-sulfuric", amount=4, fluidbox_index=2}, {type="fluid", name="nullius-helium", amount=8, fluidbox_index=3} }, - result = "nullius-processor-2" + results = { + {type = "item", name = "nullius-processor-2", amount = 1} + } }, { type = "recipe", @@ -7827,14 +8042,16 @@ data:extend({ {type="fluid", name="nullius-acid-sulfuric", amount=20, fluidbox_index=2}, {type="fluid", name="nullius-helium", amount=40, fluidbox_index=3} }, - result = "nullius-box-processor-2" + results = { + {type = "item", name = "nullius-box-processor-2", amount = 1} + } }, { type = "item", name = "nullius-processor-3", icon = "__base__/graphics/icons/processing-unit.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "electronic-intermediate", order = "nullius-fc", stack_size = 50 @@ -7855,7 +8072,9 @@ data:extend({ {type="fluid", name="nullius-helium", amount=8, fluidbox_index=2}, {type="fluid", name="nullius-compressed-oxygen", amount=10, fluidbox_index=3} }, - result = "nullius-processor-3" + results = { + {type = "item", name = "nullius-processor-3", amount = 1} + } }, { type = "recipe", @@ -7874,7 +8093,9 @@ data:extend({ {type="fluid", name="nullius-helium", amount=40, fluidbox_index=2}, {type="fluid", name="nullius-compressed-oxygen", amount=50, fluidbox_index=3} }, - result = "nullius-box-processor-3" + results = { + {type = "item", name = "nullius-box-processor-3", amount = 1} + } }, { @@ -7899,7 +8120,9 @@ data:extend({ {type="item", name="copper-cable", amount=2}, {type="item", name="nullius-plastic", amount=1} }, - result = "nullius-transformer" + results = { + {type = "item", name = "nullius-transformer", amount = 1} + } }, { type = "recipe", @@ -7915,16 +8138,18 @@ data:extend({ {type="item", name="nullius-box-insulated-wire", amount=2}, {type="item", name="nullius-box-plastic", amount=1} }, - result = "nullius-box-transformer" + results = { + {type = "item", name = "nullius-box-transformer", amount = 1} + } }, { type = "item", name = "nullius-crushed-uranium-ore", icons = {{ - icon = "__angelssmelting__/graphics/icons/processed-tin.png", + icon = "__angelssmeltinggraphics__/graphics/icons/processed-tin.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 1, 0.8} }}, subgroup = "uranium", @@ -7948,9 +8173,9 @@ data:extend({ type = "item", name = "nullius-yellowcake", icons = {{ - icon = "__angelssmelting__/graphics/icons/pellet-gold.png", + icon = "__angelssmeltinggraphics__/graphics/icons/pellet-gold.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.7, 1, 0.7} }}, subgroup = "uranium", @@ -7981,7 +8206,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/uranium-238.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "uranium", order = "nullius-e", @@ -8011,7 +8236,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/uranium-235.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "uranium", order = "nullius-f", @@ -8040,7 +8265,7 @@ data:extend({ name = "nullius-fission-cell", icon = "__base__/graphics/icons/uranium-fuel-cell.png", icon_size = 64, - icon_mipmaps = 4, + fuel_category = "nullius-nuclear", burnt_result = "nullius-spent-fission-cell", fuel_value = "4GJ", @@ -8054,9 +8279,9 @@ data:extend({ { type = "item", name = "nullius-spent-fission-cell", - icon = "__base__/graphics/icons/used-up-uranium-fuel-cell.png", + icon = "__base__/graphics/icons/depleted-uranium-fuel-cell.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "nuclear", order = "nullius-ec", stack_size = 20 @@ -8074,14 +8299,16 @@ data:extend({ {type="item", name="nullius-uranium", amount=5}, {type="item", name="nullius-enriched-uranium", amount=1} }, - result = "nullius-fission-cell" + results = { + {type = "item", name = "nullius-fission-cell", amount = 1} + } }, { type = "recipe", name = "nullius-fission-recycling", - icon = "__base__/graphics/icons/used-up-uranium-fuel-cell.png", + icon = "__base__/graphics/icons/depleted-uranium-fuel-cell.png", icon_size = 64, - icon_mipmaps = 4, + enabled = false, show_amount_in_title = false, always_show_products = true, @@ -8142,7 +8369,37 @@ data:extend({ {type="item", name="nullius-sensor-2", amount=1}, {type="item", name="nullius-battery-2", amount=2} }, - result = "nullius-antimatter-trap" + results = { + {type = "item", name = "nullius-antimatter-trap", amount = 1} + } + }, + { + type = "item", + name = "nullius-red-wire", + icon = "__base__/graphics/icons/shortcut-toolbar/mip/new-red-wire-x56.png", + icon_size = 56, + flags = {}, + auto_recycle = false, + subgroup = "electronic-intermediate", + color_hint = { text = "R" }, + inventory_move_sound = data.raw["item"]["red-wire"].inventory_move_sound, + pick_sound = data.raw["item"]["red-wire"].pick_sound, + drop_sound = data.raw["item"]["red-wire"].drop_sound, + stack_size = 50 + }, + { + type = "item", + name = "nullius-green-wire", + icon = "__base__/graphics/icons/shortcut-toolbar/mip/new-green-wire-x56.png", + icon_size = 56, + flags = {}, + auto_recycle = false, + subgroup = "electronic-intermediate", + color_hint = { text = "G" }, + inventory_move_sound = data.raw["item"]["green-wire"].inventory_move_sound, + pick_sound = data.raw["item"]["green-wire"].pick_sound, + drop_sound = data.raw["item"]["green-wire"].drop_sound, + stack_size = 50 }, }) diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index 0bff417..bd30c35 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -16,7 +16,7 @@ data:extend({ place_as_tile = { result = "landfill", condition_size = 1, - condition = { "ground-tile" } + condition = { layers = {ground_tile = true}} } }, { @@ -30,7 +30,7 @@ data:extend({ place_as_tile = { result = "nullius-land-fill-sand", condition_size = 1, - condition = { "ground-tile" } + condition = { layers = {ground_tile = true}} } }, { @@ -44,7 +44,7 @@ data:extend({ place_as_tile = { result = "nullius-land-fill-bauxite", condition_size = 1, - condition = { "ground-tile" } + condition = { layers = {ground_tile = true}} } }, { @@ -58,7 +58,7 @@ data:extend({ place_as_tile = { result = "nullius-land-fill-iron", condition_size = 1, - condition = { "ground-tile" } + condition = { layers = {ground_tile = true}} } }, { @@ -72,7 +72,7 @@ data:extend({ place_as_tile = { result = "nullius-land-fill-limestone", condition_size = 1, - condition = { "ground-tile" } + condition = { layers = {ground_tile = true}} } }, @@ -91,8 +91,9 @@ data:extend({ {"nullius-gravel", 5}, {"nullius-sand", 1} }, - result = "nullius-land-fill-gravel", - result_count = 2 + results = { + {type="item", name="nullius-land-fill-gravel", amount = 2} + } }, { type = "recipe", @@ -110,7 +111,9 @@ data:extend({ {"nullius-box-gravel", 5}, {"nullius-box-sand", 1} }, - result = "nullius-box-land-fill-gravel" + results = { + {type="item", name="nullius-box-land-fill-gravel", amount = 1} + } }, { type = "recipe", @@ -127,8 +130,9 @@ data:extend({ {"nullius-sand", 10}, {"nullius-gravel", 2} }, - result = "nullius-land-fill-sand", - result_count = 4 + results = { + {type="item", name="nullius-land-fill-sand", amount = 4} + } }, { type = "recipe", @@ -146,7 +150,9 @@ data:extend({ {"nullius-box-sand", 5}, {"nullius-box-gravel", 1} }, - result = "nullius-box-land-fill-sand" + results = { + {type="item", name="nullius-box-land-fill-sand", amount = 1} + } }, { type = "recipe", @@ -163,8 +169,9 @@ data:extend({ {"nullius-crushed-bauxite", 15}, {"nullius-gravel", 5} }, - result = "nullius-land-fill-bauxite", - result_count = 10 + results = { + {type="item", name="nullius-land-fill-bauxite", amount = 10} + } }, { type = "recipe", @@ -180,8 +187,9 @@ data:extend({ {"nullius-crushed-iron-ore", 4}, {"nullius-sand", 1} }, - result = "nullius-land-fill-iron", - result_count = 2 + results = { + {type="item", name="nullius-land-fill-iron", amount = 2} + } }, { type = "recipe", @@ -196,8 +204,9 @@ data:extend({ ingredients = { {"nullius-crushed-limestone", 25} }, - result = "nullius-land-fill-limestone", - result_count = 10 + results = { + {type="item", name="nullius-land-fill-limestone", amount = 10} + } }, { @@ -212,7 +221,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-12, -12} } @@ -228,8 +237,9 @@ data:extend({ {"nullius-gravel", 10}, {"concrete", 15} }, - result = "nullius-land-fill-gravel", - result_count = 20 + results = { + {type="item", name="nullius-land-fill-gravel", amount = 20} + } }, { type = "recipe", @@ -249,7 +259,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.18, shift = {-11, -11} } @@ -265,8 +275,9 @@ data:extend({ {"nullius-box-gravel", 4}, {"nullius-box-concrete", 3} }, - result = "nullius-box-land-fill-gravel", - result_count = 4 + results = { + {type="item", name="nullius-box-land-fill-gravel", amount = 4} + } }, { @@ -281,7 +292,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-12, -12} } @@ -297,8 +308,9 @@ data:extend({ {"nullius-sand", 10}, {"nullius-yellow-concrete", 10} }, - result = "nullius-land-fill-sand", - result_count = 20 + results = { + {type="item", name="nullius-land-fill-sand", amount = 20} + } }, { type = "recipe", @@ -318,7 +330,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.18, shift = {-11, -11} } @@ -334,8 +346,9 @@ data:extend({ {"nullius-box-sand", 2}, {"nullius-box-yellow-concrete", 1} }, - result = "nullius-box-land-fill-sand", - result_count = 2 + results = { + {type="item", name="nullius-box-land-fill-sand", amount = 2} + } }, { @@ -350,7 +363,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-12, -12} } @@ -366,8 +379,9 @@ data:extend({ {"nullius-crushed-bauxite", 3}, {"nullius-brown-concrete", 5} }, - result = "nullius-land-fill-bauxite", - result_count = 10 + results = { + {type="item", name="nullius-land-fill-bauxite", amount = 10} + } }, { type = "recipe", @@ -384,8 +398,9 @@ data:extend({ {"nullius-box-crushed-bauxite", 6}, {"nullius-box-brown-concrete", 5} }, - result = "nullius-box-land-fill-bauxite", - result_count = 10 + results = { + {type="item", name="nullius-box-land-fill-bauxite", amount = 10} + } }, { @@ -400,7 +415,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-12, -12} } @@ -415,8 +430,9 @@ data:extend({ {"nullius-crushed-iron-ore", 4}, {"nullius-red-concrete", 5} }, - result = "nullius-land-fill-iron", - result_count = 10 + results = { + {type="item", name="nullius-land-fill-iron", amount = 10} + } }, { type = "recipe", @@ -432,8 +448,9 @@ data:extend({ {"nullius-box-crushed-iron-ore", 8}, {"nullius-box-red-concrete", 5} }, - result = "nullius-box-land-fill-iron", - result_count = 10 + results = { + {type="item", name="nullius-box-land-fill-iron", amount = 10} + } }, { @@ -448,7 +465,7 @@ data:extend({ { icon = "__base__/graphics/icons/concrete.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-12, -12} } @@ -463,8 +480,9 @@ data:extend({ {"nullius-crushed-limestone", 5}, {"refined-concrete", 4} }, - result = "nullius-land-fill-limestone", - result_count = 10 + results = { + {type="item", name="nullius-land-fill-limestone", amount = 10} + } }, { type = "recipe", @@ -480,8 +498,9 @@ data:extend({ {"nullius-box-crushed-limestone", 5}, {"nullius-box-reinforced-concrete", 2} }, - result = "nullius-box-land-fill-limestone", - result_count = 5 + results = { + {type="item", name="nullius-box-land-fill-limestone", amount = 5} + } }, { @@ -513,8 +532,9 @@ data:extend({ {type="item", name="nullius-land-fill-sand", amount=2}, {type="fluid", name="nullius-sludge", amount=30} }, - result = "nullius-land-fill-bauxite", - result_count = 10 + results = { + {type="item", name="nullius-land-fill-bauxite", amount = 10} + } }, { type = "recipe", @@ -550,8 +570,9 @@ data:extend({ {type="item", name="nullius-box-land-fill-sand", amount=2}, {type="fluid", name="nullius-sludge", amount=300} }, - result = "nullius-box-land-fill-bauxite", - result_count = 10 + results = { + {type="item", name="nullius-box-land-fill-bauxite", amount = 10} + } }, { type = "recipe", @@ -568,9 +589,9 @@ data:extend({ scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.225, shift = {-9, -10} } @@ -589,8 +610,9 @@ data:extend({ {type="item", name="nullius-box-mineral-dust", amount=15}, {type="fluid", name="nullius-freshwater", amount=400} }, - result = "nullius-box-land-fill-bauxite", - result_count = 8 + results = { + {type="item", name="nullius-box-land-fill-bauxite", amount = 8} + } }, { type = "recipe", @@ -609,7 +631,7 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.2, shift = {-9, -9} } @@ -628,8 +650,9 @@ data:extend({ {type="item", name="nullius-box-rubber", amount=1}, {type="item", name="nullius-box-graphite", amount=30} }, - result = "nullius-box-land-fill-gravel", - result_count = 12 + results = { + {type="item", name="nullius-box-land-fill-gravel", amount = 12} + } }, { type = "recipe", @@ -641,7 +664,7 @@ data:extend({ icon_size = 64 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.41, shift = {-7, -7} @@ -682,7 +705,7 @@ data:extend({ scale = 0.45 }, { - icon = "__base__/graphics/decorative/brown-asterisk/hr-brown-asterisk-11.png", + icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", icon_size = 54, scale = 0.37, shift = {-6, -6} @@ -802,7 +825,7 @@ data:extend({ scale = 0.45 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/chlorine.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", icon_size = 72, scale = 0.2, shift = {-9, -10} @@ -823,8 +846,9 @@ data:extend({ {type="item", name="nullius-box-plastic", amount=1}, {type="fluid", name="nullius-chlorine", amount=5000} }, - result = "nullius-box-land-fill-sand", - result_count = 8 + results = { + {type="item", name="nullius-box-land-fill-sand", amount = 8} + } }, { type = "recipe", @@ -862,8 +886,9 @@ data:extend({ {type="item", name="nullius-box-soda-ash", amount=2}, {type="item", name="nullius-box-acid-boric", amount=40} }, - result = "nullius-box-land-fill-iron", - result_count = 6 + results = { + {type="item", name="nullius-box-land-fill-iron", amount = 6} + } }, { @@ -981,7 +1006,7 @@ data:extend({ { type = "tile", name = "nullius-land-fill-sand", - collision_mask = {"ground-tile"}, + collision_mask = { layers = {ground_tile = true}}, layer = 40, map_color={r=158, g=129, b=81}, vehicle_friction_modifier = 1.4, @@ -989,8 +1014,9 @@ data:extend({ transitions = transitions.cliff_transitions(), transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, - pollution_absorption_per_second = 0, + absorptions_per_second = {pollution = 0}, variants = { + empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/sand.png", count = 8 @@ -999,7 +1025,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-tan-sand-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-tan-sand-2.png", size = 1, weights = { 0.085, 0.085, 0.085, 0.085, 0.087, 0.085, 0.065, 0.085, 0.045, 0.045, 0.045, 0.045, 0.005, 0.025, 0.045, 0.045 @@ -1009,7 +1035,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-tan-sand-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-tan-sand-2.png", probability = 1, size = 2, weights = { @@ -1020,7 +1046,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-tan-sand-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-tan-sand-2.png", probability = 0.1, size = 4, weights = { @@ -1039,7 +1065,7 @@ data:extend({ { type = "tile", name = "nullius-land-fill-bauxite", - collision_mask = {"ground-tile"}, + collision_mask = { layers = {ground_tile = true}}, layer = 39, map_color={r=121, g=103, b=65}, vehicle_friction_modifier = 1.2, @@ -1047,8 +1073,9 @@ data:extend({ transitions = transitions.cliff_transitions(), transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, - pollution_absorption_per_second = 0, + absorptions_per_second = {pollution = 0}, variants = { + empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/dirt.png", count = 8 @@ -1057,7 +1084,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-tan-dirt-5.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-tan-dirt-5.png", size = 1, weights = { 0.085, 0.085, 0.085, 0.085, 0.087, 0.085, 0.065, 0.085, 0.045, 0.045, 0.045, 0.045, 0.005, 0.025, 0.045, 0.045 @@ -1067,7 +1094,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-tan-dirt-5.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-tan-dirt-5.png", probability = 1, size = 2, weights = { @@ -1078,7 +1105,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-tan-dirt-5.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-tan-dirt-5.png", probability = 0.1, size = 4, weights = { @@ -1097,7 +1124,7 @@ data:extend({ { type = "tile", name = "nullius-land-fill-iron", - collision_mask = {"ground-tile"}, + collision_mask = { layers = {ground_tile = true}}, layer = 36, map_color={r=119, g=73, b=68}, vehicle_friction_modifier = 1.1, @@ -1105,8 +1132,9 @@ data:extend({ transitions = transitions.cliff_transitions(), transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, - pollution_absorption_per_second = 0, + absorptions_per_second = {pollution = 0}, variants = { + empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/iron.png", count = 8 @@ -1115,7 +1143,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-red-dirt-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-red-dirt-2.png", size = 1, weights = { 0.085, 0.085, 0.085, 0.085, 0.087, 0.085, 0.065, 0.085, 0.045, 0.045, 0.045, 0.045, 0.005, 0.025, 0.045, 0.045 @@ -1125,7 +1153,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-red-dirt-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-red-dirt-2.png", probability = 1, size = 2, weights = { @@ -1136,7 +1164,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-red-dirt-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-red-dirt-2.png", probability = 0.1, size = 4, weights = { @@ -1155,7 +1183,7 @@ data:extend({ { type = "tile", name = "nullius-land-fill-limestone", - collision_mask = {"ground-tile"}, + collision_mask = { layers = {ground_tile = true}}, layer = 38, map_color={r=161, g=140, b=119}, vehicle_friction_modifier = 1, @@ -1163,8 +1191,9 @@ data:extend({ transitions = transitions.cliff_transitions(), transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, - pollution_absorption_per_second = 0, + absorptions_per_second = {pollution = 0}, variants = { + empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/limestone.png", count = 8 @@ -1173,7 +1202,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-beige-sand-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-beige-sand-2.png", size = 1, weights = { 0.085, 0.085, 0.085, 0.085, 0.087, 0.085, 0.065, 0.085, 0.045, 0.045, 0.045, 0.045, 0.005, 0.025, 0.045, 0.045 @@ -1183,7 +1212,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-beige-sand-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-beige-sand-2.png", probability = 1, size = 2, weights = { @@ -1194,7 +1223,7 @@ data:extend({ { count = 16, line_length = 16, - picture = "__alien-biomes__/graphics/terrain/sr/mineral-beige-sand-2.png", + picture = "__alien-biomes-graphics__/graphics/terrain/mineral-beige-sand-2.png", probability = 0.1, size = 4, weights = { @@ -1217,7 +1246,7 @@ data:extend({ localised_name = {"item-name.nullius-white-concrete"}, order = "nullius-ccw", minable = {mining_time = 0.1, result = "nullius-white-concrete"}, - collision_mask = {"ground-tile"}, + collision_mask = { layers = {ground_tile = true}}, walking_speed_modifier = 1.6, vehicle_friction_modifier = 0.5, layer = 66, @@ -1232,10 +1261,11 @@ data:extend({ walking_sound = data.raw.tile["refined-concrete"].walking_sound, build_sound = data.raw.tile["refined-concrete"].build_sound, scorch_mark_color = data.raw.tile["refined-concrete"].scorch_mark_color, - pollution_absorption_per_second = data.raw.tile["refined-concrete"].pollution_absorption_per_second, + absorptions_per_second = data.raw.tile["refined-concrete"].absorptions_per_second, trigger_effect = data.raw.tile["refined-concrete"].trigger_effect, variants = { + empty_transitions = true, material_background = { picture = ENTITYPATH.."concrete/white-concrete.png", count = 8, diff --git a/nullius/prototypes/item/module.lua b/nullius/prototypes/item/module.lua index 3381470..a2fe94e 100644 --- a/nullius/prototypes/item/module.lua +++ b/nullius/prototypes/item/module.lua @@ -6,15 +6,15 @@ data:extend({ { type = "module", name = "nullius-efficiency-module-1", - icon = "__base__/graphics/icons/effectivity-module.png", + icon = "__base__/graphics/icons/efficiency-module.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-2", category = "efficiency", tier = 1, order = "nullius-bb", stack_size = 50, - effect = { consumption = {bonus = -0.5} }, + effect = { consumption = -0.5 }, beacon_tint = { primary = {r = 0, g = 1, b = 0, a = 1.000}, secondary = {r = 0.370, g = 1.000, b = 0.370, a = 1.000} @@ -25,15 +25,15 @@ data:extend({ { type = "module", name = "nullius-efficiency-module-2", - icon = "__base__/graphics/icons/effectivity-module-2.png", + icon = "__base__/graphics/icons/efficiency-module-2.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-2", category = "efficiency", tier = 2, order = "nullius-bc", stack_size = 50, - effect = { consumption = {bonus = -0.8} }, + effect = { consumption = -0.8 }, beacon_tint = { primary = {r = 0, g = 1, b = 0, a = 1.000}, secondary = {r = 0.370, g = 1.000, b = 0.370, a = 1.000} @@ -44,15 +44,15 @@ data:extend({ { type = "module", name = "nullius-efficiency-module-3", - icon = "__base__/graphics/icons/effectivity-module-3.png", + icon = "__base__/graphics/icons/efficiency-module-3.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-2", category = "efficiency", tier = 3, order = "nullius-bd", stack_size = 50, - effect = { consumption = {bonus = -1.2} }, + effect = { consumption = -1.2 }, beacon_tint = { primary = {r = 0, g = 1, b = 0, a = 1.000}, secondary = {r = 0.370, g = 1.000, b = 0.370, a = 1.000} @@ -70,7 +70,7 @@ data:extend({ tier = 0, order = "nullius-db", stack_size = 50, - effect = { speed = {bonus = 0.2}, consumption = {bonus = 0.25} }, + effect = { speed = 0.2, consumption = 0.25 }, beacon_tint = { primary = {r = 0.45, g = 0.3, b = 0.75, a = 1.000}, secondary = {r = 0.56, g = 0.42, b = 0.7, a = 1.000} @@ -88,7 +88,7 @@ data:extend({ tier = 1, order = "nullius-dc", stack_size = 50, - effect = { speed = {bonus = 0.3}, consumption = {bonus = 0.4} }, + effect = { speed = 0.3, consumption = 0.4 }, beacon_tint = { primary = {r = 0.45, g = 0.3, b = 0.75, a = 1.000}, secondary = {r = 0.8, g = 0.6, b = 1, a = 1.000} @@ -106,7 +106,7 @@ data:extend({ tier = 2, order = "nullius-dd", stack_size = 50, - effect = { speed = {bonus = 0.4}, consumption = {bonus = 0.6} }, + effect = { speed = 0.4, consumption = 0.6 }, beacon_tint = { primary = {r = 0.45, g = 0.3, b = 0.75, a = 1.000}, secondary = {r = 0.8, g = 0.6, b = 1, a = 1.000} @@ -124,7 +124,7 @@ data:extend({ tier = 3, order = "nullius-de", stack_size = 50, - effect = { speed = {bonus = 0.5}, consumption = {bonus = 0.8} }, + effect = { speed = 0.5, consumption = 0.8 }, beacon_tint = { primary = {r = 0.45, g = 0.3, b = 0.75, a = 1.000}, secondary = {r = 0.8, g = 0.6, b = 1, a = 1.000} @@ -142,7 +142,7 @@ data:extend({ tier = 0, order = "nullius-eb", stack_size = 50, - effect = { speed = {bonus = 0.15} }, + effect = { speed = 0.15 }, beacon_tint = { primary = {r = 0.441, g = 0.714, b = 1.000, a = 1.000}, secondary = {r = 0.272, g = 0.683, b = 0.7, a = 1.000} @@ -155,13 +155,13 @@ data:extend({ name = "nullius-speed-module-2", icon = "__base__/graphics/icons/speed-module.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-1", category = "speed", tier = 1, order = "nullius-ec", stack_size = 50, - effect = { speed = {bonus = 0.2}}, + effect = { speed = 0.2 }, beacon_tint = { primary = {r = 0.441, g = 0.714, b = 1.000, a = 1.000}, secondary = {r = 0.388, g = 0.976, b = 1.000, a = 1.000} @@ -174,13 +174,13 @@ data:extend({ name = "nullius-speed-module-3", icon = "__base__/graphics/icons/speed-module-2.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-1", category = "speed", tier = 2, order = "nullius-ed", stack_size = 50, - effect = { speed = {bonus = 0.3}, consumption = {bonus = 0.05} }, + effect = { speed = 0.3, consumption = 0.05 }, beacon_tint = { primary = {r = 0.441, g = 0.714, b = 1.000, a = 1.000}, secondary = {r = 0.388, g = 0.976, b = 1.000, a = 1.000} @@ -193,13 +193,13 @@ data:extend({ name = "nullius-speed-module-4", icon = "__base__/graphics/icons/speed-module-3.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-1", category = "speed", tier = 3, order = "nullius-ee", stack_size = 50, - effect = { speed = {bonus = 0.4}, consumption = {bonus = 0.1} }, + effect = { speed = 0.4, consumption = 0.1 }, beacon_tint = { primary = {r = 0.441, g = 0.714, b = 1.000, a = 1.000}, secondary = {r = 0.388, g = 0.976, b = 1.000, a = 1.000} @@ -217,7 +217,7 @@ data:extend({ tier = 0, order = "nullius-cb", stack_size = 50, - effect = { productivity = {bonus = 0.03}, speed = {bonus = -0.05}, consumption = {bonus = 0.1} }, + effect = { productivity = 0.03, speed = -0.05, consumption = 0.1 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -231,7 +231,7 @@ data:extend({ tier = 1, order = "nullius-cc", stack_size = 50, - effect = { productivity = {bonus = 0.05}, speed = {bonus = -0.15}, consumption = {bonus = 0.4} }, + effect = { productivity = 0.05, speed = -0.15, consumption = 0.4 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -245,7 +245,7 @@ data:extend({ tier = 2, order = "nullius-cd", stack_size = 50, - effect = { productivity = {bonus = 0.07}, speed = {bonus = -0.25}, consumption = {bonus = 0.7} }, + effect = { productivity = 0.07, speed = -0.25, consumption = 0.7 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -259,7 +259,7 @@ data:extend({ tier = 3, order = "nullius-ce", stack_size = 50, - effect = { productivity = {bonus = 0.08}, speed = {bonus = -0.4}, consumption = {bonus = 1} }, + effect = { productivity = 0.08, speed = -0.4, consumption = 1 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -268,13 +268,13 @@ data:extend({ name = "nullius-productivity-module-1", icon = "__base__/graphics/icons/productivity-module.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-2", category = "productivity", tier = 1, order = "nullius-db", stack_size = 50, - effect = { productivity = {bonus = 0.04} }, + effect = { productivity = 0.04 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -283,13 +283,13 @@ data:extend({ name = "nullius-productivity-module-2", icon = "__base__/graphics/icons/productivity-module-2.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-2", category = "productivity", tier = 2, order = "nullius-dc", stack_size = 50, - effect = { productivity = {bonus = 0.06}, consumption = {bonus = 0.05} }, + effect = { productivity = 0.06, consumption = 0.05 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -298,13 +298,13 @@ data:extend({ name = "nullius-productivity-module-3", icon = "__base__/graphics/icons/productivity-module-3.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "module-2", category = "productivity", tier = 3, order = "nullius-dd", stack_size = 50, - effect = { productivity = {bonus = 0.07}, consumption = {bonus = 0.1} }, + effect = { productivity = 0.07, consumption = 0.1 }, limitation = {}, limitation_message_key = "production-module-not-usable" }, @@ -320,9 +320,11 @@ data:extend({ ingredients = { {type="item", name="decider-combinator", amount=2}, {type="item", name="constant-combinator", amount=2}, - {type="item", name="green-wire", amount=3} + {type="item", name="nullius-green-wire", amount=3} }, - result = "nullius-efficiency-module-1" + results = { + {type="item", name="nullius-efficiency-module-1", amount = 1} + } }, { type = "recipe", @@ -338,7 +340,9 @@ data:extend({ {type="item", name="nullius-box-memory-circuit", amount=2}, {type="item", name="nullius-box-green-wire", amount=3} }, - result = "nullius-box-efficiency-module-1" + results = { + {type="item", name="nullius-box-efficiency-module-1", amount = 1} + } }, { type = "recipe", @@ -351,9 +355,11 @@ data:extend({ ingredients = { {type="item", name="arithmetic-combinator", amount=2}, {type="item", name="decider-combinator", amount=1}, - {type="item", name="green-wire", amount=3} + {type="item", name="nullius-green-wire", amount=3} }, - result = "nullius-haste-module-1" + results = { + {type="item", name="nullius-haste-module-1", amount = 1} + } }, { type = "recipe", @@ -369,7 +375,9 @@ data:extend({ {type="item", name="nullius-box-logic-circuit", amount=1}, {type="item", name="nullius-box-green-wire", amount=3} }, - result = "nullius-box-haste-module-1" + results = { + {type="item", name="nullius-box-haste-module-1", amount = 1} + } }, { type = "recipe", @@ -383,8 +391,9 @@ data:extend({ {type="item", name="nullius-haste-module-1", amount=2}, {type="item", name="nullius-efficiency-module-1", amount=1} }, - result = "nullius-speed-module-1", - result_count = 2 + results = { + {type="item", name="nullius-speed-module-1", amount = 2} + } }, { type = "recipe", @@ -399,8 +408,9 @@ data:extend({ {type="item", name="nullius-box-haste-module-1", amount=2}, {type="item", name="nullius-box-efficiency-module-1", amount=1} }, - result = "nullius-box-speed-module-1", - result_count = 2 + results = { + {type="item", name="nullius-box-speed-module-1", amount = 2} + } }, { type = "recipe", @@ -414,8 +424,9 @@ data:extend({ {type="item", name="nullius-efficiency-module-1", amount=2}, {type="item", name="nullius-haste-module-1", amount=1} }, - result = "nullius-yield-module-1", - result_count = 2 + results = { + {type="item", name="nullius-yield-module-1", amount = 2} + } }, { type = "recipe", @@ -430,8 +441,9 @@ data:extend({ {type="item", name="nullius-box-efficiency-module-1", amount=2}, {type="item", name="nullius-box-haste-module-1", amount=1} }, - result = "nullius-box-yield-module-1", - result_count = 2 + results = { + {type="item", name="nullius-box-yield-module-1", amount = 2} + } }, { @@ -446,7 +458,9 @@ data:extend({ {type="item", name="nullius-sensor-1", amount=2}, {type="item", name="nullius-battery-1", amount=1} }, - result = "nullius-efficiency-module-2" + results = { + {type="item", name="nullius-efficiency-module-2", amount = 1} + } }, { type = "recipe", @@ -463,7 +477,9 @@ data:extend({ {type="item", name="nullius-box-sensor-1", amount=2}, {type="item", name="nullius-box-battery-1", amount=1} }, - result = "nullius-box-efficiency-module-2" + results = { + {type="item", name="nullius-box-efficiency-module-2", amount = 1} + } }, { type = "recipe", @@ -479,7 +495,9 @@ data:extend({ {type="item", name="nullius-sensor-1", amount=1}, {type="item", name="nullius-optical-cable", amount=1} }, - result = "nullius-haste-module-2" + results = { + {type="item", name="nullius-haste-module-2", amount = 1} + } }, { type = "recipe", @@ -496,7 +514,9 @@ data:extend({ {type="item", name="nullius-box-sensor-1", amount=1}, {type="item", name="nullius-box-optical-cable", amount=1} }, - result = "nullius-box-haste-module-2" + results = { + {type="item", name="nullius-box-haste-module-2", amount = 1} + } }, { type = "recipe", @@ -510,7 +530,9 @@ data:extend({ {type="item", name="nullius-yield-module-1", amount=1}, {type="item", name="nullius-efficiency-module-2", amount=1} }, - result = "nullius-yield-module-2" + results = { + {type="item", name="nullius-yield-module-2", amount = 1} + } }, { type = "recipe", @@ -525,7 +547,9 @@ data:extend({ {type="item", name="nullius-box-yield-module-1", amount=1}, {type="item", name="nullius-box-efficiency-module-2", amount=1} }, - result = "nullius-box-yield-module-2" + results = { + {type="item", name="nullius-box-yield-module-2", amount = 1} + } }, { type = "recipe", @@ -539,7 +563,9 @@ data:extend({ {type="item", name="nullius-speed-module-1", amount=1}, {type="item", name="nullius-haste-module-2", amount=1} }, - result = "nullius-speed-module-2" + results = { + {type="item", name="nullius-speed-module-2", amount = 1} + } }, { type = "recipe", @@ -554,7 +580,9 @@ data:extend({ {type="item", name="nullius-box-speed-module-1", amount=1}, {type="item", name="nullius-box-haste-module-2", amount=1} }, - result = "nullius-box-speed-module-2" + results = { + {type="item", name="nullius-box-speed-module-2", amount = 1} + } }, { type = "recipe", @@ -568,8 +596,9 @@ data:extend({ {type="item", name="nullius-yield-module-2", amount=2}, {type="item", name="nullius-speed-module-2", amount=1} }, - result = "nullius-productivity-module-1", - result_count = 3 + results = { + {type="item", name="nullius-productivity-module-1", amount = 3} + } }, { type = "recipe", @@ -584,8 +613,9 @@ data:extend({ {type="item", name="nullius-box-yield-module-2", amount=2}, {type="item", name="nullius-box-speed-module-2", amount=1} }, - result = "nullius-box-productivity-module-1", - result_count = 3 + results = { + {type="item", name="nullius-box-productivity-module-1", amount = 3} + } }, { @@ -604,8 +634,9 @@ data:extend({ {type="item", name="nullius-transformer", amount=1}, {type="item", name="power-switch", amount=1} }, - result = "nullius-efficiency-module-3", - result_count = 2 + results = { + {type="item", name="nullius-efficiency-module-3", amount = 2} + } }, { type = "recipe", @@ -624,8 +655,9 @@ data:extend({ {type="item", name="nullius-box-transformer", amount=1}, {type="item", name="nullius-box-power-switch", amount=1} }, - result = "nullius-box-efficiency-module-3", - result_count = 2 + results = { + {type="item", name="nullius-box-efficiency-module-3", amount = 2} + } }, { type = "recipe", @@ -642,7 +674,9 @@ data:extend({ {type="item", name="nullius-sensor-2", amount=1}, {type="item", name="nullius-heat-pipe-3", amount=1} }, - result = "nullius-haste-module-3" + results = { + {type="item", name="nullius-haste-module-3", amount = 1} + } }, { type = "recipe", @@ -660,7 +694,9 @@ data:extend({ {type="item", name="nullius-box-sensor-2", amount=1}, {type="item", name="nullius-box-heat-pipe-3", amount=1} }, - result = "nullius-box-haste-module-3" + results = { + {type="item", name="nullius-box-haste-module-3", amount = 1} + } }, { type = "recipe", @@ -675,7 +711,9 @@ data:extend({ {type="item", name="nullius-yield-module-2", amount=1}, {type="item", name="nullius-productivity-module-1", amount=1} }, - result = "nullius-yield-module-3" + results = { + {type="item", name="nullius-yield-module-3", amount = 1} + } }, { type = "recipe", @@ -691,7 +729,9 @@ data:extend({ {type="item", name="nullius-box-yield-module-2", amount=1}, {type="item", name="nullius-box-productivity-module-1", amount=1} }, - result = "nullius-box-yield-module-3" + results = { + {type="item", name="nullius-box-yield-module-3", amount = 1} + } }, { type = "recipe", @@ -706,7 +746,9 @@ data:extend({ {type="item", name="nullius-speed-module-2", amount=1}, {type="item", name="nullius-efficiency-module-2", amount=1} }, - result = "nullius-speed-module-3" + results = { + {type="item", name="nullius-speed-module-3", amount = 1} + } }, { type = "recipe", @@ -722,7 +764,9 @@ data:extend({ {type="item", name="nullius-box-speed-module-2", amount=1}, {type="item", name="nullius-box-efficiency-module-2", amount=1} }, - result = "nullius-box-speed-module-3" + results = { + {type="item", name="nullius-box-speed-module-3", amount = 1} + } }, { type = "recipe", @@ -737,8 +781,9 @@ data:extend({ {type="item", name="nullius-yield-module-3", amount=2}, {type="item", name="nullius-speed-module-3", amount=1} }, - result = "nullius-productivity-module-2", - result_count = 4 + results = { + {type="item", name="nullius-productivity-module-2", amount = 4} + } }, { type = "recipe", @@ -754,8 +799,9 @@ data:extend({ {type="item", name="nullius-box-yield-module-3", amount=2}, {type="item", name="nullius-box-speed-module-3", amount=1} }, - result = "nullius-box-productivity-module-2", - result_count = 4 + results = { + {type="item", name="nullius-box-productivity-module-2", amount = 4} + } }, { @@ -773,7 +819,9 @@ data:extend({ {type="item", name="nullius-copper-wire", amount=8}, {type="item", name="nullius-electrical-pack", amount=3} }, - result = "nullius-haste-module-4" + results = { + {type="item", name="nullius-haste-module-4", amount = 1} + } }, { type = "recipe", @@ -791,7 +839,9 @@ data:extend({ {type="item", name="nullius-box-copper-wire", amount=8}, {type="item", name="nullius-box-electrical-pack", amount=3} }, - result = "nullius-box-haste-module-4" + results = { + {type="item", name="nullius-box-haste-module-4", amount = 1} + } }, { type = "recipe", @@ -806,7 +856,9 @@ data:extend({ {type="item", name="nullius-haste-module-4", amount=1}, {type="item", name="nullius-efficiency-module-3", amount=1} }, - result = "nullius-speed-module-4" + results = { + {type="item", name="nullius-speed-module-4", amount = 1} + } }, { type = "recipe", @@ -822,7 +874,9 @@ data:extend({ {type="item", name="nullius-box-haste-module-4", amount=1}, {type="item", name="nullius-box-efficiency-module-3", amount=1} }, - result = "nullius-box-speed-module-4" + results = { + {type="item", name="nullius-box-speed-module-4", amount = 1} + } }, { type = "recipe", @@ -837,8 +891,9 @@ data:extend({ {type="item", name="nullius-speed-module-4", amount=2}, {type="item", name="nullius-yield-module-3", amount=1} }, - result = "nullius-productivity-module-3", - result_count = 3 + results = { + {type="item", name="nullius-productivity-module-3", amount = 3} + } }, { type = "recipe", @@ -854,8 +909,9 @@ data:extend({ {type="item", name="nullius-box-speed-module-4", amount=2}, {type="item", name="nullius-box-yield-module-3", amount=1} }, - result = "nullius-box-productivity-module-3", - result_count = 3 + results = { + {type="item", name="nullius-box-productivity-module-3", amount = 3} + } }, { type = "recipe", @@ -869,8 +925,9 @@ data:extend({ {type="item", name="nullius-productivity-module-3", amount=3}, {type="item", name="nullius-electrical-pack", amount=5} }, - result = "nullius-yield-module-4", - result_count = 2 + results = { + {type="item", name="nullius-yield-module-4", amount = 2} + } }, { type = "recipe", @@ -885,8 +942,9 @@ data:extend({ {type="item", name="nullius-box-productivity-module-3", amount=3}, {type="item", name="nullius-box-electrical-pack", amount=5} }, - result = "nullius-box-yield-module-4", - result_count = 2 + results = { + {type="item", name="nullius-box-yield-module-4", amount = 2} + } }, { @@ -1021,7 +1079,9 @@ data:extend({ {type="item", name="nullius-capacitor", amount=1}, {type="item", name="nullius-aluminum-sheet", amount=1} }, - result = "nullius-coprocessor-speed-1" + results = { + {type="item", name="nullius-coprocessor-speed-1", amount = 1} + } }, { type = "recipe", @@ -1034,7 +1094,9 @@ data:extend({ {type="item", name="nullius-capacitor", amount=2}, {type="item", name="nullius-aluminum-sheet", amount=1} }, - result = "nullius-coprocessor-efficiency-1" + results = { + {type="item", name="nullius-coprocessor-efficiency-1", amount = 1} + } }, { type = "recipe", @@ -1047,7 +1109,9 @@ data:extend({ {type="item", name="nullius-capacitor", amount=1}, {type="item", name="nullius-aluminum-sheet", amount=2} }, - result = "nullius-coprocessor-productivity-1" + results = { + {type="item", name="nullius-coprocessor-productivity-1", amount = 1} + } }, { type = "recipe", @@ -1061,7 +1125,9 @@ data:extend({ {type="item", name="nullius-insulation", amount=1}, {type="item", name="nullius-titanium-sheet", amount=1} }, - result = "nullius-coprocessor-speed-2" + results = { + {type="item", name="nullius-coprocessor-speed-2", amount = 1} + } }, { type = "recipe", @@ -1075,7 +1141,9 @@ data:extend({ {type="item", name="nullius-insulation", amount=2}, {type="item", name="nullius-titanium-sheet", amount=1} }, - result = "nullius-coprocessor-efficiency-2" + results = { + {type="item", name="nullius-coprocessor-efficiency-2", amount = 1} + } }, { type = "recipe", @@ -1089,7 +1157,9 @@ data:extend({ {type="item", name="nullius-insulation", amount=1}, {type="item", name="nullius-titanium-sheet", amount=2} }, - result = "nullius-coprocessor-productivity-2" + results = { + {type="item", name="nullius-coprocessor-productivity-2", amount = 1} + } }, { type = "recipe", @@ -1103,7 +1173,9 @@ data:extend({ {type="item", name="nullius-battery-2", amount=1}, {type="item", name="nullius-small-cargo-pod-2", amount=1} }, - result = "nullius-coprocessor-speed-3" + results = { + {type="item", name="nullius-coprocessor-speed-3", amount = 1} + } }, { type = "recipe", @@ -1117,7 +1189,9 @@ data:extend({ {type="item", name="nullius-battery-2", amount=2}, {type="item", name="nullius-small-cargo-pod-2", amount=1} }, - result = "nullius-coprocessor-efficiency-3" + results = { + {type="item", name="nullius-coprocessor-efficiency-3", amount = 1} + } }, { type = "recipe", @@ -1131,7 +1205,9 @@ data:extend({ {type="item", name="nullius-battery-2", amount=1}, {type="item", name="nullius-small-cargo-pod-2", amount=2} }, - result = "nullius-coprocessor-productivity-3" + results = { + {type="item", name="nullius-coprocessor-productivity-3", amount = 1} + } }, { type = "recipe", @@ -1147,6 +1223,8 @@ data:extend({ {type="item", name="nullius-beacon-3", amount=1}, {type="item", name="nullius-antimatter-trap", amount=1} }, - result = "nullius-coprocessor-quantum" + results = { + {type="item", name="nullius-coprocessor-quantum", amount = 1} + } } }) diff --git a/nullius/prototypes/item/module_limitation.lua b/nullius/prototypes/item/module_limitation.lua index 32226c8..ec6273c 100644 --- a/nullius/prototypes/item/module_limitation.lua +++ b/nullius/prototypes/item/module_limitation.lua @@ -1,16 +1,6 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" -nullius_productivity_modules = { - "nullius-yield-module-1", - "nullius-yield-module-2", - "nullius-yield-module-3", - "nullius-yield-module-4", - "nullius-productivity-module-1", - "nullius-productivity-module-2", - "nullius-productivity-module-3" -} - nullius_non_productivity_categories = { ["nullius-electrolysis"] = true, ["nullius-gas-void"] = true, @@ -30,14 +20,12 @@ nullius_non_productivity_categories = { ["turbine-closed"] = true } - for _,recipe in pairs(data.raw.recipe) do if (((string.sub(recipe.name, 1, 8) == "nullius-") or ((recipe.order ~= nil) and (string.sub(recipe.order, 1, 8) == "nullius-"))) and (recipe.no_productivity ~= true) and (nullius_non_productivity_categories[recipe.category] ~= true)) then - for _,modname in pairs(nullius_productivity_modules) do - table.insert(data.raw.module[modname].limitation, recipe.name) - end + recipe.allow_productivity = true end + recipe.no_productivity = nil end diff --git a/nullius/prototypes/item/plumbing.lua b/nullius/prototypes/item/plumbing.lua index 7148e72..bc2f092 100644 --- a/nullius/prototypes/item/plumbing.lua +++ b/nullius/prototypes/item/plumbing.lua @@ -8,7 +8,7 @@ data:extend({ name = "nullius-pipe-2", icons = {{ icon = "__boblogistics__/graphics/icons/pipe/copper-tungsten-pipe.png", - icon_size = 32 + icon_size = 64 }}, subgroup = "pipes", order = "nullius-d", @@ -20,7 +20,7 @@ data:extend({ name = "nullius-pipe-3", icons = {{ icon = "__boblogistics__/graphics/icons/pipe/plastic-pipe.png", - icon_size = 32 + icon_size = 64 }}, subgroup = "pipes", order = "nullius-f", @@ -32,7 +32,7 @@ data:extend({ name = "nullius-pipe-4", icons = {{ icon = "__boblogistics__/graphics/icons/pipe/tungsten-pipe.png", - icon_size = 32 + icon_size = 64 }}, subgroup = "pipes", order = "nullius-h", @@ -44,7 +44,7 @@ data:extend({ name = "nullius-underground-pipe-2", icons = {{ icon = "__boblogistics__/graphics/icons/pipe/copper-tungsten-pipe-to-ground.png", - icon_size = 32 + icon_size = 64 }}, subgroup = "pipes", order = "nullius-e", @@ -56,7 +56,7 @@ data:extend({ name = "nullius-underground-pipe-3", icons = {{ icon = "__boblogistics__/graphics/icons/pipe/plastic-pipe-to-ground.png", - icon_size = 32 + icon_size = 64 }}, subgroup = "pipes", order = "nullius-g", @@ -68,7 +68,7 @@ data:extend({ name = "nullius-underground-pipe-4", icons = {{ icon = "__boblogistics__/graphics/icons/pipe/tungsten-pipe-to-ground.png", - icon_size = 32 + icon_size = 64 }}, subgroup = "pipes", order = "nullius-i", @@ -84,12 +84,12 @@ data:extend({ { icon = "__base__/graphics/icons/pipe.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {8, -9} } @@ -107,8 +107,9 @@ data:extend({ ingredients = { {"nullius-iron-rod", 1} }, - result = "pipe", - result_count = 3 + results = { + {type = "item", name = "pipe", amount = 3} + } }, { type = "recipe", @@ -122,13 +123,13 @@ data:extend({ { icon = "__base__/graphics/icons/pipe.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {7, -8} } @@ -146,12 +147,14 @@ data:extend({ ingredients = { {"nullius-box-iron-rod", 1} }, - result = "nullius-box-pipe-1", - result_count = 3 + results = { + {type = "item", name = "nullius-box-pipe-1", amount = 3} + } }, { type = "recipe", name = "nullius-underground-pipe-1", + localised_name = {"item-name.pipe-to-ground"}, enabled = false, always_show_made_in = true, always_show_products = true, @@ -163,8 +166,9 @@ data:extend({ {"pipe", 5}, {"nullius-sand", 2} }, - result = "pipe-to-ground", - result_count = 2 + results = { + {type = "item", name = "pipe-to-ground", amount = 2} + } }, { type = "recipe", @@ -180,8 +184,9 @@ data:extend({ {"nullius-box-pipe-1", 5}, {"nullius-box-sand", 2} }, - result = "nullius-box-underground-pipe-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-underground-pipe-1", amount = 2} + } }, { type = "recipe", @@ -191,12 +196,12 @@ data:extend({ { icon = "__base__/graphics/icons/pipe.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/stone-brick.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -10} } @@ -247,12 +252,12 @@ data:extend({ icons = { { icon = "__boblogistics__/graphics/icons/pipe/copper-tungsten-pipe.png", - icon_size = 32 + icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {8, -9} } @@ -270,8 +275,9 @@ data:extend({ ingredients = { {"nullius-steel-rod", 2} }, - result = "nullius-pipe-2", - result_count = 3 + results = { + {type = "item", name = "nullius-pipe-2", amount = 3} + } }, { type = "recipe", @@ -288,9 +294,9 @@ data:extend({ scale = 0.9 }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {7, -8} } @@ -308,8 +314,9 @@ data:extend({ ingredients = { {"nullius-box-steel-rod", 2} }, - result = "nullius-box-pipe-2", - result_count = 3 + results = { + {type = "item", name = "nullius-box-pipe-2", amount = 3} + } }, { type = "recipe", @@ -325,8 +332,9 @@ data:extend({ {"nullius-pipe-2", 8}, {"nullius-gravel", 3} }, - result = "nullius-underground-pipe-2", - result_count = 2 + results = { + {type = "item", name = "nullius-underground-pipe-2", amount = 2} + } }, { type = "recipe", @@ -342,8 +350,9 @@ data:extend({ {"nullius-box-pipe-2", 8}, {"nullius-box-gravel", 3} }, - result = "nullius-box-underground-pipe-2", - result_count = 2 + results = { + {type = "item", name = "nullius-box-underground-pipe-2", amount = 2} + } }, { type = "recipe", @@ -352,12 +361,12 @@ data:extend({ icons = { { icon = "__boblogistics__/graphics/icons/pipe/copper-tungsten-pipe.png", - icon_size = 32 + icon_size = 64 }, { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {9, -10} } @@ -374,7 +383,9 @@ data:extend({ ingredients = { {"nullius-plastic", 1} }, - result = "nullius-pipe-2" + results = { + {type = "item", name = "nullius-pipe-2", amount = 1} + } }, { type = "recipe", @@ -390,7 +401,9 @@ data:extend({ ingredients = { {"nullius-box-plastic", 1} }, - result = "nullius-box-pipe-2" + results = { + {type = "item", name = "nullius-box-pipe-2", amount = 1} + } }, { @@ -406,7 +419,9 @@ data:extend({ {type="item", name="nullius-fiberglass", amount=1}, {type="fluid", name="nullius-epoxy", amount=1, fluidbox_index=1} }, - result = "nullius-pipe-3" + results = { + {type = "item", name = "nullius-pipe-3", amount = 1} + } }, { type = "recipe", @@ -422,7 +437,9 @@ data:extend({ {type="item", name="nullius-box-fiberglass", amount=1}, {type="fluid", name="nullius-epoxy", amount=5, fluidbox_index=1} }, - result = "nullius-box-pipe-3" + results = { + {type = "item", name = "nullius-box-pipe-3", amount = 1} + } }, { type = "recipe", @@ -438,8 +455,9 @@ data:extend({ {"nullius-pipe-3", 10}, {"concrete", 4} }, - result = "nullius-underground-pipe-3", - result_count = 2 + results = { + {type = "item", name = "nullius-underground-pipe-3", amount = 2} + } }, { type = "recipe", @@ -455,8 +473,9 @@ data:extend({ {"nullius-box-pipe-3", 10}, {"nullius-box-concrete", 2} }, - result = "nullius-box-underground-pipe-3", - result_count = 2 + results = { + {type = "item", name = "nullius-box-underground-pipe-3", amount = 2} + } }, { @@ -476,8 +495,9 @@ data:extend({ {type="item", name="nullius-titanium-sheet", amount=4}, {type="item", name="nullius-graphene", amount=1} }, - result = "nullius-pipe-4", - result_count = 10 + results = { + {type = "item", name = "nullius-pipe-4", amount = 10} + } }, { type = "recipe", @@ -497,8 +517,9 @@ data:extend({ {type="item", name="nullius-box-titanium-sheet", amount=4}, {type="item", name="nullius-box-graphene", amount=1} }, - result = "nullius-box-pipe-4", - result_count = 10 + results = { + {type = "item", name = "nullius-box-pipe-4", amount = 10} + } }, { type = "recipe", @@ -513,8 +534,9 @@ data:extend({ {"nullius-pipe-4", 12}, {"refined-concrete", 6} }, - result = "nullius-underground-pipe-4", - result_count = 2 + results = { + {type = "item", name = "nullius-underground-pipe-4", amount = 2} + } }, { type = "recipe", @@ -530,8 +552,9 @@ data:extend({ {"nullius-box-pipe-4", 12}, {"nullius-box-reinforced-concrete", 3} }, - result = "nullius-box-underground-pipe-4", - result_count = 2 + results = { + {type = "item", name = "nullius-box-underground-pipe-4", amount = 2} + } }, { @@ -565,7 +588,9 @@ data:extend({ {"nullius-motor-1", 1}, {"nullius-one-way-valve", 1} }, - result = "nullius-pump-1" + results = { + {type = "item", name = "nullius-pump-1", amount = 1} + } }, { type = "recipe", @@ -579,7 +604,9 @@ data:extend({ {"nullius-box-motor-1", 1}, {"nullius-box-one-way-valve", 1} }, - result = "nullius-box-pump-1" + results = { + {type = "item", name = "nullius-box-pump-1", amount = 1} + } }, { type = "recipe", @@ -594,7 +621,9 @@ data:extend({ {"nullius-pipe-2", 2}, {"nullius-rubber", 1} }, - result = "nullius-pump-2" + results = { + {type = "item", name = "nullius-pump-2", amount = 1} + } }, { type = "recipe", @@ -610,11 +639,14 @@ data:extend({ {"nullius-box-pipe-2", 2}, {"nullius-box-rubber", 1} }, - result = "nullius-box-pump-2" + results = { + {type = "item", name = "nullius-box-pump-2", amount = 1} + } }, { type = "recipe", name = "nullius-pump-3", + localised_name = {"entity-name.nullius-pump-3"}, enabled = false, category = "medium-crafting", always_show_made_in = true, @@ -626,7 +658,9 @@ data:extend({ {"nullius-top-up-valve", 2}, {"power-switch", 1} }, - result = "pump" + results = { + {type = "item", name = "pump", amount = 1} + } }, { type = "recipe", @@ -643,14 +677,16 @@ data:extend({ {"nullius-box-top-up-valve", 2}, {"nullius-box-power-switch", 1} }, - result = "nullius-box-pump-3" + results = { + {type = "item", name = "nullius-box-pump-3", amount = 1} + } }, { type = "item", name = "nullius-small-pump-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/water-pump.png", + icon = "__angelsrefininggraphics__/graphics/icons/water-pump.png", icon_size = 48, tint = {0.75, 0.85, 0.95} }}, @@ -663,7 +699,7 @@ data:extend({ type = "item", name = "nullius-small-pump-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/water-pump.png", + icon = "__angelsrefininggraphics__/graphics/icons/water-pump.png", icon_size = 48, tint = {1, 1, 0.85} }}, @@ -685,8 +721,9 @@ data:extend({ {"nullius-pump-2", 1}, {"nullius-one-way-valve", 2} }, - result = "nullius-small-pump-1", - result_count = 2 + results = { + {type = "item", name = "nullius-small-pump-1", amount = 2} + } }, { type = "recipe", @@ -702,8 +739,9 @@ data:extend({ {"nullius-box-pump-2", 1}, {"nullius-box-one-way-valve", 2} }, - result = "nullius-box-small-pump-1", - result_count = 2 + results = { + {type = "item", name = "nullius-box-small-pump-1", amount = 2} + } }, { type = "recipe", @@ -718,8 +756,9 @@ data:extend({ {"nullius-small-pump-1", 2}, {"pump", 1} }, - result = "nullius-small-pump-2", - result_count = 2 + results = { + {type = "item", name = "nullius-small-pump-2", amount = 2} + } }, { type = "recipe", @@ -735,8 +774,9 @@ data:extend({ {"nullius-box-small-pump-1", 2}, {"nullius-box-pump-3", 1} }, - result = "nullius-box-small-pump-2", - result_count = 2 + results = { + {type = "item", name = "nullius-box-small-pump-2", amount = 2} + } }, { @@ -788,7 +828,9 @@ data:extend({ {"nullius-iron-rod", 2}, {"nullius-one-way-valve", 1} }, - result = "nullius-chimney-1" + results = { + {type = "item", name = "nullius-chimney-1", amount = 1} + } }, { type = "recipe", @@ -804,7 +846,9 @@ data:extend({ {"concrete", 10}, {"nullius-pump-2", 1} }, - result = "nullius-chimney-2" + results = { + {type = "item", name = "nullius-chimney-2", amount = 1} + } }, { type = "recipe", @@ -819,13 +863,15 @@ data:extend({ {"nullius-compressor-2", 1}, {"stone-wall", 4} }, - result = "nullius-chimney-3" + results = { + {type = "item", name = "nullius-chimney-3", amount = 1} + } }, { type = "item", name = "nullius-one-way-valve", - icon = "__angelspetrochem__/graphics/icons/valve-overflow.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-overflow.png", icon_size = 32, subgroup = "valves", order = "nullius-db", @@ -835,7 +881,7 @@ data:extend({ { type = "item", name = "nullius-priority-valve", - icon = "__angelspetrochem__/graphics/icons/valve-inspector.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-inspector.png", icon_size = 32, subgroup = "valves", order = "nullius-dc", @@ -845,7 +891,7 @@ data:extend({ { type = "item", name = "nullius-top-up-valve", - icon = "__angelspetrochem__/graphics/icons/valve-converter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-converter.png", icon_size = 32, subgroup = "valves", order = "nullius-dd", @@ -855,7 +901,7 @@ data:extend({ { type = "item", name = "nullius-relief-valve", - icon = "__angelspetrochem__/graphics/icons/valve-return.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-return.png", icon_size = 32, subgroup = "valves", order = "nullius-de", @@ -865,7 +911,7 @@ data:extend({ { type = "recipe", name = "nullius-one-way-valve-1", - localised_name = {"", {"entity-name.nullius-one-way-valve"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-one-way-valve"}, " ", tostring(1)}, enabled = false, category = "small-crafting", always_show_made_in = true, @@ -877,15 +923,17 @@ data:extend({ {"pipe", 1}, {"nullius-iron-sheet", 1} }, - result = "nullius-one-way-valve" + results = { + {type = "item", name = "nullius-one-way-valve", amount = 1} + } }, { type = "recipe", name = "nullius-one-way-valve-2", - localised_name = {"", {"entity-name.nullius-one-way-valve"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-one-way-valve"}, " ", tostring(2)}, icons = { { - icon = "__angelspetrochem__/graphics/icons/valve-overflow.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-overflow.png", icon_size = 32 }, { @@ -907,8 +955,9 @@ data:extend({ {"nullius-rubber", 1}, {"nullius-steel-sheet", 1} }, - result = "nullius-one-way-valve", - result_count = 5 + results = { + {type = "item", name = "nullius-one-way-valve", amount = 5} + } }, { type = "recipe", @@ -925,8 +974,9 @@ data:extend({ {"nullius-box-rubber", 1}, {"nullius-box-steel-sheet", 1} }, - result = "nullius-box-one-way-valve", - result_count = 5 + results = { + {type = "item", name = "nullius-box-one-way-valve", amount = 5} + } }, { type = "recipe", @@ -941,7 +991,9 @@ data:extend({ {"nullius-priority-valve", 1}, {"nullius-iron-wire", 1} }, - result = "nullius-relief-valve" + results = { + {type = "item", name = "nullius-relief-valve", amount = 1} + } }, { type = "recipe", @@ -957,8 +1009,9 @@ data:extend({ {"nullius-box-priority-valve", 2}, {"nullius-box-steel-wire", 1} }, - result = "nullius-box-relief-valve", - result_count = 2 + results = { + {type = "item", name = "nullius-box-relief-valve", amount = 2} + } }, { type = "recipe", @@ -973,7 +1026,9 @@ data:extend({ {"nullius-priority-valve", 1}, {"nullius-plastic", 1} }, - result = "nullius-top-up-valve" + results = { + {type = "item", name = "nullius-top-up-valve", amount = 1} + } }, { type = "recipe", @@ -989,8 +1044,9 @@ data:extend({ {"nullius-box-priority-valve", 2}, {"nullius-box-rubber", 1} }, - result = "nullius-box-top-up-valve", - result_count = 2 + results = { + {type = "item", name = "nullius-box-top-up-valve", amount = 2} + } }, { type = "recipe", @@ -1005,7 +1061,9 @@ data:extend({ {"nullius-one-way-valve", 1}, {"nullius-iron-wire", 1} }, - result = "nullius-priority-valve" + results = { + {type = "item", name = "nullius-priority-valve", amount = 1} + } }, { type = "recipe", @@ -1021,8 +1079,9 @@ data:extend({ {"nullius-box-one-way-valve", 2}, {"nullius-box-steel-wire", 1} }, - result = "nullius-box-priority-valve", - result_count = 2 + results = { + {type = "item", name = "nullius-box-priority-valve", amount = 2} + } }, { @@ -1035,7 +1094,7 @@ data:extend({ scale = 0.5 }, { - icon = "__angelsrefining__/graphics/icons/seafloor-pump-ico.png", + icon = "__angelsrefininggraphics__/graphics/icons/seafloor-pump-ico.png", icon_size = 32, scale = 0.8 } @@ -1049,7 +1108,7 @@ data:extend({ type = "item", name = "nullius-outfall-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/seafloor-pump-ico.png", + icon = "__angelsrefininggraphics__/graphics/icons/seafloor-pump-ico.png", icon_size = 32 }}, subgroup = "water-intake", @@ -1061,7 +1120,7 @@ data:extend({ type = "item", name = "nullius-outfall-3", icons = {{ - icon = "__angelsrefining__/graphics/icons/sea-pump-ico.png", + icon = "__angelsrefininggraphics__/graphics/icons/sea-pump-ico.png", icon_size = 32 }}, subgroup = "water-intake", @@ -1080,7 +1139,9 @@ data:extend({ {"pipe-to-ground", 1}, {"nullius-one-way-valve", 1} }, - result = "nullius-outfall-1" + results = { + {type = "item", name = "nullius-outfall-1", amount = 1} + } }, { type = "recipe", @@ -1095,7 +1156,9 @@ data:extend({ {"concrete", 10}, {"nullius-pump-2", 1} }, - result = "nullius-outfall-2" + results = { + {type = "item", name = "nullius-outfall-2", amount = 1} + } }, { type = "recipe", @@ -1110,7 +1173,9 @@ data:extend({ {"nullius-barrel-pump-2", 1}, {"nullius-seawater-intake-2", 1} }, - result = "nullius-outfall-3" + results = { + {type = "item", name = "nullius-outfall-3", amount = 1} + } }, { @@ -1132,7 +1197,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/offshore-pump.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "water-intake", order = "nullius-bc", @@ -1152,7 +1217,7 @@ data:extend({ icon_size = 64 } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", order = "nullius-bb", place_result = "nullius-legacy-seawater-intake-1", @@ -1166,14 +1231,14 @@ data:extend({ { icon = "__base__/graphics/icons/offshore-pump.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "broken.png", icon_size = 64 } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", order = "nullius-bc", place_result = "nullius-legacy-seawater-intake-2", @@ -1191,7 +1256,9 @@ data:extend({ {"nullius-outfall-1", 1}, {"nullius-filter-1", 1} }, - result = "nullius-seawater-intake-1" + results = { + {type = "item", name = "nullius-seawater-intake-1", amount = 1} + } }, { type = "recipe", @@ -1206,7 +1273,9 @@ data:extend({ {"nullius-underground-pipe-2", 2}, {"nullius-filter-1", 5} }, - result = "nullius-seawater-intake-2" + results = { + {type = "item", name = "nullius-seawater-intake-2", amount = 1} + } }, { @@ -1219,7 +1288,7 @@ data:extend({ scale = 0.5 }, { - icon = "__angelspetrochem__/graphics/icons/air-filter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/air-filter.png", icon_size = 32, scale = 0.6 } @@ -1239,7 +1308,7 @@ data:extend({ scale = 0.5 }, { - icon = "__angelspetrochem__/graphics/icons/air-filter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/air-filter.png", icon_size = 32, scale = 0.8 } @@ -1253,7 +1322,7 @@ data:extend({ type = "item", name = "nullius-air-filter-3", icons = {{ - icon = "__angelspetrochem__/graphics/icons/air-filter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/air-filter.png", icon_size = 32 }}, subgroup = "air-treatment", @@ -1273,7 +1342,9 @@ data:extend({ {"nullius-filter-1", 2}, {"nullius-pump-1", 1} }, - result = "nullius-air-filter-1" + results = { + {type = "item", name = "nullius-air-filter-1", amount = 1} + } }, { type = "recipe", @@ -1290,8 +1361,9 @@ data:extend({ {"nullius-filter-1", 10}, {"nullius-pump-2", 2} }, - result = "nullius-air-filter-2", - result_count = 2 + results = { + {type = "item", name = "nullius-air-filter-2", amount = 2} + } }, { type = "recipe", @@ -1310,8 +1382,9 @@ data:extend({ {"nullius-chimney-2", 1}, {"stone-wall", 8} }, - result = "nullius-air-filter-3", - result_count = 2 + results = { + {type = "item", name = "nullius-air-filter-3", amount = 2} + } }, { @@ -1321,7 +1394,7 @@ data:extend({ { icon = "__base__/graphics/icons/boiler.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.77, 0.77, 0.66, 1} } }, @@ -1337,7 +1410,7 @@ data:extend({ { icon = "__base__/graphics/icons/boiler.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 1, 1} } }, @@ -1353,7 +1426,7 @@ data:extend({ { icon = "__base__/graphics/icons/boiler.png", icon_size = 64, - icon_mipmaps = 4 + } }, subgroup = "energy-storage", @@ -1372,7 +1445,9 @@ data:extend({ {"nullius-small-furnace-1", 1}, {"storage-tank", 1} }, - result = "nullius-combustion-chamber-1" + results = { + {type = "item", name = "nullius-combustion-chamber-1", amount = 1} + } }, { type = "recipe", @@ -1386,7 +1461,9 @@ data:extend({ {"nullius-small-furnace-2", 1}, {"nullius-medium-tank-2", 1} }, - result = "nullius-combustion-chamber-2" + results = { + {type = "item", name = "nullius-combustion-chamber-2", amount = 1} + } }, { type = "recipe", @@ -1401,16 +1478,18 @@ data:extend({ {"nullius-medium-tank-3", 1}, {"nullius-ceramic-powder", 8} }, - result = "nullius-combustion-chamber-3" + results = { + {type = "item", name = "nullius-combustion-chamber-3", amount = 1} + } }, { type = "item", name = "nullius-hydro-plant-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/hydro-plant.png", + icon = "__angelsrefininggraphics__/graphics/icons/hydro-plant.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.77, 0.77, 0.68} }}, subgroup = "water-treatment", @@ -1422,9 +1501,9 @@ data:extend({ type = "item", name = "nullius-hydro-plant-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/hydro-plant.png", + icon = "__angelsrefininggraphics__/graphics/icons/hydro-plant.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 0.9} }}, subgroup = "water-treatment", @@ -1436,9 +1515,9 @@ data:extend({ type = "item", name = "nullius-hydro-plant-3", icons = {{ - icon = "__angelsrefining__/graphics/icons/hydro-plant.png", + icon = "__angelsrefininggraphics__/graphics/icons/hydro-plant.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "water-treatment", order = "nullius-bdb", @@ -1458,8 +1537,9 @@ data:extend({ {"nullius-distillery-1", 1}, {"nullius-seawater-intake-1", 2} }, - result = "nullius-hydro-plant-1", - result_count = 2 + results = { + {type = "item", name = "nullius-hydro-plant-1", amount = 2} + } }, { type = "recipe", @@ -1473,9 +1553,11 @@ data:extend({ {"nullius-chemical-plant-1", 1}, {"nullius-seawater-intake-2", 1}, {"nullius-medium-tank-2", 1}, - {"red-wire", 5} + {"nullius-red-wire", 5} }, - result = "nullius-hydro-plant-2" + results = { + {type = "item", name = "nullius-hydro-plant-2", amount = 1} + } }, { type = "recipe", @@ -1493,7 +1575,9 @@ data:extend({ {"nullius-box-filter-2", 1}, {"nullius-box-sensor-2", 1} }, - result = "nullius-hydro-plant-3" + results = { + {type = "item", name = "nullius-hydro-plant-3", amount = 1} + } }, { @@ -1503,7 +1587,7 @@ data:extend({ { icon = "__base__/graphics/icons/oil-refinery.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.85, 0.85, 0.6, 1} } }, @@ -1519,7 +1603,7 @@ data:extend({ { icon = "__base__/graphics/icons/oil-refinery.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.7, 0.7, 1, 1} } }, @@ -1535,7 +1619,7 @@ data:extend({ { icon = "__base__/graphics/icons/oil-refinery.png", icon_size = 64, - icon_mipmaps = 4 + } }, subgroup = "air-treatment", @@ -1557,7 +1641,9 @@ data:extend({ {"nullius-chimney-1", 1}, {"nullius-filter-1", 2} }, - result = "nullius-distillery-1" + results = { + {type = "item", name = "nullius-distillery-1", amount = 1} + } }, { type = "recipe", @@ -1573,7 +1659,9 @@ data:extend({ {"nullius-heat-pipe-1", 8}, {"nullius-filter-1", 4} }, - result = "nullius-distillery-2" + results = { + {type = "item", name = "nullius-distillery-2", amount = 1} + } }, { type = "recipe", @@ -1591,16 +1679,18 @@ data:extend({ {"nullius-thermal-tank-2", 2}, {"nullius-barrel-pump-1", 1} }, - result = "nullius-distillery-3" + results = { + {type = "item", name = "nullius-distillery-3", amount = 1} + } }, { type = "item", name = "nullius-flotation-cell-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/ore-floatation-cell.png", + icon = "__angelsrefininggraphics__/graphics/icons/ore-floatation-cell.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.77, 0.77, 0.60, 1} }}, subgroup = "water-treatment", @@ -1612,9 +1702,9 @@ data:extend({ type = "item", name = "nullius-flotation-cell-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/ore-floatation-cell.png", + icon = "__angelsrefininggraphics__/graphics/icons/ore-floatation-cell.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 1, 1} }}, subgroup = "water-treatment", @@ -1626,9 +1716,9 @@ data:extend({ type = "item", name = "nullius-flotation-cell-3", icons = {{ - icon = "__angelsrefining__/graphics/icons/ore-floatation-cell.png", + icon = "__angelsrefininggraphics__/graphics/icons/ore-floatation-cell.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "water-treatment", order = "nullius-cdb", @@ -1648,8 +1738,9 @@ data:extend({ {"nullius-hydro-plant-1", 1}, {"nullius-crusher-1", 1} }, - result = "nullius-flotation-cell-1", - result_count = 2 + results = { + {type = "item", name = "nullius-flotation-cell-1", amount = 2} + } }, { type = "recipe", @@ -1663,7 +1754,9 @@ data:extend({ {"nullius-chemical-plant-1", 1}, {"nullius-foundry-1", 1} }, - result = "nullius-flotation-cell-2" + results = { + {type = "item", name = "nullius-flotation-cell-2", amount = 1} + } }, { type = "recipe", @@ -1677,7 +1770,9 @@ data:extend({ {"nullius-hydro-plant-2", 1}, {"nullius-crusher-2", 1} }, - result = "nullius-flotation-cell-3" + results = { + {type = "item", name = "nullius-flotation-cell-3", amount = 1} + } }, { @@ -1687,7 +1782,7 @@ data:extend({ { icon = "__base__/graphics/icons/chemical-plant.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.6, 1} } }, @@ -1703,7 +1798,7 @@ data:extend({ { icon = "__base__/graphics/icons/chemical-plant.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 1, 1} } }, @@ -1719,7 +1814,7 @@ data:extend({ { icon = "__base__/graphics/icons/chemical-plant.png", icon_size = 64, - icon_mipmaps = 4 + } }, subgroup = "chemical-plant", @@ -1741,7 +1836,9 @@ data:extend({ {"nullius-priority-valve", 1}, {"nullius-glass", 3} }, - result = "nullius-chemical-plant-1" + results = { + {type = "item", name = "nullius-chemical-plant-1", amount = 1} + } }, { type = "recipe", @@ -1758,8 +1855,9 @@ data:extend({ {"nullius-distillery-2", 1}, {"nullius-sensor-1", 4} }, - result = "nullius-chemical-plant-2", - result_count = 2 + results = { + {type = "item", name = "nullius-chemical-plant-2", amount = 2} + } }, { type = "recipe", @@ -1775,19 +1873,21 @@ data:extend({ {"nullius-box-hard-glass", 4}, {"nullius-filter-2", 3} }, - result = "nullius-chemical-plant-3" + results = { + {type = "item", name = "nullius-chemical-plant-3", amount = 1} + } }, { type = "item", name = "nullius-electrolyzer-1", - localised_name = {"", {"entity-name.nullius-electrolyzer"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-electrolyzer"}, " ", tostring(1)}, icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.75, 0.55} }}, - localised_description = {"entity-description.nullius-prioritize", + localised_description = {"entity-description.nullius-prioritize", {"entity-description.nullius-electrolyzer"}}, subgroup = "electrolyzer", order = "nullius-bbb", @@ -1797,13 +1897,13 @@ data:extend({ { type = "item", name = "nullius-electrolyzer-2", - localised_name = {"", {"entity-name.nullius-electrolyzer"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-electrolyzer"}, " ", tostring(2)}, icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.85, 0.9} }}, - localised_description = {"entity-description.nullius-prioritize", + localised_description = {"entity-description.nullius-prioritize", {"entity-description.nullius-electrolyzer"}}, subgroup = "electrolyzer", order = "nullius-bcbb", @@ -1813,12 +1913,12 @@ data:extend({ { type = "item", name = "nullius-electrolyzer-3", - localised_name = {"", {"entity-name.nullius-electrolyzer"}, " ", 3}, + localised_name = {"", {"entity-name.nullius-electrolyzer"}, " ", tostring(3)}, icons = {{ - icon = "__angelspetrochem__/graphics/icons/electrolyser.png", + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32 }}, - localised_description = {"entity-description.nullius-prioritize", + localised_description = {"entity-description.nullius-prioritize", {"entity-description.nullius-electrolyzer"}}, subgroup = "electrolyzer", order = "nullius-bdb", @@ -1838,7 +1938,9 @@ data:extend({ {"nullius-filter-1", 1}, {"nullius-priority-valve", 2} }, - result = "nullius-electrolyzer-1" + results = { + {type = "item", name = "nullius-electrolyzer-1", amount = 1} + } }, { type = "recipe", @@ -1854,7 +1956,9 @@ data:extend({ {"nullius-small-pump-1", 1}, {"power-switch", 1} }, - result = "nullius-electrolyzer-2" + results = { + {type = "item", name = "nullius-electrolyzer-2", amount = 1} + } }, { type = "recipe", @@ -1870,12 +1974,15 @@ data:extend({ {"nullius-charger-2", 2}, {"nullius-efficiency-module-2", 1} }, - result = "nullius-electrolyzer-3" + results = { + {type = "item", name = "nullius-electrolyzer-3", amount = 1} + } }, { type = "recipe", name = "nullius-medium-tank-1", + localised_name = {"entity-name.nullius-medium-tank-1"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -1885,7 +1992,9 @@ data:extend({ {"nullius-iron-rod", 1}, {"pipe", 3} }, - result = "storage-tank" + results = { + {type = "item", name = "storage-tank", amount = 1} + } }, { type = "recipe", @@ -1900,7 +2009,9 @@ data:extend({ {"nullius-box-iron-rod", 1}, {"nullius-box-pipe-1", 3} }, - result = "nullius-box-medium-tank-1" + results = { + {type = "item", name = "nullius-box-medium-tank-1", amount = 1} + } }, { @@ -1930,7 +2041,9 @@ data:extend({ {"nullius-plastic", 2}, {"nullius-pipe-2", 3} }, - result = "nullius-medium-tank-2" + results = { + {type = "item", name = "nullius-medium-tank-2", amount = 1} + } }, { type = "recipe", @@ -1947,7 +2060,9 @@ data:extend({ {"nullius-box-plastic", 2}, {"nullius-box-pipe-2", 3} }, - result = "nullius-box-medium-tank-2" + results = { + {type = "item", name = "nullius-box-medium-tank-2", amount = 1} + } }, { @@ -1973,7 +2088,9 @@ data:extend({ {type="item", name="nullius-pipe-3", amount=2}, {type="fluid", name="nullius-epoxy", amount=2, fluidbox_index=1} }, - result = "nullius-medium-tank-3" + results = { + {type = "item", name = "nullius-medium-tank-3", amount = 1} + } }, { type = "recipe", @@ -1989,7 +2106,9 @@ data:extend({ {type="item", name="nullius-box-pipe-3", amount=2}, {type="fluid", name="nullius-epoxy", amount=10, fluidbox_index=1} }, - result = "nullius-box-medium-tank-3" + results = { + {type = "item", name = "nullius-box-medium-tank-3", amount = 1} + } }, { @@ -1997,9 +2116,9 @@ data:extend({ name = "nullius-small-tank-1", icons = { { - icon = "__angelspetrochem__/graphics/icons/petrochem-inline-tank.png", + icon = "__angelspetrochemgraphics__/graphics/icons/petrochem-inline-tank.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 0.4} } }, @@ -2020,8 +2139,9 @@ data:extend({ ingredients = { {"nullius-medium-tank-2", 1} }, - result = "nullius-small-tank-1", - result_count = 3 + results = { + {type = "item", name = "nullius-small-tank-1", amount = 3} + } }, { type = "recipe", @@ -2036,8 +2156,9 @@ data:extend({ ingredients = { {"nullius-box-medium-tank-2", 1} }, - result = "nullius-box-small-tank-1", - result_count = 3 + results = { + {type = "item", name = "nullius-box-small-tank-1", amount = 3} + } }, { @@ -2045,9 +2166,9 @@ data:extend({ name = "nullius-small-tank-2", icons = { { - icon = "__angelspetrochem__/graphics/icons/petrochem-inline-tank.png", + icon = "__angelspetrochemgraphics__/graphics/icons/petrochem-inline-tank.png", icon_size = 64, - icon_mipmaps = 4 + } }, subgroup = "tanks", @@ -2068,8 +2189,9 @@ data:extend({ {"nullius-small-tank-1", 2}, {"nullius-medium-tank-3", 1} }, - result = "nullius-small-tank-2", - result_count = 3 + results = { + {type = "item", name = "nullius-small-tank-2", amount = 3} + } }, { type = "recipe", @@ -2085,17 +2207,18 @@ data:extend({ {"nullius-box-small-tank-1", 2}, {"nullius-box-medium-tank-3", 1} }, - result = "nullius-box-small-tank-2", - result_count = 3 + results = { + {type = "item", name = "nullius-box-small-tank-2", amount = 3} + } }, { type = "item", name = "nullius-large-tank-1", icons = {{ - icon = "__angelspetrochem__/graphics/icons/petrochem-gas-tank.png", + icon = "__angelspetrochemgraphics__/graphics/icons/petrochem-gas-tank.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.6} }}, subgroup = "tanks", @@ -2116,16 +2239,18 @@ data:extend({ {type="item", name="concrete", amount=8}, {type="item", name="nullius-relief-valve", amount=1} }, - result = "nullius-large-tank-1" + results = { + {type = "item", name = "nullius-large-tank-1", amount = 1} + } }, { type = "item", name = "nullius-large-tank-2", icons = {{ - icon = "__angelspetrochem__/graphics/icons/petrochem-gas-tank.png", + icon = "__angelspetrochemgraphics__/graphics/icons/petrochem-gas-tank.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.85, 0.85, 0.95} }}, subgroup = "tanks", @@ -2146,16 +2271,18 @@ data:extend({ {type="item", name="nullius-steel-beam", amount=6}, {type="item", name="refined-concrete", amount=10} }, - result = "nullius-large-tank-2" + results = { + {type = "item", name = "nullius-large-tank-2", amount = 1} + } }, { type = "item", name = "nullius-large-tank-3", icons = {{ - icon = "__angelspetrochem__/graphics/icons/petrochem-gas-tank.png", + icon = "__angelspetrochemgraphics__/graphics/icons/petrochem-gas-tank.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "tanks", order = "nullius-bdd", @@ -2174,7 +2301,9 @@ data:extend({ {type="item", name="nullius-box-wall", amount=2}, {type="item", name="nullius-box-underground-pipe-4", amount=1} }, - result = "nullius-large-tank-3" + results = { + {type = "item", name = "nullius-large-tank-3", amount = 1} + } }, { @@ -2214,7 +2343,7 @@ data:extend({ icon_size = 64 } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", order = "nullius-cd", place_result = "nullius-legacy-well-1", @@ -2233,7 +2362,7 @@ data:extend({ icon_size = 64 } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", order = "nullius-ce", place_result = "nullius-legacy-well-2", @@ -2253,7 +2382,9 @@ data:extend({ {"nullius-top-up-valve", 1}, {"stone-brick", 12} }, - result = "nullius-well-1" + results = { + {type = "item", name = "nullius-well-1", amount = 1} + } }, { type = "recipe", @@ -2269,7 +2400,9 @@ data:extend({ {"pump", 2}, {"nullius-mortar", 8} }, - result = "nullius-well-2" + results = { + {type = "item", name = "nullius-well-2", amount = 1} + } }, { @@ -2309,7 +2442,9 @@ data:extend({ {"nullius-refractory-brick", 40}, {"nullius-relief-valve", 1} }, - result = "nullius-extractor-1" + results = { + {type = "item", name = "nullius-extractor-1", amount = 1} + } }, { type = "recipe", @@ -2326,14 +2461,16 @@ data:extend({ {"nullius-medium-miner-3", 1}, {"nullius-sensor-2", 1} }, - result = "nullius-extractor-2" + results = { + {type = "item", name = "nullius-extractor-2", amount = 1} + } }, { type = "recipe", name = "nullius-legacy-extractor-2", enabled = false, always_show_made_in = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "huge-crafting", @@ -2346,19 +2483,21 @@ data:extend({ {"nullius-medium-miner-3", 1}, {"nullius-sensor-2", 1} }, - result = "nullius-extractor-2" + results = { + {type = "item", name = "nullius-extractor-2", amount = 1} + } }, { type = "item", name = "nullius-compressor-1", - localised_name = {"", {"entity-name.nullius-compressor"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-compressor"}, " ", tostring(1)}, icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.6, 0.55, 0.36} }}, - localised_description = {"entity-description.nullius-prioritize", + localised_description = {"entity-description.nullius-prioritize", {"entity-description.nullius-compressor"}}, subgroup = "electrolyzer", order = "nullius-cbb", @@ -2368,13 +2507,13 @@ data:extend({ { type = "item", name = "nullius-compressor-2", - localised_name = {"", {"entity-name.nullius-compressor"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-compressor"}, " ", tostring(2)}, icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.65, 0.6, 0.8} }}, - localised_description = {"entity-description.nullius-prioritize", + localised_description = {"entity-description.nullius-prioritize", {"entity-description.nullius-compressor"}}, subgroup = "electrolyzer", order = "nullius-ccb", @@ -2384,12 +2523,12 @@ data:extend({ { type = "item", name = "nullius-compressor-3", - localised_name = {"", {"entity-name.nullius-compressor"}, " ", 3}, + localised_name = {"", {"entity-name.nullius-compressor"}, " ", tostring(3)}, icons = {{ - icon = "__angelsrefining__/graphics/icons/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32 }}, - localised_description = {"entity-description.nullius-prioritize", + localised_description = {"entity-description.nullius-prioritize", {"entity-description.nullius-compressor"}}, subgroup = "electrolyzer", order = "nullius-cdb", @@ -2409,7 +2548,9 @@ data:extend({ {"nullius-top-up-valve", 1}, {"power-switch", 1} }, - result = "nullius-compressor-1" + results = { + {type = "item", name = "nullius-compressor-1", amount = 1} + } }, { type = "recipe", @@ -2427,8 +2568,9 @@ data:extend({ {"nullius-relief-valve", 6}, {"nullius-sensor-1", 1} }, - result = "nullius-compressor-2", - result_count = 3 + results = { + {type = "item", name = "nullius-compressor-2", amount = 3} + } }, { type = "recipe", @@ -2447,8 +2589,9 @@ data:extend({ {"nullius-box-pump-3", 1}, {"nullius-pylon-2", 2} }, - result = "nullius-compressor-3", - result_count = 4 + results = { + {type = "item", name = "nullius-compressor-3", amount = 4} + } }, { @@ -2456,7 +2599,7 @@ data:extend({ name = "nullius-geothermal-plant-1", order = "nullius-bb", icons = {{ - icon = "__angelssmelting__/graphics/icons/chemical-furnace.png", + icon = "__angelssmeltinggraphics__/graphics/icons/chemical-furnace.png", icon_size = 64, tint = {0.65, 0.8, 1} }}, @@ -2477,7 +2620,9 @@ data:extend({ {"nullius-aluminum-plate", 20}, {"nullius-aluminum-rod", 10} }, - result = "nullius-geothermal-plant-1" + results = { + {type = "item", name = "nullius-geothermal-plant-1", amount = 1} + } }, { @@ -2485,7 +2630,7 @@ data:extend({ name = "nullius-geothermal-plant-2", order = "nullius-bc", icons = {{ - icon = "__angelssmelting__/graphics/icons/chemical-furnace.png", + icon = "__angelssmeltinggraphics__/graphics/icons/chemical-furnace.png", icon_size = 64, tint = {0.85, 0.8, 1} }}, @@ -2507,14 +2652,16 @@ data:extend({ {"stone-wall", 20}, {"gate", 5} }, - result = "nullius-geothermal-plant-2" + results = { + {type = "item", name = "nullius-geothermal-plant-2", amount = 1} + } }, { type = "item", name = "nullius-geothermal-plant-3", icons = {{ - icon = "__angelssmelting__/graphics/icons/chemical-furnace.png", + icon = "__angelssmeltinggraphics__/graphics/icons/chemical-furnace.png", icon_size = 64 }}, subgroup = "geothermal", @@ -2537,7 +2684,9 @@ data:extend({ {"nullius-large-miner-2", 1}, {"nullius-efficiency-module-2", 2} }, - result = "nullius-geothermal-plant-3" + results = { + {type = "item", name = "nullius-geothermal-plant-3", amount = 1} + } }, { @@ -2547,7 +2696,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/heat-pipe.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.4, 0.6, 0.9} }}, subgroup = "heat-energy", @@ -2567,7 +2716,9 @@ data:extend({ {type="item", name="nullius-aluminum-sheet", amount=1}, {type="fluid", name="nullius-water", amount=100, fluidbox_index=1} }, - result = "nullius-heat-pipe-1" + results = { + {type = "item", name = "nullius-heat-pipe-1", amount = 1} + } }, { type = "recipe", @@ -2584,7 +2735,9 @@ data:extend({ {type="item", name="nullius-box-aluminum-sheet", amount=1}, {type="fluid", name="nullius-water", amount=500, fluidbox_index=1} }, - result = "nullius-box-heat-pipe-1" + results = { + {type = "item", name = "nullius-box-heat-pipe-1", amount = 1} + } }, { @@ -2594,7 +2747,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/heat-pipe.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.7, 0.8, 0.95} }}, subgroup = "heat-energy", @@ -2617,8 +2770,9 @@ data:extend({ {type="item", name="nullius-insulation", amount=2}, {type="item", name="nullius-eutectic-salt", amount=5} }, - result = "nullius-heat-pipe-2", - result_count = 2 + results = { + {type = "item", name = "nullius-heat-pipe-2", amount = 2} + } }, { type = "recipe", @@ -2637,8 +2791,9 @@ data:extend({ {type="item", name="nullius-box-insulation", amount=2}, {type="item", name="nullius-box-eutectic-salt", amount=5} }, - result = "nullius-box-heat-pipe-2", - result_count = 3 + results = { + {type = "item", name = "nullius-box-heat-pipe-2", amount = 3} + } }, { type = "recipe", @@ -2662,8 +2817,9 @@ data:extend({ {type="item", name="nullius-insulation", amount=2}, {type="item", name="nullius-eutectic-salt", amount=5} }, - result = "nullius-heat-pipe-2", - result_count = 3 + results = { + {type = "item", name = "nullius-heat-pipe-2", amount = 3} + } }, { type = "recipe", @@ -2695,8 +2851,9 @@ data:extend({ {type="item", name="nullius-box-insulation", amount=2}, {type="item", name="nullius-box-eutectic-salt", amount=5} }, - result = "nullius-box-heat-pipe-2", - result_count = 3 + results = { + {type = "item", name = "nullius-box-heat-pipe-2", amount = 3} + } }, { @@ -2706,7 +2863,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/heat-pipe.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "heat-energy", place_result = "nullius-heat-pipe-3", @@ -2726,8 +2883,9 @@ data:extend({ {type="item", name="nullius-small-pump-2", amount=1}, {type="fluid", name="nullius-compressed-helium", amount=50} }, - result = "nullius-heat-pipe-3", - result_count = 6 + results = { + {type = "item", name = "nullius-heat-pipe-3", amount = 6} + } }, { type = "recipe", @@ -2745,8 +2903,9 @@ data:extend({ {type="item", name="nullius-box-small-pump-2", amount=1}, {type="fluid", name="nullius-compressed-helium", amount=250} }, - result = "nullius-box-heat-pipe-3", - result_count = 6 + results = { + {type = "item", name = "nullius-box-heat-pipe-3", amount = 6} + } }, { @@ -2797,7 +2956,9 @@ data:extend({ {type="item", name="nullius-small-pump-1", amount=1}, {type="fluid", name="nullius-water", amount=1000} }, - result = "nullius-thermal-tank-1" + results = { + {type = "item", name = "nullius-thermal-tank-1", amount = 1} + } }, { type = "recipe", @@ -2814,7 +2975,9 @@ data:extend({ {type="item", name="nullius-crucible", amount=4}, {type="item", name="nullius-thermal-tank-1", amount=1} }, - result = "nullius-thermal-tank-2" + results = { + {type = "item", name = "nullius-thermal-tank-2", amount = 1} + } }, { type = "recipe", @@ -2831,8 +2994,9 @@ data:extend({ {type="item", name="nullius-large-tank-3", amount=1}, {type="item", name="nullius-barrel-pump-2", amount=1} }, - result = "nullius-thermal-tank-3", - result_count = 2 + results = { + {type = "item", name = "nullius-thermal-tank-3", amount = 2} + } }, { @@ -2842,7 +3006,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/steam-engine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.8, 0.8, 0.6} }}, subgroup = "heat-exchange", @@ -2856,7 +3020,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/steam-engine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.95} }}, subgroup = "heat-exchange", @@ -2870,7 +3034,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/icons/steam-engine.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "heat-exchange", place_result = "nullius-stirling-engine-3", @@ -2892,8 +3056,9 @@ data:extend({ {type="fluid", name="nullius-compressed-nitrogen", amount=600}, {type="fluid", name="nullius-lubricant", amount=30} }, - result = "nullius-stirling-engine-1", - result_count = 2 + results = { + {type = "item", name = "nullius-stirling-engine-1", amount = 2} + } }, { type = "recipe", @@ -2910,8 +3075,9 @@ data:extend({ {type="item", name="nullius-transformer", amount=3}, {type="fluid", name="nullius-compressed-argon", amount=500, fluidbox_index=1} }, - result = "nullius-stirling-engine-2", - result_count = 2 + results = { + {type = "item", name = "nullius-stirling-engine-2", amount = 2} + } }, { type = "recipe", @@ -2929,15 +3095,16 @@ data:extend({ {type="item", name="nullius-grid-battery-2", amount=2}, {type="fluid", name="nullius-compressed-helium", amount=400, fluidbox_index=1} }, - result = "nullius-stirling-engine-3", - result_count = 3 + results = { + {type = "item", name = "nullius-stirling-engine-3", amount = 3} + } }, { type = "item", name = "nullius-barrel-pump-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/barreling-pump.png", + icon = "__angelsrefininggraphics__/graphics/icons/barreling-pump.png", icon_size = 32, tint = {0.7, 0.9, 0.9} }}, @@ -2960,7 +3127,9 @@ data:extend({ {"nullius-pipe-2", 5}, {"nullius-top-up-valve", 2} }, - result = "nullius-barrel-pump-1" + results = { + {type = "item", name = "nullius-barrel-pump-1", amount = 1} + } }, { @@ -2986,7 +3155,9 @@ data:extend({ {"nullius-combustion-chamber-1", 1}, {"nullius-heat-pipe-1", 4} }, - result = "nullius-heat-exchanger-1" + results = { + {type = "item", name = "nullius-heat-exchanger-1", amount = 1} + } }, { type = "item", @@ -3012,7 +3183,9 @@ data:extend({ {"nullius-combustion-chamber-3", 1}, {"nullius-heat-pipe-2", 8} }, - result = "nullius-heat-exchanger-2" + results = { + {type = "item", name = "nullius-heat-exchanger-2", amount = 1} + } }, { type = "item", @@ -3038,7 +3211,9 @@ data:extend({ {"nullius-thermal-tank-3", 1}, {"nullius-filter-2", 1} }, - result = "nullius-heat-exchanger-3" + results = { + {type = "item", name = "nullius-heat-exchanger-3", amount = 1} + } }, { @@ -3078,7 +3253,9 @@ data:extend({ {"nullius-ceramic-powder", 5}, {"nullius-transformer", 1} }, - result = "nullius-boiler-1" + results = { + {type = "item", name = "nullius-boiler-1", amount = 1} + } }, { type = "recipe", @@ -3092,14 +3269,16 @@ data:extend({ {"nullius-boiler-1", 1}, {"nullius-medium-furnace-3", 1} }, - result = "nullius-boiler-2" + results = { + {type = "item", name = "nullius-boiler-2", amount = 1} + } }, { type = "item", name = "nullius-barrel-pump-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/barreling-pump.png", + icon = "__angelsrefininggraphics__/graphics/icons/barreling-pump.png", icon_size = 32 }}, subgroup = "pumping", @@ -3121,14 +3300,16 @@ data:extend({ {"nullius-sensor-1", 1}, {"nullius-refueler", 1} }, - result = "nullius-barrel-pump-2" + results = { + {type = "item", name = "nullius-barrel-pump-2", amount = 1} + } }, { type = "recipe", name = "nullius-legacy-barrel-pump-2", enabled = false, - always_show_made_in = true, - hidden = true, + always_show_made_in = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "medium-crafting", @@ -3139,16 +3320,18 @@ data:extend({ {"nullius-small-tank-2", 1}, {"nullius-sensor-1", 1} }, - result = "nullius-barrel-pump-2" + results = { + {type = "item", name = "nullius-barrel-pump-2", amount = 1} + } }, { type = "item", name = "nullius-nanofabricator-1", icons = {{ - icon = "__angelsrefining__/graphics/icons/crystallizer.png", + icon = "__angelsrefininggraphics__/graphics/icons/crystallizer.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.75, 0.75} }}, subgroup = "chemical-plant", @@ -3160,9 +3343,9 @@ data:extend({ type = "item", name = "nullius-nanofabricator-2", icons = {{ - icon = "__angelsrefining__/graphics/icons/crystallizer.png", + icon = "__angelsrefininggraphics__/graphics/icons/crystallizer.png", icon_size = 64, - icon_mipmaps = 4 + }}, subgroup = "chemical-plant", order = "nullius-ccb", @@ -3186,8 +3369,9 @@ data:extend({ {"nullius-flotation-cell-2", 1}, {"nullius-air-filter-2", 1} }, - result = "nullius-nanofabricator-1", - result_count = 2 + results = { + {type = "item", name = "nullius-nanofabricator-1", amount = 2} + } }, { type = "recipe", @@ -3196,7 +3380,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "huge-crafting", @@ -3208,8 +3392,9 @@ data:extend({ {"nullius-flotation-cell-2", 1}, {"nullius-air-filter-2", 1} }, - result = "nullius-nanofabricator-1", - result_count = 2 + results = { + {type = "item", name = "nullius-nanofabricator-1", amount = 2} + } }, { type = "recipe", @@ -3229,8 +3414,9 @@ data:extend({ {"nullius-fabrication-tool-3", 1}, {"nullius-large-dispatch-chest-2", 2} }, - result = "nullius-nanofabricator-2", - result_count = 2 + results = { + {type = "item", name = "nullius-nanofabricator-2", amount = 2} + } }, { type = "recipe", @@ -3239,7 +3425,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "huge-crafting", @@ -3252,8 +3438,9 @@ data:extend({ {"nullius-large-assembler-2", 1}, {"nullius-large-dispatch-chest-2", 2} }, - result = "nullius-nanofabricator-2", - result_count = 2 + results = { + {type = "item", name = "nullius-nanofabricator-2", amount = 2} + } } }) @@ -3261,30 +3448,30 @@ data:extend({ if mods["reskins-bobs"] then data.raw.item["nullius-heat-pipe-1"].icons = {{ icon = "__reskins-bobs__/graphics/icons/power/heat-pipe/heat-pipe-base-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.item["nullius-heat-pipe-2"].icons = {{ icon = "__reskins-bobs__/graphics/icons/power/heat-pipe/heat-pipe-gold-copper-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.item["nullius-heat-pipe-3"].icons = {{ icon = "__reskins-bobs__/graphics/icons/power/heat-pipe/heat-pipe-silver-titanium-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.item["nullius-stirling-engine-1"].icons = { { icon = "__reskins-bobs__/graphics/icons/power/steam-engine/steam-engine-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }, { icon = "__reskins-bobs__/graphics/icons/power/steam-engine/steam-engine-icon-mask.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = tiercolor("yellow") }, { icon = "__reskins-bobs__/graphics/icons/power/steam-engine/steam-engine-icon-highlights.png", - icon_size = 64, icon_mipmaps = 4, tint = {1, 1, 1, 0} + icon_size = 64, tint = {1, 1, 1, 0} } } @@ -3298,35 +3485,35 @@ data.raw.item["nullius-stirling-engine-3"].icons[2].tint = tiercolor("red") data.raw.item["nullius-pipe-2"].icons = {{ icon = ENTICONPATH .. "pipe-red.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.recipe["nullius-steel-pipe"].icons[1] = { icon = ENTICONPATH .. "pipe-red.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, } data.raw.recipe["nullius-plastic-pipe"].icons[1] = { icon = ENTICONPATH .. "pipe-red.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, } data.raw.item["nullius-pipe-3"].icons = {{ icon = "__reskins-bobs__/graphics/icons/logistics/pipe/plastic-pipe-icon.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.item["nullius-pipe-4"].icons = {{ icon = "__reskins-bobs__/graphics/icons/logistics/pipe/tungsten-pipe-icon.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.item["nullius-underground-pipe-2"].icons = {{ icon = ENTICONPATH .. "pipe-underground-red.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, scale = 2 }} data.raw.item["nullius-underground-pipe-3"].icons = {{ icon = "__reskins-bobs__/graphics/icons/logistics/pipe-to-ground/plastic-pipe-to-ground-icon.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw.item["nullius-underground-pipe-4"].icons = {{ icon = "__reskins-bobs__/graphics/icons/logistics/pipe-to-ground/tungsten-pipe-to-ground-icon.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} end diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index cb16028..c29f9ff 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -6,6 +6,7 @@ data:extend({ { type = "recipe", name = "nullius-stone-block", + localised_name = {"item-name.stone-brick"}, enabled = false, category = "medium-crafting", order = "nullius-bb", @@ -47,10 +48,10 @@ data:extend({ { icon = "__base__/graphics/icons/stone-brick.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelsrefining__/graphics/icons/angels-ore6/angels-ore6-3.png", + icon = "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-3.png", tint = {0.898, 0.773, 0.688}, icon_size = 32, scale = 0.5, @@ -81,10 +82,10 @@ data:extend({ { icon = "__base__/graphics/icons/stone-brick.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelsrefining__/graphics/icons/angels-ore6/angels-ore6-2.png", + icon = "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-2.png", tint = {0.690, 0.611, 0.427}, icon_size = 32, scale = 0.5, @@ -122,8 +123,9 @@ data:extend({ {"nullius-iron-gear", 2}, {"nullius-iron-rod", 3} }, - result = "inserter", - result_count = 4 + results = { + {type="item", name="inserter", amount = 4} + } }, { type = "recipe", @@ -140,8 +142,9 @@ data:extend({ {"nullius-box-steel-gear", 1}, {"nullius-box-steel-rod", 2} }, - result = "nullius-box-inserter-1", - result_count = 5 + results = { + {type="item", name="nullius-box-inserter-1", amount = 5} + } }, { type = "recipe", @@ -156,7 +159,9 @@ data:extend({ {"nullius-steel-gear", 1}, {"nullius-aluminum-rod", 1} }, - result = "turbo-inserter" + results = { + {type="item", name="bob-turbo-inserter", amount = 1} + } }, { type = "recipe", @@ -172,35 +177,41 @@ data:extend({ {"nullius-box-steel-gear", 1}, {"nullius-box-aluminum-rod", 1} }, - result = "nullius-box-inserter-2" - }, - { - type = "recipe", - name = "nullius-filter-inserter-2", - enabled = false, - always_show_made_in = true, - category = "small-crafting", - energy_required = 2, - ingredients = { - {"turbo-inserter", 1}, - {"decider-combinator", 1} - }, - result = "turbo-filter-inserter" - }, - { - type = "recipe", - name = "nullius-boxed-filter-inserter-2", - enabled = false, - always_show_made_in = true, - category = "large-assembly", - subgroup = "boxed-inserter", - energy_required = 10, - ingredients = { - {"nullius-box-inserter-2", 1}, - {"nullius-box-logic-circuit", 1} - }, - result = "nullius-box-filter-inserter-2" - }, + results = { + {type="item", name="nullius-box-inserter-2", amount = 1} + } + }, + -- { -- TODO: remove all filter inserters i guess + -- type = "recipe", + -- name = "nullius-filter-inserter-2", + -- enabled = false, + -- always_show_made_in = true, + -- category = "small-crafting", + -- energy_required = 2, + -- ingredients = { + -- {"turbo-inserter", 1}, + -- {"decider-combinator", 1} + -- }, + -- results = { + -- {type="item", name="turbo-filter-inserter", amount = 1} + -- } + -- }, + -- { + -- type = "recipe", + -- name = "nullius-boxed-filter-inserter-2", + -- enabled = false, + -- always_show_made_in = true, + -- category = "large-assembly", + -- subgroup = "boxed-inserter", + -- energy_required = 10, + -- ingredients = { + -- {"nullius-box-inserter-2", 1}, + -- {"nullius-box-logic-circuit", 1} + -- }, + -- results = { + -- {type="item", name="nullius-box-filter-inserter-2", amount = 1} + -- } + -- }, { type = "recipe", @@ -210,12 +221,14 @@ data:extend({ category = "small-crafting", energy_required = 7, ingredients = { - {"turbo-filter-inserter", 1}, + {"bob-turbo-inserter", 1}, {"nullius-motor-2", 1}, {"nullius-bearing", 1}, {"nullius-rubber", 2} }, - result = "stack-inserter" + results = { + {type="item", name="bulk-inserter", amount = 1} + } }, { type = "recipe", @@ -226,40 +239,46 @@ data:extend({ subgroup = "boxed-inserter", energy_required = 35, ingredients = { - {"nullius-box-filter-inserter-2", 1}, + {"nullius-box-inserter-2", 1}, {"nullius-box-motor-2", 1}, {"nullius-box-bearing", 1}, {"nullius-box-rubber", 2} }, - result = "nullius-box-inserter-3" - }, - { - type = "recipe", - name = "nullius-filter-inserter-3", - enabled = false, - always_show_made_in = true, - category = "small-crafting", - energy_required = 3, - ingredients = { - {"stack-inserter", 1}, - {"nullius-sensor-1", 1} - }, - result = "stack-filter-inserter" - }, - { - type = "recipe", - name = "nullius-boxed-filter-inserter-3", - enabled = false, - always_show_made_in = true, - category = "large-assembly", - subgroup = "boxed-inserter", - energy_required = 15, - ingredients = { - {"nullius-box-inserter-3", 1}, - {"nullius-box-sensor-1", 1} - }, - result = "nullius-box-filter-inserter-3" - }, + results = { + {type="item", name="nullius-box-inserter-3", amount = 1} + } + }, + -- { + -- type = "recipe", + -- name = "nullius-filter-inserter-3", + -- enabled = false, + -- always_show_made_in = true, + -- category = "small-crafting", + -- energy_required = 3, + -- ingredients = { + -- {"bulk-inserter", 1}, + -- {"nullius-sensor-1", 1} + -- }, + -- results = { + -- {type="item", name="stack-filter-inserter", amount = 1} + -- } + -- }, + -- { + -- type = "recipe", + -- name = "nullius-boxed-filter-inserter-3", + -- enabled = false, + -- always_show_made_in = true, + -- category = "large-assembly", + -- subgroup = "boxed-inserter", + -- energy_required = 15, + -- ingredients = { + -- {"nullius-box-inserter-3", 1}, + -- {"nullius-box-sensor-1", 1} + -- }, + -- results = { + -- {type="item", name="nullius-box-filter-inserter-3", amount = 1} + -- } + -- }, { type = "recipe", @@ -269,12 +288,14 @@ data:extend({ category = "small-crafting", energy_required = 12, ingredients = { - {"stack-filter-inserter", 2}, + {"bulk-inserter", 2}, {"nullius-motor-3", 1}, {"nullius-titanium-rod", 2}, {"nullius-carbon-composite", 3} }, - result = "express-stack-inserter" + results = { + {type="item", name="bob-express-bulk-inserter", amount = 1} + } }, { type = "recipe", @@ -285,46 +306,50 @@ data:extend({ subgroup = "boxed-inserter", energy_required = 60, ingredients = { - {"nullius-box-filter-inserter-3", 2}, + {"nullius-box-inserter-3", 2}, {"nullius-box-motor-3", 1}, {"nullius-box-titanium-rod", 2}, {"nullius-box-carbon-composite", 3} }, - result = "nullius-box-inserter-4" - }, - { - type = "recipe", - name = "nullius-filter-inserter-4", - enabled = false, - always_show_made_in = true, - show_amount_in_title = false, - always_show_products = true, - category = "small-crafting", - energy_required = 8, - ingredients = { - {"express-stack-inserter", 2}, - {"nullius-sensor-2", 1} - }, - result = "express-stack-filter-inserter", - result_count = 2 - }, - { - type = "recipe", - name = "nullius-boxed-filter-inserter-4", - enabled = false, - always_show_made_in = true, - show_amount_in_title = false, - always_show_products = true, - category = "large-assembly", - subgroup = "boxed-inserter", - energy_required = 40, - ingredients = { - {"nullius-box-inserter-4", 2}, - {"nullius-box-sensor-2", 1} - }, - result = "nullius-box-filter-inserter-4", - result_count = 2 - }, + results = { + {type="item", name="nullius-box-inserter-4", amount = 1} + } + }, + -- { + -- type = "recipe", + -- name = "nullius-filter-inserter-4", + -- enabled = false, + -- always_show_made_in = true, + -- show_amount_in_title = false, + -- always_show_products = true, + -- category = "small-crafting", + -- energy_required = 8, + -- ingredients = { + -- {"express-bulk-inserter", 2}, + -- {"nullius-sensor-2", 1} + -- }, + -- results = { + -- {type="item", name="express-stack-filter-inserter", amount = 2} + -- } + -- }, + -- { + -- type = "recipe", + -- name = "nullius-boxed-filter-inserter-4", + -- enabled = false, + -- always_show_made_in = true, + -- show_amount_in_title = false, + -- always_show_products = true, + -- category = "large-assembly", + -- subgroup = "boxed-inserter", + -- energy_required = 40, + -- ingredients = { + -- {"nullius-box-inserter-4", 2}, + -- {"nullius-box-sensor-2", 1} + -- }, + -- results = { + -- {type="item", name="nullius-box-filter-inserter-4", amount = 2} + -- } + -- }, { type = "recipe", @@ -341,8 +366,9 @@ data:extend({ {"nullius-iron-sheet", 2}, {"nullius-iron-rod", 2} }, - result = "transport-belt", - result_count = 15 + results = { + {type="item", name="transport-belt", amount = 15} + } }, { type = "recipe", @@ -360,8 +386,9 @@ data:extend({ {"nullius-box-steel-sheet", 2}, {"nullius-box-steel-rod", 1} }, - result = "nullius-box-belt-1", - result_count = 18 + results = { + {type="item", name="nullius-box-belt-1", amount = 18} + } }, { type = "recipe", @@ -376,8 +403,9 @@ data:extend({ {"transport-belt", 10}, {"pipe-to-ground", 2} }, - result = "underground-belt", - result_count = 2 + results = { + {type="item", name="underground-belt", amount = 2} + } }, { type = "recipe", @@ -393,8 +421,9 @@ data:extend({ {"nullius-box-belt-1", 10}, {"nullius-box-underground-pipe-1", 2} }, - result = "nullius-box-underground-belt-1", - result_count = 2 + results = { + {type="item", name="nullius-box-underground-belt-1", amount = 2} + } }, { type = "recipe", @@ -409,7 +438,9 @@ data:extend({ {"underground-belt", 2}, {"nullius-plastic", 2} }, - result = "splitter" + results = { + {type="item", name="splitter", amount = 1} + } }, { type = "recipe", @@ -437,8 +468,9 @@ data:extend({ {"nullius-box-underground-belt-1", 2}, {"nullius-box-plastic", 2} }, - result = "splitter", - result_count = 5 + results = { + {type="item", name="splitter", amount = 5} + } }, { @@ -457,8 +489,9 @@ data:extend({ {type="item", name="nullius-rubber", amount=4}, {type="fluid", name="nullius-lubricant", amount=12, fluidbox_index=1} }, - result = "fast-transport-belt", - result_count = 8 + results = { + {type="item", name="fast-transport-belt", amount = 8} + } }, { type = "recipe", @@ -477,8 +510,9 @@ data:extend({ {type="item", name="nullius-box-rubber", amount=4}, {type="fluid", name="nullius-lubricant", amount=60, fluidbox_index=1} }, - result = "nullius-box-belt-2", - result_count = 8 + results = { + {type="item", name="nullius-box-belt-2", amount = 8} + } }, { type = "recipe", @@ -494,8 +528,9 @@ data:extend({ {"underground-belt", 1}, {"nullius-underground-pipe-2", 1} }, - result = "fast-underground-belt", - result_count = 2 + results = { + {type="item", name="fast-underground-belt", amount = 2} + } }, { type = "recipe", @@ -512,8 +547,9 @@ data:extend({ {"nullius-box-underground-belt-1", 1}, {"nullius-box-underground-pipe-2", 1} }, - result = "nullius-box-underground-belt-2", - result_count = 2 + results = { + {type="item", name="nullius-box-underground-belt-2", amount = 2} + } }, { type = "recipe", @@ -530,7 +566,9 @@ data:extend({ {"nullius-steel-sheet", 4}, {"decider-combinator", 1} }, - result = "fast-splitter" + results = { + {type="item", name="fast-splitter", amount = 1} + } }, { type = "recipe", @@ -560,8 +598,9 @@ data:extend({ {"nullius-box-steel-sheet", 4}, {"nullius-box-logic-circuit", 1} }, - result = "fast-splitter", - result_count = 5 + results = { + {type="item", name="fast-splitter", amount = 5} + } }, { @@ -579,8 +618,9 @@ data:extend({ {type="item", name="nullius-bearing", amount=2}, {type="item", name="nullius-fiberglass", amount=3} }, - result = "express-transport-belt", - result_count = 6 + results = { + {type="item", name="express-transport-belt", amount = 6} + } }, { type = "recipe", @@ -598,8 +638,9 @@ data:extend({ {type="item", name="nullius-box-bearing", amount=2}, {type="item", name="nullius-box-fiberglass", amount=3} }, - result = "nullius-box-belt-3", - result_count = 6 + results = { + {type="item", name="nullius-box-belt-3", amount = 6} + } }, { type = "recipe", @@ -615,8 +656,9 @@ data:extend({ {"fast-underground-belt", 2}, {"nullius-underground-pipe-3", 1} }, - result = "express-underground-belt", - result_count = 2 + results = { + {type="item", name="express-underground-belt", amount = 2} + } }, { type = "recipe", @@ -633,8 +675,9 @@ data:extend({ {"nullius-box-underground-belt-2", 2}, {"nullius-box-underground-pipe-3", 1} }, - result = "nullius-box-underground-belt-3", - result_count = 2 + results = { + {type="item", name="nullius-box-underground-belt-3", amount = 2} + } }, { type = "recipe", @@ -650,7 +693,9 @@ data:extend({ {"fast-splitter", 1}, {"nullius-sensor-1", 1} }, - result = "express-splitter" + results = { + {type="item", name="express-splitter", amount = 1} + } }, { type = "recipe", @@ -680,8 +725,9 @@ data:extend({ {"fast-splitter", 5}, {"nullius-box-sensor-1", 1} }, - result = "express-splitter", - result_count = 5 + results = { + {type="item", name="express-splitter", amount = 5} + } }, { @@ -700,8 +746,9 @@ data:extend({ {type="item", name="nullius-titanium-sheet", amount=5}, {type="item", name="nullius-transformer", amount=1} }, - result = "ultimate-transport-belt", - result_count = 10 + results = { + {type="item", name="bob-ultimate-transport-belt", amount = 10} + } }, { type = "recipe", @@ -720,8 +767,9 @@ data:extend({ {type="item", name="nullius-box-titanium-sheet", amount=5}, {type="item", name="nullius-box-transformer", amount=1} }, - result = "nullius-box-belt-4", - result_count = 10 + results = { + {type="item", name="nullius-box-belt-4", amount = 10} + } }, { type = "recipe", @@ -733,12 +781,13 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"ultimate-transport-belt", 16}, + {"bob-ultimate-transport-belt", 16}, {"express-underground-belt", 2}, {"nullius-underground-pipe-4", 2} }, - result = "ultimate-underground-belt", - result_count = 2 + results = { + {type="item", name="bob-ultimate-underground-belt", amount = 2} + } }, { type = "recipe", @@ -755,8 +804,9 @@ data:extend({ {"nullius-box-underground-belt-3", 2}, {"nullius-box-underground-pipe-4", 2} }, - result = "nullius-box-underground-belt-4", - result_count = 2 + results = { + {type="item", name="nullius-box-underground-belt-4", amount = 2} + } }, { type = "recipe", @@ -768,11 +818,13 @@ data:extend({ category = "small-crafting", energy_required = 16, ingredients = { - {"ultimate-underground-belt", 2}, + {"bob-ultimate-underground-belt", 2}, {"express-splitter", 2}, - {"express-stack-filter-inserter", 1} + {"bob-express-bulk-inserter", 1} }, - result = "ultimate-splitter" + results = { + {type="item", name="bob-ultimate-splitter", amount = 1} + } }, { type = "recipe", @@ -800,10 +852,11 @@ data:extend({ ingredients = { {"nullius-box-underground-belt-4", 2}, {"express-splitter", 10}, - {"nullius-box-filter-inserter-4", 1} + {"nullius-box-inserter-4", 1} }, - result = "ultimate-splitter", - result_count = 5 + results = { + {type="item", name="bob-ultimate-splitter", amount = 5} + } }, { @@ -821,8 +874,9 @@ data:extend({ {"nullius-steel-rod", 1}, {"nullius-gravel", 5} }, - result = "rail", - result_count = 3 + results = { + {type="item", name="rail", amount = 3} + } }, { type = "recipe", @@ -840,8 +894,9 @@ data:extend({ {"nullius-box-steel-rod", 1}, {"nullius-box-gravel", 5} }, - result = "nullius-box-rail", - result_count = 3 + results = { + {type="item", name="nullius-box-rail", amount = 3} + } }, { @@ -857,7 +912,9 @@ data:extend({ {"programmable-speaker", 1}, {"small-lamp", 2} }, - result = "train-stop" + results = { + {type="item", name="train-stop", amount = 1} + } }, { type = "recipe", @@ -873,7 +930,9 @@ data:extend({ {"nullius-box-antenna", 1}, {"nullius-box-lamp-1", 2} }, - result = "nullius-box-train-stop" + results = { + {type="item", name="nullius-box-train-stop", amount = 1} + } }, { type = "recipe", @@ -890,15 +949,16 @@ data:extend({ {"nullius-sensor-1", 1}, {"power-switch", 1} }, - result = "rail-signal", - result_count = 2 + results = { + {type="item", name="rail-signal", amount = 2} + } }, { type = "recipe", name = "nullius-legacy-rail-signal", enabled = false, - always_show_made_in = true, - hidden = true, + always_show_made_in = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "small-crafting", @@ -908,7 +968,9 @@ data:extend({ {"small-lamp", 3}, {"nullius-sensor-1", 1} }, - result = "rail-signal" + results = { + {type="item", name="rail-signal", amount = 1} + } }, { type = "recipe", @@ -924,15 +986,16 @@ data:extend({ {"nullius-box-sensor-1", 1}, {"nullius-box-power-switch", 1} }, - result = "nullius-box-rail-signal", - result_count = 2 + results = { + {type="item", name="nullius-box-rail-signal", amount = 2} + } }, { type = "recipe", name = "nullius-legacy-boxed-rail-signal", enabled = false, - always_show_made_in = true, - hidden = true, + always_show_made_in = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "large-assembly", @@ -943,7 +1006,9 @@ data:extend({ {"nullius-box-lamp-1", 3}, {"nullius-box-sensor-1", 1} }, - result = "nullius-box-rail-signal" + results = { + {type="item", name="nullius-box-rail-signal", amount = 1} + } }, { type = "recipe", @@ -956,7 +1021,9 @@ data:extend({ {"rail-signal", 1}, {"copper-cable", 2} }, - result = "rail-chain-signal" + results = { + {type="item", name="rail-chain-signal", amount = 1} + } }, { type = "recipe", @@ -970,12 +1037,15 @@ data:extend({ {"nullius-box-rail-signal", 1}, {"nullius-box-insulated-wire", 2} }, - result = "nullius-box-chain-signal" + results = { + {type="item", name="nullius-box-chain-signal", amount = 1} + } }, { type = "recipe", name = "nullius-power-switch", + localised_name = {"item-name.nullius-power-switch"}, enabled = false, category = "small-crafting", always_show_made_in = true, @@ -986,7 +1056,9 @@ data:extend({ {"nullius-rubber", 1}, {"nullius-iron-rod", 1} }, - result = "power-switch" + results = { + {type="item", name="power-switch", amount = 1} + } }, { type = "recipe", @@ -1002,7 +1074,9 @@ data:extend({ {"nullius-box-rubber", 1}, {"nullius-box-iron-rod", 1} }, - result = "nullius-box-power-switch" + results = { + {type="item", name="nullius-box-power-switch", amount = 1} + } }, { type = "recipe", @@ -1017,8 +1091,9 @@ data:extend({ {"copper-cable", 5}, {"decider-combinator", 1} }, - result = "red-wire", - result_count = 8 + results = { + {type="item", name="nullius-red-wire", amount = 8} + } }, { type = "recipe", @@ -1034,8 +1109,9 @@ data:extend({ {"nullius-box-insulated-wire", 5}, {"nullius-box-logic-circuit", 1} }, - result = "nullius-box-red-wire", - result_count = 8 + results = { + {type="item", name="nullius-box-red-wire", amount = 8} + } }, { type = "recipe", @@ -1047,10 +1123,11 @@ data:extend({ always_show_products = true, energy_required = 3, ingredients = { - {"red-wire", 5} + {"nullius-red-wire", 5} }, - result = "green-wire", - result_count = 4 + results = { + {type="item", name="nullius-green-wire", amount = 4} + } }, { type = "recipe", @@ -1065,13 +1142,15 @@ data:extend({ ingredients = { {"nullius-box-red-wire", 5} }, - result = "nullius-box-green-wire", - result_count = 4 + results = { + {type="item", name="nullius-box-green-wire", amount = 4} + } }, { type = "recipe", name = "nullius-wall", + localised_name = {"item-name.nullius-wall"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -1082,7 +1161,9 @@ data:extend({ {"nullius-insulation", 1}, {"nullius-mortar", 1} }, - result = "stone-wall" + results = { + {type="item", name="stone-wall", amount = 1} + } }, { type = "recipe", @@ -1098,11 +1179,14 @@ data:extend({ {"nullius-box-insulation", 1}, {"nullius-mortar", 5} }, - result = "nullius-box-wall" + results = { + {type="item", name="nullius-box-wall", amount = 1} + } }, { type = "recipe", name = "nullius-gate", + localised_name = {"item-name.nullius-gate"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -1115,7 +1199,9 @@ data:extend({ {"nullius-sensor-1", 1}, {"rail-signal", 1} }, - result = "gate" + results = { + {type="item", name="gate", amount = 1} + } }, { type = "recipe", @@ -1133,23 +1219,25 @@ data:extend({ {"nullius-box-sensor-1", 1}, {"nullius-box-rail-signal", 1} }, - result = "nullius-box-gate" + results = { + {type="item", name="nullius-box-gate", amount = 1} + } }, { type = "recipe", name = "nullius-barrel-1", - localised_name = {"", {"item-name.empty-barrel"}, " ", 1}, + localised_name = {"", {"item-name.barrel"}, " ", tostring(1)}, icons = { { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {8, -9} } @@ -1168,13 +1256,14 @@ data:extend({ {type="item", name="nullius-plastic", amount=1}, {type="item", name="nullius-one-way-valve", amount=1} }, - result = "empty-barrel", - result_count = 3 + results = { + {type="item", name="barrel", amount = 3} + } }, { type = "recipe", name = "nullius-boxed-barrel-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.empty-barrel"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(1)}, icons = { { icon = ICONPATH .. "crate.png", @@ -1183,13 +1272,13 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {7, -8} } @@ -1208,13 +1297,14 @@ data:extend({ {type="item", name="nullius-box-plastic", amount=1}, {type="item", name="nullius-box-one-way-valve", amount=1} }, - result = "nullius-box-barrel", - result_count = 3 + results = { + {type="item", name="nullius-box-barrel", amount = 3} + } }, { type = "recipe", name = "nullius-barrel-2", - localised_name = {"", {"item-name.empty-barrel"}, " ", 2}, + localised_name = {"", {"item-name.barrel"}, " ", tostring(2)}, enabled = false, category = "hand-casting", subgroup = "canisters", @@ -1228,13 +1318,14 @@ data:extend({ {type="item", name="nullius-small-tank-1", amount=1}, {type="item", name="nullius-one-way-valve", amount=3} }, - result = "empty-barrel", - result_count = 6 + results = { + {type="item", name="barrel", amount = 6} + } }, { type = "recipe", name = "nullius-boxed-barrel-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.empty-barrel"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(2)}, enabled = false, category = "machine-casting", subgroup = "boxed-canister", @@ -1248,8 +1339,9 @@ data:extend({ {type="item", name="nullius-box-small-tank-1", amount=1}, {type="item", name="nullius-box-one-way-valve", amount=3} }, - result = "nullius-box-barrel", - result_count = 6 + results = { + {type="item", name="nullius-box-barrel", amount = 6} + } }, { type = "recipe", @@ -1257,7 +1349,7 @@ data:extend({ localised_name = {"recipe-name.nullius-barrel-recycling"}, icon = "__base__/graphics/icons/fluid/barreling/barrel-empty.png", icon_size = 64, - icon_mipmaps = 4, + enabled = false, category = "hand-casting", subgroup = "canister-emptying", @@ -1268,7 +1360,7 @@ data:extend({ allow_as_intermediate = false, energy_required = 2, ingredients = { - {type="item", name="empty-barrel", amount=6} + {type="item", name="barrel", amount=6} }, results = { {type="item", name="nullius-iron-ingot", amount=1}, @@ -1280,7 +1372,7 @@ data:extend({ { type = "recipe", name = "nullius-legacy-barrel-1", - localised_name = {"", {"item-name.empty-barrel"}, " ", 1}, + localised_name = {"", {"item-name.barrel"}, " ", tostring(1)}, enabled = false, category = "large-crafting", subgroup = "canisters", @@ -1288,7 +1380,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, energy_required = 5, @@ -1296,13 +1388,14 @@ data:extend({ {type="item", name="nullius-small-tank-1", amount=1}, {type="item", name="nullius-one-way-valve", amount=3} }, - result = "empty-barrel", - result_count = 6 + results = { + {type="item", name="barrel", amount = 6} + } }, { type = "recipe", name = "nullius-legacy-boxed-barrel-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.empty-barrel"}}, " ", 1}, + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(1)}, enabled = false, category = "huge-assembly", subgroup = "boxed-canister", @@ -1310,7 +1403,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, energy_required = 25, @@ -1318,23 +1411,24 @@ data:extend({ {type="item", name="nullius-box-small-tank-1", amount=1}, {type="item", name="nullius-box-one-way-valve", amount=3} }, - result = "nullius-box-barrel", - result_count = 6 + results = { + {type="item", name="nullius-box-barrel", amount = 6} + } }, { type = "recipe", name = "nullius-legacy-barrel-2", - localised_name = {"", {"item-name.empty-barrel"}, " ", 2}, + localised_name = {"", {"item-name.barrel"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {8, -9} } @@ -1355,13 +1449,14 @@ data:extend({ {type="item", name="nullius-plastic", amount=1}, {type="item", name="nullius-one-way-valve", amount=1} }, - result = "empty-barrel", - result_count = 3 + results = { + {type="item", name="barrel", amount = 3} + } }, { type = "recipe", name = "nullius-legacy-boxed-barrel-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.empty-barrel"}}, " ", 2}, + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(2)}, icons = { { icon = ICONPATH .. "crate.png", @@ -1370,13 +1465,13 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {7, -8} } @@ -1397,8 +1492,9 @@ data:extend({ {type="item", name="nullius-box-plastic", amount=1}, {type="item", name="nullius-box-one-way-valve", amount=1} }, - result = "nullius-box-barrel", - result_count = 3 + results = { + {type="item", name="nullius-box-barrel", amount = 3} + } }, { type = "recipe", @@ -1406,7 +1502,7 @@ data:extend({ localised_name = {"recipe-name.nullius-barrel-recycling"}, icon = "__base__/graphics/icons/fluid/barreling/barrel-empty.png", icon_size = 64, - icon_mipmaps = 4, + enabled = false, category = "medium-crafting", subgroup = "canister-emptying", @@ -1418,7 +1514,7 @@ data:extend({ allow_as_intermediate = false, energy_required = 2, ingredients = { - {type="item", name="empty-barrel", amount=5} + {type="item", name="barrel", amount=5} }, results = { {type="item", name="nullius-iron-ingot", amount=1}, @@ -1431,25 +1527,25 @@ if settings.startup["bobmods-logistics-inserteroverhaul"].value == false then data:extend({ { type = "item", - name = "turbo-inserter", + name = "bob-turbo-inserter", localised_name = {"entity-name.nullius-inserter-2"}, icon = "__base__/graphics/icons/fast-inserter.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, subgroup = "inserter", order = "nullius-c", - place_result = "turbo-inserter", + place_result = "bob-turbo-inserter", stack_size = 100 }, - { - type = "item", - name = "turbo-filter-inserter", - localised_name = {"entity-name.nullius-filter-inserter-2"}, - icon = "__base__/graphics/icons/filter-inserter.png", - icon_size = 64, icon_mipmaps = 4, - subgroup = "inserter", - order = "nullius-d", - place_result = "turbo-filter-inserter", - stack_size = 100 - } + -- { + -- type = "item", + -- name = "turbo-filter-inserter", + -- localised_name = {"entity-name.nullius-filter-inserter-2"}, + -- icon = "__base__/graphics/icons/filter-inserter.png", + -- icon_size = 64, + -- subgroup = "inserter", + -- order = "nullius-d", + -- place_result = "turbo-filter-inserter", + -- stack_size = 100 + -- } }) end diff --git a/nullius/prototypes/item/turbine.lua b/nullius/prototypes/item/turbine.lua index b752918..a743181 100644 --- a/nullius/prototypes/item/turbine.lua +++ b/nullius/prototypes/item/turbine.lua @@ -10,7 +10,6 @@ local function create_turbine_recipe(fluidname, exhaust, energy, counto, countc, icons = fluid.icons, icon = fluid.icon, icon_size = fluid.icon_size, - icon_mipmaps = fluid.icon_mipmaps, crafting_machine_tint = { primary = fluid.flow_color }, category = "turbine-open", subgroup = "turbine-open", @@ -59,21 +58,21 @@ data:extend({ { type = "item", name = "nullius-turbine-open-1", - localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(1)}, localised_description = {"entity-description.nullius-turbine-info", - 1, 90, {"entity-description.nullius-turbine-item", + tostring(1), tostring(90), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-open"}}}, icons = { { icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.7, 0.7, 0.6, 1} }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, shift = {1, -8}, tint = {0.75, 0.75, 0.75, 0.8} @@ -87,21 +86,21 @@ data:extend({ { type = "item", name = "nullius-turbine-open-2", - localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(2)}, localised_description = {"entity-description.nullius-turbine-info", - 2.5, 95, {"entity-description.nullius-turbine-item", + tostring(2.5), tostring(95), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-open"}}}, icons = { { icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.85, 0.85, 0.75, 1} }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, shift = {1, -8}, tint = {0.8, 0.8, 0.8, 0.82} @@ -115,21 +114,21 @@ data:extend({ { type = "item", name = "nullius-turbine-open-3", - localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", 3}, + localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(3)}, localised_description = {"entity-description.nullius-turbine-info", - 6, 100, {"entity-description.nullius-turbine-item", + tostring(6), tostring(100), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-open"}}}, icons = { { icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {1, 1, 0.9, 1} }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.32, shift = {1, -8}, tint = {0.85, 0.85, 0.85, 0.85} @@ -143,14 +142,14 @@ data:extend({ { type = "item", name = "nullius-turbine-closed-1", - localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", 1}, + localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(1)}, localised_description = {"entity-description.nullius-turbine-info", - 1, 85, {"entity-description.nullius-turbine-item", + tostring(1), tostring(85), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-closed"}}}, icons = {{ icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.7, 1} }}, subgroup = "energy-backup", @@ -161,14 +160,14 @@ data:extend({ { type = "item", name = "nullius-turbine-closed-2", - localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", 2}, + localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(2)}, localised_description = {"entity-description.nullius-turbine-info", - 2.5, 90, {"entity-description.nullius-turbine-item", + tostring(2.5), tostring(90), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-closed"}}}, icons = {{ icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.75, 0.75, 0.85, 1} }}, subgroup = "energy-backup", @@ -179,14 +178,14 @@ data:extend({ { type = "item", name = "nullius-turbine-closed-3", - localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", 3}, + localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(3)}, localised_description = {"entity-description.nullius-turbine-info", - 6, 95, {"entity-description.nullius-turbine-item", + tostring(6), tostring(95), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-closed"}}}, icons = {{ icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.9, 0.9, 1, 1} }}, subgroup = "energy-backup", @@ -208,7 +207,9 @@ data:extend({ {"nullius-iron-gear", 1}, {"pipe", 2} }, - result = "nullius-turbine-open-1" + results = { + {type = "item", name = "nullius-turbine-open-1", amount = 1} + } }, { type = "recipe", @@ -224,7 +225,9 @@ data:extend({ {"nullius-box-iron-gear", 1}, {"nullius-box-pipe-1", 2} }, - result = "nullius-box-turbine-open-1" + results = { + {type = "item", name = "nullius-box-turbine-open-1", amount = 1} + } }, { type = "recipe", @@ -238,7 +241,9 @@ data:extend({ {"nullius-small-tank-1", 1}, {"nullius-top-up-valve", 1} }, - result = "nullius-turbine-closed-1" + results = { + {type = "item", name = "nullius-turbine-closed-1", amount = 1} + } }, { type = "recipe", @@ -253,7 +258,9 @@ data:extend({ {"nullius-box-small-tank-1", 1}, {"nullius-box-top-up-valve", 1} }, - result = "nullius-box-turbine-closed-1" + results = { + {type = "item", name = "nullius-box-turbine-closed-1", amount = 1} + } }, { type = "recipe", @@ -269,7 +276,9 @@ data:extend({ {"nullius-steel-gear", 3}, {"nullius-capacitor", 1} }, - result = "nullius-turbine-open-2" + results = { + {type = "item", name = "nullius-turbine-open-2", amount = 1} + } }, { type = "recipe", @@ -286,7 +295,9 @@ data:extend({ {"nullius-box-steel-gear", 3}, {"nullius-box-capacitor", 1} }, - result = "nullius-box-turbine-open-2" + results = { + {type = "item", name = "nullius-box-turbine-open-2", amount = 1} + } }, { type = "recipe", @@ -300,7 +311,9 @@ data:extend({ {"nullius-turbine-closed-1", 1}, {"nullius-small-pump-1", 1} }, - result = "nullius-turbine-closed-2" + results = { + {type = "item", name = "nullius-turbine-closed-2", amount = 1} + } }, { type = "recipe", @@ -315,7 +328,9 @@ data:extend({ {"nullius-box-turbine-closed-1", 1}, {"nullius-box-small-pump-1", 1} }, - result = "nullius-box-turbine-closed-2" + results = { + {type = "item", name = "nullius-box-turbine-closed-2", amount = 1} + } }, { type = "recipe", @@ -331,7 +346,9 @@ data:extend({ {"nullius-bearing", 6}, {"nullius-transformer", 1} }, - result = "nullius-turbine-open-3" + results = { + {type = "item", name = "nullius-turbine-open-3", amount = 1} + } }, { type = "recipe", @@ -348,7 +365,9 @@ data:extend({ {"nullius-box-bearing", 6}, {"nullius-box-transformer", 1} }, - result = "nullius-box-turbine-open-3" + results = { + {type = "item", name = "nullius-box-turbine-open-3", amount = 1} + } }, { type = "recipe", @@ -363,7 +382,9 @@ data:extend({ {"nullius-small-tank-2", 1}, {"nullius-small-pump-2", 1} }, - result = "nullius-turbine-closed-3" + results = { + {type = "item", name = "nullius-turbine-closed-3", amount = 1} + } }, { type = "recipe", @@ -379,6 +400,8 @@ data:extend({ {"nullius-box-small-tank-2", 1}, {"nullius-box-small-pump-2", 1} }, - result = "nullius-box-turbine-closed-3" + results = { + {type = "item", name = "nullius-box-turbine-closed-3", amount = 1} + } } }) diff --git a/nullius/prototypes/item/void.lua b/nullius/prototypes/item/void.lua index d184919..57f4d22 100644 --- a/nullius/prototypes/item/void.lua +++ b/nullius/prototypes/item/void.lua @@ -12,7 +12,7 @@ data:extend({ tint = {r=0.7, g=0.7, b=0.7, a=1} } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", stack_size = 100 }, @@ -25,7 +25,7 @@ data:extend({ icon_size = 64 } }, - flags = {"hidden"}, + hidden = true, subgroup = "other", stack_size = 100 }, @@ -33,7 +33,7 @@ data:extend({ type = "item", name = "nullius-power-sink", icons = data.raw.fluid["nullius-energy"].icons, - flags = {"hidden"}, + hidden = true, subgroup = "other", stack_size = 100 }, @@ -589,8 +589,8 @@ data:extend({ category = "nullius-power-sink", subgroup = "nullius-power-sink", hide_from_player_crafting = true, - hide_from_stats = true, - hidden = true, + hide_from_stats = true, + hidden = true, energy_required = 2.5, ingredients = {{type="fluid", name="nullius-energy", amount=150}}, results = {{type="item", name="nullius-power-sink", amount=1, probability=0}} diff --git a/nullius/prototypes/item/weapon.lua b/nullius/prototypes/item/weapon.lua index 9050fee..1d2c128 100644 --- a/nullius/prototypes/item/weapon.lua +++ b/nullius/prototypes/item/weapon.lua @@ -7,8 +7,8 @@ data:extend({ name = "nullius-drone-cannon", icon = "__base__/graphics/icons/artillery-turret.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xm", stack_size = 1, @@ -67,8 +67,8 @@ data:extend({ localised_description = {"item-description.nullius-gun"}, icon = "__base__/graphics/icons/submachine-gun.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xb", stack_size = 1, @@ -99,8 +99,8 @@ data:extend({ localised_description = {"item-description.nullius-gun"}, icon = "__base__/graphics/icons/submachine-gun.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xb", stack_size = 1, @@ -132,8 +132,8 @@ data:extend({ localised_description = {"item-description.nullius-gun"}, icon = "__base__/graphics/icons/tank-cannon.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xd", stack_size = 1, @@ -165,8 +165,8 @@ data:extend({ localised_description = {"item-description.nullius-gun"}, icon = "__base__/graphics/icons/tank-cannon.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xd", stack_size = 1, @@ -199,8 +199,8 @@ data:extend({ localised_description = {"item-description.nullius-gun"}, icon = "__base__/graphics/icons/tank-cannon.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xf", stack_size = 1, @@ -234,8 +234,8 @@ data:extend({ localised_description = {"item-description.nullius-missile-launcher"}, icon = "__base__/graphics/icons/rocket-launcher.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xc", stack_size = 1, @@ -258,8 +258,8 @@ data:extend({ localised_description = {"item-description.nullius-missile-launcher"}, icon = "__base__/graphics/icons/rocket-launcher.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xe", stack_size = 1, @@ -282,8 +282,8 @@ data:extend({ localised_description = {"item-description.nullius-missile-launcher"}, icon = "__base__/graphics/icons/rocket-launcher.png", icon_size = 64, - icon_mipmaps = 4, - flags = {"hidden"}, + + hidden = true, subgroup = "vehicle-weapon", order = "nullius-xg", stack_size = 1, @@ -308,9 +308,9 @@ data:extend({ localised_name = {"item-name.nullius-mecha-drone-launcher"}, icon = "__base__/graphics/icons/artillery-turret.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "vehicle-weapon", - flags = {"hidden"}, + hidden = true, order = "nullius-xmb", attack_parameters = { type = "projectile", @@ -332,9 +332,9 @@ data:extend({ localised_name = {"item-name.nullius-mecha-drone-launcher"}, icon = "__base__/graphics/icons/artillery-turret.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "vehicle-weapon", - flags = {"hidden"}, + hidden = true, order = "nullius-xmc", attack_parameters = { type = "projectile", @@ -356,7 +356,7 @@ data:extend({ name = "nullius-gun", icon = "__base__/graphics/icons/pistol.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-cb", stack_size = 10, @@ -393,7 +393,9 @@ data:extend({ {"nullius-steel-gear", 1}, {"nullius-rubber", 1} }, - result = "nullius-gun" + results = { + {type="item", name="nullius-gun", amount = 1} + } }, { @@ -401,7 +403,7 @@ data:extend({ name = "nullius-rifle", icon = "__base__/graphics/icons/submachine-gun.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-cc", stack_size = 5, @@ -438,7 +440,9 @@ data:extend({ {"nullius-motor-3", 1}, {"nullius-sensor-2", 1} }, - result = "nullius-rifle" + results = { + {type="item", name="nullius-rifle", amount = 1} + } }, { @@ -446,7 +450,7 @@ data:extend({ name = "nullius-missile-launcher", icon = "__base__/graphics/icons/rocket-launcher.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-d", stack_size = 10, @@ -473,7 +477,9 @@ data:extend({ {"nullius-pipe-2", 3}, {"nullius-sensor-1", 1} }, - result = "nullius-missile-launcher" + results = { + {type="item", name="nullius-missile-launcher", amount = 1} + } }, { @@ -481,12 +487,12 @@ data:extend({ name = "nullius-missile-1", icon = "__base__/graphics/icons/explosive-rocket.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-fb", stack_size = 100, + ammo_category = "rocket", ammo_type = { - category = "rocket", target_type = "position", action = { type = "direct", @@ -519,8 +525,9 @@ data:extend({ {"nullius-battery-1", 1}, {"nullius-motor-2", 1} }, - result = "nullius-missile-1", - result_count = 6 + results = { + {type="item", name="nullius-missile-1", amount = 6} + } }, { type = "recipe", @@ -540,8 +547,9 @@ data:extend({ {"nullius-box-battery-1", 1}, {"nullius-box-motor-2", 1} }, - result = "nullius-box-missile-1", - result_count = 6 + results = { + {type="item", name="nullius-box-missile-1", amount = 6} + } }, { @@ -549,12 +557,12 @@ data:extend({ name = "nullius-missile-2", icon = "__base__/graphics/icons/atomic-bomb.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-fc", stack_size = 100, + ammo_category = "rocket", ammo_type = { - category = "rocket", target_type = "position", action = { type = "direct", @@ -586,7 +594,9 @@ data:extend({ {"nullius-sensor-2", 1}, {"nullius-yield-module-2", 1} }, - result = "nullius-missile-2" + results = { + {type="item", name="nullius-missile-2", amount = 1} + } }, { type = "recipe", @@ -605,22 +615,24 @@ data:extend({ {"nullius-box-sensor-2", 1}, {"nullius-box-yield-module-2", 1} }, - result = "nullius-box-missile-2" + results = { + {type="item", name="nullius-box-missile-2", amount = 1} + } }, { type = "ammo", name = "nullius-magazine", - localised_name = {"", {"item-name.nullius-magazine"}, " ", 1}, + localised_name = {"", {"item-name.nullius-magazine"}, " ", tostring(1)}, icon = "__base__/graphics/icons/piercing-rounds-magazine.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-eb", stack_size = 200, magazine_size = 10, + ammo_category = "bullet", ammo_type = { - category = "bullet", target_type = "position", action = { { @@ -666,16 +678,16 @@ data:extend({ { type = "ammo", name = "nullius-magazine-2", - localised_name = {"", {"item-name.nullius-magazine"}, " ", 2}, + localised_name = {"", {"item-name.nullius-magazine"}, " ", tostring(2)}, icon = "__base__/graphics/icons/uranium-rounds-magazine.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "demolitions", order = "nullius-ec", stack_size = 200, magazine_size = 10, + ammo_category = "bullet", ammo_type = { - category = "bullet", target_type = "position", action = { { @@ -731,8 +743,9 @@ data:extend({ {"cliff-explosives", 1}, {"nullius-steel-rod", 6} }, - result = "nullius-magazine", - result_count = 20 + results = { + {type="item", name="nullius-magazine", amount = 20} + } }, { type = "recipe", @@ -748,8 +761,9 @@ data:extend({ {"nullius-box-explosive", 1}, {"nullius-box-steel-rod", 6} }, - result = "nullius-box-magazine", - result_count = 20 + results = { + {type="item", name="nullius-box-magazine", amount = 20} + } }, { type = "recipe", @@ -765,8 +779,9 @@ data:extend({ {"nullius-uranium", 1}, {"nullius-copper-sheet", 1} }, - result = "nullius-magazine-2", - result_count = 3 + results = { + {type="item", name="nullius-magazine-2", amount = 3} + } }, { @@ -777,7 +792,7 @@ data:extend({ { icon = "__base__/graphics/icons/explosives.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { @@ -797,16 +812,18 @@ data:extend({ ingredients = { {type="item", name="nullius-chlorine-barrel", amount=1}, {type="item", name="processed-fuel", amount=5}, - {type="item", name="red-wire", amount=1}, - {type="item", name="green-wire", amount=1}, + {type="item", name="nullius-red-wire", amount=1}, + {type="item", name="nullius-green-wire", amount=1}, {type="item", name="nullius-small-miner-1", amount=1} }, - result = "cliff-explosives" + results = { + {type="item", name="cliff-explosives", amount = 1} + } }, { type = "recipe", name = "nullius-explosive", - localised_name = {"", {"item-name.nullius-explosive"}, " ", 1}, + localised_name = {"", {"item-name.nullius-explosive"}, " ", tostring(1)}, order = "nullius-xc", enabled = false, always_show_made_in = true, @@ -822,7 +839,7 @@ data:extend({ {type="fluid", name="nullius-glycerol", amount=6}, {type="item", name="nullius-sand", amount=2}, {type="item", name="nullius-plastic", amount=1}, - {type="item", name="red-wire", amount=1} + {type="item", name="nullius-red-wire", amount=1} }, results = { {type="item", name="cliff-explosives", amount=1}, @@ -833,12 +850,12 @@ data:extend({ { type = "recipe", name = "nullius-boxed-explosive", - localised_name = {"recipe-name.nullius-boxed", - {"", {"item-name.nullius-explosive"}, " ", 1}}, + localised_name = {"recipe-name.nullius-boxed", + {"", {"item-name.nullius-explosive"}, " ", tostring(1)}}, enabled = false, category = "basic-chemistry", subgroup = "boxed-demolition", - order = "nullius-cb", + order = "nullius-cb", crafting_machine_tint = { primary = data.raw.fluid["nullius-acid-nitric"].flow_color, secondary = data.raw.fluid["nullius-glycerol"].flow_color @@ -862,18 +879,18 @@ data:extend({ { type = "recipe", name = "nullius-explosive-2", - localised_name = {"", {"item-name.nullius-explosive"}, " ", 2}, + localised_name = {"", {"item-name.nullius-explosive"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/explosives.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5 }, { - icon = "__angelssmelting__/graphics/icons/powder-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.3, shift = {-7, -7} } @@ -894,8 +911,8 @@ data:extend({ {type="item", name="nullius-cellulose", amount=5}, {type="item", name="nullius-aluminum-powder", amount=4}, {type="item", name="nullius-plastic", amount=2}, - {type="item", name="red-wire", amount=1}, - {type="item", name="green-wire", amount=1} + {type="item", name="nullius-red-wire", amount=1}, + {type="item", name="nullius-green-wire", amount=1} }, results = { {type="item", name="cliff-explosives", amount=4}, @@ -907,7 +924,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-explosive-2", localised_name = {"recipe-name.nullius-boxed", - {"", {"item-name.nullius-explosive"}, " ", 2}}, + {"", {"item-name.nullius-explosive"}, " ", tostring(2)}}, icons = { { icon = ICONPATH .. "crate.png", @@ -916,13 +933,13 @@ data:extend({ { icon = "__base__/graphics/icons/explosives.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.45 }, { - icon = "__angelssmelting__/graphics/icons/powder-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.27, shift = {-6, -6} } @@ -959,7 +976,7 @@ data:extend({ name = "nullius-turret", icon = "__base__/graphics/icons/laser-turret.png", icon_size = 64, - icon_mipmaps = 4, + subgroup = "drone-launcher", order = "nullius-h", place_result = "nullius-turret", @@ -982,7 +999,9 @@ data:extend({ {type="item", name="nullius-transformer", amount=2}, {type="fluid", name="nullius-compressed-helium", amount=20, fluidbox_index=1} }, - result = "nullius-turret" + results = { + {type="item", name="nullius-turret", amount = 1} + } }, { @@ -996,15 +1015,20 @@ data:extend({ subgroup = "demolitions", order = "nullius-r", stack_size = 1, - selection_color = {r = 0.8, g = 0.4, b = 0.1, a = 0.8}, - alt_selection_color = {r = 0.8, g = 0.4, b = 0.1, a = 0.8}, - selection_mode = {"any-entity"}, - alt_selection_mode = {"any-entity"}, - selection_cursor_box_type = "entity", - alt_selection_cursor_box_type = "entity", - entity_type_filters = {"simple-entity", + + select = { + border_color = {r = 0.8, g = 0.4, b = 0.1, a = 0.8}, + cursor_box_type = "entity", + mode = "any-entity", + entity_type_filters = {"simple-entity", "item-entity", "rail-remnants", "corpse"}, - alt_entity_type_filters = {"rail-remnants", "corpse"} + }, + alt_select = { + border_color = {r = 0.8, g = 0.4, b = 0.1, a = 0.8}, + cursor_box_type = "entity", + mode = "any-entity", + entity_type_filters = {"rail-remnants", "corpse"}, + } }, { type = "recipe", @@ -1022,6 +1046,8 @@ data:extend({ {type="item", name="fast-splitter", amount=1}, {type="item", name="nullius-hydrogen-canister", amount=8} }, - result = "nullius-rock-picker" + results = { + {type="item", name="nullius-rock-picker", amount = 1} + } } }) From 17534ae26ad84e93b20d8544d20cbb1ca3b60c99 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 25 Jul 2025 14:25:03 +0200 Subject: [PATCH 005/236] Updated prototypes --- nullius/prototypes/achievements.lua | 21 +- nullius/prototypes/category.lua | 2 - nullius/prototypes/checkpoint.lua | 584 +++++++------- nullius/prototypes/hidden.lua | 54 +- nullius/prototypes/mods.lua | 20 +- nullius/prototypes/override.lua | 380 +++++---- nullius/prototypes/override_final.lua | 117 ++- nullius/prototypes/override_final_only.lua | 4 +- nullius/prototypes/override_mod.lua | 45 +- nullius/prototypes/recipe_book.lua | 2 +- nullius/prototypes/reskin.lua | 10 +- nullius/prototypes/resource.lua | 74 +- nullius/prototypes/resource_override.lua | 35 +- nullius/prototypes/technology.lua | 894 ++++++++++----------- nullius/prototypes/upgrades.lua | 32 +- 15 files changed, 1088 insertions(+), 1186 deletions(-) diff --git a/nullius/prototypes/achievements.lua b/nullius/prototypes/achievements.lua index 19e5083..a1eb3e2 100644 --- a/nullius/prototypes/achievements.lua +++ b/nullius/prototypes/achievements.lua @@ -11,10 +11,11 @@ data:extend({ until_second = 45 * 60 -- 45 minutes }, { - type = "finish-the-game-achievement", + type = "complete-objective-achievement", name = "nullius-accelerated-timeline", order = "ac", until_second = 60 * 60 * 24 * 6, -- 6 days + objective_condition = "game-finished", icon = "__base__/graphics/achievement/there-is-no-spoon.png", icon_size = 128 }, @@ -23,12 +24,14 @@ data:extend({ name = "nullius-lazier-bastard", order = "ad", amount = 0, + objective_condition = "game-finished", icon = "__base__/graphics/achievement/lazy-bastard.png", icon_size = 128 }, { - type = "finish-the-game-achievement", + type = "complete-objective-achievement", name = "nullius-mission-complete", + objective_condition = "game-finished", order = "ae", icon = "__base__/graphics/achievement/no-time-for-chitchat.png", icon_size = 128 @@ -70,10 +73,10 @@ data.raw["research-achievement"]["eco-unfriendly"].hidden = true data.raw["research-achievement"]["eco-unfriendly"].order = "b" data.raw["research-achievement"]["tech-maniac"].hidden = true data.raw["research-achievement"]["tech-maniac"].order = "b" -data.raw["finish-the-game-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].hidden = true -data.raw["finish-the-game-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].order = "b" -data.raw["finish-the-game-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].until_second = 60 -data.raw["finish-the-game-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].allowed_without_fight = false +data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].hidden = true +data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].order = "b" +data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].until_second = 60 +data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].allowed_without_fight = false data.raw["group-attack-achievement"]["it-stinks-and-they-dont-like-it"].hidden = true data.raw["construct-with-robots-achievement"]["automated-construction"].hidden = true data.raw["construct-with-robots-achievement"]["automated-construction"].amount = 10000 @@ -101,13 +104,13 @@ data.raw["dont-use-entity-in-energy-production-achievement"]["solaris"].hidden = data.raw["kill-achievement"]["steamrolled"].hidden = true data.raw["kill-achievement"]["pyromaniac"].hidden = true data.raw["kill-achievement"]["run-forrest-run"].hidden = true -data.raw["combat-robot-count"]["minions"].hidden = true +data.raw["combat-robot-count-achievement"]["minions"].hidden = true data.raw["dont-use-entity-in-energy-production-achievement"]["steam-all-the-way"].hidden = true data.raw["dont-use-entity-in-energy-production-achievement"]["steam-all-the-way"].excluded = {"solar-panel", "nullius-solar-panel-1", "nullius-solar-panel-2", "nullius-solar-panel-3", "nullius-solar-panel-4"} data.raw["dont-use-entity-in-energy-production-achievement"]["steam-all-the-way"].allowed_without_fight = false -data.raw["finish-the-game-achievement"]["no-time-for-chitchat"].hidden = true -data.raw["finish-the-game-achievement"]["there-is-no-spoon"].hidden = true +data.raw["complete-objective-achievement"]["no-time-for-chitchat"].hidden = true +data.raw["complete-objective-achievement"]["there-is-no-spoon"].hidden = true data.raw["achievement"]["so-long-and-thanks-for-all-the-fish"].hidden = true data.raw["dont-build-entity-achievement"]["raining-bullets"].hidden = true data.raw["dont-build-entity-achievement"]["logistic-network-embargo"].hidden = true diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index 854106f..f7eed6d 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -1050,7 +1050,6 @@ data:extend({ name = "barreling", order = "lb", icon_size = 64, - icon_mipmaps = 4, icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png" }, { @@ -1058,7 +1057,6 @@ data:extend({ name = "unbarreling", order = "lc", icon_size = 64, - icon_mipmaps = 4, icon = "__base__/graphics/icons/fluid/barreling/barrel-empty.png" }, { diff --git a/nullius/prototypes/checkpoint.lua b/nullius/prototypes/checkpoint.lua index 5c0e1b7..0938114 100644 --- a/nullius/prototypes/checkpoint.lua +++ b/nullius/prototypes/checkpoint.lua @@ -5,7 +5,7 @@ local function checkmark(scale) return { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6}, scale = scale } @@ -18,18 +18,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-iron-ingot"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 16, "nullius-iron-ingot", {"item-name.nullius-iron-ingot"}}}, + {"technology-description.nullius-item", tostring(16), "nullius-iron-ingot", {"item-name.nullius-iron-ingot"}}}, order = "nullius-yb", icons = { { - icon = "__angelssmelting__/graphics/technology/smelting-iron-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-iron-tech.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -48,18 +48,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-specimen", {"item-name.stone-brick"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 40, "stone-brick", {"item-name.stone-brick"}}}, + {"technology-description.nullius-item", tostring(40), "stone-brick", {"item-name.stone-brick"}}}, order = "nullius-yb", icons = { { icon = BASEICON .. "stone-brick.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -77,18 +77,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-specimen", {"item-name.nullius-plastic"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 5, "nullius-plastic", {"item-name.nullius-plastic"}}}, + {"technology-description.nullius-item", tostring(5), "nullius-plastic", {"item-name.nullius-plastic"}}}, order = "nullius-yb", icons = { { icon = BASEICON .. "plastic-bar.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -106,18 +106,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.iron-ore"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 400, "iron-ore", {"item-name.iron-ore"}}}, + {"technology-description.nullius-item", tostring(400), "iron-ore", {"item-name.iron-ore"}}}, order = "nullius-yb", icons = { { icon = BASEICON .. "iron-ore.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -135,17 +135,17 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-sample", {"fluid-name.nullius-hydrogen"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-fluid", 1000, "nullius-hydrogen", {"fluid-name.nullius-hydrogen"}}}, + {"technology-description.nullius-fluid", tostring(1000), "nullius-hydrogen", {"fluid-name.nullius-hydrogen"}}}, order = "nullius-yb", icons = { { - icon = "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", icon_size = 72 }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.125, tint = {0.6, 0.6, 0.6, 0.6} } @@ -164,17 +164,17 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-sample", {"fluid-name.nullius-carbon-dioxide"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-fluid", 1000, "nullius-carbon-dioxide", {"fluid-name.nullius-carbon-dioxide"}}}, + {"technology-description.nullius-fluid", tostring(1000), "nullius-carbon-dioxide", {"fluid-name.nullius-carbon-dioxide"}}}, order = "nullius-yb", icons = { { - icon = "__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", icon_size = 72 }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.125, tint = {0.6, 0.6, 0.6, 0.6} } @@ -193,18 +193,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"entity-name.nullius-small-furnace-1"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 4, "nullius-small-furnace-1", {"entity-name.nullius-small-furnace-1"}}}, + {"technology-description.nullius-item", tostring(4), "nullius-small-furnace-1", {"entity-name.nullius-small-furnace-1"}}}, order = "nullius-yb", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = BASEICON .. "stone-furnace.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -222,7 +222,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"fluid-name.nullius-water"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-fluid", 10000, "nullius-water", {"fluid-name.nullius-water"}}}, + {"technology-description.nullius-fluid", tostring(10000), "nullius-water", {"fluid-name.nullius-water"}}}, order = "nullius-yc", icons = { { @@ -249,7 +249,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"fluid-name.nullius-caustic-solution"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-fluid", 250, "nullius-caustic-solution", + {"technology-description.nullius-fluid", tostring(250), "nullius-caustic-solution", {"fluid-name.nullius-caustic-solution"}}}, order = "nullius-yc", icons = { @@ -277,14 +277,14 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-sandstone"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 1000, "nullius-sandstone", {"item-name.nullius-sandstone"}}}, + {"technology-description.nullius-item", tostring(1000), "nullius-sandstone", {"item-name.nullius-sandstone"}}}, order = "nullius-yc", icons = { data.raw.item["nullius-sandstone"].icons[1], { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -302,14 +302,14 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-bauxite"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 2000, "nullius-bauxite", {"item-name.nullius-bauxite"}}}, + {"technology-description.nullius-item", tostring(2000), "nullius-bauxite", {"item-name.nullius-bauxite"}}}, order = "nullius-yc", icons = { data.raw.item["nullius-bauxite"].icons[1], { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5, tint = {0.6, 0.6, 0.6, 0.6} } @@ -328,13 +328,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"technology-name.nullius-wind-power"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 5, "nullius-wind-turbine-1", {"entity-name.nullius-wind-base-1"}}}, + {"technology-description.nullius-item", tostring(5), "nullius-wind-turbine-1", {"entity-name.nullius-wind-base-1"}}}, order = "nullius-yc", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__nullius__/graphics/technology/tech_windturbine1.png", @@ -358,22 +358,22 @@ data:extend({ localised_description = {"", {"technology-description.nullius-checkpoint-prioritize"}, "\n", {"technology-description.nullius-checkpoint-configure", {"technology-description.nullius-item", - 1, "nullius-electrolyzer-1", {"entity-name.nullius-surge-electrolyzer-1"}}}, "\n", + tostring(1), "nullius-electrolyzer-1", {"entity-name.nullius-surge-electrolyzer-1"}}}, "\n", {"technology-description.nullius-checkpoint-configure", {"technology-description.nullius-item", - 1, "nullius-turbine-open-1", {"", {"entity-name.nullius-turbine-open-backup"}, " ", 1}}}, "\n", + tostring(1), "nullius-turbine-open-1", {"", {"entity-name.nullius-turbine-open-backup"}, " ", tostring(1)}}}, "\n", {"technology-description.nullius-generate", {"technology-description.nullius-fluid", - 1000, "nullius-steam", {"fluid-name.nullius-steam"}}}}, + tostring(1000), "nullius-steam", {"fluid-name.nullius-steam"}}}}, order = "nullius-yc", icons = { { icon = BASEICON .. "steam-turbine.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = BASEICON .. "fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.9, tint = {0.75, 0.75, 0.75, 0.75} } @@ -393,7 +393,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-iron-ingot"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 1500, "nullius-iron-ingot", {"item-name.nullius-iron-ingot"}}}, + {"technology-description.nullius-item", tostring(1500), "nullius-iron-ingot", {"item-name.nullius-iron-ingot"}}}, order = "nullius-yc", icons = { { @@ -401,9 +401,9 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/technology/smelting-iron-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-iron-tech.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.2 } }, @@ -421,18 +421,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-steel-ingot"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 20, "nullius-steel-ingot", {"item-name.nullius-steel-ingot"}}}, + {"technology-description.nullius-item", tostring(20), "nullius-steel-ingot", {"item-name.nullius-steel-ingot"}}}, order = "nullius-yc", icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-steel.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -450,14 +450,14 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-specimen", {"item-name.nullius-glass"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 50, "nullius-glass", {"item-name.nullius-glass"}}}, + {"technology-description.nullius-item", tostring(50), "nullius-glass", {"item-name.nullius-glass"}}}, order = "nullius-yc", icons = { data.raw.item["nullius-glass"].icons[1], { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5, tint = {0.6, 0.6, 0.6, 0.6} } @@ -476,7 +476,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-plastic"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 250, "nullius-plastic", {"item-name.nullius-plastic"}}}, + {"technology-description.nullius-item", tostring(250), "nullius-plastic", {"item-name.nullius-plastic"}}}, order = "nullius-yc", icons = { { @@ -486,7 +486,7 @@ data:extend({ { icon = BASEICON .. "plastic-bar.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -504,7 +504,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-specimen", {"item-name.nullius-rubber"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 20, "nullius-rubber", {"item-name.nullius-rubber"}}}, + {"technology-description.nullius-item", tostring(20), "nullius-rubber", {"item-name.nullius-rubber"}}}, order = "nullius-yc", icons = { { @@ -514,7 +514,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -532,18 +532,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-aluminum-ingot"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 50, "nullius-aluminum-ingot", {"item-name.nullius-aluminum-ingot"}}}, + {"technology-description.nullius-item", tostring(50), "nullius-aluminum-ingot", {"item-name.nullius-aluminum-ingot"}}}, order = "nullius-yc", icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -561,7 +561,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-specimen", {"item-name.nullius-polycrystalline-silicon"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 20, "nullius-polycrystalline-silicon", + {"technology-description.nullius-item", tostring(20), "nullius-polycrystalline-silicon", {"item-name.nullius-polycrystalline-silicon"}}}, order = "nullius-yc", icons = { @@ -569,7 +569,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5, tint = {0.6, 0.6, 0.6, 0.6} } @@ -588,7 +588,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-disposal", {"item-name.nullius-gravel"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 200, "nullius-mineral-dust", {"item-name.nullius-mineral-dust"}}}, + {"technology-description.nullius-item", tostring(200), "nullius-mineral-dust", {"item-name.nullius-mineral-dust"}}}, order = "nullius-yc", icons = { { @@ -596,9 +596,9 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -617,20 +617,20 @@ data:extend({ {"technology-name.nullius-mass-production"}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - 4, "nullius-medium-furnace-1", {"entity-name.nullius-medium-furnace-1"}}}, "\n", + tostring(4),"nullius-medium-furnace-1", {"entity-name.nullius-medium-furnace-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 6, "nullius-medium-assembler-1", {"entity-name.nullius-medium-assembler-1"}}}}, + tostring(6),"nullius-medium-assembler-1", {"entity-name.nullius-medium-assembler-1"}}}}, order = "nullius-yc", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/automation-1.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -649,22 +649,22 @@ data:extend({ {"technology-name.nullius-plumbing"}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - 10, "nullius-pump-1", {"entity-name.nullius-pump-1"}}}, "\n", + tostring(10),"nullius-pump-1", {"entity-name.nullius-pump-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 10, "nullius-medium-tank-2", {"entity-name.nullius-medium-tank-2"}}}, "\n", + tostring(10),"nullius-medium-tank-2", {"entity-name.nullius-medium-tank-2"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 6, "nullius-relief-valve", {"entity-name.nullius-relief-valve"}}}}, + tostring(6),"nullius-relief-valve", {"entity-name.nullius-relief-valve"}}}}, order = "nullius-yc", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -683,9 +683,9 @@ data:extend({ {"technology-name.nullius-fueling"}}}, localised_description = {"", {"technology-description.nullius-consume", {"technology-description.nullius-item", - 2, "nullius-hydrogen-canister", {"item-name.nullius-hydrogen-canister"}}}, "\n", + tostring(2),"nullius-hydrogen-canister", {"item-name.nullius-hydrogen-canister"}}}, "\n", {"technology-description.nullius-consume", {"technology-description.nullius-item", - 1, "nullius-water-canister", {"item-name.nullius-water-canister"}}}}, + tostring(1),"nullius-water-canister", {"item-name.nullius-water-canister"}}}}, order = "nullius-yc", icons = { { @@ -695,7 +695,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -713,18 +713,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"fluid-name.nullius-lubricant"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-fluid", 250, "nullius-lubricant", {"fluid-name.nullius-lubricant"}}}, + {"technology-description.nullius-fluid", tostring(250), "nullius-lubricant", {"fluid-name.nullius-lubricant"}}}, order = "nullius-yc", icons = { { icon = BASEICON .. "fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -743,18 +743,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"fluid-name.nullius-volcanic-gas"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-fluid", 5000, "nullius-volcanic-gas", {"fluid-name.nullius-volcanic-gas"}}}, + {"technology-description.nullius-fluid", tostring(5000), "nullius-volcanic-gas", {"fluid-name.nullius-volcanic-gas"}}}, order = "nullius-yd", icons = { { icon = "__base__/graphics/technology/oil-gathering.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -773,13 +773,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"entity-name.nullius-lab-1"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 3, "nullius-lab-1", {"entity-name.nullius-lab-1"}}}, + {"technology-description.nullius-item", tostring(3), "nullius-lab-1", {"entity-name.nullius-lab-1"}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, data.raw.item["nullius-lab-1"].icons[1] }, @@ -797,7 +797,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"item-name.nullius-sensor-1"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 100, "nullius-sensor-1", {"item-name.nullius-sensor-1"}}}, + {"technology-description.nullius-item", tostring(100), "nullius-sensor-1", {"item-name.nullius-sensor-1"}}}, order = "nullius-yd", icons = { { @@ -807,7 +807,7 @@ data:extend({ { icon = "__base__/graphics/icons/discharge-defense-equipment-controller.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -826,22 +826,22 @@ data:extend({ {"technology-name.nullius-freight-logistics"}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - 1, "nullius-locomotive-1", {"entity-name.nullius-locomotive-1"}}}, "\n", + tostring(1),"nullius-locomotive-1", {"entity-name.nullius-locomotive-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 2, "train-stop", {"entity-name.train-stop"}}}, "\n", + tostring(2),"train-stop", {"entity-name.train-stop"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 150, "rail", {"item-name.rail"}}}}, + tostring(150),"rail", {"item-name.rail"}}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/automated-rail-transportation.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -859,14 +859,14 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-limestone"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 500, "nullius-limestone", {"item-name.nullius-limestone"}}}, + {"technology-description.nullius-item", tostring(500), "nullius-limestone", {"item-name.nullius-limestone"}}}, order = "nullius-yd", icons = { data.raw.item["nullius-limestone"].icons[1], { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -885,20 +885,20 @@ data:extend({ {"technology-name.nullius-optimization"}}}, localised_description = {"", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 5, "nullius-haste-module-1", {"item-name.nullius-haste-module-1"}}}, "\n", + tostring(5),"nullius-haste-module-1", {"item-name.nullius-haste-module-1"}}}, "\n", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 5, "nullius-efficiency-module-1", {"item-name.nullius-efficiency-module-1"}}}}, + tostring(5),"nullius-efficiency-module-1", {"item-name.nullius-efficiency-module-1"}}}}, order = "nullius-yd", icons = { { icon = "__base__/graphics/technology/module.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -917,17 +917,17 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"technology-name.nullius-energy-storage"}}}, localised_description = {"technology-description.nullius-generate-closed", - {"technology-description.nullius-fluid", 1000, + {"technology-description.nullius-fluid", tostring(1000), "nullius-compressed-nitrogen", {"fluid-name.nullius-compressed-nitrogen"}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "steam-turbine.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/molecules/nitrogen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", icon_size = 64, scale = 0.64, tint = {0.85, 0.85, 0.85, 0.85} @@ -947,7 +947,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"fluid-name.nullius-freshwater"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-fluid", 2000, "nullius-freshwater", {"fluid-name.nullius-freshwater"}}}, + {"technology-description.nullius-fluid", tostring(2000), "nullius-freshwater", {"fluid-name.nullius-freshwater"}}}, order = "nullius-yd", icons = { { @@ -975,20 +975,20 @@ data:extend({ {"technology-name.nullius-robotics"}}}, localised_description = {"", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 1, "nullius-hangar-1", {"equipment-name.nullius-hangar-1"}}}, "\n", + tostring(1),"nullius-hangar-1", {"equipment-name.nullius-hangar-1"}}}, "\n", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 6, "nullius-robot-frame-1", {"item-name.nullius-robot-frame-1"}}}}, + tostring(6),"nullius-robot-frame-1", {"item-name.nullius-robot-frame-1"}}}}, order = "nullius-yd", icons = { { icon = "__base__/graphics/technology/robotics.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -1008,20 +1008,20 @@ data:extend({ {"technology-name.nullius-logistic-robot"}}}, localised_description = {"", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 8, "nullius-logistic-bot-1", {"entity-name.nullius-logistic-bot-1"}}}, "\n", + tostring(8),"nullius-logistic-bot-1", {"entity-name.nullius-logistic-bot-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 2, "nullius-small-supply-chest-1", {"entity-name.nullius-small-supply-chest-1"}}}}, + tostring(2),"nullius-small-supply-chest-1", {"entity-name.nullius-small-supply-chest-1"}}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -1040,20 +1040,20 @@ data:extend({ {"technology-name.nullius-logistics"}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - 10, "turbo-inserter", {"entity-name.nullius-inserter-2"}}}, "\n", + tostring(10),"turbo-inserter", {"entity-name.nullius-inserter-2"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 10, "fast-underground-belt", {"entity-name.nullius-underground-belt-2"}}}}, + tostring(10),"fast-underground-belt", {"entity-name.nullius-underground-belt-2"}}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/logistics-2.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -1071,18 +1071,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"item-name.concrete"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 1000, "concrete", {"item-name.concrete"}}}, + {"technology-description.nullius-item", tostring(1000), "concrete", {"item-name.concrete"}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "concrete.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1100,14 +1100,14 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"entity-name.nullius-heat-pipe-1"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 50, "nullius-heat-pipe-1", {"entity-name.nullius-heat-pipe-1"}}}, + {"technology-description.nullius-item", tostring(50), "nullius-heat-pipe-1", {"entity-name.nullius-heat-pipe-1"}}}, order = "nullius-yd", icons = { data.raw.item["nullius-heat-pipe-1"].icons[1], { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1125,16 +1125,16 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"technology-name.nullius-chemical-engineering"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 10, "nullius-chemical-plant-2", {"entity-name.nullius-chemical-plant-2"}}}, + {"technology-description.nullius-item", tostring(10), "nullius-chemical-plant-2", {"entity-name.nullius-chemical-plant-2"}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/technology/chemical-plant-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/chemical-plant-tech.png", icon_size = 128, scale = 0.5 } @@ -1155,20 +1155,20 @@ data:extend({ localised_description = {"", {"technology-description.nullius-checkpoint-mirror"}, "\n", {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", 2, "nullius-electrolyzer-2", + {"technology-description.nullius-item", tostring(2), "nullius-electrolyzer-2", {"entity-name.nullius-mirror-surge-electrolyzer-2"}}}, "\n", {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", 2, "nullius-flotation-cell-2", + {"technology-description.nullius-item", tostring(2), "nullius-flotation-cell-2", {"entity-name.nullius-mirror-flotation-cell-2"}}}, "\n", {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", 2, "nullius-combustion-chamber-2", + {"technology-description.nullius-item", tostring(2), "nullius-combustion-chamber-2", {"entity-name.nullius-mirror-combustion-chamber-2"}}}}, order = "nullius-yd", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__nullius__/graphics/technology/chiral.png", @@ -1191,7 +1191,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"fluid-name.nullius-propene"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-fluid", 300000, "nullius-propene", {"fluid-name.nullius-propene"}}}, + {"technology-description.nullius-fluid", tostring(300000), "nullius-propene", {"fluid-name.nullius-propene"}}}, order = "nullius-ye", icons = { { @@ -1199,7 +1199,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/propene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", icon_size = 72, scale = 0.568 } @@ -1218,18 +1218,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-titanium-ingot"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 100, "nullius-titanium-ingot", {"item-name.nullius-titanium-ingot"}}}, + {"technology-description.nullius-item", tostring(100), "nullius-titanium-ingot", {"item-name.nullius-titanium-ingot"}}}, order = "nullius-ye", icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-titanium.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1247,17 +1247,17 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"item-name.nullius-soda-ash"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 1000, "nullius-soda-ash", {"item-name.nullius-soda-ash"}}}, + {"technology-description.nullius-item", tostring(1000), "nullius-soda-ash", {"item-name.nullius-soda-ash"}}}, order = "nullius-ye", icons = { { - icon = "__angelspetrochem__/graphics/icons/solid-sodium-carbonate.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-sodium-carbonate.png", icon_size = 32 }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5, tint = {0.6, 0.6, 0.6, 0.6} } @@ -1276,7 +1276,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"item-name.nullius-monocrystalline-silicon"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 20, "nullius-monocrystalline-silicon", + {"technology-description.nullius-item", tostring(20), "nullius-monocrystalline-silicon", {"item-name.nullius-monocrystalline-silicon"}}}, order = "nullius-ye", icons = { @@ -1284,7 +1284,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1302,7 +1302,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-crushed-iron-ore"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 40000, "nullius-crushed-iron-ore", {"item-name.nullius-crushed-iron-ore"}}}, + {"technology-description.nullius-item", tostring(40000), "nullius-crushed-iron-ore", {"item-name.nullius-crushed-iron-ore"}}}, order = "nullius-ye", icons = { { @@ -1310,7 +1310,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelsrefining__/graphics/icons/iron-pebbles.png", + icon = "__angelsrefininggraphics__/graphics/icons/iron-pebbles.png", icon_size = 32, scale = 1.6 } @@ -1329,7 +1329,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-aluminum-carbide"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 40000, "nullius-aluminum-carbide", {"item-name.nullius-aluminum-carbide"}}}, + {"technology-description.nullius-item", tostring(40000), "nullius-aluminum-carbide", {"item-name.nullius-aluminum-carbide"}}}, order = "nullius-ye", icons = { { @@ -1337,9 +1337,9 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-lead.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -1357,18 +1357,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"technology-name.nullius-exploration"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 8, "nullius-scout-drone-1", {"item-name.nullius-scout-drone-1"}}}, + {"technology-description.nullius-item", tostring(8), "nullius-scout-drone-1", {"item-name.nullius-scout-drone-1"}}}, order = "nullius-ye", icons = { { icon = "__base__/graphics/technology/artillery.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -1387,18 +1387,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"item-name.nullius-battery-1"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 100, "nullius-battery-1", {"item-name.nullius-battery-1"}}}, + {"technology-description.nullius-item", tostring(100), "nullius-battery-1", {"item-name.nullius-battery-1"}}}, order = "nullius-ye", icons = { { icon = "__base__/graphics/icons/battery-equipment.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1416,7 +1416,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-ceramic-powder"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 100, "nullius-ceramic-powder", {"item-name.nullius-ceramic-powder"}}}, + {"technology-description.nullius-item", tostring(100), "nullius-ceramic-powder", {"item-name.nullius-ceramic-powder"}}}, order = "nullius-ye", icons = { { @@ -1424,9 +1424,9 @@ data:extend({ icon_size = 64 }, { - icon = "__angelssmelting__/graphics/icons/powder-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-platinum.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -1444,7 +1444,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"item-name.nullius-explosive"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 50, "cliff-explosives", {"item-name.nullius-explosive"}}}, + {"technology-description.nullius-item", tostring(50), "cliff-explosives", {"item-name.nullius-explosive"}}}, order = "nullius-ye", icons = { { @@ -1454,7 +1454,7 @@ data:extend({ { icon = "__base__/graphics/technology/explosives.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.2 } }, @@ -1473,22 +1473,22 @@ data:extend({ {"technology-name.nullius-logistic-robot"}}}, localised_description = {"", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 60, "nullius-logistic-bot-1", {"entity-name.nullius-logistic-bot-1"}}}, "\n", + tostring(60),"nullius-logistic-bot-1", {"entity-name.nullius-logistic-bot-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 6, "nullius-charger-2", {"entity-name.nullius-charger-2"}}}, "\n", + tostring(6),"nullius-charger-2", {"entity-name.nullius-charger-2"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 4, "nullius-small-demand-chest-1", {"entity-name.nullius-small-demand-chest-1"}}}}, + tostring(4),"nullius-small-demand-chest-1", {"entity-name.nullius-small-demand-chest-1"}}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -1508,21 +1508,21 @@ data:extend({ localised_description = {"", {"technology-description.nullius-checkpoint-construction"}, "\n", {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", 4, "nullius-relay-2", + {"technology-description.nullius-item", tostring(4), "nullius-relay-2", {"entity-name.nullius-construction-only", {"entity-name.nullius-relay-2"}}}}, "\n", {"technology-description.nullius-produce", {"technology-description.nullius-item", - 25, "nullius-construction-bot-1", {"entity-name.nullius-construction-bot-1"}}}}, + tostring(25),"nullius-construction-bot-1", {"entity-name.nullius-construction-bot-1"}}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/construction-robotics.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -1541,19 +1541,19 @@ data:extend({ {"technology-name.nullius-demonstration", {"entity-name.nullius-large-tank-2"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 4, "nullius-large-tank-2", + {"technology-description.nullius-item", tostring(4), "nullius-large-tank-2", {"entity-name.nullius-large-tank-2"}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { - icon = "__angelspetrochem__/graphics/icons/petrochem-gas-tank.png", + icon = "__angelspetrochemgraphics__/graphics/icons/petrochem-gas-tank.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -1571,18 +1571,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"entity-name.nullius-substation-2"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 4, "nullius-substation-2", {"entity-name.nullius-substation-2"}}}, + {"technology-description.nullius-item", tostring(4), "nullius-substation-2", {"entity-name.nullius-substation-2"}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/substation.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -1597,23 +1597,23 @@ data:extend({ type = "technology", name = "nullius-checkpoint-logistics-2", localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", - {"", {"technology-name.nullius-logistics"}, " ", 3}}}, + {"", {"technology-name.nullius-logistics"}, " ", tostring(3)}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - 40, "stack-inserter", {"entity-name.nullius-inserter-3"}}}, "\n", + tostring(40),"stack-inserter", {"entity-name.nullius-inserter-3"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 40, "express-underground-belt", {"entity-name.nullius-underground-belt-3"}}}}, + tostring(40),"express-underground-belt", {"entity-name.nullius-underground-belt-3"}}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/logistics-3.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -1631,13 +1631,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"entity-name.nullius-lab-2"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 10, "nullius-lab-2", {"entity-name.nullius-lab-2"}}}, + {"technology-description.nullius-item", tostring(10), "nullius-lab-2", {"entity-name.nullius-lab-2"}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, data.raw.item["nullius-lab-2"].icons[1] }, @@ -1655,19 +1655,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"item-name.nullius-productivity-module-1"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 50, "nullius-productivity-module-1", + {"technology-description.nullius-item", tostring(50), "nullius-productivity-module-1", {"item-name.nullius-productivity-module-1"}}}, order = "nullius-ye", icons = { { icon = "__base__/graphics/technology/productivity-module-2.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -1686,19 +1686,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"entity-name.nullius-truck-1"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 1, "nullius-truck-1", + {"technology-description.nullius-item", tostring(1), "nullius-truck-1", {"entity-name.nullius-truck-1"}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/tank.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -1716,7 +1716,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"entity-name.nullius-stirling-engine-2"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 20, "nullius-stirling-engine-2", + {"technology-description.nullius-item", tostring(20), "nullius-stirling-engine-2", {"entity-name.nullius-stirling-engine-2"}}}, order = "nullius-ye", icons = { @@ -1724,7 +1724,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1743,15 +1743,15 @@ data:extend({ {"technology-name.nullius-broadcasting"}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - 8, "nullius-large-beacon-1", {"entity-name.nullius-large-beacon-1"}}}, "\n", + tostring(8),"nullius-large-beacon-1", {"entity-name.nullius-large-beacon-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", - 12, "nullius-beacon-2", {"entity-name.nullius-beacon-2"}}}}, + tostring(12),"nullius-beacon-2", {"entity-name.nullius-beacon-2"}}}}, order = "nullius-ye", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, data.raw.item["nullius-large-beacon-1"].icons[1] }, @@ -1769,19 +1769,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"entity-name.nullius-large-furnace-1"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 10, "nullius-box-iron-ingot", + {"technology-description.nullius-item", tostring(10), "nullius-box-iron-ingot", {"item-name.nullius-box", {"item-name.nullius-iron-ingot"}}}}, order = "nullius-ye", icons = { { icon = "__base__/graphics/icons/electric-furnace.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -1799,7 +1799,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"fluid-name.nullius-benzene"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-fluid", 800000, "nullius-benzene", {"fluid-name.nullius-benzene"}}}, + {"technology-description.nullius-fluid", tostring(800000), "nullius-benzene", {"fluid-name.nullius-benzene"}}}, order = "nullius-ye", icons = { { @@ -1807,7 +1807,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/benzene.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", icon_size = 72, scale = 0.568 } @@ -1827,19 +1827,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"entity-name.nullius-large-miner-1"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 50, "nullius-large-miner-1", + {"technology-description.nullius-item", tostring(50), "nullius-large-miner-1", {"entity-name.nullius-large-miner-1"}}}, order = "nullius-yf", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/electric-mining-drill.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -1856,7 +1856,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-specimen", {"item-name.nullius-filter-2"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item-boxable", 100, "nullius-filter-2", + {"technology-description.nullius-item-boxable", tostring(100), "nullius-filter-2", "nullius-box-filter-2", {"item-name.nullius-filter-2"}}}, order = "nullius-yf", icons = { @@ -1864,7 +1864,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.5, tint = {0.6, 0.6, 0.6, 0.6} } @@ -1883,18 +1883,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"technology-name.nullius-pumping"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", 40, "nullius-pump-2", {"entity-name.nullius-pump-2"}}}, + {"technology-description.nullius-item", tostring(40), "nullius-pump-2", {"entity-name.nullius-pump-2"}}}, order = "nullius-yf", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/pump.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -1909,15 +1909,15 @@ data:extend({ type = "technology", name = "nullius-checkpoint-logistics-3", localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", - {"", {"technology-name.nullius-logistics"}, " ", 4}}}, + {"", {"technology-name.nullius-logistics"}, " ", tostring(4)}}}, localised_description = {"technology-description.nullius-build", {"technology-description.nullius-item", - 10, "ultimate-splitter", {"entity-name.nullius-splitter-4"}}}, + tostring(10),"ultimate-splitter", {"entity-name.nullius-splitter-4"}}}, order = "nullius-yf", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__nullius__/graphics/technology/logistics-4.png", @@ -1939,18 +1939,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"technology-name.nullius-automation"}}}, localised_description = {"technology-description.nullius-build", {"technology-description.nullius-item", - 20, "nullius-large-assembler-2", {"entity-name.nullius-large-assembler-2"}}}, + tostring(20),"nullius-large-assembler-2", {"entity-name.nullius-large-assembler-2"}}}, order = "nullius-yf", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/assembling-machine-3.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -1968,24 +1968,24 @@ data:extend({ {"technology-name.nullius-mining"}}}, localised_description = {"", {"technology-description.nullius-consume", {"technology-description.nullius-item-boxable", - 1200000, "iron-ore", "nullius-box-iron-ore", {"item-name.iron-ore"}}}, "\n", + tostring(1200000),"iron-ore", "nullius-box-iron-ore", {"item-name.iron-ore"}}}, "\n", {"technology-description.nullius-consume", {"technology-description.nullius-item-boxable", - 900000, "nullius-sandstone", "nullius-box-sandstone", {"item-name.nullius-sandstone"}}}, "\n", + tostring(900000),"nullius-sandstone", "nullius-box-sandstone", {"item-name.nullius-sandstone"}}}, "\n", {"technology-description.nullius-consume", {"technology-description.nullius-item-boxable", - 600000, "nullius-bauxite", "nullius-box-bauxite", {"item-name.nullius-bauxite"}}}, "\n", + tostring(600000),"nullius-bauxite", "nullius-box-bauxite", {"item-name.nullius-bauxite"}}}, "\n", {"technology-description.nullius-consume", {"technology-description.nullius-item-boxable", - 300000, "nullius-limestone", "nullius-box-limestone", {"item-name.nullius-limestone"}}}}, + tostring(300000),"nullius-limestone", "nullius-box-limestone", {"item-name.nullius-limestone"}}}}, order = "nullius-yf", icons = { { icon = "__base__/graphics/technology/mining-productivity.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6}, scale = 4 } @@ -2003,13 +2003,13 @@ data:extend({ name = "nullius-checkpoint-android", localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"item-name.nullius-android"}}}, - localised_description = {"objective-description.nullius-switch-bodies", 3}, + localised_description = {"objective-description.nullius-switch-bodies", tostring(3)}, order = "nullius-yf", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "android1.png", @@ -2030,19 +2030,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"item-name.nullius-battery-2"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item-boxable", 200, "nullius-battery-2", + {"technology-description.nullius-item-boxable", tostring(200), "nullius-battery-2", "nullius-box-battery-2", {"item-name.nullius-battery-2"}}}, order = "nullius-yf", icons = { { icon = "__base__/graphics/icons/battery-equipment.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2060,7 +2060,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-calcium"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item-boxable", 250, "nullius-calcium", + {"technology-description.nullius-item-boxable", tostring(250), "nullius-calcium", "nullius-box-calcium", {"item-name.nullius-calcium"}}}, order = "nullius-yf", icons = { @@ -2071,7 +2071,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2089,7 +2089,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-sample", {"fluid-name.nullius-helium"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-fluid-compressible", 2500, "nullius-helium", + {"technology-description.nullius-fluid-compressible", tostring(2500), "nullius-helium", "nullius-compressed-helium", {"fluid-name.nullius-helium"}}}, order = "nullius-yf", icons = { @@ -2101,7 +2101,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2119,7 +2119,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"entity-name.nullius-thermal-tank-3"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 10, "nullius-thermal-tank-3", + {"technology-description.nullius-item", tostring(10), "nullius-thermal-tank-3", {"entity-name.nullius-thermal-tank-3"}}}, order = "nullius-yf", icons = { @@ -2130,7 +2130,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2148,17 +2148,17 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"fluid-name.nullius-tritium"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-fluid", 40, "nullius-tritium", {"fluid-name.nullius-tritium"}}}, + {"technology-description.nullius-fluid", tostring(40), "nullius-tritium", {"fluid-name.nullius-tritium"}}}, order = "nullius-yf", icons = { { - icon = "__angelspetrochem__/graphics/icons/molecules/semiheavy-water.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/semiheavy-water.png", icon_size = 72 }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.125, tint = {0.6, 0.6, 0.6, 0.6} } @@ -2177,7 +2177,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-processor-2"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item-boxable", 1000, "nullius-processor-2", + {"technology-description.nullius-item-boxable", tostring(1000), "nullius-processor-2", "nullius-box-processor-2", {"item-name.nullius-processor-2"}}}, order = "nullius-yf", icons = { @@ -2186,9 +2186,9 @@ data:extend({ icon_size = 64 }, { - icon = "__base__/graphics/technology/advanced-electronics-2.png", + icon = "__base__/graphics/technology/processing-unit.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.2 } }, @@ -2206,7 +2206,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"technology-name.nullius-demolitions"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 1, "nullius-missile-2", {"item-name.nullius-missile-2"}}}, + {"technology-description.nullius-item", tostring(1), "nullius-missile-2", {"item-name.nullius-missile-2"}}}, order = "nullius-yf", icons = { { @@ -2216,7 +2216,7 @@ data:extend({ { icon = "__base__/graphics/icons/atomic-bomb.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -2234,7 +2234,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"item-name.rocket-fuel"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 5, "rocket-fuel", {"item-name.rocket-fuel"}}}, + {"technology-description.nullius-item", tostring(5), "rocket-fuel", {"item-name.rocket-fuel"}}}, order = "nullius-yf", icons = { { @@ -2244,7 +2244,7 @@ data:extend({ { icon = "__base__/graphics/technology/rocket-fuel.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.2 } }, @@ -2262,18 +2262,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"entity-name.nullius-mecha"}}}, localised_description = {"technology-description.nullius-build", {"technology-description.nullius-item", - 1, "nullius-mecha", {"", {"entity-name.nullius-mecha"}, " ", 1}}}, + tostring(1),"nullius-mecha", {"", {"entity-name.nullius-mecha"}, " ", tostring(1)}}}, order = "nullius-yf", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/spidertron.png", icon_size = 64, - icon_mipmaps = 4 + } }, unit = { @@ -2290,7 +2290,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"item-name.nullius-excavation-drone"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 1, "nullius-excavation-drone", + {"technology-description.nullius-item", tostring(1), "nullius-excavation-drone", {"item-name.nullius-excavation-drone"}}}, order = "nullius-yf", icons = { @@ -2319,18 +2319,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"technology-name.nullius-cybernetics"}}}, localised_description = {"technology-description.nullius-produce", {"technology-description.nullius-item", - 1, "nullius-chassis-4", {"item-name.nullius-chassis-4"}}}, + tostring(1),"nullius-chassis-4", {"item-name.nullius-chassis-4"}}}, order = "nullius-yg", icons = { { icon = "__base__/graphics/technology/power-armor-mk2.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -2349,19 +2349,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.uranium-ore"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 1, "nullius-guide-drone-uranium-1", - {"", {"item-name.nullius-guide-drone-uranium"}, " ", 1}}}, + {"technology-description.nullius-item", tostring(1), "nullius-guide-drone-uranium-1", + {"", {"item-name.nullius-guide-drone-uranium"}, " ", tostring(1)}}}, order = "nullius-yg", icons = { { icon = BASEICON .. "uranium-ore.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2385,19 +2385,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.copper-ore"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 1, "nullius-guide-drone-copper-1", - {"", {"item-name.nullius-guide-drone-copper"}, " ", 1}}}, + {"technology-description.nullius-item", tostring(1), "nullius-guide-drone-copper-1", + {"", {"item-name.nullius-guide-drone-copper"}, " ", tostring(1)}}}, order = "nullius-yg", icons = { { icon = BASEICON .. "copper-ore.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2441,7 +2441,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-spent-breeder-cell"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 25, "nullius-spent-breeder-cell", + {"technology-description.nullius-item", tostring(25), "nullius-spent-breeder-cell", {"item-name.nullius-spent-breeder-cell"}}}, order = "nullius-yg", icons = { @@ -2469,7 +2469,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"item-name.nullius-enriched-uranium"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 250, "nullius-enriched-uranium", + {"technology-description.nullius-item", tostring(250), "nullius-enriched-uranium", {"item-name.nullius-enriched-uranium"}}}, order = "nullius-yg", icons = { @@ -2477,7 +2477,7 @@ data:extend({ { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2495,7 +2495,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-antimatter"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item", 1, "nullius-antimatter", {"item-name.nullius-antimatter"}}}, + {"technology-description.nullius-item", tostring(1), "nullius-antimatter", {"item-name.nullius-antimatter"}}}, order = "nullius-yg", icons = { { @@ -2522,14 +2522,14 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"fluid-name.nullius-pressure-steam"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-fluid", 5000, "nullius-pressure-steam", + {"technology-description.nullius-fluid", tostring(5000), "nullius-pressure-steam", {"fluid-name.nullius-pressure-steam"}}}, order = "nullius-yg", icons = { { icon = BASEICON .. "steam-turbine.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "fluid/steam2.png", @@ -2551,19 +2551,19 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-assay", {"item-name.nullius-copper-ingot"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item-boxable", 1000, "nullius-copper-ingot", + {"technology-description.nullius-item-boxable", tostring(1000), "nullius-copper-ingot", "nullius-box-copper-ingot", {"item-name.nullius-copper-ingot"}}}, order = "nullius-yg", icons = { { - icon = "__angelssmelting__/graphics/icons/ingot-copper.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-copper.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + tint = {0.6, 0.6, 0.6, 0.6} } }, @@ -2581,7 +2581,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-processor-3"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item-boxable", 2000, "nullius-processor-3", + {"technology-description.nullius-item-boxable", tostring(2000), "nullius-processor-3", "nullius-box-processor-3", {"item-name.nullius-processor-3"}}}, order = "nullius-yg", icons = { @@ -2590,9 +2590,9 @@ data:extend({ icon_size = 64 }, { - icon = "__base__/graphics/technology/advanced-electronics-2.png", + icon = "__base__/graphics/technology/processing-unit.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.2 } }, @@ -2610,7 +2610,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"item-name.nullius-wood"}}}, localised_description = {"technology-description.nullius-consume", - {"technology-description.nullius-item-boxable", 500000, "nullius-wood", + {"technology-description.nullius-item-boxable", tostring(500000), "nullius-wood", "nullius-box-wood", {"item-name.nullius-wood"}}}, order = "nullius-yg", icons = { @@ -2621,7 +2621,7 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -2639,18 +2639,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"technology-name.nullius-logistic-robot"}}}, localised_description = {"technology-description.nullius-produce", {"technology-description.nullius-item-boxable", - 1000, "nullius-logistic-bot-4", "nullius-box-logistic-bot-4", {"entity-name.nullius-logistic-bot-4"}}}, + tostring(1000),"nullius-logistic-bot-4", "nullius-box-logistic-bot-4", {"entity-name.nullius-logistic-bot-4"}}}, order = "nullius-yg", icons = { { icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -2669,13 +2669,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", {"item-name.nullius-android"}}}, localised_description = {"technology-description.nullius-build", {"technology-description.nullius-item", - 1, "nullius-android-2", {"", {"item-name.nullius-android"}, " ", 2}}}, + tostring(1),"nullius-android-2", {"", {"item-name.nullius-android"}, " ", tostring(2)}}}, order = "nullius-yg", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "android2.png", @@ -2696,7 +2696,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-utilization", {"technology-name.nullius-asteroid-mining"}}}, localised_description = {"technology-description.nullius-consume", {"technology-description.nullius-item", - 20, "nullius-asteroid-miner-2", {"item-name.nullius-asteroid-miner-2"}}}, + tostring(20),"nullius-asteroid-miner-2", {"item-name.nullius-asteroid-miner-2"}}}, order = "nullius-yg", icons = { { @@ -2723,7 +2723,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"item-name.nullius-probe"}}}, localised_description = {"technology-description.nullius-consume", {"technology-description.nullius-item", - 1, "nullius-probe", {"item-name.nullius-probe"}}}, + tostring(1),"nullius-probe", {"item-name.nullius-probe"}}}, order = "nullius-yg", icons = { { @@ -2733,7 +2733,7 @@ data:extend({ { icon = "__base__/graphics/icons/crash-site-spaceship.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.8 } }, @@ -2751,18 +2751,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"technology-name.nullius-solar-power"}}}, localised_description = {"technology-description.nullius-build", {"technology-description.nullius-item", - 1000, "nullius-solar-panel-3", {"entity-name.nullius-solar-panel-3"}}}, + tostring(1000),"nullius-solar-panel-3", {"entity-name.nullius-solar-panel-3"}}}, order = "nullius-yg", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/solar-energy.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -2780,18 +2780,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"technology-name.nullius-battery-storage"}}}, localised_description = {"technology-description.nullius-build", {"technology-description.nullius-item", - 500, "nullius-grid-battery-3", {"entity-name.nullius-grid-battery-3"}}}, + tostring(500), "nullius-grid-battery-3", {"entity-name.nullius-grid-battery-3"}}}, order = "nullius-yg", icons = { { icon = BASEICON .. "blueprint.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/technology/electric-energy-acumulators.png", icon_size = 256, - icon_mipmaps = 4, + scale = 0.25 } }, @@ -2809,18 +2809,18 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-prototype", {"technology-name.nullius-cybernetics"}}}, localised_description = {"technology-description.nullius-produce", {"technology-description.nullius-item", - 1, "nullius-chassis-6", {"item-name.nullius-chassis-6"}}}, + tostring(1),"nullius-chassis-6", {"item-name.nullius-chassis-6"}}}, order = "nullius-yg", icons = { { icon = "__base__/graphics/technology/power-armor-mk2.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = ICONPATH .. "checkpoint.png", icon_size = 64, - icon_mipmaps = 4, + scale = 4, tint = {0.6, 0.6, 0.6, 0.6} } @@ -2841,10 +2841,10 @@ data:extend({ localised_description = {"", {"technology-description.nullius-consume", {"technology-description.nullius-fluid-sequestration", - 1500000000, "nullius-carbon-dioxide", "nullius-compressed-carbon-dioxide", + tostring(1500000000),"nullius-carbon-dioxide", "nullius-compressed-carbon-dioxide", {"fluid-name.nullius-carbon-dioxide"}}},"\n", {"technology-description.nullius-produce", {"technology-description.nullius-fluid-compressible", - 2000000000, "nullius-oxygen", "nullius-compressed-oxygen", {"fluid-name.nullius-oxygen"}}}}, + tostring(2000000000),"nullius-oxygen", "nullius-compressed-oxygen", {"fluid-name.nullius-oxygen"}}}}, order = "nullius-yg", icons = { { @@ -2852,7 +2852,7 @@ data:extend({ icon_size = 64 }, { - icon = "__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", icon_size = 72, scale = 0.568 } @@ -2871,7 +2871,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"objective-name.nullius-algae-seeding"}}, localised_description = {"objective-description.nullius-objective", - {"item-name.nullius-algae"}, 30}, + {"item-name.nullius-algae"}, tostring(30)}, order = "nullius-yg", icons = { { @@ -2894,13 +2894,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"objective-name.nullius-naturalization", {"item-name.nullius-worm"}}}, localised_description = {"objective-description.nullius-objective", - {"item-name.nullius-worm"}, 30}, + {"item-name.nullius-worm"}, tostring(30)}, order = "nullius-yg", icons = { { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4 + }, checkmark(1.125) }, @@ -2918,13 +2918,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"objective-name.nullius-naturalization", {"item-name.nullius-fish"}}}, localised_description = {"objective-description.nullius-objective", - {"item-name.nullius-fish"}, 30}, + {"item-name.nullius-fish"}, tostring(30)}, order = "nullius-yg", icons = { { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4 + }, checkmark(1.125) }, @@ -2942,13 +2942,13 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"objective-name.nullius-naturalization", {"item-name.nullius-arthropod"}}}, localised_description = {"objective-description.nullius-objective", - {"item-name.nullius-arthropod"}, 20}, + {"item-name.nullius-arthropod"}, tostring(20)}, order = "nullius-yg", icons = { { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4 + }, checkmark(1.125) }, @@ -2964,9 +2964,9 @@ data:extend({ type = "technology", name = "nullius-checkpoint-oxygen-partial", localised_name = {"technology-name.nullius-checkpoint", - {"", {"objective-name.nullius-atmospheric-modification"}, " ", 1}}, + {"", {"objective-name.nullius-atmospheric-modification"}, " ", tostring(1)}}, localised_description = {"objective-description.nullius-objective", - {"fluid-name.nullius-oxygen"}, 25}, + {"fluid-name.nullius-oxygen"}, tostring(25)}, order = "nullius-yg", unit = { count = 1, @@ -2980,9 +2980,9 @@ data:extend({ type = "technology", name = "nullius-checkpoint-oxygen-partial-2", localised_name = {"technology-name.nullius-checkpoint", - {"", {"objective-name.nullius-atmospheric-modification"}, " ", 2}}, + {"", {"objective-name.nullius-atmospheric-modification"}, " ", tostring(2)}}, localised_description = {"objective-description.nullius-objective", - {"fluid-name.nullius-oxygen"}, 50}, + {"fluid-name.nullius-oxygen"}, tostring(50)}, order = "nullius-yg", unit = { count = 1, @@ -2996,9 +2996,9 @@ data:extend({ type = "technology", name = "nullius-checkpoint-oxygen-partial-3", localised_name = {"technology-name.nullius-checkpoint", - {"", {"objective-name.nullius-atmospheric-modification"}, " ", 3}}, + {"", {"objective-name.nullius-atmospheric-modification"}, " ", tostring(3)}}, localised_description = {"objective-description.nullius-objective", - {"fluid-name.nullius-oxygen"}, 75}, + {"fluid-name.nullius-oxygen"}, tostring(75)}, order = "nullius-yg", unit = { count = 1, @@ -3012,7 +3012,7 @@ data:extend({ type = "technology", name = "nullius-checkpoint-oxygen", localised_name = {"technology-name.nullius-checkpoint", - {"", {"objective-name.nullius-atmospheric-modification"}, " ", 4}}, + {"", {"objective-name.nullius-atmospheric-modification"}, " ", tostring(4)}}, localised_description = {"objective-description.nullius-atmospheric-modification"}, order = "nullius-yg", unit = { @@ -3046,13 +3046,13 @@ if mods["lambent-nil"] then localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-analysis", {"item-name.nullius-chelating-agent"}}}, localised_description = {"technology-description.nullius-produce", - {"technology-description.nullius-item", 1000, "nullius-chelating-agent", {"item-name.nullius-chelating-agent"}}}, + {"technology-description.nullius-item", tostring(1000), "nullius-chelating-agent", {"item-name.nullius-chelating-agent"}}}, order = "nullius-ye", icons = { { icon = "__lambent-nil__/graphics/icons/chelating-agent.png", icon_size = 64, - icon_mipmaps = 4 + }, checkmark(1) }, diff --git a/nullius/prototypes/hidden.lua b/nullius/prototypes/hidden.lua index 04dee8b..12ac232 100644 --- a/nullius/prototypes/hidden.lua +++ b/nullius/prototypes/hidden.lua @@ -72,7 +72,6 @@ item_types_list = { "tool", "armor", "item-with-entity-data", - "mining-tool", "repair-tool", "item-with-inventory", "spidertron-remote" @@ -105,11 +104,11 @@ local function remove_table(lst, target) end for _,type in pairs(item_types_list) do - for _,item in pairs(data.raw[type]) do + for _,item in pairs(data.raw[type] or {}) do if ((string.sub(item.name, 1, 8) ~= "nullius-") and ((item.order == nil) or (string.sub(item.order, 1, 8) ~= "nullius-"))) then - if (table_contains(item.flags, "hidden")) then + if item.hidden then item.subgroup = "hidden" else if (item.flags == nil) then @@ -130,14 +129,6 @@ for _, recipe in pairs(data.raw.recipe) do (string.sub(recipe.name, 1, 5) ~= "bpsb-")) then recipe.hidden = true recipe.enabled = false - if (recipe.normal ~= nil) then - recipe.normal.enabled = true - recipe.normal.hidden = true - end - if (recipe.expensive ~= nil) then - recipe.expensive.enabled = true - recipe.expensive.hidden = true - end else if (recipe.results) then for _, product in pairs(recipe.results) do @@ -151,23 +142,15 @@ for _, recipe in pairs(data.raw.recipe) do end end end - if (recipe.result ~= nil) then - for _,type in pairs(item_types_list) do - local item = data.raw[type][recipe.result] - if (item ~= nil) then - remove_table(item.flags, "temphidden") - end - end - end end end for _,type in pairs(item_types_list) do - for _,item in pairs(data.raw[type]) do + for _,item in pairs(data.raw[type] or {}) do if remove_table(item.flags, "temphidden") then item.flags["temphidden"] = nil - table.insert(item.flags,"hidden") - item.subgroup = "hidden" + item.hidden = true + item.subgroup = "hidden" end end end @@ -186,20 +169,16 @@ for _,type in pairs(building_types_list) do local next_entity = data.raw[type][entity.next_upgrade] if (next_entity ~= nil) and next_entity.minable ~= nil then local item = data.raw.item[next_entity.minable.result] - if (item ~= nil) and table_contains(item.flags, "hidden") then + if (item ~= nil) and item.hidden then entity.next_upgrade = nil end end end if entity.minable ~= nil then local item = data.raw.item[entity.minable.result] - if (item ~= nil) and table_contains(item.flags, "hidden") then + if (item ~= nil) and item.hidden then entity.next_upgrade = nil - if (entity.flags == nil) then - entity.flags = {"hidden"} - elseif (not table_contains(entity.flags, "hidden")) then - table.insert(entity.flags, "hidden") - end + entity.hidden = true end end end @@ -213,17 +192,17 @@ for _,type in pairs(hide_entity_list) do if (entity.flags == nil) then entity.flags = {} end - table.insert(entity.flags,"hidden") + entity.hidden = true end end end -remove_table(data.raw.item["iron-ore"].flags, "hidden") -remove_table(data.raw.item["copper-ore"].flags, "hidden") -remove_table(data.raw.item["uranium-ore"].flags, "hidden") +data.raw.item["iron-ore"].hidden = false +data.raw.item["copper-ore"].hidden = false +data.raw.item["uranium-ore"].hidden = false if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then -remove_table(data.raw.item["construction-robot"].flags, "hidden") +data.raw.item["construction-robot"].hidden = false end data.raw["active-defense-equipment"]["personal-laser-defense-equipment"].attack_parameters = @@ -241,7 +220,7 @@ end for _, recipe in pairs(data.raw.recipe) do if (string.sub(recipe.name, 1, 8) ~= "nullius-") then - if ((string.sub(recipe.name, 1, 13) == "fill-nullius-") or + if ((string.sub(recipe.name, 1, 13) == "fill-nullius-") or (string.sub(recipe.name, 1, 14) == "empty-nullius-")) then recipe.GCKI_ignore = true elseif (((recipe.order == nil) or @@ -256,8 +235,7 @@ for _, recipe in pairs(data.raw.recipe) do end end -data.raw.recipe["pipe"].normal.result = "stone-pipe" -data.raw.recipe["pipe"].expensive.result = "stone-pipe" +data.raw.recipe["pipe"].results[1].name = "bob-stone-pipe" data.raw.fish.fish.subgroup = "biology-fish" data.raw.fish.fish.order = "z" @@ -265,6 +243,6 @@ data.raw.item["rocket-part"].subgroup = "space" data.raw.item["rocket-part"].order = "z" data.raw.item["nullius-energy-barrel"] = nil -data.raw.recipe["fill-nullius-energy-barrel"] = nil +data.raw.recipe["nullius-energy-barrel"] = nil data.raw.recipe["empty-nullius-energy-barrel"] = nil data.raw.technology["fluid-handling"].effects = { } diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 2f755d5..3b8003c 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -38,7 +38,7 @@ data:extend({ ingredients = { {"train-stop", 1}, {"arithmetic-combinator", 2}, - {"green-wire", 4} + {"nullius-green-wire", 4} }, result = "logistic-train-stop" } @@ -156,7 +156,7 @@ data:extend({ {"concrete", 800}, {"nullius-refractory-brick", 500}, {"nullius-steel-beam", 200}, - {"red-wire", 40} + {"nullius-red-wire", 40} }, result = "factory-2", enabled = false @@ -188,7 +188,7 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"green-wire", 3}, + {"nullius-green-wire", 3}, {"arithmetic-combinator", 1} }, result = "factory-circuit-connector", @@ -242,7 +242,7 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"green-wire", 3}, + {"nullius-green-wire", 3}, {"arithmetic-combinator", 1} }, result = "factory-circuit-input", @@ -999,7 +999,7 @@ data:extend({ energy_required = 3, ingredients = { {"nullius-relief-valve", 2}, - {"red-wire", 1} + {"nullius-red-wire", 1} }, result = "80-overflow-valve" }, @@ -1094,7 +1094,7 @@ data:extend({ energy_required = 3, ingredients = { {"nullius-top-up-valve", 2}, - {"red-wire", 1} + {"nullius-red-wire", 1} }, result = "80-top-up-valve" }, @@ -1879,7 +1879,7 @@ data:extend({ energy_required = 5, ingredients = { {"nullius-sensor-1", 1}, - {"green-wire", 3} + {"nullius-green-wire", 3} }, result = "item-sensor" } @@ -1898,7 +1898,7 @@ if (mods["crafting_combinator"] or mods["crafting_combinator_xeraph"]) then energy_required = 2, ingredients = { {"constant-combinator", 1}, - {"red-wire", 1} + {"nullius-red-wire", 1} }, result = "crafting_combinator:crafting-combinator" }, @@ -1911,7 +1911,7 @@ if (mods["crafting_combinator"] or mods["crafting_combinator_xeraph"]) then energy_required = 2, ingredients = { {"arithmetic-combinator", 1}, - {"red-wire", 2} + {"nullius-red-wire", 2} }, result = "crafting_combinator:recipe-combinator" } @@ -1958,7 +1958,7 @@ if mods["UPSFriendlyNixieTubeDisplay"] then energy_required = 3, ingredients = { {"SNTD-old-nixie-tube", 1}, - {"green-wire", 2}, + {"nullius-green-wire", 2}, {"iron-chest", 1} }, result = "SNTD-nixie-tube-small" diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 90470cb..0a77764 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -5,22 +5,19 @@ local ENTITYPATH = "__nullius__/graphics/entity/" for _, type in pairs({"unit-spawner", "unit", "turret"}) do for _, entity in pairs(data.raw[type]) do if ((entity.subgroup == "enemies") and entity.autoplace and (entity.autoplace.force == "enemy")) then - entity.autoplace.richness_multiplier = null - entity.autoplace.richness_expression = {expression_id="literal-number:1", literal_value=0, type = "literal-number"} - entity.autoplace.probability_expression = {expression_id="literal-number:1", literal_value=0, type = "literal-number"} + entity.autoplace.richness_expression = "0" + entity.autoplace.probability_expression = "0" end end end data.raw.item["iron-ore"].icon = "__base__/graphics/icons/iron-ore.png" data.raw.item["iron-ore"].icon_size = 64 -data.raw.item["iron-ore"].icon_mipmaps = 4 data.raw.item["iron-ore"].subgroup = "iron-ingot" data.raw.item["iron-ore"].order = "nullius-b" data.raw.item["iron-ore"].stack_size = 50 data.raw.item["copper-ore"].icon = "__base__/graphics/icons/copper-ore.png" data.raw.item["copper-ore"].icon_size = 64 -data.raw.item["copper-ore"].icon_mipmaps = 4 data.raw.item["copper-ore"].subgroup = "copper" data.raw.item["copper-ore"].order = "nullius-b" data.raw.item["copper-ore"].stack_size = 50 @@ -31,8 +28,8 @@ data.raw.item["stone"].subgroup = "masonry-material" data.raw.item["stone"].order = "nullius-k" data.raw.item["stone"].stack_size = 50 -data.raw.item["red-wire"].order = "nullius-c" -data.raw.item["green-wire"].order = "nullius-d" +data.raw.item["nullius-red-wire"].order = "nullius-c" +data.raw.item["nullius-green-wire"].order = "nullius-d" data.raw.item["power-switch"].order = "nullius-h" data.raw["power-switch"]["power-switch"].localised_description = {"", {"entity-description.power-switch"}, {"entity-description.nullius-power-switch", @@ -97,10 +94,10 @@ data.raw.item["gate"].order = "nullius-f" data.raw["gate"]["gate"].localised_description = {"entity-description.nullius-gate"} data.raw["gate"]["gate"].minable.mining_time = 0.8 -data.raw.item["empty-barrel"].localised_description = {"item-description.nullius-barrel"} -data.raw.item["empty-barrel"].subgroup = "canisters" -data.raw.item["empty-barrel"].order = "nullius-b" -data.raw.item["empty-barrel"].stack_size = 20 +data.raw.item["barrel"].localised_description = {"item-description.nullius-barrel"} +data.raw.item["barrel"].subgroup = "canisters" +data.raw.item["barrel"].order = "nullius-b" +data.raw.item["barrel"].stack_size = 20 data.raw["capsule"]["cliff-explosives"].localised_name = {"item-name.nullius-explosive"} data.raw["capsule"]["cliff-explosives"].localised_description = {"item-description.nullius-explosive"} @@ -185,7 +182,6 @@ data.raw.tile["black-refined-concrete"].vehicle_friction_modifier = 0.5 data.raw.tile["black-refined-concrete"].minable = {mining_time = 0.1, result = "nullius-black-concrete"} data.raw.tile["black-refined-concrete"].localised_name = {"item-name.nullius-black-concrete"} - data.raw.tile["mineral-grey-dirt-1"].map_color = {r = 119, g = 120, b = 115} data.raw.tile["mineral-grey-dirt-2"].map_color = {r = 91, g = 94, b = 90} data.raw.tile["mineral-grey-dirt-3"].map_color = {r = 94, g = 98, b = 100} @@ -230,11 +226,9 @@ data.raw.tile["mineral-tan-dirt-6"].layer = 24 for _,variant in pairs(data.raw.tile["water-mud"].variants) do if (variant.picture ~= nil) then variant.tint = {0.75, 1, 0.75, 1} - variant.hr_version.tint = {0.75, 1, 0.75, 1} else for _,subvariant in pairs(variant) do subvariant.tint = {0.75, 1, 0.75, 1} - subvariant.hr_version.tint = {0.75, 1, 0.75, 1} end end end @@ -286,57 +280,51 @@ data.raw.item["express-transport-belt"].subgroup = "belt" data.raw.item["express-transport-belt"].order = "nullius-bd" data.raw.item["express-transport-belt"].stack_size = 200 data.raw["transport-belt"]["express-transport-belt"].localised_name = {"entity-name.nullius-belt-3"} -data.raw["transport-belt"]["express-transport-belt"].next_upgrade = "ultimate-transport-belt" +data.raw["transport-belt"]["express-transport-belt"].next_upgrade = "bob-ultimate-transport-belt" data.raw["transport-belt"]["express-transport-belt"].minable.mining_time = 0.3 data.raw.item["express-underground-belt"].subgroup = "belt" data.raw.item["express-underground-belt"].order = "nullius-cd" data.raw.item["express-underground-belt"].stack_size = 100 data.raw["underground-belt"]["express-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-3"} data.raw["underground-belt"]["express-underground-belt"].max_distance = 15 -data.raw["underground-belt"]["express-underground-belt"].next_upgrade = "ultimate-underground-belt" +data.raw["underground-belt"]["express-underground-belt"].next_upgrade = "bob-ultimate-underground-belt" data.raw["underground-belt"]["express-underground-belt"].minable.mining_time = 0.8 data.raw.item["express-splitter"].subgroup = "splitter" data.raw.item["express-splitter"].order = "nullius-dd" data.raw["splitter"]["express-splitter"].localised_name = {"entity-name.nullius-splitter-3"} -data.raw["splitter"]["express-splitter"].next_upgrade = "ultimate-splitter" +data.raw["splitter"]["express-splitter"].next_upgrade = "bob-ultimate-splitter" data.raw["splitter"]["express-splitter"].minable.mining_time = 1.2 -data.raw.item["ultimate-transport-belt"].subgroup = "belt" -data.raw.item["ultimate-transport-belt"].order = "nullius-be" -data.raw.item["ultimate-transport-belt"].icon = ENTICONPATH .. "belt4.png" -data.raw.item["ultimate-transport-belt"].icon_size = 64 -data.raw.item["ultimate-transport-belt"].icon_mipmaps = nil -data.raw.item["ultimate-transport-belt"].stack_size = 200 -data.raw["transport-belt"]["ultimate-transport-belt"].localised_name = {"entity-name.nullius-belt-4"} -data.raw["transport-belt"]["ultimate-transport-belt"].next_upgrade = nil -data.raw["transport-belt"]["ultimate-transport-belt"].icon = ENTICONPATH .. "belt4.png" -data.raw["transport-belt"]["ultimate-transport-belt"].icon_size = 64 -data.raw["transport-belt"]["ultimate-transport-belt"].icon_mipmaps = nil -data.raw["transport-belt"]["ultimate-transport-belt"].minable.mining_time = 0.4 -data.raw.item["ultimate-underground-belt"].subgroup = "belt" -data.raw.item["ultimate-underground-belt"].order = "nullius-ce" -data.raw.item["ultimate-underground-belt"].icon = ENTICONPATH .. "underground-belt4.png" -data.raw.item["ultimate-underground-belt"].icon_size = 64 -data.raw.item["ultimate-underground-belt"].icon_mipmaps = nil -data.raw.item["ultimate-underground-belt"].stack_size = 100 -data.raw["underground-belt"]["ultimate-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-4"} -data.raw["underground-belt"]["ultimate-underground-belt"].max_distance = 19 -data.raw["underground-belt"]["ultimate-underground-belt"].next_upgrade = nil -data.raw["underground-belt"]["ultimate-underground-belt"].icon = ENTICONPATH .. "underground-belt4.png" -data.raw["underground-belt"]["ultimate-underground-belt"].icon_size = 64 -data.raw["underground-belt"]["ultimate-underground-belt"].icon_mipmaps = nil -data.raw["underground-belt"]["ultimate-underground-belt"].minable.mining_time = 1 -data.raw.item["ultimate-splitter"].subgroup = "splitter" -data.raw.item["ultimate-splitter"].order = "nullius-de" -data.raw.item["ultimate-splitter"].icon = ENTICONPATH .. "splitter4.png" -data.raw.item["ultimate-splitter"].icon_size = 64 -data.raw.item["ultimate-splitter"].icon_mipmaps = nil -data.raw["splitter"]["ultimate-splitter"].localised_name = {"entity-name.nullius-splitter-4"} -data.raw["splitter"]["ultimate-splitter"].next_upgrade = nil -data.raw["splitter"]["ultimate-splitter"].icon = ENTICONPATH .. "splitter4.png" -data.raw["splitter"]["ultimate-splitter"].icon_size = 64 -data.raw["splitter"]["ultimate-splitter"].icon_mipmaps = nil -data.raw["splitter"]["ultimate-splitter"].minable.mining_time = 1.5 +data.raw.item["bob-ultimate-transport-belt"].subgroup = "belt" +data.raw.item["bob-ultimate-transport-belt"].order = "nullius-be" +data.raw.item["bob-ultimate-transport-belt"].icon = ENTICONPATH .. "belt4.png" +data.raw.item["bob-ultimate-transport-belt"].icon_size = 64 +data.raw.item["bob-ultimate-transport-belt"].stack_size = 200 +data.raw["transport-belt"]["bob-ultimate-transport-belt"].localised_name = {"entity-name.nullius-belt-4"} +data.raw["transport-belt"]["bob-ultimate-transport-belt"].next_upgrade = nil +data.raw["transport-belt"]["bob-ultimate-transport-belt"].icon = ENTICONPATH .. "belt4.png" +data.raw["transport-belt"]["bob-ultimate-transport-belt"].icon_size = 64 +data.raw["transport-belt"]["bob-ultimate-transport-belt"].minable.mining_time = 0.4 +data.raw.item["bob-ultimate-underground-belt"].subgroup = "belt" +data.raw.item["bob-ultimate-underground-belt"].order = "nullius-ce" +data.raw.item["bob-ultimate-underground-belt"].icon = ENTICONPATH .. "underground-belt4.png" +data.raw.item["bob-ultimate-underground-belt"].icon_size = 64 +data.raw.item["bob-ultimate-underground-belt"].stack_size = 100 +data.raw["underground-belt"]["bob-ultimate-underground-belt"].localised_name = {"entity-name.nullius-underground-belt-4"} +data.raw["underground-belt"]["bob-ultimate-underground-belt"].max_distance = 19 +data.raw["underground-belt"]["bob-ultimate-underground-belt"].next_upgrade = nil +data.raw["underground-belt"]["bob-ultimate-underground-belt"].icon = ENTICONPATH .. "underground-belt4.png" +data.raw["underground-belt"]["bob-ultimate-underground-belt"].icon_size = 64 +data.raw["underground-belt"]["bob-ultimate-underground-belt"].minable.mining_time = 1 +data.raw.item["bob-ultimate-splitter"].subgroup = "splitter" +data.raw.item["bob-ultimate-splitter"].order = "nullius-de" +data.raw.item["bob-ultimate-splitter"].icon = ENTICONPATH .. "splitter4.png" +data.raw.item["bob-ultimate-splitter"].icon_size = 64 +data.raw["splitter"]["bob-ultimate-splitter"].localised_name = {"entity-name.nullius-splitter-4"} +data.raw["splitter"]["bob-ultimate-splitter"].next_upgrade = nil +data.raw["splitter"]["bob-ultimate-splitter"].icon = ENTICONPATH .. "splitter4.png" +data.raw["splitter"]["bob-ultimate-splitter"].icon_size = 64 +data.raw["splitter"]["bob-ultimate-splitter"].minable.mining_time = 1.5 data.raw.item["inserter"].subgroup = "inserter" data.raw.item["inserter"].order = "nullius-b" @@ -346,117 +334,117 @@ data.raw["inserter"]["inserter"].order = "nullius-b" data.raw["inserter"]["inserter"].localised_name = {"entity-name.nullius-inserter-1"} data.raw["inserter"]["inserter"].rotation_speed = 0.0166667 data.raw["inserter"]["inserter"].extension_speed = 0.04 -data.raw["inserter"]["inserter"].energy_per_rotation = "12.5KJ" -data.raw["inserter"]["inserter"].energy_per_movement = "1.875KJ" +data.raw["inserter"]["inserter"].energy_per_rotation = "12.5kJ" +data.raw["inserter"]["inserter"].energy_per_movement = "1.875kJ" data.raw["inserter"]["inserter"].energy_source.drain = "1kW" data.raw["inserter"]["inserter"].minable.mining_time = 0.4 -data.raw["inserter"]["inserter"].next_upgrade = "turbo-inserter" +data.raw["inserter"]["inserter"].next_upgrade = "bob-turbo-inserter" data.raw["inserter"]["inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } -data.raw.item["turbo-inserter"].subgroup = "inserter" -data.raw.item["turbo-inserter"].order = "nullius-c" -data.raw.item["turbo-inserter"].localised_name = {"entity-name.nullius-inserter-2"} -data.raw.item["turbo-inserter"].stack_size = 100 -data.raw["inserter"]["turbo-inserter"].order = "nullius-c" -data.raw["inserter"]["turbo-inserter"].localised_name = {"entity-name.nullius-inserter-2"} -data.raw["inserter"]["turbo-inserter"].rotation_speed = 0.0333333 -data.raw["inserter"]["turbo-inserter"].extension_speed = 0.08 -data.raw["inserter"]["turbo-inserter"].energy_per_rotation = "10.25KJ" -data.raw["inserter"]["turbo-inserter"].energy_per_movement = "1.5625KJ" -data.raw["inserter"]["turbo-inserter"].energy_source.drain = "2kW" -data.raw["inserter"]["turbo-inserter"].minable.mining_time = 0.6 -data.raw["inserter"]["turbo-inserter"].next_upgrade = "stack-inserter" -data.raw["inserter"]["turbo-inserter"].resistances = { +data.raw.item["bob-turbo-inserter"].subgroup = "inserter" +data.raw.item["bob-turbo-inserter"].order = "nullius-c" +data.raw.item["bob-turbo-inserter"].localised_name = {"entity-name.nullius-inserter-2"} +data.raw.item["bob-turbo-inserter"].stack_size = 100 +data.raw["inserter"]["bob-turbo-inserter"].order = "nullius-c" +data.raw["inserter"]["bob-turbo-inserter"].localised_name = {"entity-name.nullius-inserter-2"} +data.raw["inserter"]["bob-turbo-inserter"].rotation_speed = 0.0333333 +data.raw["inserter"]["bob-turbo-inserter"].extension_speed = 0.08 +data.raw["inserter"]["bob-turbo-inserter"].energy_per_rotation = "10.25kJ" +data.raw["inserter"]["bob-turbo-inserter"].energy_per_movement = "1.5625kJ" +data.raw["inserter"]["bob-turbo-inserter"].energy_source.drain = "2kW" +data.raw["inserter"]["bob-turbo-inserter"].minable.mining_time = 0.6 +data.raw["inserter"]["bob-turbo-inserter"].next_upgrade = "bulk-inserter" +data.raw["inserter"]["bob-turbo-inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } -data.raw.item["turbo-filter-inserter"].subgroup = "inserter" -data.raw.item["turbo-filter-inserter"].order = "nullius-d" -data.raw.item["turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-2"} -data.raw.item["turbo-filter-inserter"].stack_size = 100 -data.raw["inserter"]["turbo-filter-inserter"].order = "nullius-d" -data.raw["inserter"]["turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-2"} -data.raw["inserter"]["turbo-filter-inserter"].rotation_speed = 0.0333333 -data.raw["inserter"]["turbo-filter-inserter"].extension_speed = 0.08 -data.raw["inserter"]["turbo-filter-inserter"].energy_per_rotation = "10.25KJ" -data.raw["inserter"]["turbo-filter-inserter"].energy_per_movement = "1.5625KJ" -data.raw["inserter"]["turbo-filter-inserter"].energy_source.drain = "2kW" -data.raw["inserter"]["turbo-filter-inserter"].minable.mining_time = 0.6 -data.raw["inserter"]["turbo-filter-inserter"].next_upgrade = "stack-filter-inserter" -data.raw["inserter"]["turbo-filter-inserter"].resistances = { - { type = "impact", decrease = 100, percent = 90 } -} - -data.raw.item["stack-inserter"].subgroup = "inserter" -data.raw.item["stack-inserter"].order = "nullius-e" -data.raw.item["stack-inserter"].localised_name = {"entity-name.nullius-inserter-3"} -data.raw.item["stack-inserter"].stack_size = 100 -data.raw["inserter"]["stack-inserter"].order = "nullius-e" -data.raw["inserter"]["stack-inserter"].localised_name = {"entity-name.nullius-inserter-3"} -data.raw["inserter"]["stack-inserter"].rotation_speed = 0.0333333 -data.raw["inserter"]["stack-inserter"].extension_speed = 0.08 -data.raw["inserter"]["stack-inserter"].energy_per_rotation = "20.5KJ" -data.raw["inserter"]["stack-inserter"].energy_per_movement = "3.125KJ" -data.raw["inserter"]["stack-inserter"].energy_source.drain = "4kW" -data.raw["inserter"]["stack-inserter"].minable.mining_time = 0.8 -data.raw["inserter"]["stack-inserter"].next_upgrade = "express-stack-inserter" -data.raw["inserter"]["stack-inserter"].resistances = { +-- data.raw.item["turbo-filter-inserter"].subgroup = "inserter" +-- data.raw.item["turbo-filter-inserter"].order = "nullius-d" +-- data.raw.item["turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-2"} +-- data.raw.item["turbo-filter-inserter"].stack_size = 100 +-- data.raw["inserter"]["turbo-filter-inserter"].order = "nullius-d" +-- data.raw["inserter"]["turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-2"} +-- data.raw["inserter"]["turbo-filter-inserter"].rotation_speed = 0.0333333 +-- data.raw["inserter"]["turbo-filter-inserter"].extension_speed = 0.08 +-- data.raw["inserter"]["turbo-filter-inserter"].energy_per_rotation = "10.25kJ" +-- data.raw["inserter"]["turbo-filter-inserter"].energy_per_movement = "1.5625kJ" +-- data.raw["inserter"]["turbo-filter-inserter"].energy_source.drain = "2kW" +-- data.raw["inserter"]["turbo-filter-inserter"].minable.mining_time = 0.6 +-- data.raw["inserter"]["turbo-filter-inserter"].next_upgrade = "bulk-filter-inserter" +-- data.raw["inserter"]["turbo-filter-inserter"].resistances = { +-- { type = "impact", decrease = 100, percent = 90 } +-- } + +data.raw.item["bulk-inserter"].subgroup = "inserter" +data.raw.item["bulk-inserter"].order = "nullius-e" +data.raw.item["bulk-inserter"].localised_name = {"entity-name.nullius-inserter-3"} +data.raw.item["bulk-inserter"].stack_size = 100 +data.raw["inserter"]["bulk-inserter"].order = "nullius-e" +data.raw["inserter"]["bulk-inserter"].localised_name = {"entity-name.nullius-inserter-3"} +data.raw["inserter"]["bulk-inserter"].rotation_speed = 0.0333333 +data.raw["inserter"]["bulk-inserter"].extension_speed = 0.08 +data.raw["inserter"]["bulk-inserter"].energy_per_rotation = "20.5kJ" +data.raw["inserter"]["bulk-inserter"].energy_per_movement = "3.125kJ" +data.raw["inserter"]["bulk-inserter"].energy_source.drain = "4kW" +data.raw["inserter"]["bulk-inserter"].minable.mining_time = 0.8 +data.raw["inserter"]["bulk-inserter"].next_upgrade = "bob-express-bulk-inserter" +data.raw["inserter"]["bulk-inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } data.raw.recipe["inserter"].order = "x" -data.raw.item["stack-filter-inserter"].subgroup = "inserter" -data.raw.item["stack-filter-inserter"].order = "nullius-f" -data.raw.item["stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-3"} -data.raw.item["stack-filter-inserter"].stack_size = 100 -data.raw["inserter"]["stack-filter-inserter"].order = "nullius-f" -data.raw["inserter"]["stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-3"} -data.raw["inserter"]["stack-filter-inserter"].rotation_speed = 0.0333333 -data.raw["inserter"]["stack-filter-inserter"].extension_speed = 0.08 -data.raw["inserter"]["stack-filter-inserter"].energy_per_rotation = "20.5KJ" -data.raw["inserter"]["stack-filter-inserter"].energy_per_movement = "3.125KJ" -data.raw["inserter"]["stack-filter-inserter"].energy_source.drain = "4kW" -data.raw["inserter"]["stack-filter-inserter"].minable.mining_time = 0.8 -data.raw["inserter"]["stack-filter-inserter"].next_upgrade = "express-stack-filter-inserter" -data.raw["inserter"]["stack-filter-inserter"].resistances = { +-- data.raw.item["bulk-filter-inserter"].subgroup = "inserter" +-- data.raw.item["bulk-filter-inserter"].order = "nullius-f" +-- data.raw.item["bulk-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-3"} +-- data.raw.item["bulk-filter-inserter"].stack_size = 100 +-- data.raw["inserter"]["bulk-filter-inserter"].order = "nullius-f" +-- data.raw["inserter"]["bulk-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-3"} +-- data.raw["inserter"]["bulk-filter-inserter"].rotation_speed = 0.0333333 +-- data.raw["inserter"]["bulk-filter-inserter"].extension_speed = 0.08 +-- data.raw["inserter"]["bulk-filter-inserter"].energy_per_rotation = "20.5kJ" +-- data.raw["inserter"]["bulk-filter-inserter"].energy_per_movement = "3.125kJ" +-- data.raw["inserter"]["bulk-filter-inserter"].energy_source.drain = "4kW" +-- data.raw["inserter"]["bulk-filter-inserter"].minable.mining_time = 0.8 +-- data.raw["inserter"]["bulk-filter-inserter"].next_upgrade = "express-bulk-filter-inserter" +-- data.raw["inserter"]["bulk-filter-inserter"].resistances = { +-- { type = "impact", decrease = 100, percent = 90 } +-- } + +data.raw.item["bob-express-bulk-inserter"].subgroup = "inserter" +data.raw.item["bob-express-bulk-inserter"].order = "nullius-g" +data.raw.item["bob-express-bulk-inserter"].localised_name = {"entity-name.nullius-inserter-4"} +data.raw.item["bob-express-bulk-inserter"].stack_size = 100 +data.raw["inserter"]["bob-express-bulk-inserter"].order = "nullius-g" +data.raw["inserter"]["bob-express-bulk-inserter"].localised_name = {"entity-name.nullius-inserter-4"} +data.raw["inserter"]["bob-express-bulk-inserter"].rotation_speed = 0.0666666 +data.raw["inserter"]["bob-express-bulk-inserter"].extension_speed = 0.16 +data.raw["inserter"]["bob-express-bulk-inserter"].energy_per_rotation = "21kJ" +data.raw["inserter"]["bob-express-bulk-inserter"].energy_per_movement = "3.125kJ" +data.raw["inserter"]["bob-express-bulk-inserter"].energy_source.drain = "6kW" +data.raw["inserter"]["bob-express-bulk-inserter"].minable.mining_time = 1 +data.raw["inserter"]["bob-express-bulk-inserter"].next_upgrade = nil +data.raw["inserter"]["bob-express-bulk-inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } -data.raw.item["express-stack-inserter"].subgroup = "inserter" -data.raw.item["express-stack-inserter"].order = "nullius-g" -data.raw.item["express-stack-inserter"].localised_name = {"entity-name.nullius-inserter-4"} -data.raw.item["express-stack-inserter"].stack_size = 100 -data.raw["inserter"]["express-stack-inserter"].order = "nullius-g" -data.raw["inserter"]["express-stack-inserter"].localised_name = {"entity-name.nullius-inserter-4"} -data.raw["inserter"]["express-stack-inserter"].rotation_speed = 0.0666666 -data.raw["inserter"]["express-stack-inserter"].extension_speed = 0.16 -data.raw["inserter"]["express-stack-inserter"].energy_per_rotation = "21KJ" -data.raw["inserter"]["express-stack-inserter"].energy_per_movement = "3.125KJ" -data.raw["inserter"]["express-stack-inserter"].energy_source.drain = "6kW" -data.raw["inserter"]["express-stack-inserter"].minable.mining_time = 1 -data.raw["inserter"]["express-stack-inserter"].next_upgrade = nil -data.raw["inserter"]["express-stack-inserter"].resistances = { - { type = "impact", decrease = 100, percent = 90 } -} - -data.raw.item["express-stack-filter-inserter"].subgroup = "inserter" -data.raw.item["express-stack-filter-inserter"].order = "nullius-h" -data.raw.item["express-stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-4"} -data.raw.item["express-stack-filter-inserter"].stack_size = 100 -data.raw["inserter"]["express-stack-filter-inserter"].order = "nullius-h" -data.raw["inserter"]["express-stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-4"} -data.raw["inserter"]["express-stack-filter-inserter"].rotation_speed = 0.0666666 -data.raw["inserter"]["express-stack-filter-inserter"].extension_speed = 0.16 -data.raw["inserter"]["express-stack-filter-inserter"].energy_per_rotation = "21KJ" -data.raw["inserter"]["express-stack-filter-inserter"].energy_per_movement = "3.125KJ" -data.raw["inserter"]["express-stack-filter-inserter"].energy_source.drain = "6kW" -data.raw["inserter"]["express-stack-filter-inserter"].minable.mining_time = 1 -data.raw["inserter"]["express-stack-filter-inserter"].next_upgrade = nil -data.raw["inserter"]["express-stack-filter-inserter"].resistances = { - { type = "impact", decrease = 100, percent = 90 } -} +-- data.raw.item["express-bulk-filter-inserter"].subgroup = "inserter" +-- data.raw.item["express-bulk-filter-inserter"].order = "nullius-h" +-- data.raw.item["express-bulk-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-4"} +-- data.raw.item["express-bulk-filter-inserter"].stack_size = 100 +-- data.raw["inserter"]["express-bulk-filter-inserter"].order = "nullius-h" +-- data.raw["inserter"]["express-bulk-filter-inserter"].localised_name = {"entity-name.nullius-filter-inserter-4"} +-- data.raw["inserter"]["express-bulk-filter-inserter"].rotation_speed = 0.0666666 +-- data.raw["inserter"]["express-bulk-filter-inserter"].extension_speed = 0.16 +-- data.raw["inserter"]["express-bulk-filter-inserter"].energy_per_rotation = "21kJ" +-- data.raw["inserter"]["express-bulk-filter-inserter"].energy_per_movement = "3.125kJ" +-- data.raw["inserter"]["express-bulk-filter-inserter"].energy_source.drain = "6kW" +-- data.raw["inserter"]["express-bulk-filter-inserter"].minable.mining_time = 1 +-- data.raw["inserter"]["express-bulk-filter-inserter"].next_upgrade = nil +-- data.raw["inserter"]["express-bulk-filter-inserter"].resistances = { +-- { type = "impact", decrease = 100, percent = 90 } +-- } data.raw["rail-planner"]["rail"].subgroup = "railway" data.raw["rail-planner"]["rail"].order = "nullius-d" @@ -476,7 +464,9 @@ data.raw["rail-chain-signal"]["rail-chain-signal"].minable.mining_time = 0.8 data.raw.item["rail-chain-signal"].subgroup = "railway" data.raw.item["rail-chain-signal"].order = "nullius-g" data.raw["straight-rail"]["straight-rail"].minable.mining_time = 0.5 -data.raw["curved-rail"]["curved-rail"].minable.mining_time = 0.6 +data.raw["legacy-curved-rail"]["legacy-curved-rail"].minable.mining_time = 0.6 +data.raw["curved-rail-a"]["curved-rail-a"].minable.mining_time = 0.6 +data.raw["curved-rail-b"]["curved-rail-b"].minable.mining_time = 0.6 data.raw.item["storage-tank"].subgroup = "tanks" data.raw.item["storage-tank"].order = "nullius-bcb" @@ -502,12 +492,11 @@ data.raw["radar"]["radar"].minable.mining_time = 0.6 data.raw["repair-tool"]["repair-pack"].icon = "__base__/graphics/icons/repair-pack.png" data.raw["repair-tool"]["repair-pack"].icon_size = 64 -data.raw["repair-tool"]["repair-pack"].icon_mipmaps = 4 data.raw["repair-tool"]["repair-pack"].subgroup = "tool-upgrades" data.raw["repair-tool"]["repair-pack"].order = "nullius-bb" data.raw.recipe["repair-pack"].order = "x" -data.raw["character"]["character"].localised_name = {"", {"item-name.nullius-android"}, " ", 1} +data.raw["character"]["character"].localised_name = {"", {"item-name.nullius-android"}, " ", tostring(1)} data.raw["character"]["character"].animations[2].armors = {"nullius-chassis-2", "nullius-chassis-3"} data.raw["character"]["character"].animations[3].armors = @@ -535,6 +524,7 @@ data.raw["item-subgroup"]["terrain"].group = "intermediate-products" data.raw["item-subgroup"]["terrain"].order = "nc" data.raw["item-subgroup"]["smelting-machine"].order = "f" data.raw["item-subgroup"]["raw-material"].order = "b" +data.raw["item-subgroup"]["circuit-network"].group = "logistics" data.raw["item-subgroup"]["circuit-network"].order = "e" data.raw["item-subgroup"]["logistic-network"].order = "ae" @@ -657,7 +647,7 @@ data.raw["electric-pole"]["big-electric-pole"].pictures.layers = { shift = util.by_pixel(0, -51), scale = 0.5 }, - data.raw["electric-pole"]["big-electric-pole"].pictures.layers[2].hr_version + data.raw["electric-pole"]["big-electric-pole"].pictures.layers[2] } data.raw["electric-pole"]["big-electric-pole"].resistances = {{ type = "impact", decrease = 100, percent = 90 }} @@ -665,7 +655,7 @@ data.raw["electric-pole"]["big-electric-pole"].minable.mining_time = 1.2 data.raw["electric-pole"]["small-electric-pole"].pictures.layers = { { - filename = ENTITYPATH .. "poles/hr-pole1.png", + filename = ENTITYPATH .. "poles/pole1.png", priority = "extra-high", width = 72, height = 220, @@ -681,7 +671,7 @@ data.raw["electric-pole"]["small-electric-pole"].minable.mining_time = 0.6 data.raw["electric-pole"]["medium-electric-pole"].pictures.layers = { { - filename = ENTITYPATH .. "poles/hr-pole2.png", + filename = ENTITYPATH .. "poles/pole2.png", priority = "extra-high", width = 72, height = 220, @@ -753,77 +743,77 @@ data.raw["container"]["steel-chest"].resistances = data.raw["container"]["iron-chest"].resistances data.raw["container"]["steel-chest"].minable.mining_time = 0.8 -data.raw.item["logistic-chest-storage"].localised_name = +data.raw.item["storage-chest"].localised_name = {"entity-name.nullius-small-storage-chest-2"} -data.raw.item["logistic-chest-storage"].localised_description = +data.raw.item["storage-chest"].localised_description = {"entity-description.nullius-storage-chest"} -data.raw["logistic-container"]["logistic-chest-storage"].localised_name = +data.raw["logistic-container"]["storage-chest"].localised_name = {"entity-name.nullius-small-storage-chest-2"} -data.raw["logistic-container"]["logistic-chest-storage"].localised_description = +data.raw["logistic-container"]["storage-chest"].localised_description = {"entity-description.nullius-storage-chest"} -data.raw["logistic-container"]["logistic-chest-storage"].max_health = 400 -data.raw["logistic-container"]["logistic-chest-storage"].resistances = +data.raw["logistic-container"]["storage-chest"].max_health = 400 +data.raw["logistic-container"]["storage-chest"].resistances = data.raw["container"]["wooden-chest"].resistances -data.raw["logistic-container"]["logistic-chest-storage"].minable.mining_time = 1 +data.raw["logistic-container"]["storage-chest"].minable.mining_time = 1 -data.raw.item["logistic-chest-passive-provider"].localised_name = +data.raw.item["passive-provider-chest"].localised_name = {"entity-name.nullius-small-supply-chest-2"} -data.raw.item["logistic-chest-passive-provider"].localised_description = +data.raw.item["passive-provider-chest"].localised_description = {"entity-description.nullius-supply-chest"} -data.raw["logistic-container"]["logistic-chest-passive-provider"].localised_name = +data.raw["logistic-container"]["passive-provider-chest"].localised_name = {"entity-name.nullius-small-supply-chest-2"} -data.raw["logistic-container"]["logistic-chest-passive-provider"].localised_description = +data.raw["logistic-container"]["passive-provider-chest"].localised_description = {"entity-description.nullius-supply-chest"} -data.raw["logistic-container"]["logistic-chest-passive-provider"].max_health = 400 -data.raw["logistic-container"]["logistic-chest-passive-provider"].resistances = +data.raw["logistic-container"]["passive-provider-chest"].max_health = 400 +data.raw["logistic-container"]["passive-provider-chest"].resistances = data.raw["container"]["wooden-chest"].resistances -data.raw["logistic-container"]["logistic-chest-passive-provider"].minable.mining_time = 1 +data.raw["logistic-container"]["passive-provider-chest"].minable.mining_time = 1 -data.raw.item["logistic-chest-requester"].localised_name = +data.raw.item["requester-chest"].localised_name = {"entity-name.nullius-small-demand-chest-2"} -data.raw.item["logistic-chest-requester"].localised_description = +data.raw.item["requester-chest"].localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-demand-chest"}, 10} -data.raw["logistic-container"]["logistic-chest-requester"].localised_name = + {"entity-description.nullius-demand-chest"}, tostring(10)} +data.raw["logistic-container"]["requester-chest"].localised_name = {"entity-name.nullius-small-demand-chest-2"} -data.raw["logistic-container"]["logistic-chest-requester"].localised_description = - data.raw.item["logistic-chest-requester"].localised_description -data.raw["logistic-container"]["logistic-chest-requester"].max_health = 400 -data.raw["logistic-container"]["logistic-chest-requester"].resistances = +data.raw["logistic-container"]["requester-chest"].localised_description = + data.raw.item["requester-chest"].localised_description +data.raw["logistic-container"]["requester-chest"].max_health = 400 +data.raw["logistic-container"]["requester-chest"].resistances = data.raw["container"]["wooden-chest"].resistances -data.raw["logistic-container"]["logistic-chest-requester"].minable.mining_time = 1 +data.raw["logistic-container"]["requester-chest"].minable.mining_time = 1 -data.raw.item["logistic-chest-buffer"].localised_name = +data.raw.item["buffer-chest"].localised_name = {"entity-name.nullius-small-buffer-chest-2"} -data.raw.item["logistic-chest-buffer"].localised_description = +data.raw.item["buffer-chest"].localised_description = {"entity-description.nullius-request-slots", - {"entity-description.nullius-buffer-chest"}, 6} -data.raw["logistic-container"]["logistic-chest-buffer"].localised_name = + {"entity-description.nullius-buffer-chest"}, tostring(6)} +data.raw["logistic-container"]["buffer-chest"].localised_name = {"entity-name.nullius-small-buffer-chest-2"} -data.raw["logistic-container"]["logistic-chest-buffer"].localised_description = - data.raw.item["logistic-chest-buffer"].localised_description -data.raw["logistic-container"]["logistic-chest-buffer"].max_health = 400 -data.raw["logistic-container"]["logistic-chest-buffer"].resistances = +data.raw["logistic-container"]["buffer-chest"].localised_description = + data.raw.item["buffer-chest"].localised_description +data.raw["logistic-container"]["buffer-chest"].max_health = 400 +data.raw["logistic-container"]["buffer-chest"].resistances = data.raw["container"]["wooden-chest"].resistances -data.raw["logistic-container"]["logistic-chest-buffer"].minable.mining_time = 1 +data.raw["logistic-container"]["buffer-chest"].minable.mining_time = 1 -data.raw.item["logistic-chest-active-provider"].localised_name = +data.raw.item["active-provider-chest"].localised_name = {"entity-name.nullius-small-dispatch-chest-2"} -data.raw.item["logistic-chest-active-provider"].localised_description = +data.raw.item["active-provider-chest"].localised_description = {"entity-description.nullius-dispatch-chest"} -data.raw["logistic-container"]["logistic-chest-active-provider"].localised_name = +data.raw["logistic-container"]["active-provider-chest"].localised_name = {"entity-name.nullius-small-dispatch-chest-2"} -data.raw["logistic-container"]["logistic-chest-active-provider"].localised_description = +data.raw["logistic-container"]["active-provider-chest"].localised_description = {"entity-description.nullius-dispatch-chest"} -data.raw["logistic-container"]["logistic-chest-active-provider"].max_health = 400 -data.raw["logistic-container"]["logistic-chest-active-provider"].resistances = +data.raw["logistic-container"]["active-provider-chest"].max_health = 400 +data.raw["logistic-container"]["active-provider-chest"].resistances = data.raw["container"]["wooden-chest"].resistances -data.raw["logistic-container"]["logistic-chest-active-provider"].minable.mining_time = 1 +data.raw["logistic-container"]["active-provider-chest"].minable.mining_time = 1 data.raw.item["pipe"].localised_name = {"entity-name.nullius-pipe-1"} data.raw.item["pipe"].localised_description = - {"entity-description.nullius-pipe", 40, 2290, 450} + {"entity-description.nullius-pipe", tostring(40), tostring(2290), tostring(450)} data.raw["pipe"]["pipe"].localised_name = {"entity-name.nullius-pipe-1"} data.raw["pipe"]["pipe"].localised_description = data.raw.item["pipe"].localised_description @@ -831,7 +821,7 @@ data.raw["pipe"]["pipe"].minable.mining_time = 0.2 data.raw.item["pipe-to-ground"].localised_name = {"entity-name.nullius-underground-pipe-1"} data.raw.item["pipe-to-ground"].localised_description = - {"entity-description.nullius-underground-pipe", 40} + {"entity-description.nullius-underground-pipe", tostring(40)} data.raw["pipe-to-ground"]["pipe-to-ground"].localised_name = {"entity-name.nullius-underground-pipe-1"} data.raw["pipe-to-ground"]["pipe-to-ground"].localised_description = diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index 56c5323..f646a72 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -17,10 +17,10 @@ data.raw.resource["uranium-ore"].minable.fluid_amount = nil data.raw.resource["uranium-ore"].minable.required_fluid = nil data.raw.item["rocket-fuel"].icon = "__base__/graphics/icons/rocket-fuel.png" data.raw.item["rocket-fuel"].icon_size = 64 -data.raw.item["copper-cable"].icon = "__angelssmelting__/graphics/icons/wire-coil-tin.png" +data.raw.item["copper-cable"].icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png" data.raw.item["copper-cable"].icon_size = 64 data.raw.item["copper-cable"].icons = {{ - icon = "__angelssmelting__/graphics/icons/wire-coil-tin.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64 }} data.raw.item["copper-cable"].subgroup = "electronic-intermediate" @@ -30,11 +30,10 @@ data.raw.item["copper-cable"].order = "nullius-d" data.raw.item["storage-tank"].stack_size = 50 data.raw.item["storage-tank"].icons = {{ icon = "__base__/graphics/icons/storage-tank.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} data.raw["storage-tank"]["storage-tank"].icons = data.raw.item["storage-tank"].icons -data.raw["storage-tank"]["storage-tank"].fluid_box.height = 4.25 -data.raw["storage-tank"]["storage-tank"].fluid_box.base_area = 35.29411765 +data.raw["storage-tank"]["storage-tank"].fluid_box.volume = 500 data.raw["storage-tank"]["storage-tank"].pictures = util.table.deepcopy(data.raw["storage-tank"]["nullius-medium-tank-3"].pictures) data.raw["storage-tank"]["storage-tank"].pictures.picture.sheets[1].tint = {0.9, 0.8, 0.6} @@ -44,15 +43,15 @@ if mods["reskins-bobs"] then data.raw.item["radar"].icons = { { icon = "__reskins-bobs__/graphics/icons/warfare/radar/radar-icon-base.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }, { icon = "__reskins-bobs__/graphics/icons/warfare/radar/radar-icon-mask.png", - icon_size = 64, icon_mipmaps = 4, tint = tiercolor("yellow") + icon_size = 64, tint = tiercolor("yellow") }, { icon = "__reskins-bobs__/graphics/icons/warfare/radar/radar-icon-highlights.png", - icon_size = 64, icon_mipmaps = 4, tint = {1, 1, 1, 0} + icon_size = 64, tint = {1, 1, 1, 0} } } label_icon("radar", 1, "yellow") @@ -61,11 +60,10 @@ data.raw["radar"]["radar"].pictures = else data.raw.item["radar"].icons = {{ icon = "__base__/graphics/icons/radar.png", - icon_size = 64, icon_mipmaps = 4, + icon_size = 64, tint = {0.9, 0.9, 0.65} }} data.raw["radar"]["radar"].pictures.layers[1].tint = {0.9, 0.9, 0.65} -data.raw["radar"]["radar"].pictures.layers[1].hr_version.tint = {0.9, 0.9, 0.65} end data.raw.item["radar"].stack_size = 20 data.raw["radar"]["radar"].icons = data.raw.item["radar"].icons @@ -181,66 +179,63 @@ data.raw["container"]["iron-chest"].next_upgrade = "steel-chest" data.raw["container"]["steel-chest"].next_upgrade = nil -data.raw.item["logistic-chest-storage"].icons = +data.raw.item["storage-chest"].icons = {{ icon = ENTICONPATH .. "chest-storage1.png", icon_size = 64 }} -data.raw.item["logistic-chest-storage"].subgroup = "small-logistic-storage" -data.raw.item["logistic-chest-storage"].order = "nullius-bc" -data.raw.item["logistic-chest-storage"].stack_size = 100 +data.raw.item["storage-chest"].subgroup = "small-logistic-storage" +data.raw.item["storage-chest"].order = "nullius-bc" +data.raw.item["storage-chest"].stack_size = 100 -data.raw.item["logistic-chest-passive-provider"].icons = +data.raw.item["passive-provider-chest"].icons = {{ icon = ENTICONPATH .. "chest-supply1.png", icon_size = 64 }} -data.raw.item["logistic-chest-passive-provider"].subgroup = "small-logistic-storage" -data.raw.item["logistic-chest-passive-provider"].order = "nullius-cc" -data.raw.item["logistic-chest-passive-provider"].stack_size = 100 +data.raw.item["passive-provider-chest"].subgroup = "small-logistic-storage" +data.raw.item["passive-provider-chest"].order = "nullius-cc" +data.raw.item["passive-provider-chest"].stack_size = 100 -data.raw.item["logistic-chest-requester"].icons = +data.raw.item["requester-chest"].icons = {{ icon = ENTICONPATH .. "chest-demand1.png", icon_size = 64 }} -data.raw.item["logistic-chest-requester"].subgroup = "small-logistic-storage" -data.raw.item["logistic-chest-requester"].order = "nullius-dc" -data.raw.item["logistic-chest-requester"].stack_size = 100 +data.raw.item["requester-chest"].subgroup = "small-logistic-storage" +data.raw.item["requester-chest"].order = "nullius-dc" +data.raw.item["requester-chest"].stack_size = 100 -data.raw.item["logistic-chest-buffer"].icons = +data.raw.item["buffer-chest"].icons = {{ icon = ENTICONPATH .. "chest-buffer1.png", icon_size = 64 }} -data.raw.item["logistic-chest-buffer"].subgroup = "small-logistic-storage" -data.raw.item["logistic-chest-buffer"].order = "nullius-ec" -data.raw.item["logistic-chest-buffer"].stack_size = 100 +data.raw.item["buffer-chest"].subgroup = "small-logistic-storage" +data.raw.item["buffer-chest"].order = "nullius-ec" +data.raw.item["buffer-chest"].stack_size = 100 -data.raw.item["logistic-chest-active-provider"].icons = +data.raw.item["active-provider-chest"].icons = {{ icon = ENTICONPATH .. "chest-dispatch1.png", icon_size = 64 }} -data.raw.item["logistic-chest-active-provider"].subgroup = "small-logistic-storage" -data.raw.item["logistic-chest-active-provider"].order = "nullius-fc" -data.raw.item["logistic-chest-active-provider"].stack_size = 100 - -data.raw["logistic-container"]["logistic-chest-storage"].icons = - data.raw.item["logistic-chest-storage"].icons -data.raw["logistic-container"]["logistic-chest-storage"].inventory_size = 30 -data.raw["logistic-container"]["logistic-chest-passive-provider"].icons = - data.raw.item["logistic-chest-passive-provider"].icons -data.raw["logistic-container"]["logistic-chest-passive-provider"].inventory_size = 30 -data.raw["logistic-container"]["logistic-chest-requester"].icons = - data.raw.item["logistic-chest-requester"].icons -data.raw["logistic-container"]["logistic-chest-requester"].inventory_size = 30 -data.raw["logistic-container"]["logistic-chest-requester"].max_logistic_slots = 10 -data.raw["logistic-container"]["logistic-chest-buffer"].icons = - data.raw.item["logistic-chest-buffer"].icons -data.raw["logistic-container"]["logistic-chest-buffer"].inventory_size = 30 -data.raw["logistic-container"]["logistic-chest-buffer"].max_logistic_slots = 6 -data.raw["logistic-container"]["logistic-chest-active-provider"].icons = - data.raw.item["logistic-chest-active-provider"].icons -data.raw["logistic-container"]["logistic-chest-active-provider"].inventory_size = 30 -data.raw["logistic-container"]["logistic-chest-storage"].next_upgrade = nil -data.raw["logistic-container"]["logistic-chest-passive-provider"].next_upgrade = nil -data.raw["logistic-container"]["logistic-chest-requester"].next_upgrade = nil -data.raw["logistic-container"]["logistic-chest-buffer"].next_upgrade = nil -data.raw["logistic-container"]["logistic-chest-active-provider"].next_upgrade = nil +data.raw.item["active-provider-chest"].subgroup = "small-logistic-storage" +data.raw.item["active-provider-chest"].order = "nullius-fc" +data.raw.item["active-provider-chest"].stack_size = 100 + +data.raw["logistic-container"]["storage-chest"].icons = + data.raw.item["storage-chest"].icons +data.raw["logistic-container"]["storage-chest"].inventory_size = 30 +data.raw["logistic-container"]["passive-provider-chest"].icons = + data.raw.item["passive-provider-chest"].icons +data.raw["logistic-container"]["passive-provider-chest"].inventory_size = 30 +data.raw["logistic-container"]["requester-chest"].icons = + data.raw.item["requester-chest"].icons +data.raw["logistic-container"]["requester-chest"].inventory_size = 30 +data.raw["logistic-container"]["requester-chest"].max_logistic_slots = 10 +data.raw["logistic-container"]["buffer-chest"].icons = + data.raw.item["buffer-chest"].icons +data.raw["logistic-container"]["buffer-chest"].inventory_size = 30 +data.raw["logistic-container"]["buffer-chest"].max_logistic_slots = 6 +data.raw["logistic-container"]["active-provider-chest"].icons = + data.raw.item["active-provider-chest"].icons +data.raw["logistic-container"]["active-provider-chest"].inventory_size = 30 +data.raw["logistic-container"]["storage-chest"].next_upgrade = nil +data.raw["logistic-container"]["passive-provider-chest"].next_upgrade = nil +data.raw["logistic-container"]["requester-chest"].next_upgrade = nil +data.raw["logistic-container"]["buffer-chest"].next_upgrade = nil +data.raw["logistic-container"]["active-provider-chest"].next_upgrade = nil data.raw["pipe"]["pipe"].next_upgrade = "nullius-pipe-2" data.raw["pipe-to-ground"]["pipe-to-ground"].next_upgrade = "nullius-underground-pipe-2" -data.raw["pipe"]["pipe"].fluid_box.height = 2 -data.raw["pipe"]["pipe"].fluid_box.base_area = 2 -data.raw["pipe-to-ground"]["pipe-to-ground"].fluid_box.height = 2 -data.raw["pipe-to-ground"]["pipe-to-ground"].fluid_box.base_area = 2 +data.raw["pipe"]["pipe"].fluid_box.volume = 500 data.raw["pipe-to-ground"]["pipe-to-ground"].fluid_box.max_underground_distance = 11 data.raw.item["pipe"].stack_size = 200 data.raw.item["pipe-to-ground"].stack_size = 100 @@ -249,7 +244,7 @@ data.raw.item["pipe-to-ground"].stack_size = 100 data.raw.item["pump"].stack_size = 50 data.raw["pump"]["pump"].fast_replaceable_group = "pump" data.raw["pump"]["pump"].next_upgrade = nil -data.raw["pump"]["pump"].fluid_box.height = 10 +data.raw["pump"]["pump"].fluid_box.volume = 500 data.raw["pump"]["pump"].pumping_speed = 200 data.raw.pump["nullius-pump-2"].collision_mask = data.raw.pump.pump.collision_mask data.raw.pump["nullius-pump-2"].collision_box = data.raw.pump.pump.collision_box @@ -265,7 +260,7 @@ data.raw.item["oil-refinery"].subgroup = "hidden" if mods["reskins-library"] then data.raw.item["pump"].icons = {{ icon = "__base__/graphics/icons/pump.png", - icon_size = 64, icon_mipmaps = 4 + icon_size = 64, }} end data.raw.pump.pump.animations = @@ -287,8 +282,8 @@ data.raw["mining-drill"]["nullius-geothermal-build-3"].collision_box = for _,fluid in pairs(data.raw.fluid) do local barrel_name = fluid.name .. "-barrel" if (string.sub(fluid.name, 1, 8) == "nullius-") and - data.raw.recipe["fill-" .. fluid.name .. "-barrel"] then - local fill_name = "fill-" .. barrel_name + data.raw.recipe[fluid.name .. "-barrel"] then + local fill_name = barrel_name local empty_name = "empty-" .. barrel_name local subgroup = fluid.subgroup data.raw.item[barrel_name].subgroup = "fill-" .. subgroup diff --git a/nullius/prototypes/override_final_only.lua b/nullius/prototypes/override_final_only.lua index d0fec2e..d22aea9 100644 --- a/nullius/prototypes/override_final_only.lua +++ b/nullius/prototypes/override_final_only.lua @@ -16,7 +16,7 @@ data.raw["container"]["steel-chest"].picture = { layers = { scale = 0.5 }, { - filename = BASEENTITY .. "infinity-chest/hr-infinity-chest-shadow.png", + filename = BASEENTITY .. "infinity-chest/infinity-chest-shadow.png", priority = "extra-high", width = 116, height = 48, @@ -30,6 +30,6 @@ data.raw["container"]["steel-chest"].picture = { layers = { for _,character in pairs(data.raw["character"]) do if ((character.name ~= "character") and (character.name ~= "nullius-android-2")) then - table.insert(character.flags,"hidden") + character.hidden = true end end diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index c4a9d6b..926caa5 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -225,31 +225,31 @@ end if mods["bobinserters"] and (settings.startup["bobmods-inserters-long2"].value == true) then -data.raw.technology["long-inserters-1"].order = "nullius-ce" -data.raw.technology["long-inserters-1"].prerequisites = {"nullius-automation"} -data.raw.technology["long-inserters-1"].unit = { count = 3, +data.raw.technology["bob-long-inserters-1"].order = "nullius-ce" +data.raw.technology["bob-long-inserters-1"].prerequisites = {"nullius-automation"} +data.raw.technology["bob-long-inserters-1"].unit = { count = 3, ingredients = {{"nullius-mechanical-pack", 1}}, time = 8 } -table.insert(data.raw.technology["nullius-aesthetics-1"].prerequisites,"long-inserters-2") +table.insert(data.raw.technology["nullius-aesthetics-1"].prerequisites,"bob-long-inserters-2") -data.raw.technology["long-inserters-2"].order = "nullius-dd" -data.raw.technology["long-inserters-2"].prerequisites = {"nullius-maintenance"} -data.raw.technology["long-inserters-2"].unit = { count = 20, +data.raw.technology["bob-long-inserters-2"].order = "nullius-dd" +data.raw.technology["bob-long-inserters-2"].prerequisites = {"nullius-maintenance"} +data.raw.technology["bob-long-inserters-2"].unit = { count = 20, ingredients = {{"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}}, time = 20 } else -data.raw.technology["long-inserters-1"].order = "nullius-dd" -data.raw.technology["long-inserters-1"].localised_name = {"technology-name.nullius-long-inserters"} -data.raw.technology["long-inserters-1"].localised_description = {"technology-description.nullius-long-inserters"} -data.raw.technology["long-inserters-1"].prerequisites = {"nullius-lubrication", "nullius-mass-production-1"} -data.raw.technology["long-inserters-1"].unit = { count = 8, +data.raw.technology["bob-long-inserters-1"].order = "nullius-dd" +data.raw.technology["bob-long-inserters-1"].localised_name = {"technology-name.nullius-long-inserters"} +data.raw.technology["bob-long-inserters-1"].localised_description = {"technology-description.nullius-long-inserters"} +data.raw.technology["bob-long-inserters-1"].prerequisites = {"nullius-lubrication", "nullius-mass-production-1"} +data.raw.technology["bob-long-inserters-1"].unit = { count = 8, ingredients = {{"nullius-mechanical-pack", 1}}, time = 6 } end -data.raw.technology["long-inserters-1"].ignore_tech_cost_multiplier = true +data.raw.technology["bob-long-inserters-1"].ignore_tech_cost_multiplier = true if mods["miniloader"] then @@ -916,7 +916,7 @@ data.raw.pump["underground-mini-pump"].localised_name = {"item-name.nullius-underground-pump"} data.raw.pump["underground-mini-pump"].localised_description = {"item-description.nullius-underground-pump"} -data.raw.pump["underground-mini-pump"].fluid_box.height = 8 +data.raw.pump["underground-mini-pump"].fluid_box.volume = 500 data.raw.pump["underground-mini-pump"].fluid_box.pipe_connections[1].max_underground_distance=24 data.raw.pump["underground-mini-pump"].fluid_box.pipe_connections[2].max_underground_distance=24 data.raw.pump["underground-mini-pump"].energy_usage = '20kW' @@ -941,11 +941,9 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do else for _,pic in pairs(junction.pictures) do pic.tint = tint - pic.hr_version.tint = tint end for _,cover in pairs(junction.fluid_box.pipe_covers) do cover.layers[1].tint = tint - cover.layers[1].hr_version.tint = tint end local subdir = string.sub(junction.pictures.up.filename, 1, 50) @@ -954,11 +952,11 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do filename = subdir .. "pipe-covers/hr-pipe-cover-north.png", priority = "extra-high", width = 128, height = 128, - shift = {0, -1}, - tint = tint, + shift = {0, -1}, + tint = tint, scale = 0.5 - }, - junction.pictures.up.hr_version + }, + junction.pictures.up }} end @@ -971,8 +969,7 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do data.raw.item[junction.minable.result].localised_description local archetype = data.raw["pipe-to-ground"]["nullius-underground-pipe-"..lvl] - junction.fluid_box.height = archetype.fluid_box.height - junction.fluid_box.base_area = archetype.fluid_box.base_area + junction.fluid_box.volume = archetype.fluid_box.volume junction.minable.mining_time = (lvl * 0.5) for _,connection in pairs(junction.fluid_box.pipe_connections) do @@ -1403,7 +1400,7 @@ data.raw.recipe["transport-depot-reader"].category = "small-crafting" data.raw.recipe["transport-depot-reader"].energy_required = 2 data.raw.recipe["transport-depot-reader"].ingredients = { {"road-network-reader", 1}, - {"red-wire", 2} + {"nullius-red-wire", 2} } data.raw.item["transport-depot-writer"].order = "nullius-k" data.raw.item["transport-depot-writer"].stack_size = 50 @@ -1413,7 +1410,7 @@ data.raw.recipe["transport-depot-writer"].category = "small-crafting" data.raw.recipe["transport-depot-writer"].energy_required = 3 data.raw.recipe["transport-depot-writer"].ingredients = { {"road-network-reader", 1}, - {"green-wire", 3} + {"nullius-green-wire", 3} } data.raw["assembling-machine"]["request-depot"].fluid_boxes[2].base_level = 6 diff --git a/nullius/prototypes/recipe_book.lua b/nullius/prototypes/recipe_book.lua index ac3e6f9..d23c253 100644 --- a/nullius/prototypes/recipe_book.lua +++ b/nullius/prototypes/recipe_book.lua @@ -18,7 +18,7 @@ group_with(data.raw.resource.coal, data.raw.item["nullius-coal"]) group_with(data.raw.lamp["nullius-lamp-1"], data.raw.item["small-lamp"]) group_with(data.raw.item["small-lamp"], data.raw.recipe["nullius-lamp-1a"]) group_with(data.raw.fluid["nullius-air"], data.raw.recipe["nullius-air-filtration"]) -group_with(data.raw.item["nullius-canister"], data.raw.recipe["nullius-empty-canister"]) +group_with(data.raw.item["nullius-canister"], data.raw.recipe["nullius-canister"]) group_with(data.raw.item["rocket-fuel"], data.raw.recipe["nullius-rocket-fuel"]) group_with(data.raw.item["stone-brick"], data.raw.recipe["nullius-stone-block"]) group_with(data.raw.item["refined-concrete"], data.raw.recipe["nullius-reinforced-concrete"]) diff --git a/nullius/prototypes/reskin.lua b/nullius/prototypes/reskin.lua index 03f3c8e..1a4942c 100644 --- a/nullius/prototypes/reskin.lua +++ b/nullius/prototypes/reskin.lua @@ -26,12 +26,12 @@ function label_icon(name, tier, color, etype) local icon_style = settings.startup["reskins-lib-icon-tier-labeling-style"].value local icon_name = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/"..tier..".png" table.insert(data.raw[etype][name].icons, { - icon = icon_name, icon_size = 64, icon_mipmaps = 4 + icon = icon_name, icon_size = 64 }) local blend = tiercolor(color) blend.a = 0.75 table.insert(data.raw[etype][name].icons, { - icon = icon_name, icon_size = 64, icon_mipmaps = 4, tint = blend + icon = icon_name, icon_size = 64, tint = blend }) end end @@ -92,11 +92,5 @@ function animate_frame(frame, count, speed) ret.frame_count = 1 ret.repeat_count = count ret.animation_speed = speed - if (ret.hr_version ~= nil) then - ret.hr_version.priority = "high" - ret.hr_version.frame_count = 1 - ret.hr_version.repeat_count = count - ret.hr_version.animation_speed = speed - end return ret end diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index 9ad882e..cac8a72 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -10,6 +10,11 @@ resource_autoplace.initialize_patch_set("nullius-sandstone", true) resource_autoplace.initialize_patch_set("nullius-limestone", false) resource_autoplace.initialize_patch_set("nullius-fumarole", false) +data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-bauxite"] = {} +data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-sandstone"] = {} +data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-limestone"] = {} +data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-fumarole"] = {} + local function make_particle(inputname, inputtint) data:extend({ @@ -20,7 +25,7 @@ local function make_particle(inputname, inputtint) life_time = 180, pictures = { { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-1.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-1.png", priority = "extra-high", tint = inputtint, width = 5, @@ -28,7 +33,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-2.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-2.png", priority = "extra-high", tint = inputtint, width = 7, @@ -36,7 +41,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-3.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-3.png", priority = "extra-high", tint = inputtint, width = 6, @@ -44,7 +49,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-4.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-4.png", priority = "extra-high", tint = inputttint, width = 9, @@ -52,7 +57,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-5.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-5.png", priority = "extra-high", tint = inputttint, width = 5, @@ -60,7 +65,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-6.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-6.png", priority = "extra-high", tint = inputtint, width = 6, @@ -68,7 +73,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-7.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-7.png", priority = "extra-high", tint = inputtint, width = 7, @@ -76,7 +81,7 @@ local function make_particle(inputname, inputtint) frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-8.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-8.png", priority = "extra-high", tint = inputtint, width = 6, @@ -86,56 +91,56 @@ local function make_particle(inputname, inputtint) }, shadows = { { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-1.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-1.png", priority = "extra-high", width = 5, height = 5, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-2.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-2.png", priority = "extra-high", width = 7, height = 5, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-3.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-3.png", priority = "extra-high", width = 6, height = 7, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-4.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-4.png", priority = "extra-high", width = 9, height = 8, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-5.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-5.png", priority = "extra-high", width = 5, height = 5, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-6.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-6.png", priority = "extra-high", width = 6, height = 4, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-7.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-7.png", priority = "extra-high", width = 7, height = 8, frame_count = 1 }, { - filename = "__angelsrefining__/graphics/entity/ores-particle/ore-particle-shadow-8.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores-particle/ore-particle-shadow-8.png", priority = "extra-high", width = 6, height = 5, @@ -201,22 +206,13 @@ data:extend({ stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80}, stages = { sheet = { - filename = "__angelsrefining__/graphics/entity/ores/ore-14-lr.png", - priority = "extra-high", - tint = {0.858, 0.809, 0.479}, - size = 64, - frame_count = 8, - variation_count = 8, - hr_version = - { - filename = "__angelsrefining__/graphics/entity/ores/ore-14-hr.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores/ore-14.png", priority = "extra-high", tint = {0.858, 0.809, 0.479}, size = 128, frame_count = 8, variation_count = 8, scale = 0.5 - } } }, @@ -249,22 +245,13 @@ data:extend({ stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80}, stages = { sheet = { - filename = "__angelsrefining__/graphics/entity/ores/ore-12-lr.png", - priority = "extra-high", - tint = {184, 125, 73}, - size = 64, - frame_count = 8, - variation_count = 8, - hr_version = - { - filename = "__angelsrefining__/graphics/entity/ores/ore-12-hr.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores/ore-12.png", priority = "extra-high", tint = {184, 125, 73}, size = 128, frame_count = 8, variation_count = 8, scale = 0.5 - } } }, @@ -296,22 +283,13 @@ data:extend({ stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80}, stages = { sheet = { - filename = "__angelsrefining__/graphics/entity/ores/ore-21-lr.png", - priority = "extra-high", - tint = {0.898, 0.773, 0.688}, - size = 64, - frame_count = 8, - variation_count = 8, - hr_version = - { - filename = "__angelsrefining__/graphics/entity/ores/ore-21-hr.png", + filename = "__angelsrefininggraphics__/graphics/entity/ores/ore-21.png", priority = "extra-high", tint = {0.898, 0.773, 0.688}, size = 128, frame_count = 8, variation_count = 8, scale = 0.5 - } } }, @@ -366,7 +344,7 @@ data:extend({ stage_counts = {0}, stages = { sheet = { - filename = "__angelsrefining__/graphics/entity/patches/fissure.png", + filename = "__angelsrefininggraphics__/graphics/entity/patches/fissure.png", tint = {r = 0.65, g = 0.4, b = 0.15}, priority = "extra-high", width = 256, @@ -378,7 +356,7 @@ data:extend({ }, stages_effect = { sheet = { - filename = "__angelsrefining__/graphics/entity/patches/fissure-glow.png", + filename = "__angelsrefininggraphics__/graphics/entity/patches/fissure-glow.png", tint = {r=1, g=0.3, b=0.1}, priority = "extra-high", width = 256, diff --git a/nullius/prototypes/resource_override.lua b/nullius/prototypes/resource_override.lua index 24cb0a9..754e575 100644 --- a/nullius/prototypes/resource_override.lua +++ b/nullius/prototypes/resource_override.lua @@ -24,6 +24,8 @@ function remove_autoplace(resource) preset.basic_settings.autoplace_controls[resource] = nil end end + data.raw.planet["nauvis"].map_gen_settings.autoplace_controls[resource] = nil + data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"][resource] = nil end remove_autoplace("copper-ore") @@ -101,10 +103,12 @@ data.raw["map-gen-presets"]["default"]["rail-world"].basic_settings = { ["nullius-geothermal"] = { frequency = 0.33333333333, size = 3 - } + }, + water = { + frequency = 0.5, + size = 1.5 + } }, - terrain_segmentation = "very-low", - water = "high", } data.raw["map-gen-presets"]["default"]["ribbon-world"].basic_settings = { @@ -133,11 +137,17 @@ data.raw["map-gen-presets"]["default"]["ribbon-world"].basic_settings = { frequency = 3, size = 0.5, richness = 2 - } + }, + water = { + frequency = 4, + size = 0.25 + }, }, - terrain_segmentation = 4, - water = 0.25, starting_area = 3, + property_expression_names = { + elevation = "elevation_lakes", + trees_forest_path_cutout = 1 + }, height = 128 } @@ -179,7 +189,7 @@ data.raw.resource["deep_oil"].localised_description = {"entity-description.nulli table.insert(data.raw.resource["deep_oil"].collision_mask, 'ground-tile') data.raw.resource["deep_oil"].stages = { sheet = { - filename = "__angelsrefining__/graphics/entity/patches/gas.png", + filename = "__angelsrefininggraphics__/graphics/entity/patches/gas.png", tint = {0.4, 0.2, 0, 0.4}, priority = "extra-high", width = 64, @@ -202,3 +212,14 @@ if (not settings.startup["no_oil_for_oil_rig"].value) then {"entity-description.nullius-fumarole-finite"} end end + +-- Alien Biomes Patch -- TODO: do a bug report: alien biomes crashes when the disable all vegetation setting is enabled +local block_decorative_words = {"grass", "asterisk", "fluff", "garballo", "bush", "croton", "pita", "cane"} +for _, prototype in pairs(data.raw['optimized-decorative']) do + for _, word in pairs(block_decorative_words) do + if string.find(prototype.name, word) then + data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["decorative"]["settings"][prototype.name] = nil + end + end +end +data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["fish"] = nil \ No newline at end of file diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 825b04d..e848657 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -13,12 +13,12 @@ data:extend({ { icon = "__base__/graphics/technology/utility-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/stone.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.6, shift = {0, 36}, tint = {r=0.6, g=0.4, b=0.2, a=0.5} @@ -41,9 +41,9 @@ data:extend({ type = "technology", name = "nullius-iron-smelting-1", order = "nullius-bc", - icon = "__angelssmelting__/graphics/technology/smelting-iron-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-iron-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -66,12 +66,12 @@ data:extend({ { icon = "__base__/graphics/technology/chemical-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.8, shift = {0, 34}, tint = {r=1, g=1, b=1, a=0.5} @@ -98,7 +98,7 @@ data:extend({ order = "nullius-bd", icon = "__base__/graphics/technology/steel-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -131,7 +131,7 @@ data:extend({ order = "nullius-bd", icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -159,7 +159,7 @@ data:extend({ name = "nullius-water-filtration-1", order = "nullius-bd", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/water-treatment.png", + icon = "__angelsrefininggraphics__/graphics/technology/water-treatment.png", effects = { { type = "unlock-recipe", @@ -185,7 +185,7 @@ data:extend({ order = "nullius-be", icon = "__base__/graphics/technology/steel-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -214,7 +214,7 @@ data:extend({ order = "nullius-be", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -238,7 +238,7 @@ data:extend({ name = "nullius-masonry-1", order = "nullius-be", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/stone.png", effects = { { @@ -267,7 +267,7 @@ data:extend({ name = "nullius-electrolysis-1", order = "nullius-be", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/electrolyser-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/electrolyser-tech.png", effects = { { type = "unlock-recipe", @@ -314,7 +314,7 @@ data:extend({ name = "nullius-storage-1", order = "nullius-be", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/iron-chest.png", effects = { { @@ -341,7 +341,7 @@ data:extend({ order = "nullius-bf", icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -374,7 +374,7 @@ data:extend({ order = "nullius-bf", icon = "__base__/graphics/technology/stone-wall.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -407,7 +407,7 @@ data:extend({ order = "nullius-bf", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-crafting-speed", @@ -430,7 +430,7 @@ data:extend({ type = "technology", name = "nullius-carbon-sequestration-1", order = "nullius-bf", - icon = "__angelspetrochem__/graphics/icons/molecules/methane.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", icon_size = 72, effects = { { @@ -456,9 +456,9 @@ data:extend({ name = "nullius-venting-1", order = "nullius-bg", icons = {{ - icon = "__angelspetrochem__/graphics/technology/flare-stack-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/flare-stack-tech.png", icon_size = 256, - icon_mipmaps = 4 + }}, effects = { { @@ -484,7 +484,7 @@ data:extend({ order = "nullius-bg", icon = "__base__/graphics/technology/advanced-material-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -505,7 +505,7 @@ data:extend({ order = "nullius-bg", icon = "__base__/graphics/technology/plastics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -530,7 +530,7 @@ data:extend({ order = "nullius-bg", icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -556,7 +556,7 @@ data:extend({ order = "nullius-bh", icon = "__base__/graphics/technology/landfill.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -581,7 +581,7 @@ data:extend({ order = "nullius-bh", icon = "__base__/graphics/technology/electric-engine.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -647,12 +647,12 @@ data:extend({ { icon = "__base__/graphics/technology/automation-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/iron-gear-wheel.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.6, shift = {0, 40}, tint = {r=0.6, g=1, b=1, a=0.5} @@ -679,7 +679,7 @@ data:extend({ order = "nullius-cc", icon = "__base__/graphics/technology/oil-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -700,7 +700,7 @@ data:extend({ order = "nullius-cc", icon = "__base__/graphics/technology/electric-energy-distribution-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -720,7 +720,7 @@ data:extend({ name = "nullius-mining-1", order = "nullius-cc", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/burner-mining-drill.png", effects = { { @@ -746,7 +746,7 @@ data:extend({ order = "nullius-cc", icon = "__base__/graphics/technology/fast-inserter.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -767,7 +767,7 @@ data:extend({ order = "nullius-cc", icon = "__base__/graphics/technology/logistics-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -791,7 +791,7 @@ data:extend({ name = "nullius-pumping-1", order = "nullius-cc", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/pump.png", effects = { { @@ -821,7 +821,7 @@ data:extend({ order = "nullius-cc", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -868,11 +868,11 @@ data:extend({ { type = "technology", name = "nullius-automation", - localised_name = {"", {"technology-name.nullius-automation"}, " ", 1}, + localised_name = {"", {"technology-name.nullius-automation"}, " ", tostring(1)}, order = "nullius-cd", icon = "__base__/graphics/technology/automation-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -893,7 +893,7 @@ data:extend({ order = "nullius-cd", icon = "__base__/graphics/icons/oil-refinery.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -912,9 +912,8 @@ data:extend({ type = "technology", name = "nullius-metalworking-1", order = "nullius-cd", - icon = "__angelssmelting__/graphics/technology/induction-furnace-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/induction-furnace-tech.png", icon_size = 256, - icon_mipmaps = 2, effects = { { type = "unlock-recipe", @@ -936,7 +935,7 @@ data:extend({ order = "nullius-ce", icon = "__base__/graphics/technology/steel-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -960,7 +959,7 @@ data:extend({ name = "nullius-mineral-processing-1", order = "nullius-ce", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/ore-sorting.png", + icon = "__angelsrefininggraphics__/graphics/technology/ore-sorting.png", effects = { { type = "unlock-recipe", @@ -988,7 +987,7 @@ data:extend({ name = "nullius-electrolysis-2", order = "nullius-ce", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/electrolyser-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/electrolyser-tech.png", effects = { { type = "unlock-recipe", @@ -1016,7 +1015,7 @@ data:extend({ name = "nullius-water-filtration-2", order = "nullius-ce", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/water-treatment.png", + icon = "__angelsrefininggraphics__/graphics/technology/water-treatment.png", effects = { { type = "unlock-recipe", @@ -1041,7 +1040,7 @@ data:extend({ name = "nullius-air-filtration-1", order = "nullius-cf", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/air-filter-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/air-filter-tech.png", effects = { { type = "unlock-recipe", @@ -1062,7 +1061,7 @@ data:extend({ order = "nullius-cf", icon = "__base__/graphics/technology/steel-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1094,7 +1093,7 @@ data:extend({ name = "nullius-mechanical-separation", order = "nullius-cf", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/splitter.png", effects = { { @@ -1115,7 +1114,7 @@ data:extend({ name = "nullius-flotation-1", order = "nullius-cf", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/hydro-refining.png", + icon = "__angelsrefininggraphics__/graphics/technology/hydro-refining.png", effects = { { type = "unlock-recipe", @@ -1135,7 +1134,7 @@ data:extend({ name = "nullius-energy-storage-1", order = "nullius-cf", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/steam-turbine.png", effects = { { @@ -1166,7 +1165,7 @@ data:extend({ order = "nullius-cg", icon = "__base__/graphics/technology/landfill.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1195,7 +1194,7 @@ data:extend({ order = "nullius-cg", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -1218,9 +1217,9 @@ data:extend({ type = "technology", name = "nullius-silica-processing-1", order = "nullius-cg", - icon = "__angelssmelting__/graphics/icons/powder-silica.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-silica.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1243,9 +1242,9 @@ data:extend({ type = "technology", name = "nullius-iron-smelting-2", order = "nullius-cg", - icon = "__angelssmelting__/graphics/technology/smelting-iron-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-iron-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1297,9 +1296,9 @@ data:extend({ type = "technology", name = "nullius-illumination-1", order = "nullius-ch", - icon = "__base__/graphics/technology/optics.png", + icon = "__base__/graphics/technology/lamp.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1324,7 +1323,7 @@ data:extend({ order = "nullius-ch", icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1360,7 +1359,7 @@ data:extend({ name = "nullius-chemical-engineering-1", order = "nullius-ch", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/chemical-plant-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/chemical-plant-tech.png", effects = { { type = "unlock-recipe", @@ -1380,7 +1379,7 @@ data:extend({ name = "nullius-masonry-3", order = "nullius-ch", icon_size = 32, - icon = "__angelssmelting__/graphics/icons/silicon-crucible.png", + icon = "__angelssmeltinggraphics__/graphics/icons/silicon-crucible.png", effects = { { type = "unlock-recipe", @@ -1509,7 +1508,7 @@ data:extend({ order = "nullius-ci", icon = "__base__/graphics/technology/advanced-material-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1557,7 +1556,7 @@ data:extend({ name = "nullius-storage-2", order = "nullius-cj", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/steel-chest.png", effects = { { @@ -1584,11 +1583,11 @@ data:extend({ { type = "technology", name = "nullius-aluminum-production", - localised_name = {"", {"technology-name.nullius-aluminum-production"}, " ", 1}, + localised_name = {"", {"technology-name.nullius-aluminum-production"}, " ", tostring(1)}, order = "nullius-cj", - icon = "__angelssmelting__/graphics/technology/smelting-aluminium-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-aluminium-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1621,7 +1620,7 @@ data:extend({ order = "nullius-cj", icon = "__base__/graphics/technology/armor-making.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1644,9 +1643,9 @@ data:extend({ type = "technology", name = "nullius-silicon-production-1", order = "nullius-cj", - icon = "__angelssmelting__/graphics/technology/smelting-silicon-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-silicon-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1672,7 +1671,7 @@ data:extend({ order = "nullius-ck", icon = "__base__/graphics/technology/automation-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1692,7 +1691,7 @@ data:extend({ name = "nullius-barreling-1", order = "nullius-ck", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/barrel-tech.png", + icon = "__angelsrefininggraphics__/graphics/technology/barrel-tech.png", effects = { { type = "unlock-recipe", @@ -1720,7 +1719,7 @@ data:extend({ order = "nullius-ck", icon = "__base__/graphics/technology/lubricant.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1743,7 +1742,7 @@ data:extend({ name = "nullius-aluminum-working-1", order = "nullius-ck", icon_size = 32, - icon = "__angelssmelting__/graphics/icons/plate-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/plate-aluminium.png", effects = { { type = "unlock-recipe", @@ -1774,7 +1773,7 @@ data:extend({ type = "technology", name = "nullius-insulation-1", order = "nullius-ck", - icon = "__angelssmelting__/graphics/icons/wire-coil-tin.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64, effects = { { @@ -1803,7 +1802,7 @@ data:extend({ order = "nullius-cl", icon = "__base__/graphics/technology/railway.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1819,7 +1818,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-empty-canister" + recipe = "nullius-canister" }, { type = "unlock-recipe", @@ -1844,7 +1843,7 @@ data:extend({ order = "nullius-cl", icon = "__base__/graphics/technology/electronics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1905,7 +1904,7 @@ data:extend({ { type = "technology", name = "nullius-chirality-1", - localised_description = {"", {"technology-description.nullius-chirality", 1, + localised_description = {"", {"technology-description.nullius-chirality", tostring(1), {"technology-description.nullius-chirality-1"}}, "\n", {"technology-description.nullius-checkpoint-mirror"}}, order = "nullius-cm", @@ -1917,7 +1916,7 @@ data:extend({ ingredients = {{"nullius-climatology-pack", 1}, {"nullius-mechanical-pack", 1}}, time = 6 }, - prerequisites = {"nullius-boiling-1", "long-inserters-1"}, + prerequisites = {"nullius-boiling-1", "bob-long-inserters-1"}, ignore_tech_cost_multiplier = true }, { @@ -1947,7 +1946,7 @@ data:extend({ order = "nullius-cm", icon = "__base__/graphics/technology/automobilism.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -1968,7 +1967,7 @@ data:extend({ order = "nullius-cm", icon = "__base__/graphics/technology/automation-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2029,7 +2028,7 @@ data:extend({ order = "nullius-cn", icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2048,18 +2047,18 @@ data:extend({ { type = "technology", name = "nullius-electrical-engineering", - localised_name = {"", {"technology-name.nullius-electrical-engineering"}, " ", 1}, + localised_name = {"", {"technology-name.nullius-electrical-engineering"}, " ", tostring(1)}, order = "nullius-db", icons = { { icon = "__base__/graphics/technology/production-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/processing-unit.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.1, shift = {0, 34}, tint = {r=1, g=1, b=1, a=0.5} @@ -2086,7 +2085,7 @@ data:extend({ order = "nullius-dc", icon = "__base__/graphics/technology/personal-laser-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -2113,7 +2112,7 @@ data:extend({ order = "nullius-dc", icon = "__base__/graphics/technology/electric-energy-distribution-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2145,16 +2144,12 @@ data:extend({ order = "nullius-dc", icon = "__base__/graphics/technology/fast-inserter.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", recipe = "nullius-inserter-2" }, - { - type = "unlock-recipe", - recipe = "nullius-filter-inserter-2" - } }, unit = { count = 10, @@ -2173,7 +2168,7 @@ data:extend({ order = "nullius-dc", icon = "__base__/graphics/technology/electric-engine.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2196,7 +2191,7 @@ data:extend({ order = "nullius-dc", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2220,7 +2215,7 @@ data:extend({ name = "nullius-pumping-2", order = "nullius-dd", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/pump.png", effects = { { @@ -2251,12 +2246,12 @@ data:extend({ { icon = "__base__/graphics/technology/utility-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/stone.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.6, shift = {0, 36}, tint = {r=0.6, g=0.4, b=0.2, a=0.5} @@ -2282,7 +2277,7 @@ data:extend({ name = "nullius-signal-processing", order = "nullius-dd", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/red-wire.png", effects = { { @@ -2310,7 +2305,7 @@ data:extend({ order = "nullius-dd", icon = "__base__/graphics/technology/logistics-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2341,7 +2336,7 @@ data:extend({ name = "nullius-maintenance", order = "nullius-de", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/repair-pack.png", effects = { { @@ -2379,7 +2374,7 @@ data:extend({ order = "nullius-de", icon = "__base__/graphics/technology/circuit-network.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2409,7 +2404,7 @@ data:extend({ name = "nullius-electrolysis-3", order = "nullius-de", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/electrolyser-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/electrolyser-tech.png", effects = { { type = "unlock-recipe", @@ -2439,7 +2434,7 @@ data:extend({ order = "nullius-de", icon = "__base__/graphics/technology/mining-productivity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2504,7 +2499,7 @@ data:extend({ order = "nullius-de", icon = "__base__/graphics/technology/automated-rail-transportation.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2532,7 +2527,7 @@ data:extend({ order = "nullius-de", icon = "__base__/graphics/technology/automation-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2559,7 +2554,7 @@ data:extend({ order = "nullius-de", icon = "__base__/graphics/icons/discharge-defense-equipment-controller.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2603,9 +2598,9 @@ data:extend({ type = "technology", name = "nullius-traffic-control", order = "nullius-df", - icon = "__base__/graphics/technology/rail-signals.png", + icon = TECHPATH .. "rail-signals.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2633,7 +2628,7 @@ data:extend({ order = "nullius-df", icon = "__base__/graphics/technology/robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2672,7 +2667,7 @@ data:extend({ order = "nullius-df", icon = "__base__/graphics/technology/module.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2697,7 +2692,7 @@ data:extend({ name = "nullius-mineral-processing-2", order = "nullius-df", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/ore-sorting.png", + icon = "__angelsrefininggraphics__/graphics/technology/ore-sorting.png", effects = { { type = "unlock-recipe", @@ -2723,7 +2718,7 @@ data:extend({ name = "nullius-energy-storage-2", order = "nullius-df", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/technology/thermal-extractor.png", effects = { { type = "unlock-recipe", @@ -2771,7 +2766,7 @@ data:extend({ order = "nullius-dg", icon = "__base__/graphics/technology/oil-gathering.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2794,16 +2789,16 @@ data:extend({ order = "nullius-dg", icon = "__base__/graphics/technology/construction-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", recipe = "nullius-construction-bot-1" }, - { - type = "ghost-time-to-live", - modifier = 60 * 60 * 60 * 2 - } + -- { + -- type = "ghost-time-to-live", + -- modifier = 60 * 60 * 60 * 2 + -- } }, unit = { count = 100, @@ -2850,7 +2845,7 @@ data:extend({ name = "nullius-limestone-processing-1", order = "nullius-dg", icon_size = 32, - icon = "__angelsrefining__/graphics/icons/solid-limestone.png", + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", effects = { { type = "unlock-recipe", @@ -2871,9 +2866,9 @@ data:extend({ type = "technology", name = "nullius-silica-processing-2", order = "nullius-dg", - icon = "__angelssmelting__/graphics/icons/powder-silica.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-silica.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2919,9 +2914,8 @@ data:extend({ type = "technology", name = "nullius-metalworking-2", order = "nullius-dg", - icon = "__angelssmelting__/graphics/technology/induction-furnace-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/induction-furnace-tech.png", icon_size = 256, - icon_mipmaps = 2, effects = { { type = "unlock-recipe", @@ -2964,7 +2958,7 @@ data:extend({ order = "nullius-dg", icon = "__base__/graphics/technology/module.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -2991,7 +2985,7 @@ data:extend({ order = "nullius-dh", icon = "__base__/graphics/technology/effect-transmission.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3015,12 +3009,12 @@ data:extend({ { icon = "__base__/graphics/technology/chemical-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.8, shift = {0, 34}, tint = {r=1, g=1, b=1, a=0.5} @@ -3048,7 +3042,7 @@ data:extend({ order = "nullius-dh", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-running-speed", @@ -3072,9 +3066,9 @@ data:extend({ type = "technology", name = "nullius-glassmaking-1", order = "nullius-dh", - icon = "__angelssmelting__/graphics/technology/glass-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/glass-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3097,7 +3091,7 @@ data:extend({ order = "nullius-dh", icon = "__base__/graphics/technology/concrete.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3127,7 +3121,7 @@ data:extend({ name = "nullius-weaving-1", order = "nullius-dh", icon_size = 32, - icon = "__angelssmelting__/graphics/icons/wire-silver.png", + icon = "__angelssmeltinggraphics__/graphics/icons/wire-silver.png", effects = { { type = "unlock-recipe", @@ -3153,7 +3147,7 @@ data:extend({ name = "nullius-water-filtration-3", order = "nullius-dh", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/water-treatment.png", + icon = "__angelsrefininggraphics__/graphics/technology/water-treatment.png", effects = { { type = "unlock-recipe", @@ -3183,7 +3177,7 @@ data:extend({ name = "nullius-geothermal-power-1", order = "nullius-di", icon_size = 64, - icon = "__angelssmelting__/graphics/icons/chemical-furnace.png", + icon = "__angelssmeltinggraphics__/graphics/icons/chemical-furnace.png", effects = { { type = "unlock-recipe", @@ -3210,7 +3204,7 @@ data:extend({ order = "nullius-di", icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3245,7 +3239,7 @@ data:extend({ order = "nullius-di", icon = "__base__/graphics/technology/landfill.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3268,7 +3262,7 @@ data:extend({ order = "nullius-di", icon = "__base__/graphics/technology/solar-energy.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3290,7 +3284,7 @@ data:extend({ name = "nullius-sensors-2", order = "nullius-di", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/radar.png", effects = { { @@ -3337,7 +3331,7 @@ data:extend({ order = "nullius-dj", icon = "__base__/graphics/technology/oil-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3364,7 +3358,7 @@ data:extend({ order = "nullius-dj", icon = "__base__/graphics/technology/automation-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3422,7 +3416,7 @@ data:extend({ order = "nullius-dj", icon = "__base__/graphics/technology/electric-energy-distribution-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3448,7 +3442,7 @@ data:extend({ name = "nullius-air-filtration-2", order = "nullius-dj", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/air-filter-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/air-filter-tech.png", effects = { { type = "unlock-recipe", @@ -3475,7 +3469,7 @@ data:extend({ name = "nullius-flotation-2", order = "nullius-dk", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/hydro-refining.png", + icon = "__angelsrefininggraphics__/graphics/technology/hydro-refining.png", effects = { { type = "unlock-recipe", @@ -3498,7 +3492,7 @@ data:extend({ order = "nullius-dk", icon = "__base__/graphics/technology/night-vision-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3529,7 +3523,7 @@ data:extend({ order = "nullius-dk", icon = "__base__/graphics/technology/logistic-system.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3573,7 +3567,7 @@ data:extend({ name = "nullius-barreling-2", order = "nullius-dk", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/barrel-tech.png", + icon = "__angelsrefininggraphics__/graphics/technology/barrel-tech.png", effects = { { type = "unlock-recipe", @@ -3581,7 +3575,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-air-barrel" + recipe = "nullius-air-barrel" }, { type = "unlock-recipe", @@ -3589,7 +3583,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-residual-gas-barrel" + recipe = "nullius-residual-gas-barrel" }, { type = "unlock-recipe", @@ -3597,7 +3591,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-trace-gas-barrel" + recipe = "nullius-trace-gas-barrel" }, { type = "unlock-recipe", @@ -3605,7 +3599,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-volcanic-gas-barrel" + recipe = "nullius-volcanic-gas-barrel" }, { type = "unlock-recipe", @@ -3613,7 +3607,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-nitrogen-barrel" + recipe = "nullius-nitrogen-barrel" }, { type = "unlock-recipe", @@ -3621,7 +3615,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-argon-barrel" + recipe = "nullius-argon-barrel" }, { type = "unlock-recipe", @@ -3629,7 +3623,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-helium-barrel" + recipe = "nullius-helium-barrel" }, { type = "unlock-recipe", @@ -3637,7 +3631,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-carbon-dioxide-barrel" + recipe = "nullius-carbon-dioxide-barrel" }, { type = "unlock-recipe", @@ -3645,7 +3639,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-carbon-monoxide-barrel" + recipe = "nullius-carbon-monoxide-barrel" }, { type = "unlock-recipe", @@ -3653,7 +3647,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-methane-barrel" + recipe = "nullius-methane-barrel" }, { type = "unlock-recipe", @@ -3661,7 +3655,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-ethylene-barrel" + recipe = "nullius-ethylene-barrel" }, { type = "unlock-recipe", @@ -3669,7 +3663,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-propene-barrel" + recipe = "nullius-propene-barrel" }, { type = "unlock-recipe", @@ -3677,7 +3671,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-butadiene-barrel" + recipe = "nullius-butadiene-barrel" }, { type = "unlock-recipe", @@ -3685,7 +3679,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-hydrogen-barrel" + recipe = "nullius-hydrogen-barrel" }, { type = "unlock-recipe", @@ -3693,7 +3687,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-deuterium-barrel" + recipe = "nullius-deuterium-barrel" }, { type = "unlock-recipe", @@ -3701,7 +3695,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-tritium-barrel" + recipe = "nullius-tritium-barrel" }, { type = "unlock-recipe", @@ -3709,7 +3703,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-oxygen-barrel" + recipe = "nullius-oxygen-barrel" }, { type = "unlock-recipe", @@ -3717,7 +3711,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-hydrogen-chloride-barrel" + recipe = "nullius-hydrogen-chloride-barrel" }, { type = "unlock-recipe", @@ -3725,7 +3719,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-sulfur-dioxide-barrel" + recipe = "nullius-sulfur-dioxide-barrel" }, { type = "unlock-recipe", @@ -3733,7 +3727,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-ammonia-barrel" + recipe = "nullius-ammonia-barrel" }, { type = "unlock-recipe", @@ -3755,7 +3749,7 @@ data:extend({ name = "nullius-chemical-engineering-2", order = "nullius-dk", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/chemical-plant-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/chemical-plant-tech.png", effects = { { type = "unlock-recipe", @@ -3778,7 +3772,7 @@ data:extend({ order = "nullius-dk", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -3828,7 +3822,7 @@ data:extend({ order = "nullius-dl", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -3859,7 +3853,7 @@ data:extend({ order = "nullius-dl", icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3895,7 +3889,7 @@ data:extend({ { type = "technology", name = "nullius-chirality-2", - localised_description = {"technology-description.nullius-chirality", 2, + localised_description = {"technology-description.nullius-chirality", tostring(2), {"technology-description.nullius-chirality-2"}}, order = "nullius-dl", icon_size = 254, @@ -3917,7 +3911,7 @@ data:extend({ order = "nullius-dg", icon = "__base__/graphics/technology/explosives.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -3925,7 +3919,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-chlorine-barrel" + recipe = "nullius-chlorine-barrel" }, { type = "unlock-recipe", @@ -3948,7 +3942,7 @@ data:extend({ order = "nullius-dl", icon = "__base__/graphics/technology/worker-robots-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-speed", @@ -3972,7 +3966,7 @@ data:extend({ order = "nullius-dl", icon = "__base__/graphics/technology/discharge-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-reach-distance", @@ -4019,7 +4013,7 @@ data:extend({ order = "nullius-dl", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "laboratory-speed", @@ -4040,11 +4034,11 @@ data:extend({ { type = "technology", name = "nullius-experimental-chemistry", - localised_name = {"", {"technology-name.nullius-experimental-chemistry"}, " ", 1}, + localised_name = {"", {"technology-name.nullius-experimental-chemistry"}, " ", tostring(1)}, order = "nullius-eb", icon = "__base__/graphics/technology/logistic-science-pack.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4067,7 +4061,7 @@ data:extend({ name = "nullius-metallurgy-3", order = "nullius-ec", icon_size = 64, - icon_mipmaps = 4, + icon = "__base__/graphics/icons/electric-furnace.png", effects = { { @@ -4095,7 +4089,7 @@ data:extend({ name = "nullius-sodium-processing", order = "nullius-ec", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/sodium-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/sodium-tech.png", effects = { { type = "unlock-recipe", @@ -4194,9 +4188,9 @@ data:extend({ type = "technology", name = "nullius-aluminum-production-2", order = "nullius-ed", - icon = "__angelssmelting__/graphics/technology/smelting-aluminium-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-aluminium-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4252,9 +4246,9 @@ data:extend({ type = "technology", name = "nullius-iron-smelting-3", order = "nullius-ed", - icon = "__angelssmelting__/graphics/technology/smelting-iron-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-iron-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4315,7 +4309,7 @@ data:extend({ name = "nullius-nanotechnology-1", order = "nullius-ed", icon_size = 64, - icon = "__angelsrefining__/graphics/icons/crystallizer.png", + icon = "__angelsrefininggraphics__/graphics/icons/crystallizer.png", effects = { { type = "unlock-recipe", @@ -4340,7 +4334,7 @@ data:extend({ order = "nullius-ee", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "laboratory-speed", @@ -4363,7 +4357,7 @@ data:extend({ name = "nullius-limestone-processing-3", order = "nullius-ee", icon_size = 32, - icon = "__angelssmelting__/graphics/icons/solid-lime.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", effects = { { type = "unlock-recipe", @@ -4429,9 +4423,9 @@ data:extend({ name = "nullius-venting-2", order = "nullius-ee", icons = {{ - icon = "__angelspetrochem__/graphics/technology/flare-stack-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/flare-stack-tech.png", icon_size = 256, - icon_mipmaps = 4 + }}, effects = { { @@ -4502,7 +4496,7 @@ data:extend({ order = "nullius-ee", icon = "__base__/graphics/technology/plastics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4535,7 +4529,7 @@ data:extend({ order = "nullius-ef", icon = "__base__/graphics/technology/logistic-system.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4564,11 +4558,11 @@ data:extend({ { type = "technology", name = "nullius-ceramics", - localised_name = {"", {"technology-name.nullius-ceramics"}, " ", 1}, + localised_name = {"", {"technology-name.nullius-ceramics"}, " ", tostring(1)}, order = "nullius-ef", - icon = "__angelssmelting__/graphics/icons/powder-platinum.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-platinum.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4598,9 +4592,9 @@ data:extend({ type = "technology", name = "nullius-glassmaking-2", order = "nullius-ef", - icon = "__angelssmelting__/graphics/technology/glass-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/glass-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4631,7 +4625,7 @@ data:extend({ name = "nullius-titanium-production-1", order = "nullius-ef", icon_size = 32, - icon = "__angelssmelting__/graphics/icons/ore-rutile.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ore-rutile.png", effects = { { type = "unlock-recipe", @@ -4657,9 +4651,9 @@ data:extend({ type = "technology", name = "nullius-weaving-2", order = "nullius-ef", - icon = "__angelssmelting__/graphics/icons/roll-zinc.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-zinc.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4691,7 +4685,7 @@ data:extend({ order = "nullius-ef", icon = "__base__/graphics/technology/steel-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4716,7 +4710,7 @@ data:extend({ { type = "technology", name = "nullius-chirality-3", - localised_description = {"technology-description.nullius-chirality", 3, + localised_description = {"technology-description.nullius-chirality", tostring(3), {"technology-description.nullius-chirality-3"}}, order = "nullius-ef", icon_size = 254, @@ -4738,7 +4732,7 @@ data:extend({ order = "nullius-eg", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -4761,9 +4755,9 @@ data:extend({ type = "technology", name = "nullius-illumination-2", order = "nullius-eg", - icon = "__base__/graphics/technology/optics.png", + icon = "__base__/graphics/technology/lamp.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4832,9 +4826,9 @@ data:extend({ type = "technology", name = "nullius-titanium-production-2", order = "nullius-eg", - icon = "__angelssmelting__/graphics/technology/smelting-titanium-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-titanium-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4866,7 +4860,7 @@ data:extend({ order = "nullius-eg", icon = "__base__/graphics/technology/battery.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -4889,7 +4883,7 @@ data:extend({ name = "nullius-organic-chemistry-5", order = "nullius-eg", icon_size = 32, - icon = "__angelspetrochem__/graphics/icons/solid-resin.png", + icon = "__angelspetrochemgraphics__/graphics/icons/solid-resin.png", effects = { { type = "unlock-recipe", @@ -4929,7 +4923,7 @@ data:extend({ order = "nullius-eg", icon = "__base__/graphics/technology/toolbelt.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-inventory-slots-bonus", @@ -5243,7 +5237,7 @@ data:extend({ order = "nullius-eh", icon = "__base__/graphics/technology/power-armor.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5290,7 +5284,7 @@ data:extend({ order = "nullius-eh", icon = "__base__/graphics/technology/electric-energy-acumulators.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5314,7 +5308,7 @@ data:extend({ order = "nullius-eh", icon = "__base__/graphics/technology/explosives.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5340,9 +5334,9 @@ data:extend({ type = "technology", name = "nullius-composites-1", order = "nullius-eh", - icon = "__angelssmelting__/graphics/technology/smelting-zinc-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-zinc-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5682,7 +5676,7 @@ data:extend({ order = "nullius-ei", icon = "__base__/graphics/technology/robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5719,7 +5713,7 @@ data:extend({ order = "nullius-ei", icon = "__base__/graphics/technology/solar-energy.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5741,9 +5735,9 @@ data:extend({ type = "technology", name = "nullius-electronics-2", order = "nullius-ei", - icon = "__base__/graphics/technology/advanced-electronics.png", + icon = "__base__/graphics/technology/advanced-circuit.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5771,7 +5765,7 @@ data:extend({ order = "nullius-ei", icon = "__base__/graphics/technology/concrete.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -5803,7 +5797,7 @@ data:extend({ order = "nullius-ei", icon = "__base__/graphics/technology/personal-laser-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -6175,7 +6169,7 @@ data:extend({ order = "nullius-ej", icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6201,20 +6195,16 @@ data:extend({ type = "technology", name = "nullius-actuation-3", order = "nullius-ej", - icon = "__base__/graphics/technology/stack-inserter.png", + icon = "__base__/graphics/technology/bulk-inserter.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", recipe = "nullius-inserter-3" }, { - type = "unlock-recipe", - recipe = "nullius-filter-inserter-3" - }, - { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -6234,7 +6224,7 @@ data:extend({ order = "nullius-ej", icon = "__base__/graphics/technology/electric-energy-distribution-1.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6266,7 +6256,7 @@ data:extend({ order = "nullius-ej", icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6306,7 +6296,7 @@ data:extend({ order = "nullius-ej", icon = "__base__/graphics/technology/module.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6337,7 +6327,7 @@ data:extend({ order = "nullius-ej", icon = "__base__/graphics/technology/military.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6401,16 +6391,16 @@ data:extend({ order = "nullius-ek", icon = "__base__/graphics/technology/construction-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", recipe = "nullius-construction-bot-2" }, - { - type = "ghost-time-to-live", - modifier = 60 * 60 * 60 * 10 - } + -- { + -- type = "ghost-time-to-live", + -- modifier = 60 * 60 * 60 * 10 + -- } }, unit = { count = 600, @@ -6630,14 +6620,6 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-unbox-inserter-2" }, - { - type = "unlock-recipe", - recipe = "nullius-box-filter-inserter-2" - }, - { - type = "unlock-recipe", - recipe = "nullius-unbox-filter-inserter-2" - }, { type = "unlock-recipe", recipe = "nullius-box-inserter-3" @@ -6646,14 +6628,6 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-unbox-inserter-3" }, - { - type = "unlock-recipe", - recipe = "nullius-box-filter-inserter-3" - }, - { - type = "unlock-recipe", - recipe = "nullius-unbox-filter-inserter-3" - }, { type = "unlock-recipe", recipe = "nullius-box-belt-1" @@ -6827,7 +6801,7 @@ data:extend({ order = "nullius-ek", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -6852,7 +6826,7 @@ data:extend({ order = "nullius-ek", icon = "__base__/graphics/technology/logistics-3.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6883,7 +6857,7 @@ data:extend({ name = "nullius-energy-storage-3", order = "nullius-ek", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/technology/thermal-extractor.png", effects = { { type = "unlock-recipe", @@ -6933,9 +6907,9 @@ data:extend({ type = "technology", name = "nullius-titanium-working", order = "nullius-ek", - icon = "__angelssmelting__/graphics/icons/roll-titanium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-titanium.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6961,9 +6935,9 @@ data:extend({ type = "technology", name = "nullius-insulation-2", order = "nullius-ek", - icon = "__angelssmelting__/graphics/icons/roll-manganese.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-manganese.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -6984,9 +6958,9 @@ data:extend({ type = "technology", name = "nullius-aluminum-working-2", order = "nullius-ek", - icon = "__angelssmelting__/graphics/icons/powder-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -7028,7 +7002,7 @@ data:extend({ order = "nullius-el", icon = "__base__/graphics/technology/gate.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -7038,10 +7012,10 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-gate" }, - { - type = "ghost-time-to-live", - modifier = 60 * 60 * 60 * 12 - } + -- { + -- type = "ghost-time-to-live", + -- modifier = 60 * 60 * 60 * 12 + -- } }, unit = { count = 700, @@ -7060,7 +7034,7 @@ data:extend({ order = "nullius-el", icon = "__base__/graphics/technology/railway.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -7119,10 +7093,10 @@ data:extend({ order = "nullius-el", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -7142,7 +7116,7 @@ data:extend({ order = "nullius-el", icon = "__base__/graphics/technology/productivity-module-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -7171,7 +7145,7 @@ data:extend({ order = "nullius-em", icon = "__base__/graphics/technology/advanced-material-processing-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -7446,7 +7420,7 @@ data:extend({ order = "nullius-em", icon = "__base__/graphics/technology/effect-transmission.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -7474,7 +7448,7 @@ data:extend({ order = "nullius-em", icon = "__base__/graphics/technology/tank.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -8018,7 +7992,7 @@ data:extend({ order = "nullius-en", icon = "__base__/graphics/technology/worker-robots-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-speed", @@ -8042,7 +8016,7 @@ data:extend({ order = "nullius-en", icon = "__base__/graphics/technology/landfill.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -8077,7 +8051,7 @@ data:extend({ order = "nullius-en", icon = "__base__/graphics/technology/automation-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -8299,18 +8273,10 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-boxed-inserter-2" }, - { - type = "unlock-recipe", - recipe = "nullius-boxed-filter-inserter-2" - }, { type = "unlock-recipe", recipe = "nullius-boxed-inserter-3" }, - { - type = "unlock-recipe", - recipe = "nullius-boxed-filter-inserter-3" - }, { type = "unlock-recipe", recipe = "nullius-boxed-repair-pack" @@ -8353,7 +8319,7 @@ data:extend({ order = "nullius-en", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -8379,7 +8345,7 @@ data:extend({ order = "nullius-eo", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -8407,7 +8373,7 @@ data:extend({ order = "nullius-eo", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-running-speed", @@ -8435,7 +8401,7 @@ data:extend({ order = "nullius-eo", icon = "__base__/graphics/technology/logistic-system.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -8471,10 +8437,10 @@ data:extend({ order = "nullius-eo", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -8523,7 +8489,7 @@ data:extend({ name = "nullius-geothermal-power-2", order = "nullius-eo", icon_size = 64, - icon = "__angelssmelting__/graphics/icons/chemical-furnace.png", + icon = "__angelssmeltinggraphics__/graphics/icons/chemical-furnace.png", effects = { { type = "unlock-recipe", @@ -8548,7 +8514,7 @@ data:extend({ { type = "technology", name = "nullius-high-pressure-chemistry", - localised_name = {"", {"technology-name.nullius-high-pressure-chemistry"}, " ", 1}, + localised_name = {"", {"technology-name.nullius-high-pressure-chemistry"}, " ", tostring(1)}, order = "nullius-eo", icons = angelsmods.functions.create_liquid_fluid_icon(nil, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} @@ -8633,7 +8599,7 @@ data:extend({ order = "nullius-ep", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -8658,7 +8624,7 @@ data:extend({ order = "nullius-ep", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -8682,7 +8648,7 @@ data:extend({ order = "nullius-ep", icon = "__base__/graphics/technology/automation-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -8974,7 +8940,7 @@ data:extend({ order = "nullius-ep", icon = "__base__/graphics/technology/worker-robots-storage.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-storage", @@ -9027,9 +8993,8 @@ data:extend({ type = "technology", name = "nullius-packaging-6", order = "nullius-ep", - icon = "__angelssmelting__/graphics/technology/powder-mixer-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/powder-mixer-tech.png", icon_size = 256, - icon_mipmaps = 2, effects = { { type = "unlock-recipe", @@ -9052,11 +9017,11 @@ data:extend({ name = "nullius-barreling-3", order = "nullius-eq", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/barrel-tech.png", + icon = "__angelsrefininggraphics__/graphics/technology/barrel-tech.png", effects = { { type = "unlock-recipe", - recipe = "fill-nullius-steam-barrel" + recipe = "nullius-steam-barrel" }, { type = "unlock-recipe", @@ -9064,7 +9029,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-nitrogen-barrel" + recipe = "nullius-compressed-nitrogen-barrel" }, { type = "unlock-recipe", @@ -9072,7 +9037,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-hydrogen-barrel" + recipe = "nullius-compressed-hydrogen-barrel" }, { type = "unlock-recipe", @@ -9080,7 +9045,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-air-barrel" + recipe = "nullius-compressed-air-barrel" }, { type = "unlock-recipe", @@ -9088,7 +9053,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-residual-gas-barrel" + recipe = "nullius-compressed-residual-gas-barrel" }, { type = "unlock-recipe", @@ -9096,7 +9061,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-argon-barrel" + recipe = "nullius-compressed-argon-barrel" }, { type = "unlock-recipe", @@ -9104,7 +9069,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-oxygen-barrel" + recipe = "nullius-compressed-oxygen-barrel" }, { type = "unlock-recipe", @@ -9112,7 +9077,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-carbon-dioxide-barrel" + recipe = "nullius-compressed-carbon-dioxide-barrel" }, { type = "unlock-recipe", @@ -9120,7 +9085,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-carbon-monoxide-barrel" + recipe = "nullius-compressed-carbon-monoxide-barrel" }, { type = "unlock-recipe", @@ -9128,7 +9093,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-methane-barrel" + recipe = "nullius-compressed-methane-barrel" }, { type = "unlock-recipe", @@ -9190,7 +9155,7 @@ data:extend({ order = "nullius-eq", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -9226,7 +9191,7 @@ data:extend({ order = "nullius-eq", icon = "__base__/graphics/technology/automation-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -9490,7 +9455,7 @@ data:extend({ order = "nullius-eq", icon = "__base__/graphics/technology/artillery.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -9517,7 +9482,7 @@ data:extend({ { icon = "__base__/graphics/technology/space-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/tooltips/tooltip-category-nuclear.png", @@ -9559,7 +9524,7 @@ data:extend({ order = "nullius-fc", icon = "__base__/graphics/technology/electric-engine.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -9630,7 +9595,7 @@ data:extend({ order = "nullius-fd", icon = "__base__/graphics/technology/mining-productivity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -9701,34 +9666,18 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-inserter-4" }, - { - type = "unlock-recipe", - recipe = "nullius-filter-inserter-4" - }, { type = "unlock-recipe", recipe = "nullius-box-inserter-4" }, - { - type = "unlock-recipe", - recipe = "nullius-box-filter-inserter-4" - }, { type = "unlock-recipe", recipe = "nullius-unbox-inserter-4" }, - { - type = "unlock-recipe", - recipe = "nullius-unbox-filter-inserter-4" - }, { type = "unlock-recipe", recipe = "nullius-boxed-inserter-4" }, - { - type = "unlock-recipe", - recipe = "nullius-boxed-filter-inserter-4" - } }, unit = { count = 1100, @@ -9748,10 +9697,10 @@ data:extend({ order = "nullius-fe", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -9772,7 +9721,7 @@ data:extend({ order = "nullius-fe", icon = "__base__/graphics/technology/fluid-handling.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -9828,7 +9777,7 @@ data:extend({ order = "nullius-fe", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -9869,7 +9818,7 @@ data:extend({ order = "nullius-ff", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-running-speed", @@ -9893,7 +9842,7 @@ data:extend({ order = "nullius-ff", icon = "__base__/graphics/technology/automation-3.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10018,7 +9967,7 @@ data:extend({ order = "nullius-ff", icon = "__base__/graphics/technology/artillery-range.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "artillery-range", @@ -10096,7 +10045,7 @@ data:extend({ { icon = "__base__/graphics/technology/automation-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/iron-gear-wheel.png", @@ -10131,7 +10080,7 @@ data:extend({ name = "nullius-water-filtration-4", order = "nullius-fg", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/water-treatment.png", + icon = "__angelsrefininggraphics__/graphics/technology/water-treatment.png", effects = { { type = "unlock-recipe", @@ -10154,7 +10103,7 @@ data:extend({ name = "nullius-air-filtration-3", order = "nullius-fg", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/air-filter-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/air-filter-tech.png", effects = { { type = "unlock-recipe", @@ -10177,7 +10126,7 @@ data:extend({ name = "nullius-mineral-processing-3", order = "nullius-fg", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/ore-sorting.png", + icon = "__angelsrefininggraphics__/graphics/technology/ore-sorting.png", effects = { { type = "unlock-recipe", @@ -10200,7 +10149,7 @@ data:extend({ name = "nullius-barreling-4", order = "nullius-fg", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/barrel-tech.png", + icon = "__angelsrefininggraphics__/graphics/technology/barrel-tech.png", effects = { { type = "unlock-recipe", @@ -10271,7 +10220,7 @@ data:extend({ order = "nullius-fh", icon = "__base__/graphics/technology/advanced-material-processing-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10298,7 +10247,7 @@ data:extend({ name = "nullius-flotation-3", order = "nullius-fh", icon_size = 256, - icon = "__angelsrefining__/graphics/technology/hydro-refining.png", + icon = "__angelsrefininggraphics__/graphics/technology/hydro-refining.png", effects = { { type = "unlock-recipe", @@ -10322,7 +10271,7 @@ data:extend({ order = "nullius-fh", icon = "__base__/graphics/technology/oil-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10349,7 +10298,7 @@ data:extend({ name = "nullius-energy-storage-4", order = "nullius-fh", icon_size = 128, - icon = "__angelsrefining__/graphics/technology/thermal-extractor.png", + icon = "__angelsrefininggraphics__/graphics/technology/thermal-extractor.png", effects = { { type = "unlock-recipe", @@ -10406,7 +10355,7 @@ data:extend({ order = "nullius-fi", icon = "__base__/graphics/technology/worker-robots-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-speed", @@ -10464,7 +10413,7 @@ data:extend({ name = "nullius-chemical-engineering-3", order = "nullius-fi", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/chemical-plant-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/chemical-plant-tech.png", effects = { { type = "unlock-recipe", @@ -10581,9 +10530,8 @@ data:extend({ type = "technology", name = "nullius-metalworking-4", order = "nullius-fi", - icon = "__angelssmelting__/graphics/technology/induction-furnace-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/induction-furnace-tech.png", icon_size = 256, - icon_mipmaps = 2, effects = { { type = "unlock-recipe", @@ -10608,7 +10556,7 @@ data:extend({ order = "nullius-fj", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -10631,9 +10579,9 @@ data:extend({ type = "technology", name = "nullius-aluminum-production-3", order = "nullius-fj", - icon = "__angelssmelting__/graphics/technology/smelting-aluminium-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-aluminium-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10734,7 +10682,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-helium-barrel" + recipe = "nullius-compressed-helium-barrel" }, { type = "unlock-recipe", @@ -10742,7 +10690,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-compressed-trace-gas-barrel" + recipe = "nullius-compressed-trace-gas-barrel" }, { type = "unlock-recipe", @@ -10766,7 +10714,7 @@ data:extend({ order = "nullius-fj", icon = "__base__/graphics/technology/battery.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10809,9 +10757,9 @@ data:extend({ name = "nullius-venting-3", order = "nullius-fj", icons = {{ - icon = "__angelspetrochem__/graphics/technology/flare-stack-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/flare-stack-tech.png", icon_size = 256, - icon_mipmaps = 4 + }}, effects = { { @@ -10842,7 +10790,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/technology/worker-robots-storage.png", icon_size = 256, - icon_mipmaps = 4, + tint = {0.6, 0.9, 1} }}, effects = { @@ -10869,7 +10817,7 @@ data:extend({ order = "nullius-fk", icon = "__base__/graphics/technology/logistic-science-pack.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10893,7 +10841,7 @@ data:extend({ order = "nullius-fk", icon = "__base__/graphics/technology/oil-gathering.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10925,7 +10873,7 @@ data:extend({ order = "nullius-fk", icon = "__base__/graphics/technology/steel-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -10965,7 +10913,7 @@ data:extend({ order = "nullius-fk", icon = "__base__/graphics/technology/electric-energy-distribution-2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11052,10 +11000,10 @@ data:extend({ order = "nullius-fl", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 }, { @@ -11077,9 +11025,9 @@ data:extend({ type = "technology", name = "nullius-titanium-production-3", order = "nullius-fl", - icon = "__angelssmelting__/graphics/technology/smelting-titanium-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-titanium-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11115,7 +11063,7 @@ data:extend({ order = "nullius-fl", icon = "__base__/graphics/technology/electric-energy-acumulators.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11189,7 +11137,7 @@ data:extend({ name = "nullius-electrolysis-4", order = "nullius-fl", icon_size = 128, - icon = "__angelspetrochem__/graphics/technology/electrolyser-tech.png", + icon = "__angelspetrochemgraphics__/graphics/technology/electrolyser-tech.png", effects = { { type = "unlock-recipe", @@ -11212,9 +11160,9 @@ data:extend({ type = "technology", name = "nullius-electronics-3", order = "nullius-fm", - icon = "__base__/graphics/technology/advanced-electronics-2.png", + icon = "__base__/graphics/technology/processing-unit.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11249,7 +11197,7 @@ data:extend({ name = "nullius-geothermal-power-3", order = "nullius-fm", icon_size = 64, - icon = "__angelssmelting__/graphics/icons/chemical-furnace.png", + icon = "__angelssmeltinggraphics__/graphics/icons/chemical-furnace.png", effects = { { type = "unlock-recipe", @@ -11276,7 +11224,7 @@ data:extend({ name = "nullius-isotope-separation", order = "nullius-fm", icon_size = 72, - icon = "__angelspetrochem__/graphics/icons/molecules/semiheavy-water.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/semiheavy-water.png", effects = { { type = "unlock-recipe", @@ -11304,7 +11252,7 @@ data:extend({ order = "nullius-fm", icon = "__base__/graphics/technology/toolbelt.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-inventory-slots-bonus", @@ -11393,7 +11341,7 @@ data:extend({ order = "nullius-fn", icon = "__base__/graphics/technology/worker-robots-storage.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-storage", @@ -11418,7 +11366,7 @@ data:extend({ order = "nullius-fn", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "laboratory-speed", @@ -11442,7 +11390,7 @@ data:extend({ order = "nullius-fn", icon = "__base__/graphics/technology/logistic-system.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11483,7 +11431,7 @@ data:extend({ order = "nullius-fo", icon = "__base__/graphics/technology/nuclear-power.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11519,7 +11467,7 @@ data:extend({ order = "nullius-fo", icon = "__base__/graphics/technology/module.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11618,7 +11566,7 @@ data:extend({ order = "nullius-fo", icon = "__base__/graphics/technology/logistic-system.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11710,7 +11658,7 @@ data:extend({ order = "nullius-fp", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -11734,7 +11682,7 @@ data:extend({ name = "nullius-nanotechnology-2", order = "nullius-fp", icon_size = 64, - icon = "__angelsrefining__/graphics/icons/crystallizer.png", + icon = "__angelsrefininggraphics__/graphics/icons/crystallizer.png", effects = { { type = "unlock-recipe", @@ -11758,7 +11706,7 @@ data:extend({ order = "nullius-fp", icon = "__base__/graphics/technology/robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11878,7 +11826,7 @@ data:extend({ order = "nullius-fq", icon = "__base__/graphics/technology/personal-laser-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -11909,7 +11857,7 @@ data:extend({ order = "nullius-fq", icon = "__base__/graphics/technology/electronics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11937,7 +11885,7 @@ data:extend({ order = "nullius-fq", icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11977,7 +11925,7 @@ data:extend({ order = "nullius-fq", icon = "__base__/graphics/technology/construction-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -11995,10 +11943,10 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-unbox-construction-bot-3" }, - { - type = "ghost-time-to-live", - modifier = 60 * 60 * 60 * 24 * 6 - } + -- { + -- type = "ghost-time-to-live", + -- modifier = 60 * 60 * 60 * 24 * 6 + -- } }, unit = { count = 3400, @@ -12017,7 +11965,7 @@ data:extend({ order = "nullius-fq", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-running-speed", @@ -12044,12 +11992,12 @@ data:extend({ { icon = "__base__/graphics/technology/production-science-pack.png", icon_size = 256, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/processing-unit.png", icon_size = 64, - icon_mipmaps = 4, + scale = 1.1, shift = {0, 34}, tint = {r=1, g=1, b=1, a=0.5} @@ -12082,10 +12030,10 @@ data:extend({ order = "nullius-fr", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -12106,7 +12054,7 @@ data:extend({ order = "nullius-fr", icon = "__base__/graphics/technology/atomic-bomb.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12142,7 +12090,7 @@ data:extend({ order = "nullius-fr", icon = "__base__/graphics/technology/railway.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12178,7 +12126,7 @@ data:extend({ order = "nullius-fr", icon = "__base__/graphics/technology/effect-transmission.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12230,7 +12178,7 @@ data:extend({ order = "nullius-fs", icon = "__base__/graphics/technology/rocket-fuel.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12298,7 +12246,7 @@ data:extend({ order = "nullius-fs", icon = "__base__/graphics/technology/tank.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12350,7 +12298,7 @@ data:extend({ order = "nullius-ft", icon = "__base__/graphics/technology/worker-robots-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-speed", @@ -12405,7 +12353,7 @@ data:extend({ order = "nullius-ft", icon = "__base__/graphics/technology/discharge-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-reach-distance", @@ -12454,7 +12402,7 @@ data:extend({ order = "nullius-fu", icon = "__base__/graphics/technology/power-armor-mk2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12498,7 +12446,7 @@ data:extend({ order = "nullius-fu", icon = "__base__/graphics/technology/artillery-range.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "artillery-range", @@ -12522,7 +12470,7 @@ data:extend({ order = "nullius-fu", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12546,7 +12494,7 @@ data:extend({ order = "nullius-fu", icon = "__base__/graphics/technology/atomic-bomb.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12591,7 +12539,7 @@ data:extend({ order = "nullius-fv", icon = "__base__/graphics/technology/landfill.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12651,7 +12599,7 @@ data:extend({ order = "nullius-fv", icon = "__base__/graphics/technology/spidertron.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12679,7 +12627,7 @@ data:extend({ order = "nullius-fv", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -12704,7 +12652,7 @@ data:extend({ order = "nullius-fv", icon = "__base__/graphics/technology/effect-transmission.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12771,7 +12719,7 @@ data:extend({ order = "nullius-fw", icon = "__base__/graphics/technology/concrete.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12871,7 +12819,7 @@ data:extend({ order = "nullius-fw", icon = "__base__/graphics/technology/rocket-silo.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -12901,7 +12849,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/technology/military-science-pack.png", icon_size = 256, - icon_mipmaps = 4, + tint = {0.75, 0.72, 0.78} }}, effects = { @@ -12937,7 +12885,7 @@ data:extend({ { icon = "__base__/graphics/technology/military-science-pack.png", icon_size = 256, - icon_mipmaps = 4, + tint = {0.75, 0.72, 0.78} }, { @@ -12980,7 +12928,7 @@ data:extend({ { icon = "__base__/graphics/technology/military-science-pack.png", icon_size = 256, - icon_mipmaps = 4, + tint = {0.75, 0.72, 0.78} }, { @@ -13021,7 +12969,7 @@ data:extend({ order = "nullius-gc", icon = "__base__/graphics/technology/atomic-bomb.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13119,7 +13067,7 @@ data:extend({ order = "nullius-gc", icon = "__base__/graphics/technology/nuclear-power.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13148,10 +13096,10 @@ data:extend({ order = "nullius-gc", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -13173,7 +13121,7 @@ data:extend({ order = "nullius-gd", icon = "__base__/graphics/technology/artillery-range.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "artillery-range", @@ -13198,7 +13146,7 @@ data:extend({ order = "nullius-gd", icon = "__base__/graphics/technology/personal-laser-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -13226,9 +13174,9 @@ data:extend({ type = "technology", name = "nullius-copper-production", order = "nullius-gd", - icon = "__angelssmelting__/graphics/technology/smelting-copper-tech.png", + icon = "__angelssmeltinggraphics__/graphics/technology/smelting-copper-tech.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13320,7 +13268,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "fill-nullius-pressure-steam-barrel" + recipe = "nullius-pressure-steam-barrel" }, { type = "unlock-recipe", @@ -13349,7 +13297,7 @@ data:extend({ order = "nullius-gd", icon = "__base__/graphics/technology/kovarex-enrichment-process.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13425,7 +13373,7 @@ data:extend({ type = "technology", name = "nullius-carbon-sequestration-3", order = "nullius-gd", - icon = "__angelspetrochem__/graphics/icons/molecules/oxygen.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", icon_size = 72, effects = { { @@ -13459,7 +13407,7 @@ data:extend({ order = "nullius-ge", icon = "__base__/graphics/technology/worker-robots-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-speed", @@ -13544,7 +13492,7 @@ data:extend({ { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.95 }, { @@ -13580,7 +13528,7 @@ data:extend({ order = "nullius-ge", icon = "__base__/graphics/technology/uranium-processing.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13607,9 +13555,9 @@ data:extend({ type = "technology", name = "nullius-electronics-4", order = "nullius-ge", - icon = "__base__/graphics/technology/advanced-electronics-2.png", + icon = "__base__/graphics/technology/processing-unit.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13678,7 +13626,7 @@ data:extend({ order = "nullius-gf", icon = "__base__/graphics/technology/robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13747,7 +13695,7 @@ data:extend({ order = "nullius-gf", icon = "__base__/graphics/technology/solar-energy.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13784,7 +13732,7 @@ data:extend({ order = "nullius-gf", icon = "__base__/graphics/technology/speed-module-3.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -13894,7 +13842,7 @@ data:extend({ { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.95 }, { @@ -13968,7 +13916,7 @@ data:extend({ order = "nullius-gg", icon = "__base__/graphics/technology/military.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14001,7 +13949,7 @@ data:extend({ order = "nullius-gg", icon = "__base__/graphics/technology/electronics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14030,7 +13978,7 @@ data:extend({ order = "nullius-gg", icon = "__base__/graphics/technology/logistic-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14165,7 +14113,7 @@ data:extend({ order = "nullius-gg", icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14218,13 +14166,13 @@ data:extend({ { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.95 }, { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.7, shift = {4, 4} } @@ -14256,7 +14204,7 @@ data:extend({ order = "nullius-gg", icon = "__base__/graphics/technology/productivity-module-3.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14351,10 +14299,10 @@ data:extend({ order = "nullius-gh", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 }, { @@ -14404,7 +14352,7 @@ data:extend({ order = "nullius-gh", icon = "__base__/graphics/technology/construction-robotics.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14440,9 +14388,9 @@ data:extend({ type = "technology", name = "nullius-weaving-3", order = "nullius-gh", - icon = "__angelssmelting__/graphics/icons/roll-zinc.png", + icon = "__angelssmeltinggraphics__/graphics/icons/roll-zinc.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14477,7 +14425,7 @@ data:extend({ order = "nullius-gh", icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14574,13 +14522,13 @@ data:extend({ { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.95 }, { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.7, shift = {4, 4} } @@ -14613,7 +14561,7 @@ data:extend({ order = "nullius-gh", icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14666,13 +14614,13 @@ data:extend({ { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.95 }, { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.7, shift = {4, 4} } @@ -14711,7 +14659,7 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.6, shift = {-8, -8} } @@ -14842,7 +14790,7 @@ data:extend({ order = "nullius-gi", icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -14900,13 +14848,13 @@ data:extend({ { icon = "__base__/graphics/icons/defender.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.95 }, { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.7, shift = {4, 4} } @@ -14940,7 +14888,7 @@ data:extend({ order = "nullius-gi", icon = "__base__/graphics/icons/wood.png", icon_size = 64, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15071,7 +15019,7 @@ data:extend({ order = "nullius-gi", icon = "__base__/graphics/technology/power-armor-mk2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15116,7 +15064,7 @@ data:extend({ order = "nullius-gi", icon = "__base__/graphics/technology/toolbelt.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-inventory-slots-bonus", @@ -15168,7 +15116,7 @@ data:extend({ order = "nullius-gj", icon = "__base__/graphics/technology/coal-liquefaction.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15251,12 +15199,12 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64, - icon_mipmaps = 4 + }, { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - icon_mipmaps = 4, + scale = 0.4, shift = {-12, -10} } @@ -15339,7 +15287,7 @@ data:extend({ order = "nullius-gj", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-running-speed", @@ -15362,7 +15310,7 @@ data:extend({ order = "nullius-gj", icon = "__base__/graphics/technology/laser-turret.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15562,9 +15510,9 @@ data:extend({ type = "technology", name = "nullius-artificial-intelligence-2", order = "nullius-gk", - icon = "__base__/graphics/technology/rocket-control-unit.png", + icon = TECHPATH .. "rocket-control-unit.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15588,7 +15536,7 @@ data:extend({ order = "nullius-gl", icon = "__base__/graphics/technology/explosive-rocketry.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15733,7 +15681,7 @@ data:extend({ order = "nullius-gm", icon = "__base__/graphics/technology/electric-energy-acumulators.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15782,7 +15730,7 @@ data:extend({ order = "nullius-gm", icon = "__base__/graphics/technology/solar-energy.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15807,7 +15755,7 @@ data:extend({ order = "nullius-gm", icon = "__base__/graphics/technology/power-armor-mk2.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", @@ -15836,7 +15784,7 @@ data:extend({ order = "nullius-gm", icon = "__base__/graphics/technology/spidertron.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "unlock-recipe", diff --git a/nullius/prototypes/upgrades.lua b/nullius/prototypes/upgrades.lua index dffde11..ea6c808 100644 --- a/nullius/prototypes/upgrades.lua +++ b/nullius/prototypes/upgrades.lua @@ -453,7 +453,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/research-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "laboratory-speed", @@ -481,7 +481,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/braking-force.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "train-braking-force-bonus", @@ -509,10 +509,10 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/inserter-capacity.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { - type = "stack-inserter-capacity-bonus", + type = "bulk-inserter-capacity-bonus", modifier = 1 } }, @@ -537,7 +537,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/steel-axe.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-mining-speed", @@ -573,7 +573,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/worker-robots-speed.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-speed", @@ -601,7 +601,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/worker-robots-storage.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "worker-robot-storage", @@ -630,7 +630,7 @@ data:extend({ icons = {{ icon = "__base__/graphics/technology/worker-robots-storage.png", icon_size = 256, - icon_mipmaps = 4, + tint = {0.6, 0.9, 1} }}, effects = { @@ -658,9 +658,9 @@ data:extend({ type = "technology", name = "nullius-extermination-1", order = "nullius-xc", - icon = "__base__/graphics/technology/energy-weapons-damage.png", + icon = "__base__/graphics/technology/laser-weapons-damage.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "gun-speed", @@ -704,7 +704,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/artillery-range.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "artillery-range", @@ -730,9 +730,9 @@ data:extend({ type = "technology", name = "nullius-artificial-intuition-1", order = "nullius-xc", - icon = "__base__/graphics/technology/optics.png", + icon = "__base__/graphics/technology/lamp.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "laboratory-productivity", @@ -760,7 +760,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/toolbelt.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-inventory-slots-bonus", @@ -788,7 +788,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/discharge-defense-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-reach-distance", @@ -827,7 +827,7 @@ data:extend({ order = "nullius-xc", icon = "__base__/graphics/technology/exoskeleton-equipment.png", icon_size = 256, - icon_mipmaps = 4, + effects = { { type = "character-running-speed", From 3b1afd546479e007774f6db981471f1bd0931800 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 25 Jul 2025 14:26:22 +0200 Subject: [PATCH 006/236] Updated misc --- nullius/TODO_list.txt | 19 +++++++++++++++++ nullius/data-final-fixes.lua | 2 +- nullius/data.lua | 9 ++++---- nullius/info.json | 30 ++++++++++++++------------- nullius/locale/en/item.cfg | 2 ++ nullius/locale/en/recipe.cfg | 2 ++ nullius/migrations/nullius_2.0.0.json | 6 ++++++ nullius/settings-updates.lua | 4 ++++ 8 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 nullius/TODO_list.txt create mode 100644 nullius/migrations/nullius_2.0.0.json diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt new file mode 100644 index 0000000..dc88ce8 --- /dev/null +++ b/nullius/TODO_list.txt @@ -0,0 +1,19 @@ +TODO list: +Rework sounds: remove vehicle impact sound, add impact-category instead (i think) +add working_sounds to entities (i think) +Fix fluid boxes (volume and pipe connections) pipes hold as much fluid as medium tank for instance +Fix valves +Rework the entity mirroring system +Rework the checkpoint system (maybe) +Update the recipe ingredients format +fix the others warnings in the log +landfill transitions things -> i have no clue how this thing works and if i even have to do anything +fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) +fix the localised names missing : logistics, fluid voiding and boxed recipes +mods compatibility +do we remove the legacy items/recipes/buildings ? +why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 +decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions +fix or make better voiding icons for recipes (it's difficult to identify the recipes in factoriopedia (in the "used in" section)) +selector-combinator and display panel not included in mod +update changelog and info.json(min version of dependencies) before publishing \ No newline at end of file diff --git a/nullius/data-final-fixes.lua b/nullius/data-final-fixes.lua index 1450359..883c82a 100644 --- a/nullius/data-final-fixes.lua +++ b/nullius/data-final-fixes.lua @@ -2,4 +2,4 @@ require("prototypes.override_final") require("prototypes.override_final_only") require("prototypes.override_mod_final") require("prototypes.item.module_limitation") -require("prototypes.item.box_icons") +require("prototypes.item.box_icons") \ No newline at end of file diff --git a/nullius/data.lua b/nullius/data.lua index e8666fd..af74146 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -14,9 +14,11 @@ require("prototypes.item.recipe") require("prototypes.item.alignment") require("prototypes.item.broken") require("prototypes.item.void") -require("prototypes.item.landfill") +require("prototypes.item.landfill") -- TODO: remove empty_transitions = true, and implement variants.transitions maybe require("prototypes.item.boxing") -require("prototypes.entity.furnace") + +-- TODO: set the appropriate volume for fluid_boxes +require("prototypes.entity.furnace") require("prototypes.entity.assembler") require("prototypes.entity.miner") require("prototypes.entity.plumbing") @@ -46,5 +48,4 @@ require("prototypes.yafc") require("prototypes.inputs") require("prototypes.achievements") -data.raw["map-settings"]["map-settings"].pollution.enabled = false -data.raw["map-settings"]["map-settings"].difficulty_settings.research_queue_setting = "always" +data.raw["map-settings"]["map-settings"].pollution.enabled = false \ No newline at end of file diff --git a/nullius/info.json b/nullius/info.json index 9ae80ab..57c0226 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -1,29 +1,31 @@ { "name": "nullius", - "version": "1.9.1", - "factorio_version": "1.1", + "version": "2.0.0", + "factorio_version": "2.0", "title": "Nullius", "author": "Anachrony", "description": "In this Factorio prequel, you're an android terraforming planets and seeding them with life. Replaces all recipes and technology. No life means no coal, oil, wood, biters, or free oxygen, requiring varied renewable energy sources. For reliability, you'll focus on abundant elements from the air, sea, or common minerals such as iron ore, bauxite, sandstone, and limestone. Advanced technology enables asteroid mining of rarer elements.", "homepage": "https://discord.gg/tZY2Rkte8Y", "dependencies": [ - "base >= 1.1.99", + "base >= 2.0.58", "(?) Transport_Drones >= 1.0.16", - "alien-biomes >= 0.6.5", - "angelsrefining >= 0.12.6", - "angelssmelting >= 0.6.20", - "boblogistics >= 1.2.1", + "alien-biomes >= 0.7.4", + "angelsrefininggraphics >= 1.0.0", + "angelssmeltinggraphics >= 1.0.0", + "angelspetrochemgraphics >= 1.0.0", + "angelssmelting >= 0.5.0", + "boblogistics >= 2.0.2", "? RecipeBook >= 2.7.1", "? underground-pipe-pack >= 1.1.2", - "(?) cargo-ships >= 0.2.2", - "(?) RenaiTransportation >= 1.0.0", + "(?) cargo-ships >= 0.2.2", + "(?) RenaiTransportation >= 1.0.0", "(?) boblibrary >= 1.1.4", "(?) IRobot >= 1.1.0", - "(?) jetpack >= 0.3.14", + "(?) jetpack >= 0.3.14", "! aai-industry", - "! angelsbioprocessing", - "! angelsinfiniteores", - "! bobores", - "! stack-size-tooltip" + "! angelsbioprocessing", + "! angelsinfiniteores", + "! bobores", + "! stack-size-tooltip" ] } diff --git a/nullius/locale/en/item.cfg b/nullius/locale/en/item.cfg index 86305e4..1681e93 100644 --- a/nullius/locale/en/item.cfg +++ b/nullius/locale/en/item.cfg @@ -334,6 +334,8 @@ nullius-align-transponder=Transponder nullius-align-conscription-charge=Conscription charge nullius-align-conscription-ray=Conscription ray nullius-align-concordance-satellite=Concordance satellite +nullius-red-wire=Red wire +nullius-green-wire=Green wire [item-description] nullius-geology-pack=Mineral sample studied in lab to adapt technology to local minerals. diff --git a/nullius/locale/en/recipe.cfg b/nullius/locale/en/recipe.cfg index 00b46e6..886c22c 100644 --- a/nullius/locale/en/recipe.cfg +++ b/nullius/locale/en/recipe.cfg @@ -97,6 +97,8 @@ nullius-silica-glass=Glass (fused quartz) nullius-soda-lime-glass-1=Glass (soda-lime 1) nullius-soda-lime-glass-2=Glass (soda-lime 2) nullius-graphite-to-carbon-monoxide=Carbon monoxide (graphite) +nullius-carbon-dioxide-to-methane=Methane +nullius-methane-to-ethylene=Ethylene nullius-carbon-gasification=Carbon gasification nullius-carbon-monoxide-to-dioxide=Carbon dioxide nullius-carbon-dioxide-to-monoxide=Carbon monoxide diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json new file mode 100644 index 0000000..d489057 --- /dev/null +++ b/nullius/migrations/nullius_2.0.0.json @@ -0,0 +1,6 @@ +{ + "recipe": + [ + ["nullius-empty-canister", "nullius-canister"] + ] +} \ No newline at end of file diff --git a/nullius/settings-updates.lua b/nullius/settings-updates.lua index f57938f..42faa8b 100644 --- a/nullius/settings-updates.lua +++ b/nullius/settings-updates.lua @@ -74,6 +74,7 @@ if data.raw['int-setting']['bobmods-logistics-pipeperlevel'] then end if data.raw['int-setting']['bobmods-logistics-fluidwagonbase'] then data.raw['int-setting']['bobmods-logistics-fluidwagonbase'].hidden = true + data.raw['int-setting']['bobmods-logistics-fluidwagonbase'].default_value = 25 data.raw['int-setting']['bobmods-logistics-fluidwagonbase'].allowed_values = {25} end if data.raw['int-setting']['bobmods-logistics-storagetankbase'] then @@ -81,6 +82,9 @@ if data.raw['int-setting']['bobmods-logistics-storagetankbase'] then data.raw['int-setting']['bobmods-logistics-storagetankbase'].allowed_values = {25} end +if not data.raw['string-setting'] then + data.raw['string-setting'] = {} +end if data.raw['string-setting']['alien-biomes-disable-vegetation'] then data.raw['string-setting']['alien-biomes-disable-vegetation'].hidden = true From b919b0b01e456240f59cf695543712c9283c1f2a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 7 Aug 2025 15:57:48 +0200 Subject: [PATCH 007/236] Renamed angels stuff --- nullius/prototypes/entity/assembler.lua | 12 ++++---- nullius/prototypes/entity/chemistry.lua | 30 ++++++++++---------- nullius/prototypes/entity/energy.lua | 12 ++++---- nullius/prototypes/entity/furnace.lua | 36 ++++++++++++------------ nullius/prototypes/entity/vent.lua | 4 +-- nullius/prototypes/item/intermediate.lua | 2 +- nullius/prototypes/item/void.lua | 2 +- nullius/prototypes/override.lua | 16 +++++------ 8 files changed, 57 insertions(+), 57 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 8d2bccf..30cdac8 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -564,7 +564,7 @@ data:extend({ } }) -local nanofab_pipes = util.table.deepcopy(data.raw["assembling-machine"]["crystallizer"].fluid_boxes[1].pipe_picture) +local nanofab_pipes = util.table.deepcopy(data.raw["assembling-machine"]["angels-crystallizer"].fluid_boxes[1].pipe_picture) nanofab_pipes.south = util.table.deepcopy(data.raw["pipe-to-ground"]["pipe-to-ground"].pictures.south) nanofab_pipes.south.shift = {0, -1} @@ -597,10 +597,10 @@ data:extend({ }, energy_usage = "470kW", graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["crystallizer"].graphics_set.animation, 0.775), + animation = scale_image(data.raw["assembling-machine"]["angels-crystallizer"].graphics_set.animation, 0.775), }, - vehicle_impact_sound = data.raw["assembling-machine"]["crystallizer"].vehicle_impact_sound, - working_sound = data.raw["assembling-machine"]["crystallizer"].working_sound, + vehicle_impact_sound = data.raw["assembling-machine"]["angels-crystallizer"].vehicle_impact_sound, + working_sound = data.raw["assembling-machine"]["angels-crystallizer"].working_sound, fluid_boxes = { { production_type = "input", @@ -680,7 +680,7 @@ data:extend({ }, energy_usage = "940kW", graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["crystallizer-2"].graphics_set.animation, 0.775), + animation = scale_image(data.raw["assembling-machine"]["angels-crystallizer-2"].graphics_set.animation, 0.775), }, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, @@ -824,7 +824,7 @@ data:extend({ apparent_volume = 0.5 }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["powder-mixer"].graphics_set.animation, 0.52) + animation = scale_image(data.raw["assembling-machine"]["angels-powder-mixer"].graphics_set.animation, 0.52) } } }) diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index ea6b4a6..3e591e3 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -70,36 +70,36 @@ data:extend({ module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, graphics_set = { - animation = hydro_animation("hydro-plant",{0.77, 0.77, 0.68}), - working_visualisations = scale_image(data.raw["assembling-machine"]["hydro-plant"].graphics_set.working_visualisations, 0.725), + animation = hydro_animation("angels-hydro-plant",{0.77, 0.77, 0.68}), + working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant"].graphics_set.working_visualisations, 0.725), }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["hydro-plant"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, fluid_boxes = { { production_type = "input", - pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[1].pipe_picture, + pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "input", - pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[1].pipe_picture, + pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "output", - pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[2].pipe_picture, + pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", - pipe_picture = data.raw["assembling-machine"]["hydro-plant"].fluid_boxes[3].pipe_picture, + pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} @@ -136,11 +136,11 @@ data:extend({ fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-hydro-plant-3", graphics_set = { - animation = hydro_animation("hydro-plant-2",{0.8, 0.8, 0.9}), - working_visualisations = scale_image(data.raw["assembling-machine"]["hydro-plant-2"].graphics_set.working_visualisations, 0.725), + animation = hydro_animation("angels-hydro-plant-2",{0.8, 0.8, 0.9}), + working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant-2"].graphics_set.working_visualisations, 0.725), }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["hydro-plant-2"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-hydro-plant-2"].working_sound, fluid_boxes = { { production_type = "input", @@ -199,11 +199,11 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", graphics_set = { - animation = hydro_animation("hydro-plant-3"), - working_visualisations = scale_image(data.raw["assembling-machine"]["hydro-plant-3"].graphics_set.working_visualisations, 0.725), + animation = hydro_animation("angels-hydro-plant-3"), + working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant-3"].graphics_set.working_visualisations, 0.725), }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["hydro-plant-3"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-hydro-plant-3"].working_sound, fluid_boxes = { { production_type = "input", @@ -290,7 +290,7 @@ data:extend({ next_upgrade = "nullius-mirror-hydro-plant-3", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["hydro-plant"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, fluid_boxes = { { @@ -356,7 +356,7 @@ data:extend({ fast_replaceable_group = "hydro-plant", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["hydro-plant"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, fluid_boxes = { { diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index e480ab8..b9f955b 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -1039,7 +1039,7 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 } }, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1184,7 +1184,7 @@ data:extend({ energy_usage = "495kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, graphics_set = { @@ -1316,7 +1316,7 @@ data:extend({ energy_usage = "2925kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1461,7 +1461,7 @@ data:extend({ energy_usage = "1930kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-2"].resistances, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-2"].fluid_boxes, graphics_set = { @@ -1557,7 +1557,7 @@ data:extend({ energy_usage = "7725kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1697,7 +1697,7 @@ data:extend({ energy_usage = "7650kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, - working_sound = data.raw["mining-drill"]["thermal-extractor"].working_sound, + working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 2e00ce5..43e6c2f 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -2,7 +2,7 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" -local floatpipepics = data.raw["assembling-machine"]["ore-floatation-cell"].fluid_boxes[1].pipe_picture +local floatpipepics = data.raw["assembling-machine"]["angels-ore-floatation-cell"].fluid_boxes[1].pipe_picture data:extend({ @@ -964,9 +964,9 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher"].graphics_set), + graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher"].graphics_set), vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["burner-ore-crusher"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-burner-ore-crusher"].working_sound, }, { @@ -998,7 +998,7 @@ data:extend({ module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-crusher"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-crusher"].working_sound, fluid_boxes = { { production_type = "input", @@ -1014,7 +1014,7 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher-2"].graphics_set) + graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher-2"].graphics_set) }, { @@ -1045,7 +1045,7 @@ data:extend({ module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-crusher"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-crusher"].working_sound, fluid_boxes = { { production_type = "input", @@ -1061,7 +1061,7 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["ore-crusher-3"].graphics_set) + graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher-3"].graphics_set) } }) @@ -1130,11 +1130,11 @@ data:extend({ } }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell"].graphics_set.working_visualisations, 0.81), + animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell"].graphics_set.working_visualisations, 0.81), }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-floatation-cell"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, }, { @@ -1197,11 +1197,11 @@ data:extend({ } }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-2"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-2"].graphics_set.working_visualisations, 0.81), + animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].graphics_set.working_visualisations, 0.81), }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-floatation-cell-2"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].working_sound, pipe_covers = pipecoverspictures() }, @@ -1264,11 +1264,11 @@ data:extend({ } }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-3"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["ore-floatation-cell-3"].graphics_set.working_visualisations, 0.81), + animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].graphics_set.working_visualisations, 0.81), }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-floatation-cell-3"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].working_sound, pipe_covers = pipecoverspictures() } }) @@ -1334,7 +1334,7 @@ data:extend({ working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, }, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-floatation-cell"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, fluid_boxes = { { @@ -1396,7 +1396,7 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = data.raw["assembling-machine"]["ore-floatation-cell"].working_sound, + working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, fluid_boxes = { { diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index 8dda86f..7bf7b80 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -362,7 +362,7 @@ data:extend({ } } }, - placeable_position_visualization = data.raw["offshore-pump"]["seafloor-pump"].placeable_position_visualization, + placeable_position_visualization = data.raw["offshore-pump"]["angels-seafloor-pump"].placeable_position_visualization, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, @@ -438,7 +438,7 @@ data:extend({ } } }, - placeable_position_visualization = data.raw["offshore-pump"]["seafloor-pump"].placeable_position_visualization, + placeable_position_visualization = data.raw["offshore-pump"]["angels-seafloor-pump"].placeable_position_visualization, vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 51f1ae9..906803b 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -4614,7 +4614,7 @@ data:extend({ order = "nullius-c", stack_size = 500, place_as_tile = { - result = "clay-bricks", + result = "angels-tile-clay-brick", condition_size = 1, condition = { layers = {water_tile=true} } } diff --git a/nullius/prototypes/item/void.lua b/nullius/prototypes/item/void.lua index 57f4d22..7b305fa 100644 --- a/nullius/prototypes/item/void.lua +++ b/nullius/prototypes/item/void.lua @@ -125,7 +125,7 @@ data:extend({ name = "nullius-void-water-saline", icon = data.raw.fluid["nullius-saline"].icon, icon_size = data.raw.fluid["nullius-saline"].icon_size, - crafting_machine_tint = { primary = data.raw.fluid["water-saline"].flow_color }, + crafting_machine_tint = { primary = data.raw.fluid["angels-water-saline"].flow_color }, category = "nullius-liquid-void", subgroup = "nullius-liquid-void", hide_from_player_crafting = true, diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 0a77764..6259734 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -125,14 +125,14 @@ data.raw.tile["landfill"].placeable_by = {item = "nullius-land-fill-gravel", cou data.raw.item["stone-brick"].stack_size = 500 data.raw.tile["stone-path"].walking_speed_modifier = 1.3 data.raw.tile["stone-path"].vehicle_friction_modifier = 0.8 -data.raw.tile["clay-bricks"].minable.result = "nullius-refractory-brick" -data.raw.tile["clay-bricks"].walking_speed_modifier = 1.4 -data.raw.tile["clay-bricks"].vehicle_friction_modifier = 0.7 -data.raw.tile["clay-bricks"].localised_name = {"tile-name.nullius-refractory-brick"} -data.raw.tile["clay-bricks"].placeable_by = {item = "nullius-refractory-brick", count = 1} -if (data.raw.tile["clay-bricks"].transitions == nil) then - data.raw.tile["clay-bricks"].transitions = data.raw.tile["stone-path"].transitions - data.raw.tile["clay-bricks"].transitions_between_transitions = +data.raw.tile["angels-tile-clay-brick"].minable.result = "nullius-refractory-brick" +data.raw.tile["angels-tile-clay-brick"].walking_speed_modifier = 1.4 +data.raw.tile["angels-tile-clay-brick"].vehicle_friction_modifier = 0.7 +data.raw.tile["angels-tile-clay-brick"].localised_name = {"tile-name.nullius-refractory-brick"} +data.raw.tile["angels-tile-clay-brick"].placeable_by = {item = "nullius-refractory-brick", count = 1} +if (data.raw.tile["angels-tile-clay-brick"].transitions == nil) then + data.raw.tile["angels-tile-clay-brick"].transitions = data.raw.tile["stone-path"].transitions + data.raw.tile["angels-tile-clay-brick"].transitions_between_transitions = data.raw.tile["stone-path"].transitions_between_transitions end data.raw.item["concrete"].stack_size = 500 From dca768f2d025c184e8d22c4652549614d12c904c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 7 Aug 2025 16:03:48 +0200 Subject: [PATCH 008/236] Patch for underground-pipe-pack mod --- nullius/prototypes/override_mod.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 926caa5..ce2c16d 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -946,8 +946,8 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do cover.layers[1].tint = tint end - local subdir = string.sub(junction.pictures.up.filename, 1, 50) - junction.pictures.up = { layers = { + local subdir = string.sub(junction.pictures.north.filename, 1, 50) + junction.pictures.north = { layers = { { filename = subdir .. "pipe-covers/hr-pipe-cover-north.png", priority = "extra-high", @@ -956,7 +956,7 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do tint = tint, scale = 0.5 }, - junction.pictures.up + junction.pictures.north }} end From 172a7c8cee53cc5c143e6302253671cd08427f3e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 11 Aug 2025 12:53:09 +0200 Subject: [PATCH 009/236] Fixed valves --- nullius/TODO_list.txt | 2 +- nullius/prototypes/entity/plumbing.lua | 561 ++++++++++++------------- nullius/prototypes/hidden.lua | 3 +- nullius/prototypes/item/boxing.lua | 2 +- 4 files changed, 274 insertions(+), 294 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index dc88ce8..71ad329 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -2,7 +2,7 @@ TODO list: Rework sounds: remove vehicle impact sound, add impact-category instead (i think) add working_sounds to entities (i think) Fix fluid boxes (volume and pipe connections) pipes hold as much fluid as medium tank for instance -Fix valves +Valves, pipes and tanks: fix mentions of pressure in locales Rework the entity mirroring system Rework the checkpoint system (maybe) Update the recipe ingredients format diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 0b7ef90..dc412fe 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -5,10 +5,6 @@ local BASEENTITY = "__base__/graphics/entity/" require("pipe_graphics") --- TODO: handle valves correctly -data.raw["storage-tank"]["valve-return"] = table.deepcopy(data.raw["storage-tank"]["storage-tank"]) -data.raw["storage-tank"]["valve-return"].name = "valve-return" - local op = data.raw["offshore-pump"]["offshore-pump"] local si1 = { type = "assembling-machine", @@ -1246,9 +1242,10 @@ data:extend({ }, pipe_covers = pipecoverspictures() }, - + + ---------------------------------------- VALVES ----------------------------------------------- { - type = "storage-tank", + type = "valve", name = "nullius-priority-valve", icon = "__angelspetrochemgraphics__/graphics/icons/valve-inspector.png", icon_size = 32, @@ -1261,94 +1258,90 @@ data:extend({ { type = "fire", percent = 75 } }, fast_replaceable_group = "pipe", - two_direction_only = false, collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - volume = 500, + volume = 100, pipe_connections = { - { position = {0, 0.1}, direction = defines.direction.south}, - { position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, - pipe_covers = pipecoverspictures() + pipe_covers = pipecoverspictures() }, - flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + + impact_category = "metal", circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, - - pictures = { - picture = { - north = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", - priority = "extra-high", - frames = 1, - width = 64, - height = 64 - } - } - }, - east = { + + mode = "overflow", + threshold = 0.25, + flow_rate = 5, + + animations = { + north = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", + priority = "extra-high", + frame_count = 1, + width = 64, + height = 64 + } + } + }, + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 64, - frames = 1, - width = 64, - height = 64, - shift = {0, 0} - }, - south = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", - priority = "extra-high", - x = 128, - frames = 1, - width = 64, - height = 64, - shift = {0, -0.05} - } - } - }, - west = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", - priority = "extra-high", - x = 192, - frames = 1, + frame_count = 1, width = 64, height = 64, shift = {0, 0} - } }, - fluid_background = data.raw["storage-tank"]["valve-return"].pictures.fluid_background, - window_background = data.raw["storage-tank"]["valve-return"].pictures.window_background, - flow_sprite = data.raw["storage-tank"]["valve-return"].pictures.flow_sprite, - gas_flow = data.raw["storage-tank"]["valve-return"].pictures.gas_flow + south = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", + priority = "extra-high", + x = 128, + frame_count = 1, + width = 64, + height = 64, + shift = {0, -0.05} + } + } + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", + priority = "extra-high", + x = 192, + frame_count = 1, + width = 64, + height = 64, + shift = {0, 0} + } } }, - + { - type = "storage-tank", + type = "valve", name = "nullius-one-way-valve", icon = "__angelspetrochemgraphics__/graphics/icons/valve-overflow.png", icon_size = 32, @@ -1361,94 +1354,89 @@ data:extend({ { type = "fire", percent = 75 } }, fast_replaceable_group = "pipe", - two_direction_only = false, collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - volume = 500, + volume = 100, pipe_connections = { - { position = {0, 0.1}, direction = defines.direction.south}, - { position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, - pipe_covers = pipecoverspictures() + pipe_covers = pipecoverspictures() }, - flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + + impact_category = "metal", circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, - - pictures = { - picture = { - north = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", - priority = "extra-high", - frames = 1, - width = 64, - height = 64 - } - } - }, - east = { + + mode = "one-way", + flow_rate = 5, + + animations = { + north = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", + priority = "extra-high", + frame_count = 1, + width = 64, + height = 64 + } + } + }, + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 64, - frames = 1, - width = 64, - height = 64, - shift = {0, 0} - }, - south = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", - priority = "extra-high", - x = 128, - frames = 1, - width = 64, - height = 64, - shift = {0, -0.05} - } - } - }, - west = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", - priority = "extra-high", - x = 192, - frames = 1, + frame_count = 1, width = 64, height = 64, shift = {0, 0} - } }, - fluid_background = data.raw["storage-tank"]["valve-return"].pictures.fluid_background, - window_background = data.raw["storage-tank"]["valve-return"].pictures.window_background, - flow_sprite = data.raw["storage-tank"]["valve-return"].pictures.flow_sprite, - gas_flow = data.raw["storage-tank"]["valve-return"].pictures.gas_flow + south = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", + priority = "extra-high", + x = 128, + frame_count = 1, + width = 64, + height = 64, + shift = {0, -0.05} + } + } + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", + priority = "extra-high", + x = 192, + frame_count = 1, + width = 64, + height = 64, + shift = {0, 0} + } } }, { - type = "storage-tank", + type = "valve", name = "nullius-top-up-valve", icon = "__angelspetrochemgraphics__/graphics/icons/valve-converter.png", icon_size = 32, @@ -1461,94 +1449,90 @@ data:extend({ { type = "fire", percent = 75 } }, fast_replaceable_group = "pipe", - two_direction_only = false, collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - volume = 500, + volume = 100, pipe_connections = { - { position = {0, 0.1}, direction = defines.direction.south}, - { position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, - pipe_covers = pipecoverspictures() + pipe_covers = pipecoverspictures() }, - flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + + impact_category = "metal", circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, - - pictures = { - picture = { - north = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", - priority = "extra-high", - frames = 1, - width = 64, - height = 64 - } - } - }, - east = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", - priority = "extra-high", - x = 64, - frames = 1, - width = 64, - height = 64, - shift = {0, 0} - }, - south = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", - priority = "extra-high", - x = 128, - frames = 1, - width = 64, - height = 64, - shift = {0, -0.05} - } - } - }, - west = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", - priority = "extra-high", - x = 192, - frames = 1, - width = 64, - height = 64, - shift = {0, 0} - } + + mode = "top-up", + threshold = 0.5, + flow_rate = 5, + + animations = { + north = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + priority = "extra-high", + frames = 1, + width = 64, + height = 64 + } + } + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + priority = "extra-high", + x = 64, + frame_count = 1, + width = 64, + height = 64, + shift = {0, 0} + }, + south = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + priority = "extra-high", + x = 128, + frame_count = 1, + width = 64, + height = 64, + shift = {0, -0.05} + } + } }, - fluid_background = data.raw["storage-tank"]["valve-return"].pictures.fluid_background, - window_background = data.raw["storage-tank"]["valve-return"].pictures.window_background, - flow_sprite = data.raw["storage-tank"]["valve-return"].pictures.flow_sprite, - gas_flow = data.raw["storage-tank"]["valve-return"].pictures.gas_flow + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + priority = "extra-high", + x = 192, + frame_count = 1, + width = 64, + height = 64, + shift = {0, 0} + } } }, { - type = "storage-tank", + type = "valve", name = "nullius-relief-valve", icon = "__angelspetrochemgraphics__/graphics/icons/valve-return.png", icon_size = 32, @@ -1561,89 +1545,85 @@ data:extend({ { type = "fire", percent = 75 } }, fast_replaceable_group = "pipe", - two_direction_only = false, collision_box = {{-0.29, -0.29}, {0.29, 0.29}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, fluid_box = { - volume = 500, + volume = 100, pipe_connections = { - { position = {0, 0.1}, direction = defines.direction.south}, - { position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, - pipe_covers = pipecoverspictures() + pipe_covers = pipecoverspictures() }, - flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + + impact_category = "metal", circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, - - pictures = { - picture = { - north = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", - priority = "extra-high", - frames = 1, - width = 64, - height = 64 - } - } - }, - east = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", - priority = "extra-high", - x = 64, - frames = 1, - width = 64, - height = 64, - shift = {0, 0} - }, - south = { - layers = { - { - filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", - frames = 1, - width = 128, - height = 64, - scale = 0.5, - shift = {0, -0.5} - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", - priority = "extra-high", - x = 128, - frames = 1, - width = 64, - height = 64, - shift = {0, -0.05} - } - } - }, - west = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", - priority = "extra-high", - x = 192, - frames = 1, - width = 64, - height = 64, - shift = {0, 0} - } + + mode = "overflow", + threshold = 0.75, + flow_rate = 5, + + animations = { + north = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", + priority = "extra-high", + frame_count = 1, + width = 64, + height = 64 + } + } + }, + east = { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", + priority = "extra-high", + x = 64, + frame_count = 1, + width = 64, + height = 64, + shift = {0, 0} }, - fluid_background = data.raw["storage-tank"]["valve-return"].pictures.fluid_background, - window_background = data.raw["storage-tank"]["valve-return"].pictures.window_background, - flow_sprite = data.raw["storage-tank"]["valve-return"].pictures.flow_sprite, - gas_flow = data.raw["storage-tank"]["valve-return"].pictures.gas_flow + south = { + layers = { + { + filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", + frame_count = 1, + width = 128, + height = 64, + scale = 0.5, + shift = {0, -0.5} + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", + priority = "extra-high", + x = 128, + frame_count = 1, + width = 64, + height = 64, + shift = {0, -0.05} + } + } + }, + west = { + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", + priority = "extra-high", + x = 192, + frame_count = 1, + width = 64, + height = 64, + shift = {0, 0} + } } }, @@ -1655,7 +1635,6 @@ data:extend({ minable = {mining_time=1.2, result="nullius-medium-tank-2"}, max_health = 500, next_upgrade = "nullius-medium-tank-3", - fast_replaceable_group = "medium-tank", corpse = "storage-tank-remnants", fast_replaceable_group = "medium-tank", collision_box = {{-1.3, -1.3}, {1.3, 1.3}}, diff --git a/nullius/prototypes/hidden.lua b/nullius/prototypes/hidden.lua index 12ac232..19261be 100644 --- a/nullius/prototypes/hidden.lua +++ b/nullius/prototypes/hidden.lua @@ -45,7 +45,8 @@ building_types_list = { "heat-pipe", "artillery-turret", "electric-turret", - "fluid-turret" + "fluid-turret", + "valve" } hide_entity_list = { diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index 3e3b26f..e8aed8f 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -286,7 +286,6 @@ create_boxed_item("night-vision-1", "demolition", "bc") create_boxed_item("levitation-field-1", "demolition", "bd") create_boxed_item("transformer", "electrical", "c") create_boxed_item("power-switch", "circuit", "g", "power-switch") -create_boxed_item("one-way-valve", "plumbing", "b") create_boxed_item("heat-pipe-1", "heat-energy", "db") create_boxed_item("heat-pipe-2", "heat-energy", "dc") @@ -303,6 +302,7 @@ create_boxed_item("hazard-concrete", "concrete", "k", "refined-hazard-concrete") create_boxed_item("priority-valve", "plumbing", "c") create_boxed_item("top-up-valve", "plumbing", "d") create_boxed_item("relief-valve", "plumbing", "e") +create_boxed_item("one-way-valve", "plumbing", "b") create_boxed_item("barrel", "canister", "b", "barrel") create_boxed_item("canister", "canister", "c") create_boxed_item("hydrogen-canister", "canister", "d") From a06fe6a9ac3669a4e80675a8083a05f81d8f87a8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 02:07:15 +0200 Subject: [PATCH 010/236] Set essential techs and fixed science pack icons --- nullius/prototypes/technology.lua | 104 ++++++++++++++++++------------ 1 file changed, 61 insertions(+), 43 deletions(-) diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index e848657..7a5c4b6 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -19,9 +19,9 @@ data:extend({ icon = "__base__/graphics/icons/stone.png", icon_size = 64, - scale = 1.6, - shift = {0, 36}, - tint = {r=0.6, g=0.4, b=0.2, a=0.5} + scale = 0.8, + shift = {0, 20}, + tint = {r=0.6, g=0.4, b=0.2, a=0.8} } }, effects = { @@ -35,7 +35,8 @@ data:extend({ ingredients = {}, time = 3 }, - ignore_tech_cost_multiplier = true + ignore_tech_cost_multiplier = true, + essential = true }, { type = "technology", @@ -72,9 +73,9 @@ data:extend({ icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 1.8, - shift = {0, 34}, - tint = {r=1, g=1, b=1, a=0.5} + scale = 1, + shift = {0, 20}, + tint = {r=1, g=1, b=1, a=0.8} } }, effects = { @@ -89,7 +90,8 @@ data:extend({ time = 6 }, prerequisites = {"nullius-geology-1"}, - ignore_tech_cost_multiplier = true + ignore_tech_cost_multiplier = true, + essential = true }, { @@ -653,9 +655,9 @@ data:extend({ icon = "__base__/graphics/icons/iron-gear-wheel.png", icon_size = 64, - scale = 1.6, - shift = {0, 40}, - tint = {r=0.6, g=1, b=1, a=0.5} + scale = 0.9, + shift = {0, 20}, + tint = {r=0.6, g=1, b=1, a=0.7} } }, effects = { @@ -670,7 +672,8 @@ data:extend({ time = 8 }, prerequisites = {"nullius-electromagnetism-1", "nullius-metallurgy-1"}, - ignore_tech_cost_multiplier = true + ignore_tech_cost_multiplier = true, + essential = true }, { @@ -2059,9 +2062,9 @@ data:extend({ icon = "__base__/graphics/icons/processing-unit.png", icon_size = 64, - scale = 1.1, - shift = {0, 34}, - tint = {r=1, g=1, b=1, a=0.5} + scale = 0.7, + shift = {0, 20}, + tint = {r=1, g=1, b=1, a=0.8} } }, effects = { @@ -2076,7 +2079,8 @@ data:extend({ time = 4 }, prerequisites = {"nullius-electronics-1", "nullius-checkpoint-mass-production"}, - ignore_tech_cost_multiplier = true + ignore_tech_cost_multiplier = true, + essential = true }, { @@ -2252,9 +2256,9 @@ data:extend({ icon = "__base__/graphics/icons/stone.png", icon_size = 64, - scale = 1.6, - shift = {0, 36}, - tint = {r=0.6, g=0.4, b=0.2, a=0.5} + scale = 0.8, + shift = {0, 20}, + tint = {r=0.6, g=0.4, b=0.2, a=0.8} } }, effects = { @@ -2270,7 +2274,8 @@ data:extend({ {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}}, time = 15 }, - prerequisites = {"nullius-checkpoint-lab"} + prerequisites = {"nullius-checkpoint-lab"}, + essential = true }, { type = "technology", @@ -3015,9 +3020,9 @@ data:extend({ icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 1.8, - shift = {0, 34}, - tint = {r=1, g=1, b=1, a=0.5} + scale = 1, + shift = {0, 20}, + tint = {r=1, g=1, b=1, a=0.8} } }, effects = { @@ -3034,7 +3039,8 @@ data:extend({ }, time = 30 }, - prerequisites = {"nullius-checkpoint-volcanic-gas", "nullius-nitrogen-chemistry-1"} + prerequisites = {"nullius-checkpoint-volcanic-gas", "nullius-nitrogen-chemistry-1"}, + essential = true }, { type = "technology", @@ -4053,7 +4059,8 @@ data:extend({ }, time = 30 }, - prerequisites = {"nullius-plumbing-4", "nullius-chirality-2", "nullius-checkpoint-chemical-engineering"} + prerequisites = {"nullius-plumbing-4", "nullius-chirality-2", "nullius-checkpoint-chemical-engineering"}, + essential = true }, { @@ -9487,8 +9494,8 @@ data:extend({ { icon = "__base__/graphics/icons/tooltips/tooltip-category-nuclear.png", icon_size = 40, - scale = 2.5, - shift = {-4, 36}, + scale = 1.5, + shift = {0, 20}, tint = {r=0.6, g=0.3, b=0.2, a=1} } }, @@ -9515,7 +9522,8 @@ data:extend({ }, time = 40 }, - prerequisites = {"nullius-mass-production-7", "nullius-exploration-2", "nullius-checkpoint-lab-2"} + prerequisites = {"nullius-mass-production-7", "nullius-exploration-2", "nullius-checkpoint-lab-2"}, + essential = true }, { @@ -10050,9 +10058,10 @@ data:extend({ { icon = "__base__/graphics/icons/iron-gear-wheel.png", icon_size = 64, - scale = 1.6, - shift = {0, 40}, - tint = {r=0.6, g=1, b=1, a=0.5} + + scale = 0.9, + shift = {0, 20}, + tint = {r=0.6, g=1, b=1, a=0.7} } }, effects = { @@ -10073,7 +10082,8 @@ data:extend({ }, time = 40 }, - prerequisites = {"nullius-automation-3", "nullius-pumping-3", "nullius-checkpoint-logistics-3"} + prerequisites = {"nullius-automation-3", "nullius-pumping-3", "nullius-checkpoint-logistics-3"}, + essential = true }, { type = "technology", @@ -10833,7 +10843,8 @@ data:extend({ }, time = 45 }, - prerequisites = {"nullius-battery-storage-3", "nullius-calcium-production"} + prerequisites = {"nullius-battery-storage-3", "nullius-calcium-production"}, + essential = true }, { type = "technology", @@ -11998,9 +12009,9 @@ data:extend({ icon = "__base__/graphics/icons/processing-unit.png", icon_size = 64, - scale = 1.1, - shift = {0, 34}, - tint = {r=1, g=1, b=1, a=0.5} + scale = 0.7, + shift = {0, 20}, + tint = {r=1, g=1, b=1, a=0.8} } }, effects = { @@ -12022,7 +12033,8 @@ data:extend({ }, time = 55 }, - prerequisites = {"nullius-miniaturization-1", "nullius-toolmaking-8"} + prerequisites = {"nullius-miniaturization-1", "nullius-toolmaking-8"}, + essential = true }, { type = "technology", @@ -12207,7 +12219,8 @@ data:extend({ time = 55 }, prerequisites = {"nullius-freight-transportation-3", "nullius-demolitions-2", - "nullius-high-pressure-chemistry-2"} + "nullius-high-pressure-chemistry-2"}, + essential = true }, { type = "technology", @@ -12839,7 +12852,8 @@ data:extend({ }, time = 60 }, - prerequisites = {"nullius-personal-transportation-4", "nullius-braking-8"} + prerequisites = {"nullius-personal-transportation-4", "nullius-braking-8"}, + essential = true }, { @@ -12874,7 +12888,8 @@ data:extend({ }, time = 60 }, - prerequisites = {"nullius-rocket-science-2", "nullius-terraforming-3", "nullius-broadcasting-4"} + prerequisites = {"nullius-rocket-science-2", "nullius-terraforming-3", "nullius-broadcasting-4"}, + essential = true }, { @@ -12918,7 +12933,8 @@ data:extend({ }, time = 60 }, - prerequisites = { "nullius-astronomy", "nullius-biochemistry-7" } + prerequisites = { "nullius-astronomy", "nullius-biochemistry-7" }, + essential = true }, { type = "technology", @@ -12961,7 +12977,8 @@ data:extend({ }, time = 60 }, - prerequisites = { "nullius-evolution-2", "nullius-optimization-6" } + prerequisites = { "nullius-evolution-2", "nullius-optimization-6" }, + essential = true }, { type = "technology", @@ -15553,7 +15570,8 @@ data:extend({ }, time = 60 }, - prerequisites = {"nullius-asteroid-mining-2", "nullius-checkpoint-android-2"} + prerequisites = {"nullius-asteroid-mining-2", "nullius-checkpoint-android-2"}, + essential = true }, { type = "technology", From 4123e051b22e6144496b979b8d2f49549b76edb9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 02:08:48 +0200 Subject: [PATCH 011/236] New icons to make voiding recipes standout Fixed broken locales for voiding recipes --- nullius/graphics/icons/red_cross.png | Bin 0 -> 1422 bytes nullius/prototypes/item/turbine.lua | 6 +- nullius/prototypes/item/void.lua | 87 +++++++++++++++++++++------ 3 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 nullius/graphics/icons/red_cross.png diff --git a/nullius/graphics/icons/red_cross.png b/nullius/graphics/icons/red_cross.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0050718f26d9e57c1950d8506e7d66dff575f5 GIT binary patch literal 1422 zcmV;91#$X`P)EX>4Tx04R}tkv&MmKpe$iQ^le!4t5Z6$WR@`f~bh2RIvyaN?V~-2a`*`ph-iL z;^HW{799LotU9+0Yt2!bCV?t+t|ib`7 zkz)Z>sE`~#_#gc4)+|g-x=Fzp(EVcDA0t4|F3_yo_V=-EH%|cnGjOG~{nZ9A`$>Ae ztwoN2{%zpmx~<83z~v4w_@qmQpV2qvfPq_}cg^jswU5&WAVXa(-v9@P zz-W=O*FD}H=y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2k8h44J9PT#*0q?000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}000AJNkl#rQtZJ z=mSw1B^4x=2oXdM62xp!qaX+hodgj{UnvJc1QBH!H3%xugfb%3{%T=LtI35PVY<$J z_xrdT?(Cku*4pRZbN1fn0Fgx&S!9t#7TN!dKm!4aPo0ZAW)kQXd7N|-IE_Gu2>g>k zkxKz+6*)X6FvV%`MFa*#0{01|IE=qX#QsKLp3tC4WH}YP=!_;nY9lG6-~wW7h|{Y|bL^UR=OR;>Mk|6S$xTVGV)bV#%6ny|0LW zN+3Nf4V2TOsKW%_iG@{Rm^w&P3A`|<7bbfu!`Mb!PGH0V@#n+bORP&!eAjqeW|#ty zO5mPN@goFQBtu6zkHA+O0XUdUZS`G-;%_G7*}^4*04(;Bn^#4JNx$wyvdwG@ugx84ydxr3eK$#QSUQZxa;J=*G2|O1$^@RF(J+jCm ci_8oA1Fdv9{J8NtZ~y=R07*qoM6N<$f` Date: Tue, 12 Aug 2025 02:10:23 +0200 Subject: [PATCH 012/236] Fixed broken locales and equipments --- nullius/TODO_list.txt | 2 - nullius/locale/en/entity.cfg | 3 +- nullius/locale/en/recipe.cfg | 2 + nullius/prototypes/entity/equipment.lua | 4 +- nullius/prototypes/item/box_icons.lua | 25 ++ nullius/prototypes/item/boxing.lua | 4 +- nullius/prototypes/item/buildings.lua | 13 + nullius/prototypes/item/equipment.lua | 366 ++++++++++++------------ nullius/prototypes/item/module.lua | 100 +++---- nullius/prototypes/item/recipe.lua | 22 +- 10 files changed, 298 insertions(+), 243 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 71ad329..7a9050c 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -9,11 +9,9 @@ Update the recipe ingredients format fix the others warnings in the log landfill transitions things -> i have no clue how this thing works and if i even have to do anything fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) -fix the localised names missing : logistics, fluid voiding and boxed recipes mods compatibility do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions -fix or make better voiding icons for recipes (it's difficult to identify the recipes in factoriopedia (in the "used in" section)) selector-combinator and display panel not included in mod update changelog and info.json(min version of dependencies) before publishing \ No newline at end of file diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index 69eca65..9818c92 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -531,7 +531,8 @@ nullius-capacitor=Capacitor nullius-night-vision-1=Night vision 1 nullius-night-vision-2=Night vision 2 nullius-night-vision-3=Night vision 3 -nullius-levitation-field=Levitation field +nullius-levitation-field-1=Levitation field 1 +nullius-levitation-field-2=Levitation field 2 nullius-shield=Shield nullius-leg-augmentation-1=Leg augmentation 1 nullius-leg-augmentation-2=Leg augmentation 2 diff --git a/nullius/locale/en/recipe.cfg b/nullius/locale/en/recipe.cfg index 886c22c..fee66df 100644 --- a/nullius/locale/en/recipe.cfg +++ b/nullius/locale/en/recipe.cfg @@ -35,6 +35,8 @@ nullius-electrolytic=__1__ (electrolytic) nullius-aluminothermic=__1__ (thermite) nullius-turbine-burn-open=Open generation (__1__) nullius-turbine-burn-closed=Closed generation (__1__) +nullius-liquid-void=Dump liquid (__1__) +nullius-gas-void=Dump gas (__1__) nullius-seawater-filtration=Seawater filtration nullius-freshwater-filtration=Freshwater filtration nullius-wastewater-filtration=Wastewater filtration diff --git a/nullius/prototypes/entity/equipment.lua b/nullius/prototypes/entity/equipment.lua index 909f7fd..79a22da 100644 --- a/nullius/prototypes/entity/equipment.lua +++ b/nullius/prototypes/entity/equipment.lua @@ -1031,7 +1031,6 @@ data:extend({ { type = "belt-immunity-equipment", name = "nullius-levitation-field-1", - localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", tostring(1)}, localised_description = data.raw.item["nullius-levitation-field-1"].localised_description, order = "fb", sprite = { @@ -1058,7 +1057,6 @@ data:extend({ { type = "belt-immunity-equipment", name = "nullius-levitation-field-2", - localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", tostring(2)}, localised_description = data.raw.item["nullius-levitation-field-2"].localised_description, order = "fc", sprite = { @@ -1086,7 +1084,7 @@ data:extend({ { type = "movement-bonus-equipment", name = "nullius-upgrade-jump-boots", - localised_description = data.raw.item["nullius-jump-boots"].localised_description, + localised_description = data.raw.item["nullius-jump-boots"].localised_description, take_result = "nullius-jump-boots", order = "daj", sprite = { diff --git a/nullius/prototypes/item/box_icons.lua b/nullius/prototypes/item/box_icons.lua index ba13d3b..bdf4bd7 100644 --- a/nullius/prototypes/item/box_icons.lua +++ b/nullius/prototypes/item/box_icons.lua @@ -116,3 +116,28 @@ for _,recipe in pairs(data.raw.recipe) do end end end + +-- Set the localised names for boxed recipes +for _,recipe in pairs(data.raw.recipe) do + if string.sub(recipe.name, 1, 14) == "nullius-boxed-" then + local main_product = nil + if recipe.main_product ~= nil then + main_product = recipe.main_product + elseif recipe.results and recipe.results[1] then + main_product = recipe.results[1].name + end + + if main_product ~= nil and (string.sub(main_product, 1, 12) == "nullius-box-") then + if recipe.localised_name == nil then + --First version + --recipe.localised_name = data.raw.item[main_product].localised_name + + -- Second version + recipe.localised_name = table.deepcopy(data.raw.item[main_product].localised_name) + if recipe.localised_name[1] == "item-name.nullius-box" then + recipe.localised_name[1] = "recipe-name.nullius-boxed" + end + end + end + end +end \ No newline at end of file diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index e8aed8f..5ba4bf4 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -42,8 +42,8 @@ local function create_boxed_item(base_name, group, box_order, localname = item.localised_name elseif (item.place_result ~= nil) then localname = {"entity-name."..item.place_result} - elseif (item.placed_as_equipment_result ~= nil) then - localname = {"equipment-name."..item.placed_as_equipment_result} + elseif (item.place_as_equipment_result ~= nil) then + localname = {"equipment-name."..item.place_as_equipment_result} end data:extend({ diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index 78ee0cc..3f9ea02 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -1178,6 +1178,7 @@ data:extend({ { type = "recipe", name = "nullius-small-chest-1", + localised_name = {"entity-name.nullius-small-chest-1"}, enabled = false, category = "medium-crafting", always_show_made_in = true, @@ -1193,6 +1194,7 @@ data:extend({ { type = "recipe", name = "nullius-small-chest-2", + localised_name = {"entity-name.nullius-small-chest-2"}, enabled = false, category = "medium-crafting", always_show_made_in = true, @@ -1210,6 +1212,7 @@ data:extend({ { type = "recipe", name = "nullius-small-chest-3", + localised_name = {"entity-name.nullius-small-chest-3"}, enabled = false, category = "large-fluid-assembly", always_show_made_in = true, @@ -1381,6 +1384,7 @@ data:extend({ { type = "recipe", name = "nullius-small-storage-chest-2", + localised_name = {"entity-name.nullius-small-storage-chest-2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -1511,6 +1515,7 @@ data:extend({ { type = "recipe", name = "nullius-small-supply-chest-2", + localised_name = {"entity-name.nullius-small-supply-chest-2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -1635,6 +1640,7 @@ data:extend({ { type = "recipe", name = "nullius-small-demand-chest-2", + localised_name = {"entity-name.nullius-small-demand-chest-2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -1759,6 +1765,7 @@ data:extend({ { type = "recipe", name = "nullius-small-buffer-chest-2", + localised_name = {"entity-name.nullius-small-buffer-chest-2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -1883,6 +1890,7 @@ data:extend({ { type = "recipe", name = "nullius-small-dispatch-chest-2", + localised_name = {"entity-name.nullius-small-dispatch-chest-2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2836,6 +2844,7 @@ data:extend({ { type = "recipe", name = "nullius-lamp-1a", + localised_name = {"entity-name.nullius-lamp-1"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -3021,6 +3030,7 @@ data:extend({ { type = "recipe", name = "nullius-power-pole-1", + localised_name = {"entity-name.nullius-power-pole-1"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -3055,6 +3065,7 @@ data:extend({ { type = "recipe", name = "nullius-power-pole-2", + localised_name = {"entity-name.nullius-power-pole-2"}, enabled = false, category = "medium-crafting", always_show_made_in = true, @@ -3163,6 +3174,7 @@ data:extend({ { type = "recipe", name = "nullius-pylon-1", + localised_name = {"entity-name.nullius-pylon-1"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -3273,6 +3285,7 @@ data:extend({ { type = "recipe", name = "nullius-substation-1", + localised_name = {"entity-name.nullius-substation-1"}, enabled = false, category = "large-crafting", always_show_made_in = true, diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index 26e5213..a3692cf 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -255,7 +255,7 @@ data:extend({ subgroup = "solar", order = "nullius-bb", place_result = "nullius-solar-panel-1", - placed_as_equipment_result = "nullius-solar-panel-1", + place_as_equipment_result = "nullius-solar-panel-1", stack_size = 100 }, { @@ -270,7 +270,7 @@ data:extend({ subgroup = "solar", order = "nullius-bc", place_result = "nullius-solar-panel-2", - placed_as_equipment_result = "nullius-solar-panel-2", + place_as_equipment_result = "nullius-solar-panel-2", stack_size = 100 }, { @@ -284,7 +284,7 @@ data:extend({ subgroup = "solar", order = "nullius-bd", place_result = "nullius-solar-panel-3", - placed_as_equipment_result = "nullius-solar-panel-3", + place_as_equipment_result = "nullius-solar-panel-3", stack_size = 100 }, { @@ -299,7 +299,7 @@ data:extend({ subgroup = "solar", order = "nullius-be", place_result = "nullius-solar-panel-4", - placed_as_equipment_result = "nullius-solar-panel-4", + place_as_equipment_result = "nullius-solar-panel-4", stack_size = 100 }, @@ -449,7 +449,7 @@ data:extend({ icon = "__base__/graphics/icons/battery.png", icon_size = 64, - placed_as_equipment_result = "nullius-capacitor", + place_as_equipment_result = "nullius-capacitor", subgroup = "battery", order = "nullius-c", stack_size = 100 @@ -534,7 +534,7 @@ data:extend({ icon = "__base__/graphics/icons/battery-equipment.png", icon_size = 64, - placed_as_equipment_result = "nullius-charged-battery-1", + place_as_equipment_result = "nullius-charged-battery-1", subgroup = "battery", order = "nullius-db", fuel_category = "vehicle", @@ -550,7 +550,7 @@ data:extend({ localised_name = {"item-name.nullius-uncharged-battery-1"}, icon = ICONPATH .. "uncharged1.png", icon_size = 64, - placed_as_equipment_result = "nullius-battery-1", + place_as_equipment_result = "nullius-battery-1", subgroup = "battery", order = "nullius-eb", stack_size = 100 @@ -702,7 +702,7 @@ data:extend({ icon = "__base__/graphics/icons/battery-mk2-equipment.png", icon_size = 64, - placed_as_equipment_result = "nullius-charged-battery-2", + place_as_equipment_result = "nullius-charged-battery-2", subgroup = "battery", order = "nullius-dc", fuel_category = "vehicle", @@ -718,7 +718,7 @@ data:extend({ localised_name = {"item-name.nullius-uncharged-battery-2"}, icon = ICONPATH .. "uncharged2.png", icon_size = 64, - placed_as_equipment_result = "nullius-battery-2", + place_as_equipment_result = "nullius-battery-2", subgroup = "battery", order = "nullius-ec", stack_size = 100 @@ -816,7 +816,7 @@ data:extend({ localised_description = {"equipment-description.nullius-battery"}, icon = ICONPATH .. "battery3.png", icon_size = 64, - placed_as_equipment_result = "nullius-charged-battery-3", + place_as_equipment_result = "nullius-charged-battery-3", subgroup = "battery", order = "nullius-dd", fuel_category = "vehicle", @@ -832,7 +832,7 @@ data:extend({ localised_name = {"item-name.nullius-uncharged-battery-3"}, icon = ICONPATH .. "uncharged3.png", icon_size = 64, - placed_as_equipment_result = "nullius-battery-3", + place_as_equipment_result = "nullius-battery-3", subgroup = "battery", order = "nullius-ed", stack_size = 100 @@ -886,7 +886,7 @@ data:extend({ tint = {0.8, 0.6, 0.65} }}, - placed_as_equipment_result = "nullius-hangar-1", + place_as_equipment_result = "nullius-hangar-1", place_result = "nullius-hangar-1", subgroup = "hangar-2", order = "nullius-bb", @@ -902,7 +902,7 @@ data:extend({ tint = {0.85, 0.9, 1} }}, - placed_as_equipment_result = "nullius-hangar-2", + place_as_equipment_result = "nullius-hangar-2", place_result = "nullius-hangar-2", subgroup = "hangar-2", order = "nullius-bc", @@ -918,7 +918,7 @@ data:extend({ tint = {0.55, 0.7, 0.55} }}, - placed_as_equipment_result = "nullius-hangar-3", + place_as_equipment_result = "nullius-hangar-3", place_result = "nullius-hangar-3", subgroup = "hangar-2", order = "nullius-bd", @@ -933,7 +933,7 @@ data:extend({ icon_size = 64, tint = {0.55, 0.7, 0.55} }}, - placed_as_equipment_result = "nullius-hangar-4", + place_as_equipment_result = "nullius-hangar-4", place_result = "nullius-hangar-4", subgroup = "hangar-2", order = "nullius-be", @@ -1019,7 +1019,7 @@ data:extend({ icon = "__boblogistics__/graphics/icons/roboport-chargepad.png", icon_size = 32 }}, - placed_as_equipment_result = "nullius-charger-1", + place_as_equipment_result = "nullius-charger-1", place_result = "nullius-charger-1", subgroup = "hangar-1", order = "nullius-cb", @@ -1033,7 +1033,7 @@ data:extend({ icon = "__boblogistics__/graphics/icons/roboport-chargepad-2.png", icon_size = 32 }}, - placed_as_equipment_result = "nullius-charger-2", + place_as_equipment_result = "nullius-charger-2", place_result = "nullius-charger-2", subgroup = "hangar-1", order = "nullius-cc", @@ -1047,7 +1047,7 @@ data:extend({ icon = "__boblogistics__/graphics/icons/roboport-chargepad-4.png", icon_size = 32 }}, - placed_as_equipment_result = "nullius-charger-3", + place_as_equipment_result = "nullius-charger-3", place_result = "nullius-charger-3", subgroup = "hangar-1", order = "nullius-cd", @@ -1061,7 +1061,7 @@ data:extend({ icon = ICONPATH .. "charger.png", icon_size = 64 }}, - placed_as_equipment_result = "nullius-charger-4", + place_as_equipment_result = "nullius-charger-4", place_result = "nullius-charger-4", subgroup = "hangar-1", order = "nullius-ce", @@ -1210,7 +1210,7 @@ data:extend({ icon = "__boblogistics__/graphics/icons/logistic-zone-expander.png", icon_size = 32 }}, - placed_as_equipment_result = "nullius-relay-1", + place_as_equipment_result = "nullius-relay-1", place_result = "nullius-relay-1", subgroup = "hangar-1", order = "nullius-db", @@ -1224,7 +1224,7 @@ data:extend({ icon = "__boblogistics__/graphics/icons/logistic-zone-expander-2.png", icon_size = 32 }}, - placed_as_equipment_result = "nullius-relay-2", + place_as_equipment_result = "nullius-relay-2", place_result = "nullius-relay-2", subgroup = "hangar-1", order = "nullius-dc", @@ -1238,7 +1238,7 @@ data:extend({ icon = "__boblogistics__/graphics/icons/logistic-zone-expander-4.png", icon_size = 32 }}, - placed_as_equipment_result = "nullius-relay-3", + place_as_equipment_result = "nullius-relay-3", place_result = "nullius-relay-3", subgroup = "hangar-1", order = "nullius-dd", @@ -1253,7 +1253,7 @@ data:extend({ tint = {0.85, 1, 0.9}, icon_size = 32 }}, - placed_as_equipment_result = "nullius-relay-4", + place_as_equipment_result = "nullius-relay-4", place_result = "nullius-relay-4", subgroup = "hangar-1", order = "nullius-de", @@ -1421,6 +1421,7 @@ data:extend({ { type = "recipe", name = "nullius-repair-pack", + localised_name = {"item-name.repair-pack"}, enabled = false, category = "small-crafting", always_show_made_in = true, @@ -1520,7 +1521,6 @@ data:extend({ { type = "item", name = "nullius-levitation-field-1", - localised_name = {"", {"equipment-name.nullius-levitation-field"}, " ", tostring(1)}, localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-levitation-field"}, {"entity-description.nullius-kilojoule", tostring(100)}}, @@ -1529,7 +1529,7 @@ data:extend({ icon_size = 64, }}, - placed_as_equipment_result = "nullius-levitation-field-1", + place_as_equipment_result = "nullius-levitation-field-1", subgroup = "equipment", order = "nullius-db", stack_size = 20 @@ -1544,7 +1544,7 @@ data:extend({ icon = ICONPATH .. "levitation2.png", icon_size = 64 }}, - placed_as_equipment_result = "nullius-levitation-field-2", + place_as_equipment_result = "nullius-levitation-field-2", subgroup = "equipment", order = "nullius-dc", stack_size = 10 @@ -1641,7 +1641,7 @@ data:extend({ {"entity-description.nullius-kilojoule", tostring(150)}}, icon = "__base__/graphics/equipment/night-vision-equipment.png", icon_size = 64, - placed_as_equipment_result = "nullius-night-vision-1", + place_as_equipment_result = "nullius-night-vision-1", subgroup = "equipment", order = "nullius-cb", stack_size = 20 @@ -1654,7 +1654,7 @@ data:extend({ {"entity-description.nullius-kilojoule", tostring(400)}}, icon = ICONPATH .. "night-vision-2.png", icon_size = 64, - placed_as_equipment_result = "nullius-night-vision-2", + place_as_equipment_result = "nullius-night-vision-2", subgroup = "equipment", order = "nullius-cc", stack_size = 10 @@ -1667,7 +1667,7 @@ data:extend({ {"entity-description.nullius-megajoule", tostring(1)}}, icon = ICONPATH .. "night-vision-3.png", icon_size = 64, - placed_as_equipment_result = "nullius-night-vision-3", + place_as_equipment_result = "nullius-night-vision-3", subgroup = "equipment", order = "nullius-cd", stack_size = 10 @@ -1747,14 +1747,14 @@ data:extend({ name = "nullius-leg-augmentation-1", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", tostring(6)}}, + {"entity-description.nullius-megajoule", tostring(6)}}, icons = {{ icon = "__base__/graphics/icons/exoskeleton-equipment.png", icon_size = 64, tint = {0.75, 0.75, 0.6} }}, - placed_as_equipment_result = "nullius-leg-augmentation-1", + place_as_equipment_result = "nullius-leg-augmentation-1", subgroup = "leg-augmentation", order = "nullius-cb", stack_size = 5 @@ -1806,14 +1806,14 @@ data:extend({ name = "nullius-leg-augmentation-2", localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", tostring(15)}}, + {"entity-description.nullius-megajoule", tostring(15)}}, icons = {{ icon = "__base__/graphics/icons/exoskeleton-equipment.png", icon_size = 64, tint = {0.8, 0.8, 0.95} }}, - placed_as_equipment_result = "nullius-leg-augmentation-2", + place_as_equipment_result = "nullius-leg-augmentation-2", subgroup = "leg-augmentation", order = "nullius-cc", stack_size = 5 @@ -1842,15 +1842,15 @@ data:extend({ { type = "item", name = "nullius-leg-augmentation-3", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", tostring(30)}}, + {"entity-description.nullius-megajoule", tostring(30)}}, icons = {{ icon = "__base__/graphics/icons/exoskeleton-equipment.png", icon_size = 64, }}, - placed_as_equipment_result = "nullius-leg-augmentation-3", + place_as_equipment_result = "nullius-leg-augmentation-3", subgroup = "leg-augmentation", order = "nullius-cd", stack_size = 5 @@ -1879,14 +1879,14 @@ data:extend({ { type = "item", name = "nullius-leg-augmentation-4", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-leg-augmentation"}, - {"entity-description.nullius-megajoule", tostring(30)}}, + {"entity-description.nullius-megajoule", tostring(30)}}, icons = {{ icon = ICONPATH .. "legs.png", icon_size = 64 }}, - placed_as_equipment_result = "nullius-leg-augmentation-4", + place_as_equipment_result = "nullius-leg-augmentation-4", subgroup = "leg-augmentation", order = "nullius-ce", stack_size = 5 @@ -1914,16 +1914,16 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-1", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", tostring(3)}, "\n", + {"equipment-description.nullius-bonus-cargo", tostring(3)}, "\n", {"equipment-description.nullius-penalty-craft", tostring(25)}, "\n", {"equipment-description.nullius-penalty-reach", tostring(2)}}, - {"entity-description.nullius-megajoule", tostring(8)}}, + {"entity-description.nullius-megajoule", tostring(8)}}, icons = {{ icon = ICONPATH.."equipment/quadruped.png", icon_size = 128, tint = {0.75, 0.75, 0.6} }}, - placed_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-1", + place_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-1", subgroup = "leg-augmentation", order = "nullius-db", stack_size = 5 @@ -1932,16 +1932,16 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-2", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", tostring(5)}, "\n", + {"equipment-description.nullius-bonus-cargo", tostring(5)}, "\n", {"equipment-description.nullius-penalty-craft", tostring(30)}, "\n", {"equipment-description.nullius-penalty-reach", tostring(2)}}, - {"entity-description.nullius-megajoule", tostring(20)}}, + {"entity-description.nullius-megajoule", tostring(20)}}, icons = {{ icon = ICONPATH.."equipment/quadruped.png", icon_size = 128, tint = {0.8, 0.8, 0.95} }}, - placed_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-2", + place_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-2", subgroup = "leg-augmentation", order = "nullius-dc", stack_size = 5 @@ -1950,15 +1950,15 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-3", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", tostring(6)}, "\n", + {"equipment-description.nullius-bonus-cargo", tostring(6)}, "\n", {"equipment-description.nullius-penalty-craft", tostring(40)}, "\n", {"equipment-description.nullius-penalty-reach", tostring(2)}}, - {"entity-description.nullius-megajoule", tostring(40)}}, + {"entity-description.nullius-megajoule", tostring(40)}}, icons = {{ icon = ICONPATH.."equipment/quadruped.png", icon_size = 128 }}, - placed_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-3", + place_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-3", subgroup = "leg-augmentation", order = "nullius-dd", stack_size = 5 @@ -1967,15 +1967,15 @@ data:extend({ type = "item", name = "nullius-quadrupedal-adaptation-4", localised_description = {"equipment-description.nullius-buffer", {"", - {"equipment-description.nullius-bonus-cargo", tostring(6)}, "\n", + {"equipment-description.nullius-bonus-cargo", tostring(6)}, "\n", {"equipment-description.nullius-penalty-craft", tostring(30)}, "\n", {"equipment-description.nullius-penalty-reach", tostring(2)}}, - {"entity-description.nullius-megajoule", tostring(40)}}, + {"entity-description.nullius-megajoule", tostring(40)}}, icons = {{ icon = ICONPATH.."equipment/quadruped-4.png", icon_size = 128 }}, - placed_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-4", + place_as_equipment_result = "nullius-upgrade-quadrupedal-adaptation-4", subgroup = "leg-augmentation", order = "nullius-de", stack_size = 5 @@ -2056,7 +2056,7 @@ data:extend({ icon = ICONPATH.."equipment/boot.png", icon_size = 128 }}, - placed_as_equipment_result = "nullius-upgrade-jump-boots", + place_as_equipment_result = "nullius-upgrade-jump-boots", subgroup = "leg-augmentation", order = "nullius-b", stack_size = 10 @@ -2083,7 +2083,7 @@ data:extend({ { type = "item", name = "nullius-shield", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-shield"}, {"entity-description.nullius-kilojoule", tostring(500)}}, icons = {{ @@ -2091,7 +2091,7 @@ data:extend({ icon_size = 64, }}, - placed_as_equipment_result = "nullius-shield", + place_as_equipment_result = "nullius-shield", subgroup = "armor", order = "nullius-h", stack_size = 10 @@ -3603,12 +3603,11 @@ data:extend({ { type = "item", name = "nullius-armor-plate", - localised_name = {"nullius-upgrade-armor-plate"}, - icons = {{ - icon = EQUIPPATH.."armor-plate.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-armor-plate", + icons = {{ + icon = EQUIPPATH.."armor-plate.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-armor-plate", subgroup = "armor", order = "nullius-g", stack_size = 50 @@ -3616,7 +3615,6 @@ data:extend({ { type = "recipe", name = "nullius-armor-plate", - localised_name = {"entity-name.nullius-upgrade-armor-plate"}, enabled = false, always_show_made_in = true, category = "hand-casting", @@ -3636,11 +3634,11 @@ data:extend({ { type = "item", name = "nullius-small-cargo-pod-1", - icons = {{ - icon = EQUIPPATH.."small-pod-1.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-small-cargo-pod-1", + icons = {{ + icon = EQUIPPATH.."small-pod-1.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-small-cargo-pod-1", subgroup = "cargo-pod", order = "nullius-bb", stack_size = 50 @@ -3648,11 +3646,11 @@ data:extend({ { type = "item", name = "nullius-small-cargo-pod-2", - icons = {{ - icon = EQUIPPATH.."small-pod-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-small-cargo-pod-2", + icons = {{ + icon = EQUIPPATH.."small-pod-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-small-cargo-pod-2", subgroup = "cargo-pod", order = "nullius-bc", stack_size = 50 @@ -3660,11 +3658,11 @@ data:extend({ { type = "item", name = "nullius-large-cargo-pod-1", - icons = {{ - icon = ICONPATH.."equipment/large-pod-1.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-large-cargo-pod-1", + icons = {{ + icon = ICONPATH.."equipment/large-pod-1.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-large-cargo-pod-1", subgroup = "cargo-pod", order = "nullius-cb", stack_size = 20 @@ -3672,11 +3670,11 @@ data:extend({ { type = "item", name = "nullius-large-cargo-pod-2", - icons = {{ - icon = ICONPATH.."equipment/large-pod-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-large-cargo-pod-2", + icons = {{ + icon = ICONPATH.."equipment/large-pod-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-large-cargo-pod-2", subgroup = "cargo-pod", order = "nullius-cc", stack_size = 20 @@ -3684,11 +3682,11 @@ data:extend({ { type = "item", name = "nullius-large-cargo-pod-3", - icons = {{ - icon = ICONPATH.."equipment/large-pod-3.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-large-cargo-pod-3", + icons = {{ + icon = ICONPATH.."equipment/large-pod-3.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-large-cargo-pod-3", subgroup = "cargo-pod", order = "nullius-cd", stack_size = 20 @@ -3776,11 +3774,11 @@ data:extend({ { type = "item", name = "nullius-trash-compactor", - icons = {{ - icon = ICONPATH.."equipment/trash-compactor-1.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-trash-compactor", + icons = {{ + icon = ICONPATH.."equipment/trash-compactor-1.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-trash-compactor", subgroup = "cargo-pod", order = "nullius-db", stack_size = 20 @@ -3788,11 +3786,11 @@ data:extend({ { type = "item", name = "nullius-trash-compactor-2", - icons = {{ - icon = ICONPATH.."equipment/trash-compactor-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-trash-compactor-2", + icons = {{ + icon = ICONPATH.."equipment/trash-compactor-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-trash-compactor-2", subgroup = "cargo-pod", order = "nullius-dc", stack_size = 20 @@ -3833,11 +3831,11 @@ data:extend({ { type = "item", name = "nullius-fabrication-tool-1", - icons = {{ - icon = ICONPATH.."equipment/fabrication-tool-1.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-fabrication-tool-1", + icons = {{ + icon = ICONPATH.."equipment/fabrication-tool-1.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-fabrication-tool-1", subgroup = "tool-upgrades", order = "nullius-cb", stack_size = 50 @@ -3845,11 +3843,11 @@ data:extend({ { type = "item", name = "nullius-fabrication-tool-2", - icons = {{ - icon = ICONPATH.."equipment/fabrication-tool-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-fabrication-tool-2", + icons = {{ + icon = ICONPATH.."equipment/fabrication-tool-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-fabrication-tool-2", subgroup = "tool-upgrades", order = "nullius-cc", stack_size = 50 @@ -3857,11 +3855,11 @@ data:extend({ { type = "item", name = "nullius-fabrication-tool-3", - icons = {{ - icon = ICONPATH.."equipment/fabrication-tool-3.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-fabrication-tool-3", + icons = {{ + icon = ICONPATH.."equipment/fabrication-tool-3.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-fabrication-tool-3", subgroup = "tool-upgrades", order = "nullius-cd", stack_size = 20 @@ -3869,11 +3867,11 @@ data:extend({ { type = "item", name = "nullius-mining-tool-1", - icons = {{ - icon = ICONPATH.."equipment/mining-tool-1.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-mining-tool-1", + icons = {{ + icon = ICONPATH.."equipment/mining-tool-1.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-mining-tool-1", subgroup = "tool-upgrades", order = "nullius-db", stack_size = 50 @@ -3881,11 +3879,11 @@ data:extend({ { type = "item", name = "nullius-mining-tool-2", - icons = {{ - icon = ICONPATH.."equipment/mining-tool-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-mining-tool-2", + icons = {{ + icon = ICONPATH.."equipment/mining-tool-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-mining-tool-2", subgroup = "tool-upgrades", order = "nullius-dc", stack_size = 50 @@ -3893,11 +3891,11 @@ data:extend({ { type = "item", name = "nullius-multi-tool-1", - icons = {{ - icon = ICONPATH.."equipment/multi-tool-1.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-multi-tool-1", + icons = {{ + icon = ICONPATH.."equipment/multi-tool-1.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-multi-tool-1", subgroup = "tool-upgrades", order = "nullius-eb", stack_size = 50 @@ -3905,11 +3903,11 @@ data:extend({ { type = "item", name = "nullius-multi-tool-2", - icons = {{ - icon = ICONPATH.."equipment/multi-tool-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-multi-tool-2", + icons = {{ + icon = ICONPATH.."equipment/multi-tool-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-multi-tool-2", subgroup = "tool-upgrades", order = "nullius-ec", stack_size = 50 @@ -3917,11 +3915,11 @@ data:extend({ { type = "item", name = "nullius-multi-tool-3", - icons = {{ - icon = ICONPATH.."equipment/multi-tool-3.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-multi-tool-3", + icons = {{ + icon = ICONPATH.."equipment/multi-tool-3.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-multi-tool-3", subgroup = "tool-upgrades", order = "nullius-ed", stack_size = 50 @@ -4105,11 +4103,11 @@ data:extend({ { type = "item", name = "nullius-telekinesis-field-1", - icons = {{ - icon = ICONPATH.."equipment/telekinesis-1.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-telekinesis-field-1", + icons = {{ + icon = ICONPATH.."equipment/telekinesis-1.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-telekinesis-field-1", subgroup = "equipment", order = "nullius-gb", stack_size = 20 @@ -4117,11 +4115,11 @@ data:extend({ { type = "item", name = "nullius-telekinesis-field-2", - icons = {{ - icon = ICONPATH.."equipment/telekinesis-2.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-telekinesis-field-2", + icons = {{ + icon = ICONPATH.."equipment/telekinesis-2.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-telekinesis-field-2", subgroup = "equipment", order = "nullius-gc", stack_size = 20 @@ -4129,11 +4127,11 @@ data:extend({ { type = "item", name = "nullius-telekinesis-field-3", - icons = {{ - icon = ICONPATH.."equipment/telekinesis-3.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-telekinesis-field-3", + icons = {{ + icon = ICONPATH.."equipment/telekinesis-3.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-telekinesis-field-3", subgroup = "equipment", order = "nullius-gd", stack_size = 20 @@ -4192,23 +4190,23 @@ data:extend({ { type = "item", name = "nullius-stabilizer-1", - icons = {{ - icon = ICONPATH.."equipment/stabilizer-1.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-stabilizer-1", - subgroup = "cargo-pod", + icons = {{ + icon = ICONPATH.."equipment/stabilizer-1.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-stabilizer-1", + subgroup = "cargo-pod", order = "nullius-eb", stack_size = 50 }, { type = "item", name = "nullius-stabilizer-2", - icons = {{ - icon = ICONPATH.."equipment/stabilizer-2.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-stabilizer-2", + icons = {{ + icon = ICONPATH.."equipment/stabilizer-2.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-stabilizer-2", subgroup = "cargo-pod", order = "nullius-ec", stack_size = 50 @@ -4252,12 +4250,12 @@ data:extend({ { type = "item", name = "nullius-shackle", - icons = {{ - icon = EQUIPPATH.."shackle.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-upgrade-shackle", - subgroup = "leg-augmentation", + icons = {{ + icon = EQUIPPATH.."shackle.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-upgrade-shackle", + subgroup = "leg-augmentation", order = "nullius-f", stack_size = 20 }, @@ -4282,11 +4280,11 @@ data:extend({ type = "item", name = "nullius-refueler", localised_description = {"equipment-description.nullius-refueler"}, - icons = {{ - icon = EQUIPPATH .. "refueler.png", - icon_size = 128 - }}, - placed_as_equipment_result = "nullius-refueler", + icons = {{ + icon = EQUIPPATH .. "refueler.png", + icon_size = 128 + }}, + place_as_equipment_result = "nullius-refueler", subgroup = "solar", order = "nullius-e", stack_size = 20 @@ -4300,8 +4298,8 @@ data:extend({ energy_required = 8, ingredients = { {type="item", name="bob-turbo-inserter", amount=1}, - {type="item", name="nullius-pump-2", amount=1}, - {type="item", name="nullius-rubber", amount=3} + {type="item", name="nullius-pump-2", amount=1}, + {type="item", name="nullius-rubber", amount=3} }, results = { {type = "item", name = "nullius-refueler", amount = 1} @@ -4317,7 +4315,7 @@ data:extend({ icon = ICONPATH.."equipment/generator-1.png", icon_size = 64 }}, - placed_as_equipment_result = "nullius-portable-generator-1", + place_as_equipment_result = "nullius-portable-generator-1", subgroup = "solar", order = "nullius-dbb", stack_size = 20 @@ -4331,7 +4329,7 @@ data:extend({ icon = ICONPATH.."equipment/generator-2.png", icon_size = 64 }}, - placed_as_equipment_result = "nullius-portable-generator-2", + place_as_equipment_result = "nullius-portable-generator-2", subgroup = "solar", order = "nullius-dbc", stack_size = 20 @@ -4344,7 +4342,7 @@ data:extend({ icon = ICONPATH.."equipment/generator-backup.png", icon_size = 64 }}, - placed_as_equipment_result = "nullius-portable-generator-backup", + place_as_equipment_result = "nullius-portable-generator-backup", subgroup = "solar", order = "nullius-dbd", stack_size = 20 @@ -4352,12 +4350,12 @@ data:extend({ { type = "item", name = "nullius-portable-reactor", - localised_description = {"equipment-description.nullius-portable-reactor"}, - icons = {{ - icon = ICONPATH.."equipment/reactor.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-portable-reactor", + localised_description = {"equipment-description.nullius-portable-reactor"}, + icons = {{ + icon = ICONPATH.."equipment/reactor.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-portable-reactor", subgroup = "solar", order = "nullius-dc", stack_size = 20 diff --git a/nullius/prototypes/item/module.lua b/nullius/prototypes/item/module.lua index a2fe94e..8473946 100644 --- a/nullius/prototypes/item/module.lua +++ b/nullius/prototypes/item/module.lua @@ -950,11 +950,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-speed-1", - icons = {{ - icon = EQUIPPATH.."coprocessor/speed1.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-speed-1", + icons = {{ + icon = EQUIPPATH.."coprocessor/speed1.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-speed-1", subgroup = "coprocessors", order = "nullius-bb", stack_size = 10 @@ -962,11 +962,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-speed-2", - icons = {{ - icon = EQUIPPATH.."coprocessor/speed2.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-speed-2", + icons = {{ + icon = EQUIPPATH.."coprocessor/speed2.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-speed-2", subgroup = "coprocessors", order = "nullius-bc", stack_size = 10 @@ -974,11 +974,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-speed-3", - icons = {{ - icon = EQUIPPATH.."coprocessor/speed3.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-speed-3", + icons = {{ + icon = EQUIPPATH.."coprocessor/speed3.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-speed-3", subgroup = "coprocessors", order = "nullius-bd", stack_size = 10 @@ -986,11 +986,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-efficiency-1", - icons = {{ - icon = EQUIPPATH.."coprocessor/efficiency1.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-efficiency-1", + icons = {{ + icon = EQUIPPATH.."coprocessor/efficiency1.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-efficiency-1", subgroup = "coprocessors", order = "nullius-cb", stack_size = 10 @@ -998,11 +998,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-efficiency-2", - icons = {{ - icon = EQUIPPATH.."coprocessor/efficiency2.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-efficiency-2", + icons = {{ + icon = EQUIPPATH.."coprocessor/efficiency2.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-efficiency-2", subgroup = "coprocessors", order = "nullius-cc", stack_size = 10 @@ -1010,11 +1010,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-efficiency-3", - icons = {{ - icon = EQUIPPATH.."coprocessor/efficiency3.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-efficiency-3", + icons = {{ + icon = EQUIPPATH.."coprocessor/efficiency3.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-efficiency-3", subgroup = "coprocessors", order = "nullius-cd", stack_size = 10 @@ -1022,11 +1022,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-productivity-1", - icons = {{ - icon = EQUIPPATH.."coprocessor/productivity1.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-productivity-1", + icons = {{ + icon = EQUIPPATH.."coprocessor/productivity1.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-productivity-1", subgroup = "coprocessors", order = "nullius-db", stack_size = 10 @@ -1034,11 +1034,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-productivity-2", - icons = {{ - icon = EQUIPPATH.."coprocessor/productivity2.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-productivity-2", + icons = {{ + icon = EQUIPPATH.."coprocessor/productivity2.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-productivity-2", subgroup = "coprocessors", order = "nullius-dc", stack_size = 10 @@ -1046,11 +1046,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-productivity-3", - icons = {{ - icon = EQUIPPATH.."coprocessor/productivity3.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-productivity-3", + icons = {{ + icon = EQUIPPATH.."coprocessor/productivity3.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-productivity-3", subgroup = "coprocessors", order = "nullius-dd", stack_size = 10 @@ -1058,11 +1058,11 @@ data:extend({ { type = "item", name = "nullius-coprocessor-quantum", - icons = {{ - icon = EQUIPPATH.."coprocessor/quantum.png", - icon_size = 64 - }}, - placed_as_equipment_result = "nullius-upgrade-coprocessor-quantum", + icons = {{ + icon = EQUIPPATH.."coprocessor/quantum.png", + icon_size = 64 + }}, + place_as_equipment_result = "nullius-upgrade-coprocessor-quantum", subgroup = "coprocessors", order = "nullius-e", stack_size = 10 diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index c29f9ff..598e56d 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -112,6 +112,7 @@ data:extend({ { type = "recipe", name = "nullius-inserter-1", + localised_name = {"entity-name.nullius-inserter-1"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -149,6 +150,7 @@ data:extend({ { type = "recipe", name = "nullius-inserter-2", + localised_name = {"entity-name.nullius-inserter-2"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -216,6 +218,7 @@ data:extend({ { type = "recipe", name = "nullius-inserter-3", + localised_name = {"entity-name.nullius-inserter-3"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -283,6 +286,7 @@ data:extend({ { type = "recipe", name = "nullius-inserter-4", + localised_name = {"entity-name.nullius-inserter-4"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -354,6 +358,7 @@ data:extend({ { type = "recipe", name = "nullius-conveyor-belt-1", + localised_name = {"entity-name.nullius-belt-1"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -393,6 +398,7 @@ data:extend({ { type = "recipe", name = "nullius-underground-belt-1", + localised_name = {"entity-name.nullius-underground-belt-1"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -428,6 +434,7 @@ data:extend({ { type = "recipe", name = "nullius-splitter-1", + localised_name = {"entity-name.nullius-splitter-1"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -476,6 +483,7 @@ data:extend({ { type = "recipe", name = "nullius-conveyor-belt-2", + localised_name = {"entity-name.nullius-belt-2"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -517,6 +525,7 @@ data:extend({ { type = "recipe", name = "nullius-underground-belt-2", + localised_name = {"entity-name.nullius-underground-belt-2"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -554,6 +563,7 @@ data:extend({ { type = "recipe", name = "nullius-splitter-2", + localised_name = {"entity-name.nullius-splitter-2"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -606,6 +616,7 @@ data:extend({ { type = "recipe", name = "nullius-conveyor-belt-3", + localised_name = {"entity-name.nullius-belt-3"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -645,6 +656,7 @@ data:extend({ { type = "recipe", name = "nullius-underground-belt-3", + localised_name = {"entity-name.nullius-underground-belt-3"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -682,6 +694,7 @@ data:extend({ { type = "recipe", name = "nullius-splitter-3", + localised_name = {"entity-name.nullius-splitter-3"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -733,6 +746,7 @@ data:extend({ { type = "recipe", name = "nullius-conveyor-belt-4", + localised_name = {"entity-name.nullius-belt-4"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -774,6 +788,7 @@ data:extend({ { type = "recipe", name = "nullius-underground-belt-4", + localised_name = {"entity-name.nullius-underground-belt-4"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -811,6 +826,7 @@ data:extend({ { type = "recipe", name = "nullius-splitter-4", + localised_name = {"entity-name.nullius-splitter-4"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -862,6 +878,7 @@ data:extend({ { type = "recipe", name = "nullius-rail", + localised_name = {"entity-name.straight-rail"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -902,6 +919,7 @@ data:extend({ { type = "recipe", name = "nullius-train-stop", + localised_name = {"entity-name.train-stop"}, enabled = false, category = "medium-crafting", always_show_made_in = true, @@ -937,6 +955,7 @@ data:extend({ { type = "recipe", name = "nullius-rail-signal", + localised_name = {"entity-name.rail-signal"}, enabled = false, always_show_made_in = true, show_amount_in_title = false, @@ -1013,6 +1032,7 @@ data:extend({ { type = "recipe", name = "nullius-chain-signal", + localised_name = {"entity-name.rail-chain-signal"}, enabled = false, category = "small-crafting", always_show_made_in = true, @@ -1045,7 +1065,7 @@ data:extend({ { type = "recipe", name = "nullius-power-switch", - localised_name = {"item-name.nullius-power-switch"}, + localised_name = {"entity-name.power-switch"}, enabled = false, category = "small-crafting", always_show_made_in = true, From 5b222609d2332c7b977dc9a4b2b6cef9e4a61d38 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 12:54:06 +0200 Subject: [PATCH 013/236] Added display panel and selector combinator to the game --- nullius/TODO_list.txt | 1 - nullius/locale/en/entity.cfg | 1 + nullius/prototypes/item/boxing.lua | 7 ++- nullius/prototypes/item/buildings.lua | 72 +++++++++++++++++++++++++++ nullius/prototypes/override.lua | 11 ++++ nullius/prototypes/technology.lua | 34 ++++++++++++- 6 files changed, 122 insertions(+), 4 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 7a9050c..337c679 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -13,5 +13,4 @@ mods compatibility do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions -selector-combinator and display panel not included in mod update changelog and info.json(min version of dependencies) before publishing \ No newline at end of file diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index 9818c92..6a968fb 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -238,6 +238,7 @@ nullius-substation-3=Substation 3 nullius-logic-circuit=Logic circuit nullius-arithmetic-circuit=Arithmetic circuit nullius-memory-circuit=Memory circuit +nullius-selector-circuit=Selector circuit nullius-antenna=Antenna nullius-extractor-1=Extractor 1 nullius-extractor-2=Extractor 2 diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index 5ba4bf4..61948e2 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -140,6 +140,7 @@ data.raw.item["big-electric-pole"].stack_size = 50 data.raw.item["constant-combinator"].localised_name = {"entity-name.nullius-memory-circuit"} data.raw.item["arithmetic-combinator"].localised_name = {"entity-name.nullius-arithmetic-circuit"} data.raw.item["decider-combinator"].localised_name = {"entity-name.nullius-logic-circuit"} +data.raw.item["selector-combinator"].localised_name = {"entity-name.nullius-selector-circuit"} data.raw.item["programmable-speaker"].localised_name = {"entity-name.nullius-antenna"} data.raw.item["small-lamp"].localised_name = {"entity-name.nullius-lamp-1"} data.raw.item["big-electric-pole"].localised_name = {"entity-name.nullius-pylon-1"} @@ -248,8 +249,10 @@ create_boxed_item("filter-1", "mechanical", "bb") create_boxed_item("logic-circuit", "circuit", "d", "decider-combinator") create_boxed_item("memory-circuit", "circuit", "f", "constant-combinator") create_boxed_item("arithmetic-circuit", "circuit", "e", "arithmetic-combinator") -create_boxed_item("red-wire", "circuit", "b", "nullius-red-wire") -create_boxed_item("green-wire", "circuit", "c", "nullius-green-wire") +create_boxed_item("selector-circuit", "circuit", "gb", "selector-combinator") +create_boxed_item("display-panel", "circuit", "ga", "display-panel") +create_boxed_item("red-wire", "circuit", "b") +create_boxed_item("green-wire", "circuit", "c") create_boxed_item("bpa", "organic", "c") create_boxed_item("acrylic-fiber", "organic", "f") create_boxed_item("carbon-fiber", "organic", "g") diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index 3f9ea02..1e01176 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -2795,6 +2795,78 @@ data:extend({ {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1} } }, + { + type = "recipe", + name = "nullius-selector-circuit", + localised_name = {"entity-name.nullius-selector-circuit"}, + enabled = false, + category = "tiny-crafting", + always_show_made_in = true, + energy_required = 3, + ingredients = { + {"arithmetic-combinator", 1}, + {"display-panel", 1}, + {"nullius-aluminum-wire", 1}, + {"nullius-polycrystalline-silicon", 2}, + }, + results = { + {type = "item", name = "selector-combinator", amount = 1} + } + }, + { + type = "recipe", + name = "nullius-boxed-selector-circuit", + enabled = false, + category = "medium-only-assembly", + subgroup = "boxed-circuit", + always_show_made_in = true, + energy_required = 15, + ingredients = { + {"nullius-box-arithmetic-circuit", 1}, + {"nullius-box-display-panel", 1}, + {"nullius-box-aluminum-wire", 1}, + {"nullius-box-polycrystalline-silicon", 2}, + }, + results = { + {type = "item", name = "nullius-box-selector-circuit", amount = 1} + } + }, + { + type = "recipe", + name = "nullius-display-panel", + localised_name = {"entity-name.display-panel"}, + enabled = false, + category = "tiny-crafting", + always_show_made_in = true, + energy_required = 3, + ingredients = { + {"decider-combinator", 1}, + {"nullius-glass", 1}, + {"nullius-plastic", 1}, + {"nullius-aluminum-wire", 1} + }, + results = { + {type = "item", name = "display-panel", amount = 1} + } + }, + { + type = "recipe", + name = "nullius-boxed-display-panel", + enabled = false, + category = "medium-only-assembly", + subgroup = "boxed-circuit", + always_show_made_in = true, + energy_required = 15, + ingredients = { + {"nullius-box-logic-circuit", 1}, + {"nullius-box-glass", 1}, + {"nullius-box-plastic", 1}, + {"nullius-box-aluminum-wire", 1} + }, + results = { + {type = "item", name = "nullius-box-display-panel", amount = 1} + } + }, { type = "recipe", name = "nullius-antenna", diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 6259734..8aab862 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -35,6 +35,8 @@ data.raw["power-switch"]["power-switch"].localised_description = {"", {"entity-description.power-switch"}, {"entity-description.nullius-power-switch", {"item-name.nullius-insulated-wire"}, "copper-cable"}} data.raw["power-switch"]["power-switch"].minable.mining_time = 0.6 +data.raw.item["display-panel"].order = "nullius-ga" +data.raw["display-panel"]["display-panel"].minable.mining_time = 0.6 data.raw["constant-combinator"]["constant-combinator"].localised_name = {"entity-name.nullius-memory-circuit"} data.raw["constant-combinator"]["constant-combinator"].minable.mining_time = 1 @@ -58,6 +60,15 @@ data.raw.item["decider-combinator"].order = "nullius-e" data.raw["decider-combinator"]["decider-combinator"].energy_source = data.raw["arithmetic-combinator"]["arithmetic-combinator"].energy_source data.raw["decider-combinator"]["decider-combinator"].active_energy_usage = "100W" + +data.raw["selector-combinator"]["selector-combinator"].localised_name = {"entity-name.nullius-selector-circuit"} +data.raw["selector-combinator"]["selector-combinator"].minable.mining_time = 1 +data.raw.item["selector-combinator"].localised_name = {"entity-name.nullius-selector-circuit"} +data.raw.item["selector-combinator"].order = "nullius-gb" +data.raw["selector-combinator"]["selector-combinator"].energy_source = + data.raw["arithmetic-combinator"]["arithmetic-combinator"].energy_source +data.raw["selector-combinator"]["selector-combinator"].active_energy_usage = "100W" + data.raw["programmable-speaker"]["programmable-speaker"].localised_name = {"entity-name.nullius-antenna"} data.raw["programmable-speaker"]["programmable-speaker"].localised_description = {"entity-description.nullius-antenna"} data.raw.item["programmable-speaker"].localised_name = {"entity-name.nullius-antenna"} diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 7a5c4b6..26440cd 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -2392,7 +2392,11 @@ data:extend({ { type = "unlock-recipe", recipe = "nullius-green-wire" - } + }, + { + type = "unlock-recipe", + recipe = "nullius-display-panel" + }, }, unit = { count = 25, @@ -5753,6 +5757,10 @@ data:extend({ { type = "unlock-recipe", recipe = "nullius-optical-cable" + }, + { + type = "unlock-recipe", + recipe = "nullius-selector-circuit" } }, unit = { @@ -5870,6 +5878,14 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-unbox-arithmetic-circuit" }, + { + type = "unlock-recipe", + recipe = "nullius-box-display-panel" + }, + { + type = "unlock-recipe", + recipe = "nullius-unbox-display-panel" + }, { type = "unlock-recipe", recipe = "nullius-box-red-wire" @@ -7717,6 +7733,14 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-unbox-train-stop" }, + { + type = "unlock-recipe", + recipe = "nullius-box-selector-circuit" + }, + { + type = "unlock-recipe", + recipe = "nullius-unbox-selector-circuit" + }, { type = "unlock-recipe", recipe = "nullius-box-underground-belt-1" @@ -8164,6 +8188,14 @@ data:extend({ type = "unlock-recipe", recipe = "nullius-boxed-arithmetic-circuit" }, + { + type = "unlock-recipe", + recipe = "nullius-boxed-display-panel" + }, + { + type = "unlock-recipe", + recipe = "nullius-boxed-selector-circuit" + }, { type = "unlock-recipe", recipe = "nullius-boxed-power-switch" From 51c194c2377cdbb4ad1fa81a15b611c34ddeacf2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 14:28:17 +0200 Subject: [PATCH 014/236] Update ingredients to new format : intermediate.lua --- nullius/prototypes/item/intermediate.lua | 516 +++++++++++------------ 1 file changed, 258 insertions(+), 258 deletions(-) diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 906803b..4213b1f 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -153,9 +153,9 @@ data:extend({ category = "small-crafting", energy_required = 30, ingredients = { - {"nullius-bauxite", 4}, - {"nullius-sandstone", 4}, - {"iron-ore", 4} + {type = "item", name = "nullius-bauxite", amount = 4}, + {type = "item", name = "nullius-sandstone", amount = 4}, + {type = "item", name = "iron-ore", amount = 4} }, results = { {type = "item", name = "nullius-geology-pack", amount = 1} @@ -187,11 +187,11 @@ data:extend({ subgroup = "research-pack-2", energy_required = 8, ingredients = { - {"nullius-crushed-iron-ore", 1}, - {"nullius-crushed-bauxite", 1}, - {"nullius-crushed-limestone", 1}, - {"nullius-sand", 1}, - {"nullius-mineral-dust", 4} + {type = "item", name = "nullius-crushed-iron-ore", amount = 1}, + {type = "item", name = "nullius-crushed-bauxite", amount = 1}, + {type = "item", name = "nullius-crushed-limestone", amount = 1}, + {type = "item", name = "nullius-sand", amount = 1}, + {type = "item", name = "nullius-mineral-dust", amount = 4} }, results = { {type = "item", name = "nullius-geology-pack", amount = 1} @@ -208,11 +208,11 @@ data:extend({ subgroup = "boxed-science", energy_required = 40, ingredients = { - {"nullius-box-crushed-iron-ore", 1}, - {"nullius-box-crushed-bauxite", 1}, - {"nullius-box-crushed-limestone", 1}, - {"nullius-box-sand", 1}, - {"nullius-box-mineral-dust", 4} + {type = "item", name = "nullius-box-crushed-iron-ore", amount = 1}, + {type = "item", name = "nullius-box-crushed-bauxite", amount = 1}, + {type = "item", name = "nullius-box-crushed-limestone", amount = 1}, + {type = "item", name = "nullius-box-sand", amount = 1}, + {type = "item", name = "nullius-box-mineral-dust", amount = 4} }, results = { {type = "item", name = "nullius-box-geology-pack", amount = 1} @@ -256,8 +256,8 @@ data:extend({ order = "nullius-db", energy_required = 15, ingredients = { - {"nullius-motor-1", 1}, - {"nullius-iron-gear", 3} + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-iron-gear", amount = 3} }, results = { {type = "item", name = "nullius-mechanical-pack", amount = 1} @@ -276,8 +276,8 @@ data:extend({ order = "nullius-db", energy_required = 75, ingredients = { - {"nullius-box-motor-1", 1}, - {"nullius-box-iron-gear", 3} + {type = "item", name = "nullius-box-motor-1", amount = 1}, + {type = "item", name = "nullius-box-iron-gear", amount = 3} }, results = { {type = "item", name = "nullius-box-mechanical-pack", amount = 1} @@ -310,8 +310,8 @@ data:extend({ order = "nullius-dc", energy_required = 60, ingredients = { - {"pump", 1}, - {"nullius-steel-cable", 3} + {type = "item", name = "pump", amount = 1}, + {type = "item", name = "nullius-steel-cable", amount = 3} }, results = { {type = "item", name = "nullius-mechanical-pack", amount = 25} @@ -349,8 +349,8 @@ data:extend({ order = "nullius-dc", energy_required = 300, ingredients = { - {"nullius-box-pump-3", 1}, - {"nullius-box-steel-cable", 3} + {type = "item", name = "nullius-box-pump-3", amount = 1}, + {type = "item", name = "nullius-box-steel-cable", amount = 3} }, results = { {type = "item", name = "nullius-box-mechanical-pack", amount = 25} @@ -393,10 +393,10 @@ data:extend({ category = "small-crafting", energy_required = 12, ingredients = { - {"decider-combinator", 1}, - {"small-lamp", 1}, - {"copper-cable", 2}, - {"nullius-capacitor", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "small-lamp", amount = 1}, + {type = "item", name = "copper-cable", amount = 2}, + {type = "item", name = "nullius-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-electrical-pack", amount = 1} @@ -414,10 +414,10 @@ data:extend({ subgroup = "boxed-science", energy_required = 60, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-lamp-1", 1}, - {"nullius-box-insulated-wire", 2}, - {"nullius-box-capacitor", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-lamp-1", amount = 1}, + {type = "item", name = "nullius-box-insulated-wire", amount = 2}, + {type = "item", name = "nullius-box-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-box-electrical-pack", amount = 1} @@ -451,9 +451,9 @@ data:extend({ order = "nullius-ed", energy_required = 160, ingredients = { - {"nullius-processor-2", 1}, - {"nullius-sensor-2", 1}, - {"nullius-battery-2", 1} + {type = "item", name = "nullius-processor-2", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-battery-2", amount = 1} }, results = { {type = "item", name = "nullius-electrical-pack", amount = 50} @@ -492,9 +492,9 @@ data:extend({ order = "nullius-ed", energy_required = 800, ingredients = { - {"nullius-box-processor-2", 1}, - {"nullius-box-sensor-2", 1}, - {"nullius-box-battery-2", 1} + {type = "item", name = "nullius-box-processor-2", amount = 1}, + {type = "item", name = "nullius-box-sensor-2", amount = 1}, + {type = "item", name = "nullius-box-battery-2", amount = 1} }, results = { {type = "item", name = "nullius-box-electrical-pack", amount = 50} @@ -538,14 +538,14 @@ data:extend({ always_show_products = true, energy_required = 900, ingredients = { - {"nullius-stirling-engine-2", 1}, - {"nullius-nanofabricator-1", 1}, - {"nullius-box-underground-belt-3", 1}, - {"nullius-lab-2", 1}, - {"nullius-combustion-chamber-3", 1}, - {"nullius-substation-2", 1}, - {"nullius-drone-launcher-1", 1}, - {"nullius-box-missile-1", 3} + {type = "item", name = "nullius-stirling-engine-2", amount = 1}, + {type = "item", name = "nullius-nanofabricator-1", amount = 1}, + {type = "item", name = "nullius-box-underground-belt-3", amount = 1}, + {type = "item", name = "nullius-lab-2", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-3", amount = 1}, + {type = "item", name = "nullius-substation-2", amount = 1}, + {type = "item", name = "nullius-drone-launcher-1", amount = 1}, + {type = "item", name = "nullius-box-missile-1", amount = 3} }, results = { {type = "item", name = "nullius-box-physics-pack", amount = 25} @@ -586,7 +586,7 @@ data:extend({ enabled = false, category = "ore-crushing", energy_required = 4, - ingredients = {{"copper-ore", 4}}, + ingredients = {{type = "item", name = "copper-ore", amount = 4}}, results = { {type="item", name="nullius-crushed-copper-ore", amount=3}, {type="item", name="stone", amount=1} @@ -600,7 +600,7 @@ data:extend({ category = "ore-crushing", subgroup = "boxed-copper", energy_required = 20, - ingredients = {{"nullius-box-copper-ore", 4}}, + ingredients = {{type = "item", name = "nullius-box-copper-ore", amount = 4}}, results = { {type="item", name="nullius-box-crushed-copper-ore", amount=3}, {type="item", name="nullius-box-stone", amount=1} @@ -770,7 +770,7 @@ data:extend({ enabled = false, category = "ore-crushing", energy_required = 5, - ingredients = {{"iron-ore", 6}}, + ingredients = {{type="item", name="iron-ore", amount = 6}}, results = { {type="item", name="nullius-crushed-iron-ore", amount=5}, {type="item", name="stone", amount=1} @@ -784,7 +784,7 @@ data:extend({ category = "ore-crushing", subgroup = "boxed-iron", energy_required = 25, - ingredients = {{"nullius-box-iron-ore", 6}}, + ingredients = {{type="item", name="nullius-box-iron-ore", amount = 6}}, results = { {type="item", name="nullius-box-crushed-iron-ore", amount=5}, {type="item", name="nullius-box-stone", amount=1} @@ -930,7 +930,7 @@ data:extend({ category = "ore-crushing", order = "nullius-db", energy_required = 4, - ingredients = {{"nullius-limestone", 8}}, + ingredients = {{type="item", name="nullius-limestone", amount = 8}}, results = { {type="item", name="nullius-crushed-limestone", amount=5}, {type="item", name="stone", amount=3} @@ -947,7 +947,7 @@ data:extend({ subgroup = "boxed-calcium", order = "nullius-cb", energy_required = 20, - ingredients = {{"nullius-box-limestone", 8}}, + ingredients = {{type="item", name="nullius-box-limestone", amount = 8}}, results = { {type="item", name="nullius-box-crushed-limestone", amount=5}, {type="item", name="nullius-box-stone", amount=3} @@ -976,7 +976,7 @@ data:extend({ category = "ore-crushing", order = "nullius-dc", energy_required = 7, - ingredients = {{"nullius-limestone", 15}}, + ingredients = {{type="item", name="nullius-limestone", amount = 15}}, results = { {type="item", name="nullius-crushed-limestone", amount=10}, {type="item", name="nullius-gypsum", amount=1}, @@ -1012,7 +1012,7 @@ data:extend({ subgroup = "boxed-calcium", order = "nullius-cc", energy_required = 35, - ingredients = {{"nullius-box-limestone", 15}}, + ingredients = {{type="item", name="nullius-box-limestone", amount = 15}}, results = { {type="item", name="nullius-box-crushed-limestone", amount=10}, {type="item", name="nullius-box-gypsum", amount=1}, @@ -1042,7 +1042,7 @@ data:extend({ category = "ore-crushing", subgroup = "alumina", energy_required = 5, - ingredients = {{"nullius-bauxite", 7}}, + ingredients = {{type="item", name="nullius-bauxite", amount = 7}}, results = { {type="item", name="nullius-crushed-bauxite", amount=5}, {type="item", name="nullius-crushed-iron-ore", amount=1}, @@ -1058,7 +1058,7 @@ data:extend({ subgroup = "boxed-aluminum-1", order = "nullius-b", energy_required = 25, - ingredients = {{"nullius-box-bauxite", 7}}, + ingredients = {{type="item", name="nullius-box-bauxite", amount = 7}}, results = { {type="item", name="nullius-box-crushed-bauxite", amount=5}, {type="item", name="nullius-box-crushed-iron-ore", amount=1}, @@ -1085,7 +1085,7 @@ data:extend({ always_show_made_in = true, allow_decomposition = false, energy_required = 4, - ingredients = {{"nullius-sandstone", 5}}, + ingredients = {{type="item", name="nullius-sandstone", amount = 5}}, results = { {type="item", name="nullius-sand", amount=4}, {type="item", name="stone", amount=1} @@ -1101,7 +1101,7 @@ data:extend({ always_show_made_in = true, allow_decomposition = false, energy_required = 20, - ingredients = {{"nullius-box-sandstone", 5}}, + ingredients = {{type="item", name="nullius-box-sandstone", amount = 5}}, results = { {type="item", name="nullius-box-sand", amount=4}, {type="item", name="nullius-box-stone", amount=1} @@ -1121,7 +1121,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, energy_required = 0.5, - ingredients = {{"stone", 1}}, + ingredients = {{type="item", name="stone", amount = 1}}, results = { {type = "item", name = "nullius-gravel", amount = 1} } @@ -1138,7 +1138,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, energy_required = 2.5, - ingredients = {{"nullius-box-stone", 1}}, + ingredients = {{type="item", name="nullius-box-stone", amount = 1}}, results = { {type = "item", name = "nullius-box-gravel", amount = 1} } @@ -1165,7 +1165,7 @@ data:extend({ category = "ore-crushing", order = "nullius-nb", energy_required = 3, - ingredients = {{"nullius-gravel", 6}}, + ingredients = {{type="item", name="nullius-gravel", amount = 6}}, results = { {type = "item", name = "nullius-mineral-dust", amount = 5} } @@ -1181,7 +1181,7 @@ data:extend({ subgroup = "boxed-silicon", order = "nullius-nb", energy_required = 15, - ingredients = {{"nullius-box-gravel", 6}}, + ingredients = {{type="item", name="nullius-box-gravel", amount = 6}}, results = { {type = "item", name = "nullius-box-mineral-dust", amount = 5} } @@ -1211,7 +1211,7 @@ data:extend({ subgroup = "masonry-material", order = "nullius-nc", energy_required = 6, - ingredients = {{"nullius-gravel", 8}}, + ingredients = {{type="item", name="nullius-gravel", amount = 8}}, results = { {type="item", name="nullius-sand", amount=3}, {type="item", name="nullius-mineral-dust", amount=6} @@ -1248,7 +1248,7 @@ data:extend({ subgroup = "boxed-silicon", order = "nullius-nc", energy_required = 30, - ingredients = {{"nullius-box-gravel", 8}}, + ingredients = {{type="item", name="nullius-box-gravel", amount = 8}}, results = { {type="item", name="nullius-box-sand", amount=3}, {type="item", name="nullius-box-mineral-dust", amount=6} @@ -1281,7 +1281,7 @@ data:extend({ order = "nullius-n", no_productivity = true, energy_required = 2, - ingredients = {{"nullius-crushed-iron-ore", 4}}, + ingredients = {{type="item", name="nullius-crushed-iron-ore", amount = 4}}, results = { {type = "item", name = "nullius-gravel", amount = 3} } @@ -1316,7 +1316,7 @@ data:extend({ subgroup = "boxed-aluminum-1", order = "nullius-n", energy_required = 10, - ingredients = {{"nullius-box-crushed-iron-ore", 4}}, + ingredients = {{type="item", name="nullius-box-crushed-iron-ore", amount = 4}}, results = { {type = "item", name = "nullius-box-gravel", amount = 3} } @@ -1346,7 +1346,7 @@ data:extend({ subgroup = "alumina", order = "nullius-n", energy_required = 2, - ingredients = {{"nullius-crushed-bauxite", 5}}, + ingredients = {{type="item", name="nullius-crushed-bauxite", amount = 5}}, results = { {type = "item", name = "nullius-mineral-dust", amount = 4} } @@ -1382,7 +1382,7 @@ data:extend({ subgroup = "boxed-aluminum-1", order = "nullius-l", energy_required = 10, - ingredients = {{"nullius-box-crushed-bauxite", 5}}, + ingredients = {{type="item", name="nullius-box-crushed-bauxite", amount = 5}}, results = { {type = "item", name = "nullius-box-mineral-dust", amount = 4} } @@ -1413,7 +1413,7 @@ data:extend({ subgroup = "titanium-product", order = "nullius-xr", energy_required = 5, - ingredients = {{"nullius-rutile", 8}}, + ingredients = {{type="item", name="nullius-rutile", amount = 8}}, results = { {type = "item", name = "nullius-mineral-dust", amount = 7} } @@ -1450,7 +1450,7 @@ data:extend({ subgroup = "boxed-titanium", order = "nullius-xr", energy_required = 25, - ingredients = {{"nullius-box-rutile", 8}}, + ingredients = {{type="item", name="nullius-box-rutile", amount = 8}}, results = { {type = "item", name = "nullius-box-mineral-dust", amount = 7} } @@ -1479,7 +1479,7 @@ data:extend({ subgroup = "calcium-product", order = "nullius-m", energy_required = 2, - ingredients = {{"nullius-crushed-limestone", 3}}, + ingredients = {{type="item", name="nullius-crushed-limestone", amount = 3}}, results = { {type = "item", name = "nullius-mineral-dust", amount = 3} } @@ -1513,7 +1513,7 @@ data:extend({ subgroup = "boxed-calcium", order = "nullius-y", energy_required = 10, - ingredients = {{"nullius-box-crushed-limestone", 3}}, + ingredients = {{type="item", name="nullius-box-crushed-limestone", amount = 3}}, results = { {type = "item", name = "nullius-box-mineral-dust", amount = 3} } @@ -1538,7 +1538,7 @@ data:extend({ order = "nullius-eb", energy_required = 8, ingredients = { - {"iron-ore", 5} + {type="item", name="iron-ore", amount = 5} }, results = { {type="item", name="nullius-iron-ingot", amount=2}, @@ -1569,8 +1569,8 @@ data:extend({ order = "nullius-ec", energy_required = 18, ingredients = { - {"nullius-crushed-iron-ore", 11}, - {"nullius-graphite", 1} + {type="item", name="nullius-crushed-iron-ore", amount = 11}, + {type="item", name="nullius-graphite", amount = 1} }, results = { {type="item", name="nullius-iron-ingot", amount=8}, @@ -1601,9 +1601,9 @@ data:extend({ order = "nullius-ed", energy_required = 20, ingredients = { - {"nullius-iron-oxide", 8}, - {"nullius-crushed-limestone", 2}, - {"nullius-graphite", 1} + {type="item", name="nullius-iron-oxide", amount = 8}, + {type="item", name="nullius-crushed-limestone", amount = 2}, + {type="item", name="nullius-graphite", amount = 1} }, results = { {type="item", name="nullius-iron-ingot", amount=10}, @@ -1622,9 +1622,9 @@ data:extend({ order = "nullius-ed", energy_required = 20, ingredients = { - {"nullius-box-iron-oxide", 8}, - {"nullius-box-crushed-limestone", 2}, - {"nullius-box-graphite", 1} + {type="item", name="nullius-box-iron-oxide", amount = 8}, + {type="item", name="nullius-box-crushed-limestone", amount = 2}, + {type="item", name="nullius-box-graphite", amount = 1} }, results = { {type="item", name="nullius-box-iron-ingot", amount=10}, @@ -1658,9 +1658,9 @@ data:extend({ order = "nullius-ee", energy_required = 6, ingredients = { - {"nullius-iron-oxide", 17}, - {"nullius-aluminum-ingot", 12}, - {"nullius-graphite", 1} + {type="item", name="nullius-iron-oxide", amount = 17}, + {type="item", name="nullius-aluminum-ingot", amount = 12}, + {type="item", name="nullius-graphite", amount = 1} }, results = { {type="item", name="nullius-iron-ingot", amount=21}, @@ -1699,9 +1699,9 @@ data:extend({ order = "nullius-ee", energy_required = 25, ingredients = { - {"nullius-box-iron-oxide", 13}, - {"nullius-box-aluminum-ingot", 10}, - {"nullius-box-graphite", 1} + {type="item", name="nullius-box-iron-oxide", amount = 13}, + {type="item", name="nullius-box-aluminum-ingot", amount = 10}, + {type="item", name="nullius-box-graphite", amount = 1} }, results = { {type="item", name="nullius-box-iron-ingot", amount=16}, @@ -1991,7 +1991,7 @@ data:extend({ enabled = false, category = "vent-smelting", energy_required = 5, - ingredients = {{"nullius-crushed-limestone", 3}}, + ingredients = {{type="item", name="nullius-crushed-limestone", amount = 3}}, results = { {type="item", name="nullius-lime", amount=2}, {type="fluid", name="nullius-carbon-dioxide", amount=40} @@ -2005,7 +2005,7 @@ data:extend({ category = "bulk-smelting", subgroup = "boxed-calcium", energy_required = 5, - ingredients = {{"nullius-box-crushed-limestone", 3}}, + ingredients = {{type="item", name="nullius-box-crushed-limestone", amount = 3}}, results = { {type="item", name="nullius-box-lime", amount=2}, {type="fluid", name="nullius-carbon-dioxide", amount=200} @@ -2104,7 +2104,7 @@ data:extend({ category = "vent-smelting", order = "nullius-bc", energy_required = 3, - ingredients = {{"nullius-gypsum", 2}}, + ingredients = {{type="item", name="nullius-gypsum", amount = 2}}, results = { {type="item", name="nullius-lime", amount=1}, {type="fluid", name="nullius-sulfur-dioxide", amount=10} @@ -2138,7 +2138,7 @@ data:extend({ subgroup = "boxed-calcium", order = "nullius-dc", energy_required = 3, - ingredients = {{"nullius-box-gypsum", 2}}, + ingredients = {{type="item", name="nullius-box-gypsum", amount = 2}}, results = { {type="item", name="nullius-box-lime", amount=1}, {type="fluid", name="nullius-sulfur-dioxide", amount=60} @@ -2884,7 +2884,7 @@ data:extend({ category = "machine-casting", order = "nullius-bb", energy_required = 30, - ingredients = {{"nullius-silica", 3}}, + ingredients = {{type="item", name="nullius-silica", amount = 3}}, results = { {type = "item", name = "nullius-glass", amount = 1} } @@ -2913,9 +2913,9 @@ data:extend({ order = "nullius-bc", energy_required = 36, ingredients = { - {"nullius-silica", 9}, - {"nullius-soda-ash", 2}, - {"nullius-lime", 1} + {type="item", name="nullius-silica", amount = 9}, + {type="item", name="nullius-soda-ash", amount = 2}, + {type="item", name="nullius-lime", amount = 1} }, results = { {type="item", name="nullius-glass", amount=6}, @@ -2947,11 +2947,11 @@ data:extend({ order = "nullius-bd", energy_required = 45, ingredients = { - {"nullius-silica", 12}, - {"nullius-alumina", 3}, - {"nullius-lime", 3}, - {"nullius-soda-ash", 3}, - {"nullius-sodium-sulfate", 1} + {type="item", name="nullius-silica", amount = 12}, + {type="item", name="nullius-alumina", amount = 3}, + {type="item", name="nullius-lime", amount = 3}, + {type="item", name="nullius-soda-ash", amount = 3}, + {type="item", name="nullius-sodium-sulfate", amount = 1} }, results = { {type="item", name="nullius-glass", amount=16}, @@ -2969,11 +2969,11 @@ data:extend({ subgroup = "boxed-glass", energy_required = 225, ingredients = { - {"nullius-box-silica", 12}, - {"nullius-box-alumina", 3}, - {"nullius-box-lime", 3}, - {"nullius-box-soda-ash", 3}, - {"nullius-box-sodium-sulfate", 1} + {type="item", name="nullius-box-silica", amount = 12}, + {type="item", name="nullius-box-alumina", amount = 3}, + {type="item", name="nullius-box-lime", amount = 3}, + {type="item", name="nullius-box-soda-ash", amount = 3}, + {type="item", name="nullius-box-sodium-sulfate", amount = 1} }, results = { {type="item", name="nullius-box-glass", amount=16}, @@ -3003,10 +3003,10 @@ data:extend({ category = "dry-smelting", energy_required = 50, ingredients = { - {"nullius-silica", 5}, - {"nullius-alumina", 3}, - {"nullius-lime", 2}, - {"nullius-acid-boric", 1} + {type="item", name="nullius-silica", amount = 5}, + {type="item", name="nullius-alumina", amount = 3}, + {type="item", name="nullius-lime", amount = 2}, + {type="item", name="nullius-acid-boric", amount = 1} }, results = { {type = "item", name = "nullius-hard-glass", amount = 4} @@ -3022,10 +3022,10 @@ data:extend({ subgroup = "boxed-glass", energy_required = 50, ingredients = { - {"nullius-box-silica", 5}, - {"nullius-box-alumina", 3}, - {"nullius-box-lime", 2}, - {"nullius-box-acid-boric", 1} + {type="item", name="nullius-box-silica", amount = 5}, + {type="item", name="nullius-box-alumina", amount = 3}, + {type="item", name="nullius-box-lime", amount = 2}, + {type="item", name="nullius-box-acid-boric", amount = 1} }, results = { {type = "item", name = "nullius-box-hard-glass", amount = 4} @@ -3207,7 +3207,7 @@ data:extend({ category = "machine-casting", energy_required = 4, ingredients = { - {"nullius-iron-ingot", 4} + {type = "item", name = "nullius-iron-ingot", amount = 4} }, results = { {type = "item", name = "nullius-iron-rod", amount = 5} @@ -3272,7 +3272,7 @@ data:extend({ category = "machine-casting", energy_required = 5, ingredients = { - {"nullius-steel-ingot", 4} + {type = "item", name = "nullius-steel-ingot", amount = 4} }, results = { {type = "item", name = "nullius-steel-rod", amount = 5} @@ -3335,7 +3335,7 @@ data:extend({ category = "machine-casting", energy_required = 4, ingredients = { - {"nullius-aluminum-ingot", 4} + {type = "item", name = "nullius-aluminum-ingot", amount = 4} }, results = { {type = "item", name = "nullius-aluminum-rod", amount = 5} @@ -3407,7 +3407,7 @@ data:extend({ category = "machine-casting", energy_required = 2, ingredients = { - {"nullius-steel-ingot", 3} + {type = "item", name = "nullius-steel-ingot", amount = 3} }, results = { {type = "item", name = "nullius-steel-beam", amount = 2} @@ -3423,7 +3423,7 @@ data:extend({ subgroup = "boxed-steel", energy_required = 10, ingredients = { - {"nullius-box-steel-ingot", 3} + {type = "item", name = "nullius-box-steel-ingot", amount = 3} }, results = { {type = "item", name = "nullius-box-steel-beam", amount = 2} @@ -3458,7 +3458,7 @@ data:extend({ category = "machine-casting", energy_required = 4, ingredients = { - {"nullius-aluminum-ingot", 4} + {type = "item", name = "nullius-aluminum-ingot", amount = 4} }, results = { {type = "item", name = "nullius-aluminum-plate", amount = 3} @@ -3521,7 +3521,7 @@ data:extend({ category = "machine-casting", energy_required = 3, ingredients = { - {"nullius-iron-ingot", 4} + {type = "item", name = "nullius-iron-ingot", amount = 4} }, results = { {type = "item", name = "nullius-iron-plate", amount = 3} @@ -3586,7 +3586,7 @@ data:extend({ category = "machine-casting", energy_required = 4, ingredients = { - {"nullius-steel-ingot", 4} + {type = "item", name = "nullius-steel-ingot", amount = 4} }, results = { {type = "item", name = "nullius-steel-plate", amount = 3} @@ -3691,7 +3691,7 @@ data:extend({ always_show_products = true, energy_required = 5, ingredients = { - {"nullius-iron-plate", 5} + {type = "item", name = "nullius-iron-plate", amount = 5} }, results = { {type = "item", name = "nullius-iron-sheet", amount = 6} @@ -3761,7 +3761,7 @@ data:extend({ always_show_products = true, energy_required = 5, ingredients = { - {"nullius-steel-plate", 5} + {type = "item", name = "nullius-steel-plate", amount = 5} }, results = { {type = "item", name = "nullius-steel-sheet", amount = 6} @@ -3831,7 +3831,7 @@ data:extend({ always_show_products = true, energy_required = 4, ingredients = { - {"nullius-aluminum-plate", 4} + {type = "item", name = "nullius-aluminum-plate", amount = 4} }, results = { {type = "item", name = "nullius-aluminum-sheet", amount = 5} @@ -3913,8 +3913,8 @@ data:extend({ always_show_products = true, energy_required = 4, ingredients = { - {"nullius-iron-plate", 2}, - {"nullius-iron-rod", 1} + {type = "item", name = "nullius-iron-plate", amount = 2}, + {type = "item", name = "nullius-iron-rod", amount = 1} }, results = { {type = "item", name = "nullius-iron-gear", amount = 2} @@ -3931,8 +3931,8 @@ data:extend({ always_show_products = true, energy_required = 20, ingredients = { - {"nullius-box-iron-plate", 2}, - {"nullius-box-iron-rod", 1} + {type = "item", name = "nullius-box-iron-plate", amount = 2}, + {type = "item", name = "nullius-box-iron-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-iron-gear", amount = 2} @@ -3958,8 +3958,8 @@ data:extend({ always_show_products = true, energy_required = 6, ingredients = { - {"nullius-steel-plate", 2}, - {"nullius-steel-rod", 1} + {type = "item", name = "nullius-steel-plate", amount = 2}, + {type = "item", name = "nullius-steel-rod", amount = 1} }, results = { {type = "item", name = "nullius-steel-gear", amount = 2} @@ -3976,8 +3976,8 @@ data:extend({ always_show_products = true, energy_required = 30, ingredients = { - {"nullius-box-steel-plate", 2}, - {"nullius-box-steel-rod", 1} + {type = "item", name = "nullius-box-steel-plate", amount = 2}, + {type = "item", name = "nullius-box-steel-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-steel-gear", amount = 2} @@ -4075,7 +4075,7 @@ data:extend({ always_show_products = true, energy_required = 4, ingredients = { - {"nullius-iron-rod", 3} + {type = "item", name = "nullius-iron-rod", amount = 3} }, results = { {type = "item", name = "nullius-iron-wire", amount = 4} @@ -4146,7 +4146,7 @@ data:extend({ always_show_products = true, energy_required = 5, ingredients = { - {"nullius-aluminum-rod", 5} + {type = "item", name = "nullius-aluminum-rod", amount = 5} }, results = { {type = "item", name = "nullius-aluminum-wire", amount = 7} @@ -4319,8 +4319,8 @@ data:extend({ always_show_products = true, energy_required = 6, ingredients = { - {"nullius-aluminum-wire", 3}, - {"nullius-rubber", 2} + {type = "item", name = "nullius-aluminum-wire", amount = 3}, + {type = "item", name = "nullius-rubber", amount = 2} }, results = { {type = "item", name = "copper-cable", amount = 4} @@ -4338,8 +4338,8 @@ data:extend({ always_show_products = true, energy_required = 30, ingredients = { - {"nullius-box-aluminum-wire", 3}, - {"nullius-box-rubber", 2} + {type = "item", name = "nullius-box-aluminum-wire", amount = 3}, + {type = "item", name = "nullius-box-rubber", amount = 2} }, results = { {type = "item", name = "nullius-box-insulated-wire", amount = 4} @@ -4370,8 +4370,8 @@ data:extend({ category = "small-crafting", energy_required = 4, ingredients = { - {"nullius-copper-wire", 1}, - {"nullius-rubber", 2} + {type = "item", name = "nullius-copper-wire", amount = 1}, + {type = "item", name = "nullius-rubber", amount = 2} }, results = { {type = "item", name = "copper-cable", amount = 6} @@ -4408,8 +4408,8 @@ data:extend({ subgroup = "boxed-electrical", energy_required = 20, ingredients = { - {"nullius-box-copper-wire", 1}, - {"nullius-box-rubber", 2} + {type = "item", name = "nullius-box-copper-wire", amount = 1}, + {type = "item", name = "nullius-box-rubber", amount = 2} }, results = { {type = "item", name = "nullius-box-insulated-wire", amount = 6} @@ -4501,10 +4501,10 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-iron-wire", 2}, - {"nullius-iron-plate", 1}, - {"nullius-plastic", 1}, - {"nullius-iron-rod", 1} + {type = "item", name = "nullius-iron-wire", amount = 2}, + {type = "item", name = "nullius-iron-plate", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 1}, + {type = "item", name = "nullius-iron-rod", amount = 1} }, results = { {type = "item", name = "nullius-motor-1", amount = 1} @@ -4520,9 +4520,9 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-insulated-wire", 1}, - {"nullius-box-iron-plate", 1}, - {"nullius-box-iron-rod", 1} + {type = "item", name = "nullius-box-insulated-wire", amount = 1}, + {type = "item", name = "nullius-box-iron-plate", amount = 1}, + {type = "item", name = "nullius-box-iron-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-motor-1", amount = 1} @@ -4630,7 +4630,7 @@ data:extend({ category = "dry-smelting", energy_required = 15, ingredients = { - {"nullius-silica", 3} + {type = "item", name = "nullius-silica", amount = 3} }, results = { {type = "item", name = "nullius-refractory-brick", amount = 5} @@ -4660,7 +4660,7 @@ data:extend({ category = "dry-smelting", energy_required = 8, ingredients = { - {"nullius-ceramic-powder", 2} + {type = "item", name = "nullius-ceramic-powder", amount = 2} }, results = { {type = "item", name = "nullius-refractory-brick", amount = 12} @@ -4676,7 +4676,7 @@ data:extend({ subgroup = "boxed-terrain", energy_required = 8, ingredients = { - {"nullius-box-ceramic-powder", 2} + {type = "item", name = "nullius-box-ceramic-powder", amount = 2} }, results = { {type = "item", name = "nullius-box-refractory-brick", amount = 6} @@ -4706,7 +4706,7 @@ data:extend({ category = "machine-casting", energy_required = 50, ingredients = { - {"nullius-silica", 12} + {type = "item", name = "nullius-silica", amount = 12} }, results = { {type = "item", name = "nullius-crucible", amount = 1} @@ -4891,7 +4891,7 @@ data:extend({ order = "nullius-eb", energy_required = 2, ingredients = { - {"nullius-aluminum-hydroxide", 4} + {type = "item", name = "nullius-aluminum-hydroxide", amount = 4} }, results = { {type = "item", name = "nullius-alumina", amount = 3} @@ -4992,8 +4992,8 @@ data:extend({ order = "nullius-gb", energy_required = 10, ingredients = { - {"nullius-alumina", 9}, - {"nullius-graphite", 5} + {type = "item", name = "nullius-alumina", amount = 9}, + {type = "item", name = "nullius-graphite", amount = 5} }, results = { {type="item", name="nullius-aluminum-ingot", amount=3}, @@ -5024,8 +5024,8 @@ data:extend({ order = "nullius-gc", energy_required = 25, ingredients = { - {"nullius-aluminum-carbide", 5}, - {"nullius-alumina", 4} + {type = "item", name = "nullius-aluminum-carbide", amount = 5}, + {type = "item", name = "nullius-alumina", amount = 4} }, results = { {type="item", name="nullius-aluminum-ingot", amount=9}, @@ -5061,8 +5061,8 @@ data:extend({ order = "nullius-gbb", energy_required = 10, ingredients = { - {"nullius-box-alumina", 9}, - {"nullius-box-graphite", 5} + {type = "item", name = "nullius-box-alumina", amount = 9}, + {type = "item", name = "nullius-box-graphite", amount = 5} }, results = { {type="item", name="nullius-box-aluminum-ingot", amount=3}, @@ -5080,8 +5080,8 @@ data:extend({ order = "nullius-gc", energy_required = 25, ingredients = { - {"nullius-box-aluminum-carbide", 5}, - {"nullius-box-alumina", 4} + {type = "item", name = "nullius-box-aluminum-carbide", amount = 5}, + {type = "item", name = "nullius-box-alumina", amount = 4} }, results = { {type="item", name="nullius-box-aluminum-ingot", amount=9}, @@ -5211,8 +5211,8 @@ data:extend({ order = "nullius-hb", energy_required = 2, ingredients = { - {"nullius-aluminum-powder", 20}, - {"nullius-graphite", 2} + {type = "item", name = "nullius-aluminum-powder", amount = 20}, + {type = "item", name = "nullius-graphite", amount = 2} }, results = { {type = "item", name = "nullius-aluminum-carbide", amount = 3} @@ -5250,8 +5250,8 @@ data:extend({ order = "nullius-gbc", energy_required = 2, ingredients = { - {"nullius-box-aluminum-powder", 20}, - {"nullius-box-graphite", 2} + {type = "item", name = "nullius-box-aluminum-powder", amount = 20}, + {type = "item", name = "nullius-box-graphite", amount = 2} }, results = { {type = "item", name = "nullius-box-aluminum-carbide", amount = 3} @@ -5268,8 +5268,8 @@ data:extend({ category = "dry-smelting", energy_required = 10, ingredients = { - {"nullius-silica", 5}, - {"nullius-graphite", 2} + {type = "item", name = "nullius-silica", amount = 5}, + {type = "item", name = "nullius-graphite", amount = 2} }, results = { {type = "item", name = "nullius-silicon-ingot", amount = 3} @@ -6664,12 +6664,12 @@ data:extend({ always_show_products = true, energy_required = 5, ingredients = { - {"arithmetic-combinator", 1}, - {"nullius-glass", 1}, - {"small-lamp", 1}, - {"nullius-capacitor", 1}, - {"nullius-polycrystalline-silicon", 1}, - {"nullius-red-wire", 2} + {type = "item", name = "arithmetic-combinator", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "small-lamp", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 1}, + {type = "item", name = "nullius-polycrystalline-silicon", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 2} }, results = { {type = "item", name = "nullius-sensor-1", amount = 2} @@ -6687,12 +6687,12 @@ data:extend({ always_show_products = true, energy_required = 25, ingredients = { - {"nullius-box-arithmetic-circuit", 1}, - {"nullius-box-glass", 1}, - {"nullius-box-lamp-1", 1}, - {"nullius-box-capacitor", 1}, - {"nullius-box-polycrystalline-silicon", 1}, - {"nullius-box-red-wire", 2} + {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1}, + {type = "item", name = "nullius-box-glass", amount = 1}, + {type = "item", name = "nullius-box-lamp-1", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 1}, + {type = "item", name = "nullius-box-polycrystalline-silicon", amount = 1}, + {type = "item", name = "nullius-box-red-wire", amount = 2} }, results = { {type = "item", name = "nullius-box-sensor-1", amount = 2} @@ -7487,13 +7487,13 @@ data:extend({ category = "tiny-crafting", energy_required = 15, ingredients = { - {"nullius-turbine-open-2", 1}, - {"nullius-capacitor", 4}, - {"bob-turbo-inserter", 3}, - {"constant-combinator", 3}, - {"programmable-speaker", 2}, - {"nullius-sensor-1", 2}, - {"nullius-aluminum-plate", 3} + {type = "item", name = "nullius-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 4}, + {type = "item", name = "bob-turbo-inserter", amount = 3}, + {type = "item", name = "constant-combinator", amount = 3}, + {type = "item", name = "programmable-speaker", amount = 2}, + {type = "item", name = "nullius-sensor-1", amount = 2}, + {type = "item", name = "nullius-aluminum-plate", amount = 3} }, results = { {type = "item", name = "nullius-robot-frame-1", amount = 2} @@ -7511,13 +7511,13 @@ data:extend({ order = "nullius-gb", energy_required = 75, ingredients = { - {"nullius-box-turbine-open-2", 1}, - {"nullius-box-capacitor", 4}, - {"nullius-box-inserter-2", 3}, - {"nullius-box-memory-circuit", 3}, - {"nullius-box-antenna", 2}, - {"nullius-box-sensor-1", 2}, - {"nullius-box-aluminum-plate", 3} + {type = "item", name = "nullius-box-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 4}, + {type = "item", name = "nullius-box-inserter-2", amount = 3}, + {type = "item", name = "nullius-box-memory-circuit", amount = 3}, + {type = "item", name = "nullius-box-antenna", amount = 2}, + {type = "item", name = "nullius-box-sensor-1", amount = 2}, + {type = "item", name = "nullius-box-aluminum-plate", amount = 3} }, results = { {type = "item", name = "nullius-box-robot-frame-1", amount = 2} @@ -7537,12 +7537,12 @@ data:extend({ order = "nullius-cbl", energy_required = 12, ingredients = { - {"nullius-turbine-open-1", 1}, - {"nullius-capacitor", 2}, - {"bob-turbo-inserter", 2}, - {"constant-combinator", 2}, - {"programmable-speaker", 1}, - {"nullius-aluminum-sheet", 3} + {type = "item", name = "nullius-turbine-open-1", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 2}, + {type = "item", name = "bob-turbo-inserter", amount = 2}, + {type = "item", name = "constant-combinator", amount = 2}, + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "nullius-aluminum-sheet", amount = 3} }, results = { {type = "item", name = "nullius-robot-frame-1", amount = 2} @@ -7563,12 +7563,12 @@ data:extend({ order = "nullius-gbl", energy_required = 60, ingredients = { - {"nullius-box-turbine-open-1", 1}, - {"nullius-box-capacitor", 2}, - {"nullius-box-inserter-2", 2}, - {"nullius-box-memory-circuit", 2}, - {"nullius-box-antenna", 1}, - {"nullius-box-aluminum-sheet", 3} + {type = "item", name = "nullius-box-turbine-open-1", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 2}, + {type = "item", name = "nullius-box-inserter-2", amount = 2}, + {type = "item", name = "nullius-box-memory-circuit", amount = 2}, + {type = "item", name = "nullius-box-antenna", amount = 1}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 3} }, results = { {type = "item", name = "nullius-box-robot-frame-1", amount = 2} @@ -7584,11 +7584,11 @@ data:extend({ category = "tiny-crafting", energy_required = 10, ingredients = { - {"nullius-robot-frame-1", 1}, - {"nullius-levitation-field-1", 1}, - {"nullius-battery-1", 2}, - {"nullius-night-vision-1", 1}, - {"nullius-fiberglass", 3} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-levitation-field-1", amount = 1}, + {type = "item", name = "nullius-battery-1", amount = 2}, + {type = "item", name = "nullius-night-vision-1", amount = 1}, + {type = "item", name = "nullius-fiberglass", amount = 3} }, results = { {type = "item", name = "nullius-robot-frame-2", amount = 1} @@ -7606,11 +7606,11 @@ data:extend({ order = "nullius-gc", energy_required = 50, ingredients = { - {"nullius-box-robot-frame-1", 1}, - {"nullius-box-levitation-field-1", 1}, - {"nullius-box-battery-1", 2}, - {"nullius-box-night-vision-1", 1}, - {"nullius-box-fiberglass", 3} + {type = "item", name = "nullius-box-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-box-levitation-field-1",amount = 1}, + {type = "item", name = "nullius-box-battery-1", amount = 2}, + {type = "item", name = "nullius-box-night-vision-1", amount = 1}, + {type = "item", name = "nullius-box-fiberglass", amount = 3} }, results = { {type = "item", name = "nullius-box-robot-frame-2", amount = 1} @@ -7630,11 +7630,11 @@ data:extend({ order = "nullius-ccl", energy_required = 15, ingredients = { - {"nullius-robot-frame-1", 1}, - {"nullius-turbine-open-2", 1}, - {"nullius-battery-1", 3}, - {"nullius-sensor-1", 2}, - {"nullius-fiberglass", 5} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-battery-1", amount = 3}, + {type = "item", name = "nullius-sensor-1", amount = 2}, + {type = "item", name = "nullius-fiberglass", amount = 5} }, results = { {type = "item", name = "nullius-robot-frame-2", amount = 2} @@ -7655,11 +7655,11 @@ data:extend({ order = "nullius-gcl", energy_required = 75, ingredients = { - {"nullius-box-robot-frame-1", 1}, - {"nullius-box-turbine-open-2", 1}, - {"nullius-box-battery-1", 3}, - {"nullius-box-sensor-1", 2}, - {"nullius-box-fiberglass", 5} + {type = "item", name = "nullius-box-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-box-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-box-battery-1", amount = 3}, + {type = "item", name = "nullius-box-sensor-1", amount = 2}, + {type = "item", name = "nullius-box-fiberglass", amount = 5} }, results = { {type = "item", name = "nullius-box-robot-frame-2", amount = 2} @@ -7675,12 +7675,12 @@ data:extend({ category = "tiny-crafting", energy_required = 25, ingredients = { - {"nullius-robot-frame-2", 2}, - {"nullius-turbine-open-3", 1}, - {"nullius-battery-2", 2}, - {"nullius-carbon-composite", 5}, - {"nullius-relay-3", 1}, - {"bob-express-bulk-inserter", 3} + {type = "item", name = "nullius-robot-frame-2", amount = 2}, + {type = "item", name = "nullius-turbine-open-3", amount = 1}, + {type = "item", name = "nullius-battery-2", amount = 2}, + {type = "item", name = "nullius-carbon-composite", amount = 5}, + {type = "item", name = "nullius-relay-3", amount = 1}, + {type = "item", name = "bob-express-bulk-inserter", amount = 3} }, results = { {type = "item", name = "nullius-robot-frame-3", amount = 2} @@ -7698,12 +7698,12 @@ data:extend({ order = "nullius-gd", energy_required = 125, ingredients = { - {"nullius-box-robot-frame-2", 2}, - {"nullius-box-turbine-open-3", 1}, - {"nullius-box-battery-2", 2}, - {"nullius-box-carbon-composite", 5}, - {"nullius-box-relay-3", 1}, - {"nullius-box-inserter-4", 3} + {type = "item", name = "nullius-box-robot-frame-2", amount = 2}, + {type = "item", name = "nullius-box-turbine-open-3", amount = 1}, + {type = "item", name = "nullius-box-battery-2", amount = 2}, + {type = "item", name = "nullius-box-carbon-composite", amount = 5}, + {type = "item", name = "nullius-box-relay-3", amount = 1}, + {type = "item", name = "nullius-box-inserter-4", amount = 3} }, results = { {type = "item", name = "nullius-box-robot-frame-3", amount = 2} @@ -7719,12 +7719,12 @@ data:extend({ category = "tiny-crafting", energy_required = 30, ingredients = { - {"nullius-robot-frame-3", 1}, - {"nullius-titanium-sheet", 6}, - {"nullius-copper-wire", 4}, - {"nullius-night-vision-3", 1}, - {"nullius-levitation-field-2", 1}, - {"nullius-processor-3", 2} + {type = "item", name = "nullius-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-titanium-sheet", amount = 6}, + {type = "item", name = "nullius-copper-wire", amount = 4}, + {type = "item", name = "nullius-night-vision-3", amount = 1}, + {type = "item", name = "nullius-levitation-field-2", amount = 1}, + {type = "item", name = "nullius-processor-3", amount = 2} }, results = { {type = "item", name = "nullius-robot-frame-4", amount = 1} @@ -7742,12 +7742,12 @@ data:extend({ order = "nullius-ge", energy_required = 150, ingredients = { - {"nullius-box-robot-frame-3", 1}, - {"nullius-box-titanium-sheet", 6}, - {"nullius-box-copper-wire", 4}, - {"nullius-night-vision-3", 5}, - {"nullius-levitation-field-2", 5}, - {"nullius-box-processor-3", 2} + {type = "item", name = "nullius-box-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-box-titanium-sheet", amount = 6}, + {type = "item", name = "nullius-box-copper-wire", amount = 4}, + {type = "item", name = "nullius-night-vision-3", amount = 5}, + {type = "item", name = "nullius-levitation-field-2", amount = 5}, + {type = "item", name = "nullius-box-processor-3", amount = 2} }, results = { {type = "item", name = "nullius-box-robot-frame-4", amount = 1} @@ -7919,10 +7919,10 @@ data:extend({ category = "medium-assembly", energy_required = 6, ingredients = { - {"nullius-gypsum", 3}, - {"nullius-glass-fiber", 2}, - {"nullius-plastic", 2}, - {"nullius-textile", 1} + {type = "item", name = "nullius-gypsum", amount = 3}, + {type = "item", name = "nullius-glass-fiber", amount = 2}, + {type = "item", name = "nullius-plastic", amount = 2}, + {type = "item", name = "nullius-textile", amount = 1} }, results = { {type = "item", name = "nullius-insulation", amount = 2} @@ -7938,10 +7938,10 @@ data:extend({ subgroup = "boxed-glass", energy_required = 30, ingredients = { - {"nullius-box-gypsum", 3}, - {"nullius-box-glass-fiber", 2}, - {"nullius-box-plastic", 2}, - {"nullius-box-textile", 1} + {type = "item", name = "nullius-box-gypsum", amount = 3}, + {type = "item", name = "nullius-box-glass-fiber", amount = 2}, + {type = "item", name = "nullius-box-plastic", amount = 2}, + {type = "item", name = "nullius-box-textile", amount = 1} }, results = { {type = "item", name = "nullius-box-insulation", amount = 2} @@ -8162,7 +8162,7 @@ data:extend({ enabled = false, category = "ore-crushing", energy_required = 12, - ingredients = {{"uranium-ore", 5}}, + ingredients = {{type="item", name="uranium-ore", amount = 5}}, results = { {type="item", name="nullius-crushed-uranium-ore", amount=2}, {type="item", name="nullius-mineral-dust", amount=3} @@ -8219,8 +8219,8 @@ data:extend({ category = "vent-smelting", energy_required = 16, ingredients = { - {"nullius-yellowcake", 5}, - {"nullius-soda-ash", 2} + {type="item", name="nullius-yellowcake", amount = 5}, + {type="item", name="nullius-soda-ash", amount = 2} }, results = { {type="item", name="nullius-uranium", amount=3}, From 13a141e93ed4b39d27e893b701dd0c7639f722f9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 14:46:00 +0200 Subject: [PATCH 015/236] Update ingredients to new format : buildings.lua --- nullius/prototypes/item/buildings.lua | 998 +++++++++++++------------- 1 file changed, 499 insertions(+), 499 deletions(-) diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index 1e01176..d076208 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -24,9 +24,9 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"stone-brick", 4}, - {"nullius-iron-wire", 2}, - {"nullius-iron-plate", 1} + {type = "item", name = "stone-brick", amount = 4}, + {type = "item", name = "nullius-iron-wire", amount = 2}, + {type = "item", name = "nullius-iron-plate", amount = 1} }, results = { {type = "item", name = "nullius-small-furnace-1", amount = 1} @@ -53,10 +53,10 @@ data:extend({ always_show_made_in = true, energy_required = 12, ingredients = { - {"nullius-small-furnace-1", 1}, - {"nullius-refractory-brick", 8}, - {"nullius-crucible", 1}, - {"nullius-steel-plate", 1} + {type = "item", name = "nullius-small-furnace-1", amount = 1}, + {type = "item", name = "nullius-refractory-brick", amount = 8}, + {type = "item", name = "nullius-crucible", amount = 1}, + {type = "item", name = "nullius-steel-plate", amount = 1} }, results = { {type = "item", name = "nullius-small-furnace-2", amount = 1} @@ -84,12 +84,12 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-small-furnace-2", 1}, - {"nullius-refractory-brick", 15}, - {"nullius-mortar", 8}, - {"nullius-iron-wire", 6}, - {"nullius-aluminum-wire", 6}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-small-furnace-2", amount = 1}, + {type = "item", name = "nullius-refractory-brick", amount = 15}, + {type = "item", name = "nullius-mortar", amount = 8}, + {type = "item", name = "nullius-iron-wire", amount = 6}, + {type = "item", name = "nullius-aluminum-wire", amount = 6}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "nullius-small-furnace-3", amount = 1} @@ -117,8 +117,8 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-small-furnace-2", 2}, - {"nullius-chimney-1", 1} + {type = "item", name = "nullius-small-furnace-2", amount = 2}, + {type = "item", name = "nullius-chimney-1", amount = 1} }, results = { {type = "item", name = "nullius-medium-furnace-1", amount = 1} @@ -146,10 +146,10 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-medium-furnace-1", 1}, - {"nullius-small-furnace-3", 1}, - {"nullius-combustion-chamber-2", 1}, - {"nullius-heat-pipe-1", 3} + {type = "item", name = "nullius-medium-furnace-1", amount = 1}, + {type = "item", name = "nullius-small-furnace-3", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-2", amount = 1}, + {type = "item", name = "nullius-heat-pipe-1", amount = 3} }, results = { {type = "item", name = "nullius-medium-furnace-2", amount = 1} @@ -176,13 +176,13 @@ data:extend({ category = "large-crafting", energy_required = 60, ingredients = { - {"nullius-medium-furnace-2", 1}, - {"nullius-air-filter-2", 1}, - {"nullius-combustion-chamber-3", 1}, - {"nullius-box-heat-pipe-2", 1}, - {"nullius-transformer", 1}, - {"nullius-box-titanium-plate", 1}, - {"nullius-box-wall", 1} + {type = "item", name = "nullius-medium-furnace-2", amount = 1}, + {type = "item", name = "nullius-air-filter-2", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-3", amount = 1}, + {type = "item", name = "nullius-box-heat-pipe-2", amount = 1}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "nullius-box-titanium-plate", amount = 1}, + {type = "item", name = "nullius-box-wall", amount = 1} }, results = { {type = "item", name = "nullius-medium-furnace-3", amount = 1} @@ -211,9 +211,9 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-medium-furnace-2", 2}, - {"nullius-steel-beam", 8}, - {"concrete", 20} + {type = "item", name = "nullius-medium-furnace-2", amount = 2}, + {type = "item", name = "nullius-steel-beam", amount = 8}, + {type = "item", name = "concrete", amount = 20} }, results = { {type = "item", name = "nullius-large-furnace-1", amount = 1} @@ -241,11 +241,11 @@ data:extend({ category = "huge-crafting", energy_required = 75, ingredients = { - {"nullius-large-furnace-1", 1}, - {"nullius-medium-furnace-3", 1}, - {"nullius-substation-2", 1}, - {"nullius-box-insulation", 2}, - {"nullius-box-belt-4", 1} + {type = "item", name = "nullius-large-furnace-1", amount = 1}, + {type = "item", name = "nullius-medium-furnace-3", amount = 1}, + {type = "item", name = "nullius-substation-2", amount = 1}, + {type = "item", name = "nullius-box-insulation", amount = 2}, + {type = "item", name = "nullius-box-belt-4", amount = 1} }, results = { {type = "item", name = "nullius-large-furnace-2", amount = 1} @@ -296,10 +296,10 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"inserter", 1}, - {"transport-belt", 1}, - {"wooden-chest", 1}, - {"nullius-fabrication-tool-1", 1} + {type = "item", name = "inserter", amount = 1}, + {type = "item", name = "transport-belt", amount = 1}, + {type = "item", name = "wooden-chest", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-1", amount = 1} }, results = { {type = "item", name = "nullius-small-assembler-1", amount = 1} @@ -316,9 +316,9 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"inserter", 1}, - {"transport-belt", 1}, - {"wooden-chest", 1} + {type = "item", name = "inserter", amount = 1}, + {type = "item", name = "transport-belt", amount = 1}, + {type = "item", name = "wooden-chest", amount = 1} }, results = { {type = "item", name = "nullius-small-assembler-1", amount = 1} @@ -332,10 +332,10 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"nullius-small-assembler-1", 1}, - {"nullius-fabrication-tool-2", 1}, - {"splitter", 1}, - {"iron-chest", 1} + {type = "item", name = "nullius-small-assembler-1", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-2", amount = 1}, + {type = "item", name = "splitter", amount = 1}, + {type = "item", name = "iron-chest", amount = 1} }, results = { {type = "item", name = "nullius-small-assembler-2", amount = 1} @@ -352,10 +352,10 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"nullius-small-assembler-1", 1}, - {"repair-pack", 2}, - {"splitter", 1}, - {"iron-chest", 2} + {type = "item", name = "nullius-small-assembler-1", amount = 1}, + {type = "item", name = "repair-pack", amount = 2}, + {type = "item", name = "splitter", amount = 1}, + {type = "item", name = "iron-chest", amount = 2} }, results = { {type = "item", name = "nullius-small-assembler-2", amount = 1} @@ -371,11 +371,11 @@ data:extend({ category = "tiny-crafting", energy_required = 40, ingredients = { - {"nullius-small-assembler-2", 4}, - {"nullius-hangar-1", 1}, - {"nullius-construction-bot-2", 1}, - {"nullius-large-buffer-chest-1", 1}, - {"bob-express-bulk-inserter", 1} + {type = "item", name = "nullius-small-assembler-2", amount = 4}, + {type = "item", name = "nullius-hangar-1", amount = 1}, + {type = "item", name = "nullius-construction-bot-2", amount = 1}, + {type = "item", name = "nullius-large-buffer-chest-1", amount = 1}, + {type = "item", name = "bob-express-bulk-inserter", amount = 1} }, results = { {type = "item", name = "nullius-small-assembler-3", amount = 3} @@ -426,8 +426,8 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-small-assembler-1", 2}, - {"nullius-steel-beam", 1} + {type = "item", name = "nullius-small-assembler-1", amount = 2}, + {type = "item", name = "nullius-steel-beam", amount = 1} }, results = { {type = "item", name = "nullius-medium-assembler-1", amount = 1} @@ -441,10 +441,10 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-medium-assembler-1", 1}, - {"nullius-small-assembler-2", 1}, - {"nullius-aluminum-sheet", 6}, - {"nullius-red-wire", 4} + {type = "item", name = "nullius-medium-assembler-1", amount = 1}, + {type = "item", name = "nullius-small-assembler-2", amount = 1}, + {type = "item", name = "nullius-aluminum-sheet", amount = 6}, + {type = "item", name = "nullius-red-wire", amount = 4} }, results = { {type = "item", name = "nullius-medium-assembler-2", amount = 1} @@ -460,12 +460,12 @@ data:extend({ always_show_products = true, energy_required = 60, ingredients = { - {"nullius-medium-assembler-2", 3}, - {"nullius-small-assembler-3", 2}, - {"nullius-charger-2", 1}, - {"nullius-logistic-bot-2", 1}, - {"express-transport-belt", 4}, - {"stone-wall", 6} + {type = "item", name = "nullius-medium-assembler-2", amount = 3}, + {type = "item", name = "nullius-small-assembler-3", amount = 2}, + {type = "item", name = "nullius-charger-2", amount = 1}, + {type = "item", name = "nullius-logistic-bot-2", amount = 1}, + {type = "item", name = "express-transport-belt", amount = 4}, + {type = "item", name = "stone-wall", amount = 6} }, results = { {type = "item", name = "nullius-medium-assembler-3", amount = 2} @@ -506,10 +506,10 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-medium-assembler-2", 2}, - {"stone-brick", 12}, - {"nullius-mortar", 3}, - {"fast-transport-belt", 6} + {type = "item", name = "nullius-medium-assembler-2", amount = 2}, + {type = "item", name = "stone-brick", amount = 12}, + {type = "item", name = "nullius-mortar", amount = 3}, + {type = "item", name = "fast-transport-belt", amount = 6} }, results = { {type = "item", name = "nullius-large-assembler-1", amount = 1} @@ -523,11 +523,11 @@ data:extend({ always_show_made_in = true, energy_required = 80, ingredients = { - {"nullius-large-assembler-1", 1}, - {"nullius-medium-assembler-3", 2}, - {"nullius-relay-2", 1}, - {"gate", 2}, - {"nullius-substation-2", 1} + {type = "item", name = "nullius-large-assembler-1", amount = 1}, + {type = "item", name = "nullius-medium-assembler-3", amount = 2}, + {type = "item", name = "nullius-relay-2", amount = 1}, + {type = "item", name = "gate", amount = 2}, + {type = "item", name = "nullius-substation-2", amount = 1} }, results = { {type = "item", name = "nullius-large-assembler-2", amount = 1} @@ -555,9 +555,9 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"nullius-small-assembler-2", 1}, - {"bulk-inserter", 1}, - {"nullius-speed-module-1", 1} + {type = "item", name = "nullius-small-assembler-2", amount = 1}, + {type = "item", name = "bulk-inserter", amount = 1}, + {type = "item", name = "nullius-speed-module-1", amount = 1} }, results = { {type = "item", name = "nullius-boxer", amount = 1} @@ -611,9 +611,9 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"nullius-motor-1", 1}, - {"nullius-iron-gear", 1}, - {"nullius-mining-tool-1", 1} + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-iron-gear", amount = 1}, + {type = "item", name = "nullius-mining-tool-1", amount = 1} }, results = { {type = "item", name = "nullius-small-miner-1", amount = 1} @@ -632,9 +632,9 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"nullius-motor-1", 2}, - {"nullius-iron-gear", 2}, - {"nullius-iron-plate", 3} + {type = "item", name = "nullius-motor-1", amount = 2}, + {type = "item", name = "nullius-iron-gear", amount = 2}, + {type = "item", name = "nullius-iron-plate", amount = 3} }, results = { {type = "item", name = "nullius-small-miner-1", amount = 2} @@ -648,10 +648,10 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"nullius-small-miner-1", 1}, - {"nullius-motor-2", 1}, - {"nullius-steel-plate", 5}, - {"nullius-aluminum-carbide", 2} + {type = "item", name = "nullius-small-miner-1", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-steel-plate", amount = 5}, + {type = "item", name = "nullius-aluminum-carbide", amount = 2} }, results = { {type = "item", name = "nullius-small-miner-2", amount = 1} @@ -724,8 +724,8 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-small-miner-1", 2}, - {"nullius-steel-beam", 1} + {type = "item", name = "nullius-small-miner-1", amount = 2}, + {type = "item", name = "nullius-steel-beam", amount = 1} }, results = { {type = "item", name = "nullius-medium-miner-1", amount = 1} @@ -739,10 +739,10 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-medium-miner-1", 1}, - {"nullius-small-miner-2", 1}, - {"nullius-steel-gear", 4}, - {"nullius-aluminum-plate", 2} + {type = "item", name = "nullius-medium-miner-1", amount = 1}, + {type = "item", name = "nullius-small-miner-2", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 4}, + {type = "item", name = "nullius-aluminum-plate", amount = 2} }, results = { {type = "item", name = "nullius-medium-miner-2", amount = 1} @@ -803,9 +803,9 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-medium-miner-2", 2}, - {"nullius-steel-cable", 6}, - {"nullius-steel-sheet", 4} + {type = "item", name = "nullius-medium-miner-2", amount = 2}, + {type = "item", name = "nullius-steel-cable", amount = 6}, + {type = "item", name = "nullius-steel-sheet", amount = 4} }, results = { {type = "item", name = "nullius-large-miner-1", amount = 1} @@ -819,11 +819,11 @@ data:extend({ always_show_made_in = true, energy_required = 60, ingredients = { - {"nullius-large-miner-1", 1}, - {"nullius-medium-miner-3", 2}, - {"nullius-box-rail", 4}, - {"nullius-cargo-wagon-1", 1}, - {"nullius-locomotive-1", 1} + {type = "item", name = "nullius-large-miner-1", amount = 1}, + {type = "item", name = "nullius-medium-miner-3", amount = 2}, + {type = "item", name = "nullius-box-rail", amount = 4}, + {type = "item", name = "nullius-cargo-wagon-1", amount = 1}, + {type = "item", name = "nullius-locomotive-1", amount = 1} }, results = { {type = "item", name = "nullius-large-miner-2", amount = 1} @@ -874,8 +874,8 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-turbine-open-1", 2}, - {"small-electric-pole", 2} + {type = "item", name = "nullius-turbine-open-1", amount = 2}, + {type = "item", name = "small-electric-pole", amount = 2} }, results = { {type = "item", name = "nullius-wind-turbine-1", amount = 1} @@ -890,8 +890,8 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-box-turbine-open-1", 2}, - {"nullius-box-power-pole-1", 2} + {type = "item", name = "nullius-box-turbine-open-1", amount = 2}, + {type = "item", name = "nullius-box-power-pole-1", amount = 2} }, results = { {type = "item", name = "nullius-box-wind-turbine-1", amount = 1} @@ -905,11 +905,11 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-wind-turbine-1", 1}, - {"nullius-turbine-open-2", 1}, - {"big-electric-pole", 2}, - {"nullius-steel-cable", 5}, - {"concrete", 10} + {type = "item", name = "nullius-wind-turbine-1", amount = 1}, + {type = "item", name = "nullius-turbine-open-2", amount = 1}, + {type = "item", name = "big-electric-pole", amount = 2}, + {type = "item", name = "nullius-steel-cable", amount = 5}, + {type = "item", name = "concrete", amount = 10} }, results = { {type = "item", name = "nullius-wind-turbine-2", amount = 1} @@ -924,11 +924,11 @@ data:extend({ always_show_made_in = true, energy_required = 100, ingredients = { - {"nullius-box-wind-turbine-1", 1}, - {"nullius-box-turbine-open-2", 1}, - {"nullius-box-pylon-1", 2}, - {"nullius-box-steel-cable", 5}, - {"nullius-box-concrete", 5} + {type = "item", name = "nullius-box-wind-turbine-1", amount = 1}, + {type = "item", name = "nullius-box-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-box-pylon-1", amount = 2}, + {type = "item", name = "nullius-box-steel-cable", amount = 5}, + {type = "item", name = "nullius-box-concrete", amount = 5} }, results = { {type = "item", name = "nullius-box-wind-turbine-2", amount = 1} @@ -942,11 +942,11 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-wind-turbine-2", 2}, - {"nullius-turbine-open-3", 2}, - {"nullius-pylon-2", 2}, - {"nullius-carbon-composite", 10}, - {"refined-concrete", 16} + {type = "item", name = "nullius-wind-turbine-2", amount = 2}, + {type = "item", name = "nullius-turbine-open-3", amount = 2}, + {type = "item", name = "nullius-pylon-2", amount = 2}, + {type = "item", name = "nullius-carbon-composite", amount = 10}, + {type = "item", name = "refined-concrete", amount = 16} }, results = { {type = "item", name = "nullius-wind-turbine-3", amount = 1} @@ -961,11 +961,11 @@ data:extend({ subgroup = "boxed-fluid-energy", energy_required = 200, ingredients = { - {"nullius-box-wind-turbine-2", 2}, - {"nullius-box-turbine-open-3", 2}, - {"nullius-box-pylon-2", 2}, - {"nullius-box-carbon-composite", 10}, - {"nullius-box-reinforced-concrete", 8} + {type = "item", name = "nullius-box-wind-turbine-2", amount = 2}, + {type = "item", name = "nullius-box-turbine-open-3", amount = 2}, + {type = "item", name = "nullius-box-pylon-2", amount = 2}, + {type = "item", name = "nullius-box-carbon-composite", amount = 10}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 8} }, results = { {type = "item", name = "nullius-box-wind-turbine-3", amount = 1} @@ -1018,9 +1018,9 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-small-furnace-1", 1}, - {"inserter", 2}, - {"nullius-iron-plate", 3} + {type = "item", name = "nullius-small-furnace-1", amount = 1}, + {type = "item", name = "inserter", amount = 2}, + {type = "item", name = "nullius-iron-plate", amount = 3} }, results = { {type = "item", name = "nullius-foundry-1", amount = 1} @@ -1034,11 +1034,11 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-foundry-1", 1}, - {"nullius-medium-furnace-1", 1}, - {"nullius-crucible", 2}, - {"bob-turbo-inserter", 2}, - {"fast-transport-belt", 3} + {type = "item", name = "nullius-foundry-1", amount = 1}, + {type = "item", name = "nullius-medium-furnace-1", amount = 1}, + {type = "item", name = "nullius-crucible", amount = 2}, + {type = "item", name = "bob-turbo-inserter", amount = 2}, + {type = "item", name = "fast-transport-belt", amount = 3} }, results = { {type = "item", name = "nullius-foundry-2", amount = 1} @@ -1052,10 +1052,10 @@ data:extend({ category = "large-crafting", energy_required = 40, ingredients = { - {"nullius-foundry-2", 2}, - {"nullius-medium-furnace-3", 1}, - {"nullius-medium-assembler-3", 1}, - {"nullius-thermal-tank-2", 1} + {type = "item", name = "nullius-foundry-2", amount = 2}, + {type = "item", name = "nullius-medium-furnace-3", amount = 1}, + {type = "item", name = "nullius-medium-assembler-3", amount = 1}, + {type = "item", name = "nullius-thermal-tank-2", amount = 1} }, results = { {type = "item", name = "nullius-foundry-3", amount = 1} @@ -1108,10 +1108,10 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-small-miner-1", 1}, - {"transport-belt", 2}, - {"nullius-iron-wire", 3}, - {"stone-brick", 8} + {type = "item", name = "nullius-small-miner-1", amount = 1}, + {type = "item", name = "transport-belt", amount = 2}, + {type = "item", name = "nullius-iron-wire", amount = 3}, + {type = "item", name = "stone-brick", amount = 8} }, results = { {type = "item", name = "nullius-crusher-1", amount = 1} @@ -1127,10 +1127,10 @@ data:extend({ always_show_products = true, energy_required = 25, ingredients = { - {"nullius-crusher-1", 3}, - {"nullius-medium-miner-2", 1}, - {"copper-cable", 8}, - {"fast-splitter", 1} + {type = "item", name = "nullius-crusher-1", amount = 3}, + {type = "item", name = "nullius-medium-miner-2", amount = 1}, + {type = "item", name = "copper-cable", amount = 8}, + {type = "item", name = "fast-splitter", amount = 1} }, results = { {type = "item", name = "nullius-crusher-2", amount = 2} @@ -1144,11 +1144,11 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-crusher-2", 1}, - {"nullius-medium-miner-3", 1}, - {"bob-ultimate-splitter", 1}, - {"nullius-box-wall", 2}, - {"nullius-trash-compactor", 1} + {type = "item", name = "nullius-crusher-2", amount = 1}, + {type = "item", name = "nullius-medium-miner-3", amount = 1}, + {type = "item", name = "bob-ultimate-splitter", amount = 1}, + {type = "item", name = "nullius-box-wall", amount = 2}, + {type = "item", name = "nullius-trash-compactor", amount = 1} }, results = { {type = "item", name = "nullius-crusher-3", amount = 1} @@ -1165,10 +1165,10 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-crusher-2", 2}, - {"nullius-medium-miner-3", 1}, - {"bob-ultimate-splitter", 1}, - {"nullius-box-wall", 2} + {type = "item", name = "nullius-crusher-2", amount = 2}, + {type = "item", name = "nullius-medium-miner-3", amount = 1}, + {type = "item", name = "bob-ultimate-splitter", amount = 1}, + {type = "item", name = "nullius-box-wall", amount = 2} }, results = { {type = "item", name = "nullius-crusher-3", amount = 1} @@ -1184,8 +1184,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-iron-sheet", 2}, - {"nullius-iron-rod", 1} + {type = "item", name = "nullius-iron-sheet", amount = 2}, + {type = "item", name = "nullius-iron-rod", amount = 1} }, results = { {type = "item", name = "wooden-chest", amount = 1} @@ -1200,10 +1200,10 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"wooden-chest", 1}, - {"nullius-steel-sheet", 4}, - {"nullius-steel-rod", 2}, - {"nullius-rubber", 1} + {type = "item", name = "wooden-chest", amount = 1}, + {type = "item", name = "nullius-steel-sheet", amount = 4}, + {type = "item", name = "nullius-steel-rod", amount = 2}, + {type = "item", name = "nullius-rubber", amount = 1} }, results = { {type = "item", name = "iron-chest", amount = 1} @@ -1261,8 +1261,8 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"iron-chest", 4}, - {"nullius-aluminum-plate", 3} + {type = "item", name = "iron-chest", amount = 4}, + {type = "item", name = "nullius-aluminum-plate", amount = 3} }, results = { {type = "item", name = "nullius-large-chest-1", amount = 1} @@ -1276,9 +1276,9 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-large-chest-1", 1}, - {"steel-chest", 2}, - {"nullius-titanium-plate", 2} + {type = "item", name = "nullius-large-chest-1", amount = 1}, + {type = "item", name = "steel-chest", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 2} }, results = { {type = "item", name = "nullius-large-chest-2", amount = 1} @@ -1356,9 +1356,9 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"iron-chest", 1}, - {"programmable-speaker", 1}, - {"arithmetic-combinator", 1} + {type = "item", name = "iron-chest", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 1} }, results = { {type = "item", name = "nullius-small-storage-chest-1", amount = 1} @@ -1372,10 +1372,10 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"nullius-small-storage-chest-1", 1}, - {"nullius-large-chest-1", 1}, - {"nullius-sensor-1", 1}, - {"nullius-red-wire", 4} + {type = "item", name = "nullius-small-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-large-chest-1", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 4} }, results = { {type = "item", name = "nullius-large-storage-chest-1", amount = 1} @@ -1390,10 +1390,10 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"nullius-small-storage-chest-1", 1}, - {"steel-chest", 1}, - {"nullius-relay-2", 1}, - {"nullius-processor-2", 1} + {type = "item", name = "nullius-small-storage-chest-1", amount = 1}, + {type = "item", name = "steel-chest", amount = 1}, + {type = "item", name = "nullius-relay-2", amount = 1}, + {type = "item", name = "nullius-processor-2", amount = 1} }, results = { {type = "item", name = "storage-chest", amount = 1} @@ -1409,10 +1409,10 @@ data:extend({ category = "medium-crafting", energy_required = 20, ingredients = { - {"nullius-large-storage-chest-1", 1}, - {"storage-chest", 1}, - {"nullius-large-chest-2", 1}, - {"bob-express-bulk-inserter", 1} + {type = "item", name = "nullius-large-storage-chest-1", amount = 1}, + {type = "item", name = "storage-chest", amount = 1}, + {type = "item", name = "nullius-large-chest-2", amount = 1}, + {type = "item", name = "bob-express-bulk-inserter", amount = 1} }, results = { {type = "item", name = "nullius-large-storage-chest-2", amount = 2} @@ -1490,8 +1490,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-small-storage-chest-1", 1}, - {"nullius-red-wire", 1} + {type = "item", name = "nullius-small-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 1} }, results = { {type = "item", name = "nullius-small-supply-chest-1", amount = 1} @@ -1505,8 +1505,8 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"nullius-large-storage-chest-1", 1}, - {"nullius-small-supply-chest-1", 1} + {type = "item", name = "nullius-large-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-small-supply-chest-1", amount = 1} }, results = { {type = "item", name = "nullius-large-supply-chest-1", amount = 1} @@ -1521,8 +1521,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"nullius-small-supply-chest-1", 1}, - {"storage-chest", 1} + {type = "item", name = "nullius-small-supply-chest-1", amount = 1}, + {type = "item", name = "storage-chest", amount = 1} }, results = { {type = "item", name = "passive-provider-chest", amount = 1} @@ -1536,8 +1536,8 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"nullius-large-supply-chest-1", 1}, - {"nullius-large-storage-chest-2", 1} + {type = "item", name = "nullius-large-supply-chest-1", amount = 1}, + {type = "item", name = "nullius-large-storage-chest-2", amount = 1} }, results = { {type = "item", name = "nullius-large-supply-chest-2", amount = 1} @@ -1615,8 +1615,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-small-storage-chest-1", 1}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-small-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "nullius-small-demand-chest-1", amount = 1} @@ -1630,8 +1630,8 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"nullius-large-storage-chest-1", 1}, - {"nullius-small-demand-chest-1", 1} + {type = "item", name = "nullius-large-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-small-demand-chest-1", amount = 1} }, results = { {type = "item", name = "nullius-large-demand-chest-1", amount = 1} @@ -1646,8 +1646,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"nullius-small-demand-chest-1", 1}, - {"storage-chest", 1} + {type = "item", name = "nullius-small-demand-chest-1", amount = 1}, + {type = "item", name = "storage-chest", amount = 1} }, results = { {type = "item", name = "requester-chest", amount = 1} @@ -1661,8 +1661,8 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"nullius-large-demand-chest-1", 1}, - {"nullius-large-storage-chest-2", 1} + {type = "item", name = "nullius-large-demand-chest-1", amount = 1}, + {type = "item", name = "nullius-large-storage-chest-2", amount = 1} }, results = { {type = "item", name = "nullius-large-demand-chest-2", amount = 1} @@ -1740,8 +1740,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-small-demand-chest-1", 1}, - {"nullius-green-wire", 2} + {type = "item", name = "nullius-small-demand-chest-1", amount = 1}, + {type = "item", name = "nullius-green-wire", amount = 2} }, results = { {type = "item", name = "nullius-small-buffer-chest-1", amount = 1} @@ -1755,8 +1755,8 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"nullius-large-storage-chest-1", 1}, - {"nullius-small-buffer-chest-1", 1} + {type = "item", name = "nullius-large-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-small-buffer-chest-1", amount = 1} }, results = { {type = "item", name = "nullius-large-buffer-chest-1", amount = 1} @@ -1771,8 +1771,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"nullius-small-buffer-chest-1", 1}, - {"storage-chest", 1} + {type = "item", name = "nullius-small-buffer-chest-1", amount = 1}, + {type = "item", name = "storage-chest", amount = 1} }, results = { {type = "item", name = "buffer-chest", amount = 1} @@ -1786,8 +1786,8 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"nullius-large-buffer-chest-1", 1}, - {"nullius-large-storage-chest-2", 1} + {type = "item", name = "nullius-large-buffer-chest-1", amount = 1}, + {type = "item", name = "nullius-large-storage-chest-2", amount = 1} }, results = { {type = "item", name = "nullius-large-buffer-chest-2", amount = 1} @@ -1865,8 +1865,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-small-supply-chest-1", 1}, - {"nullius-green-wire", 1} + {type = "item", name = "nullius-small-supply-chest-1", amount = 1}, + {type = "item", name = "nullius-green-wire", amount = 1} }, results = { {type = "item", name = "nullius-small-dispatch-chest-1", amount = 1} @@ -1880,8 +1880,8 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"nullius-large-storage-chest-1", 1}, - {"nullius-small-dispatch-chest-1", 1} + {type = "item", name = "nullius-large-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-small-dispatch-chest-1", amount = 1} }, results = { {type = "item", name = "nullius-large-dispatch-chest-1", amount = 1} @@ -1896,8 +1896,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"nullius-small-dispatch-chest-1", 1}, - {"storage-chest", 1} + {type = "item", name = "nullius-small-dispatch-chest-1", amount = 1}, + {type = "item", name = "storage-chest", amount = 1} }, results = { {type = "item", name = "active-provider-chest", amount = 1} @@ -1911,8 +1911,8 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"nullius-large-dispatch-chest-1", 1}, - {"nullius-large-storage-chest-2", 1} + {type = "item", name = "nullius-large-dispatch-chest-1", amount = 1}, + {type = "item", name = "nullius-large-storage-chest-2", amount = 1} }, results = { {type = "item", name = "nullius-large-dispatch-chest-2", amount = 1} @@ -1968,12 +1968,12 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"nullius-steel-sheet", 2}, - {"nullius-battery-1", 3}, - {"power-switch", 1}, - {"nullius-sensor-1", 1}, - {"nullius-capacitor", 3}, - {"nullius-transformer", 1} + {type = "item", name = "nullius-steel-sheet", amount = 2}, + {type = "item", name = "nullius-battery-1", amount = 3}, + {type = "item", name = "power-switch", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 3}, + {type = "item", name = "nullius-transformer", amount = 1} }, results = { {type = "item", name = "nullius-grid-battery-1", amount = 1} @@ -1988,12 +1988,12 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-steel-sheet", 2}, - {"nullius-box-battery-1", 3}, - {"nullius-box-power-switch", 1}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-capacitor", 3}, - {"nullius-box-transformer", 1} + {type = "item", name = "nullius-box-steel-sheet", amount = 2}, + {type = "item", name = "nullius-box-battery-1", amount = 3}, + {type = "item", name = "nullius-box-power-switch", amount = 1}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 3}, + {type = "item", name = "nullius-box-transformer", amount = 1} }, results = { {type = "item", name = "nullius-box-grid-battery-1", amount = 1} @@ -2007,12 +2007,12 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {"nullius-grid-battery-1", 2}, - {"nullius-fiberglass", 3}, - {"nullius-battery-2", 4}, - {"nullius-sensor-2", 1}, - {"nullius-power-pole-4", 1}, - {"nullius-heat-pipe-2", 2} + {type = "item", name = "nullius-grid-battery-1", amount = 2}, + {type = "item", name = "nullius-fiberglass", amount = 3}, + {type = "item", name = "nullius-battery-2", amount = 4}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-power-pole-4", amount = 1}, + {type = "item", name = "nullius-heat-pipe-2", amount = 2} }, results = { {type = "item", name = "nullius-grid-battery-2", amount = 1} @@ -2027,12 +2027,12 @@ data:extend({ subgroup = "boxed-renewable", energy_required = 75, ingredients = { - {"nullius-box-grid-battery-1", 2}, - {"nullius-box-fiberglass", 3}, - {"nullius-box-battery-2", 4}, - {"nullius-box-sensor-2", 1}, - {"nullius-box-power-pole-4", 1}, - {"nullius-box-heat-pipe-2", 2} + {type = "item", name = "nullius-box-grid-battery-1", amount = 2}, + {type = "item", name = "nullius-box-fiberglass", amount = 3}, + {type = "item", name = "nullius-box-battery-2", amount = 4}, + {type = "item", name = "nullius-box-sensor-2", amount = 1}, + {type = "item", name = "nullius-box-power-pole-4", amount = 1}, + {type = "item", name = "nullius-box-heat-pipe-2", amount = 2} }, results = { {type = "item", name = "nullius-box-grid-battery-2", amount = 1} @@ -2046,8 +2046,8 @@ data:extend({ category = "large-crafting", energy_required = 50, ingredients = { - {"nullius-box-grid-battery-2", 1}, - {"nullius-battery-3", 3} + {type = "item", name = "nullius-box-grid-battery-2", amount = 1}, + {type = "item", name = "nullius-battery-3", amount = 3} }, results = { {type = "item", name = "nullius-grid-battery-3", amount = 1} @@ -2074,11 +2074,11 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-aluminum-sheet", 4}, - {"nullius-glass", 5}, - {"decider-combinator", 6}, - {"inserter", 3}, - {"small-lamp", 2} + {type = "item", name = "nullius-aluminum-sheet", amount = 4}, + {type = "item", name = "nullius-glass", amount = 5}, + {type = "item", name = "decider-combinator", amount = 6}, + {type = "item", name = "inserter", amount = 3}, + {type = "item", name = "small-lamp", amount = 2} }, results = { {type = "item", name = "nullius-lab-1", amount = 1} @@ -2105,13 +2105,13 @@ data:extend({ always_show_made_in = true, energy_required = 45, ingredients = { - {"nullius-chemical-plant-2", 1}, - {"radar", 1}, - {"nullius-beacon-1", 1}, - {"nullius-processor-1", 8}, - {"bulk-inserter", 2}, - {"stone-wall", 6}, - {"gate", 2} + {type = "item", name = "nullius-chemical-plant-2", amount = 1}, + {type = "item", name = "radar", amount = 1}, + {type = "item", name = "nullius-beacon-1", amount = 1}, + {type = "item", name = "nullius-processor-1", amount = 8}, + {type = "item", name = "bulk-inserter", amount = 2}, + {type = "item", name = "stone-wall", amount = 6}, + {type = "item", name = "gate", amount = 2} }, results = { {type = "item", name = "nullius-lab-2", amount = 1} @@ -2138,11 +2138,11 @@ data:extend({ always_show_made_in = true, energy_required = 90, ingredients = { - {"nullius-lab-2", 2}, - {"nullius-nanofabricator-2", 1}, - {"nullius-sensor-node-3", 1}, - {"nullius-box-processor-2", 2}, - {"nullius-logistic-bot-3", 2} + {type = "item", name = "nullius-lab-2", amount = 2}, + {type = "item", name = "nullius-nanofabricator-2", amount = 1}, + {type = "item", name = "nullius-sensor-node-3", amount = 1}, + {type = "item", name = "nullius-box-processor-2", amount = 2}, + {type = "item", name = "nullius-logistic-bot-3", amount = 2} }, results = { {type = "item", name = "nullius-lab-3", amount = 1} @@ -2169,11 +2169,11 @@ data:extend({ category = "huge-crafting", energy_required = 150, ingredients = { - {"nullius-lab-2", 3}, - {"nullius-sensor-node-2", 1}, - {"nullius-nanofabricator-1", 1}, - {"nullius-logistic-bot-2", 2}, - {"nullius-box-insulation", 10} + {type = "item", name = "nullius-lab-2", amount = 3}, + {type = "item", name = "nullius-sensor-node-2", amount = 1}, + {type = "item", name = "nullius-nanofabricator-1", amount = 1}, + {type = "item", name = "nullius-logistic-bot-2", amount = 2}, + {type = "item", name = "nullius-box-insulation", amount = 10} }, results = { {type = "item", name = "nullius-biology-lab", amount = 1} @@ -2201,11 +2201,11 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"programmable-speaker", 1}, - {"constant-combinator", 2}, - {"medium-electric-pole", 1}, - {"nullius-iron-sheet", 2}, - {"nullius-capacitor", 1} + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "constant-combinator", amount = 2}, + {type = "item", name = "medium-electric-pole", amount = 1}, + {type = "item", name = "nullius-iron-sheet", amount = 2}, + {type = "item", name = "nullius-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-beacon-1", amount = 1} @@ -2236,11 +2236,11 @@ data:extend({ order = "nullius-bb", energy_required = 90, ingredients = { - {"nullius-box-antenna", 1}, - {"nullius-box-memory-circuit", 2}, - {"nullius-box-power-pole-2", 1}, - {"nullius-box-iron-sheet", 2}, - {"nullius-box-capacitor", 1} + {type = "item", name = "nullius-box-antenna", amount = 1}, + {type = "item", name = "nullius-box-memory-circuit", amount = 2}, + {type = "item", name = "nullius-box-power-pole-2", amount = 1}, + {type = "item", name = "nullius-box-iron-sheet", amount = 2}, + {type = "item", name = "nullius-box-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-beacon-1", amount = 5} @@ -2268,11 +2268,11 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-beacon-1", 1}, - {"nullius-sensor-2", 1}, - {"nullius-optical-cable", 3}, - {"nullius-relay-1", 1}, - {"substation", 1} + {type = "item", name = "nullius-beacon-1", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-optical-cable", amount = 3}, + {type = "item", name = "nullius-relay-1", amount = 1}, + {type = "item", name = "substation", amount = 1} }, results = { {type = "item", name = "nullius-beacon-2", amount = 1} @@ -2303,11 +2303,11 @@ data:extend({ order = "nullius-bc", energy_required = 150, ingredients = { - {"nullius-beacon-1", 5}, - {"nullius-box-sensor-2", 1}, - {"nullius-box-optical-cable", 3}, - {"nullius-box-relay-1", 1}, - {"substation", 5} + {type = "item", name = "nullius-beacon-1", amount = 5}, + {type = "item", name = "nullius-box-sensor-2", amount = 1}, + {type = "item", name = "nullius-box-optical-cable", amount = 3}, + {type = "item", name = "nullius-box-relay-1", amount = 1}, + {type = "item", name = "substation", amount = 5} }, results = { {type = "item", name = "nullius-beacon-2", amount = 5} @@ -2336,10 +2336,10 @@ data:extend({ category = "large-crafting", energy_required = 100, ingredients = { - {"nullius-beacon-2", 2}, - {"nullius-processor-2", 2}, - {"nullius-relay-3", 1}, - {"nullius-substation-2", 1} + {type = "item", name = "nullius-beacon-2", amount = 2}, + {type = "item", name = "nullius-processor-2", amount = 2}, + {type = "item", name = "nullius-relay-3", amount = 1}, + {type = "item", name = "nullius-substation-2", amount = 1} }, results = { {type = "item", name = "nullius-beacon-3", amount = 2} @@ -2369,10 +2369,10 @@ data:extend({ order = "nullius-bd", energy_required = 500, ingredients = { - {"nullius-beacon-2", 10}, - {"nullius-box-processor-2", 2}, - {"nullius-box-relay-3", 1}, - {"nullius-substation-2", 5} + {type = "item", name = "nullius-beacon-2", amount = 10}, + {type = "item", name = "nullius-box-processor-2", amount = 2}, + {type = "item", name = "nullius-box-relay-3", amount = 1}, + {type = "item", name = "nullius-substation-2", amount = 5} }, results = { {type = "item", name = "nullius-beacon-3", amount = 10} @@ -2415,10 +2415,10 @@ data:extend({ category = "large-crafting", energy_required = 120, ingredients = { - {"nullius-beacon-2", 3}, - {"nullius-sensor-node-2", 1}, - {"nullius-relay-2", 1}, - {"nullius-productivity-module-1", 1} + {type = "item", name = "nullius-beacon-2", amount = 3}, + {type = "item", name = "nullius-sensor-node-2", amount = 1}, + {type = "item", name = "nullius-relay-2", amount = 1}, + {type = "item", name = "nullius-productivity-module-1", amount = 1} }, results = { {type = "item", name = "nullius-large-beacon-1", amount = 2} @@ -2434,11 +2434,11 @@ data:extend({ category = "large-crafting", energy_required = 180, ingredients = { - {"nullius-large-beacon-1", 3}, - {"nullius-beacon-3", 5}, - {"nullius-telekinesis-field-2", 1}, - {"nullius-sensor-node-3", 1}, - {"nullius-productivity-module-2", 1} + {type = "item", name = "nullius-large-beacon-1", amount = 3}, + {type = "item", name = "nullius-beacon-3", amount = 5}, + {type = "item", name = "nullius-telekinesis-field-2", amount = 1}, + {type = "item", name = "nullius-sensor-node-3", amount = 1}, + {type = "item", name = "nullius-productivity-module-2", amount = 1} }, results = { {type = "item", name = "nullius-large-beacon-2", amount = 3} @@ -2455,10 +2455,10 @@ data:extend({ category = "large-crafting", energy_required = 120, ingredients = { - {"nullius-large-beacon-1", 1}, - {"nullius-beacon-3", 3}, - {"nullius-sensor-node-3", 1}, - {"nullius-productivity-module-2", 1} + {type = "item", name = "nullius-large-beacon-1", amount = 1}, + {type = "item", name = "nullius-beacon-3", amount = 3}, + {type = "item", name = "nullius-sensor-node-3", amount = 1}, + {type = "item", name = "nullius-productivity-module-2", amount = 1} }, results = { {type = "item", name = "nullius-large-beacon-2", amount = 1} @@ -2474,11 +2474,11 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-sensor-1", 2}, - {"programmable-speaker", 1}, - {"nullius-glass", 3}, - {"nullius-iron-sheet", 3}, - {"nullius-motor-2", 1} + {type = "item", name = "nullius-sensor-1", amount = 2}, + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "nullius-glass", amount = 3}, + {type = "item", name = "nullius-iron-sheet", amount = 3}, + {type = "item", name = "nullius-motor-2", amount = 1} }, results = { {type = "item", name = "radar", amount = 1} @@ -2509,11 +2509,11 @@ data:extend({ order = "nullius-sb", energy_required = 45, ingredients = { - {"nullius-box-sensor-1", 2}, - {"nullius-box-antenna", 1}, - {"nullius-box-glass", 3}, - {"nullius-box-iron-sheet", 3}, - {"nullius-box-motor-2", 1} + {type = "item", name = "nullius-box-sensor-1", amount = 2}, + {type = "item", name = "nullius-box-antenna", amount = 1}, + {type = "item", name = "nullius-box-glass", amount = 3}, + {type = "item", name = "nullius-box-iron-sheet", amount = 3}, + {type = "item", name = "nullius-box-motor-2", amount = 1} }, results = { {type = "item", name = "radar", amount = 5} @@ -2542,11 +2542,11 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"radar", 1}, - {"nullius-sensor-2", 2}, - {"nullius-hard-glass", 4}, - {"nullius-fiberglass", 4}, - {"nullius-optical-cable", 6} + {type = "item", name = "radar", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 2}, + {type = "item", name = "nullius-hard-glass", amount = 4}, + {type = "item", name = "nullius-fiberglass", amount = 4}, + {type = "item", name = "nullius-optical-cable", amount = 6} }, results = { {type = "item", name = "nullius-sensor-node-2", amount = 1} @@ -2577,11 +2577,11 @@ data:extend({ order = "nullius-sc", energy_required = 100, ingredients = { - {"radar", 5}, - {"nullius-box-sensor-2", 3}, - {"nullius-box-hard-glass", 4}, - {"nullius-box-fiberglass", 4}, - {"nullius-box-optical-cable", 6} + {type = "item", name = "radar", amount = 5}, + {type = "item", name = "nullius-box-sensor-2", amount = 3}, + {type = "item", name = "nullius-box-hard-glass", amount = 4}, + {type = "item", name = "nullius-box-fiberglass", amount = 4}, + {type = "item", name = "nullius-box-optical-cable", amount = 6} }, results = { {type = "item", name = "nullius-sensor-node-2", amount = 5} @@ -2609,11 +2609,11 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-sensor-node-2", 2}, - {"nullius-beacon-2", 1}, - {"nullius-bearing", 2}, - {"nullius-yield-module-3", 1}, - {"nullius-box-reinforced-concrete", 1} + {type = "item", name = "nullius-sensor-node-2", amount = 2}, + {type = "item", name = "nullius-beacon-2", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 2}, + {type = "item", name = "nullius-yield-module-3", amount = 1}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 1} }, results = { {type = "item", name = "nullius-sensor-node-3", amount = 1} @@ -2630,10 +2630,10 @@ data:extend({ category = "tiny-assembly", energy_required = 5, ingredients = { - {"nullius-plastic", 3}, - {"nullius-aluminum-wire", 4}, - {"nullius-polycrystalline-silicon", 2}, - {"nullius-graphite", 1} + {type = "item", name = "nullius-plastic", amount = 3}, + {type = "item", name = "nullius-aluminum-wire", amount = 4}, + {type = "item", name = "nullius-polycrystalline-silicon", amount = 2}, + {type = "item", name = "nullius-graphite", amount = 1} }, results = { {type = "item", name = "decider-combinator", amount = 3} @@ -2650,10 +2650,10 @@ data:extend({ order = "nullius-db", energy_required = 25, ingredients = { - {"nullius-box-plastic", 3}, - {"nullius-box-aluminum-wire", 4}, - {"nullius-box-polycrystalline-silicon", 2}, - {"nullius-box-graphite", 1} + {type = "item", name = "nullius-box-plastic", amount = 3}, + {type = "item", name = "nullius-box-aluminum-wire", amount = 4}, + {type = "item", name = "nullius-box-polycrystalline-silicon", amount = 2}, + {type = "item", name = "nullius-box-graphite", amount = 1} }, results = { {type = "item", name = "nullius-box-logic-circuit", amount = 3} @@ -2703,8 +2703,8 @@ data:extend({ always_show_products = true, energy_required = 7, ingredients = { - {"decider-combinator", 2}, - {"nullius-capacitor", 3} + {type = "item", name = "decider-combinator", amount = 2}, + {type = "item", name = "nullius-capacitor", amount = 3} }, results = { {type = "item", name = "constant-combinator", amount = 4} @@ -2722,8 +2722,8 @@ data:extend({ always_show_products = true, energy_required = 35, ingredients = { - {"nullius-box-logic-circuit", 2}, - {"nullius-box-capacitor", 3} + {type = "item", name = "nullius-box-logic-circuit", amount = 2}, + {type = "item", name = "nullius-box-capacitor", amount = 3} }, results = { {type = "item", name = "nullius-box-memory-circuit", amount = 4} @@ -2770,9 +2770,9 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"decider-combinator", 1}, - {"constant-combinator", 1}, - {"nullius-aluminum-wire", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "constant-combinator", amount = 1}, + {type = "item", name = "nullius-aluminum-wire", amount = 1} }, results = { {type = "item", name = "arithmetic-combinator", amount = 1} @@ -2787,9 +2787,9 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-memory-circuit", 1}, - {"nullius-box-aluminum-wire", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-memory-circuit", amount = 1}, + {type = "item", name = "nullius-box-aluminum-wire", amount = 1} }, results = { {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1} @@ -2804,10 +2804,10 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"arithmetic-combinator", 1}, - {"display-panel", 1}, - {"nullius-aluminum-wire", 1}, - {"nullius-polycrystalline-silicon", 2}, + {type = "item", name = "arithmetic-combinator", amount = 1}, + {type = "item", name = "display-panel", amount = 1}, + {type = "item", name = "nullius-aluminum-wire", amount = 1}, + {type = "item", name = "nullius-polycrystalline-silicon", amount = 2}, }, results = { {type = "item", name = "selector-combinator", amount = 1} @@ -2822,10 +2822,10 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-box-arithmetic-circuit", 1}, - {"nullius-box-display-panel", 1}, - {"nullius-box-aluminum-wire", 1}, - {"nullius-box-polycrystalline-silicon", 2}, + {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1}, + {type = "item", name = "nullius-box-display-panel", amount = 1}, + {type = "item", name = "nullius-box-aluminum-wire", amount = 1}, + {type = "item", name = "nullius-box-polycrystalline-silicon", amount = 2}, }, results = { {type = "item", name = "nullius-box-selector-circuit", amount = 1} @@ -2840,10 +2840,10 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"decider-combinator", 1}, - {"nullius-glass", 1}, - {"nullius-plastic", 1}, - {"nullius-aluminum-wire", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 1}, + {type = "item", name = "nullius-aluminum-wire", amount = 1} }, results = { {type = "item", name = "display-panel", amount = 1} @@ -2858,10 +2858,10 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-glass", 1}, - {"nullius-box-plastic", 1}, - {"nullius-box-aluminum-wire", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-glass", amount = 1}, + {type = "item", name = "nullius-box-plastic", amount = 1}, + {type = "item", name = "nullius-box-aluminum-wire", amount = 1} }, results = { {type = "item", name = "nullius-box-display-panel", amount = 1} @@ -2876,10 +2876,10 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"nullius-aluminum-rod", 2}, - {"nullius-red-wire", 1}, - {"nullius-rubber", 1}, - {"nullius-capacitor", 1} + {type = "item", name = "nullius-aluminum-rod", amount = 2}, + {type = "item", name = "nullius-red-wire", amount = 1}, + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 1} }, results = { {type = "item", name = "programmable-speaker", amount = 1} @@ -2894,10 +2894,10 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-aluminum-rod", 2}, - {"nullius-box-red-wire", 1}, - {"nullius-box-rubber", 1}, - {"nullius-box-capacitor", 1} + {type = "item", name = "nullius-box-aluminum-rod", amount = 2}, + {type = "item", name = "nullius-box-red-wire", amount = 1}, + {type = "item", name = "nullius-box-rubber", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-box-antenna", amount = 1} @@ -2924,9 +2924,9 @@ data:extend({ category = "small-crafting", energy_required = 5, ingredients = { - {"nullius-graphite", 2}, - {"nullius-glass", 1}, - {"nullius-iron-sheet", 1} + {type = "item", name = "nullius-graphite", amount = 2}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "nullius-iron-sheet", amount = 1} }, results = { {type = "item", name = "small-lamp", amount = 1} @@ -2955,9 +2955,9 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"nullius-carbon-fiber", 1}, - {"nullius-glass", 2}, - {"nullius-aluminum-sheet", 2} + {type = "item", name = "nullius-carbon-fiber", amount = 1}, + {type = "item", name = "nullius-glass", amount = 2}, + {type = "item", name = "nullius-aluminum-sheet", amount = 2} }, results = { {type = "item", name = "small-lamp", amount = 5} @@ -2974,9 +2974,9 @@ data:extend({ subgroup = "boxed-rail", energy_required = 60, ingredients = { - {"nullius-box-carbon-fiber", 1}, - {"nullius-box-glass", 2}, - {"nullius-box-aluminum-sheet", 2} + {type = "item", name = "nullius-box-carbon-fiber", amount = 1}, + {type = "item", name = "nullius-box-glass", amount = 2}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 2} }, results = { {type = "item", name = "nullius-box-lamp-1", amount = 5} @@ -3108,9 +3108,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"nullius-iron-wire", 2}, - {"nullius-iron-rod", 1}, - {"nullius-plastic", 1} + {type = "item", name = "nullius-iron-wire", amount = 2}, + {type = "item", name = "nullius-iron-rod", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 1} }, results = { {type = "item", name = "small-electric-pole", amount = 1} @@ -3127,8 +3127,8 @@ data:extend({ subgroup = "boxed-power-pole", energy_required = 5, ingredients = { - {"nullius-box-insulated-wire", 2}, - {"nullius-box-steel-rod", 1} + {type = "item", name = "nullius-box-insulated-wire", amount = 2}, + {type = "item", name = "nullius-box-steel-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-power-pole-1", amount = 2} @@ -3143,9 +3143,9 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"small-electric-pole", 1}, - {"copper-cable", 2}, - {"nullius-aluminum-rod", 1} + {type = "item", name = "small-electric-pole", amount = 1}, + {type = "item", name = "copper-cable", amount = 2}, + {type = "item", name = "nullius-aluminum-rod", amount = 1} }, results = { {type = "item", name = "medium-electric-pole", amount = 1} @@ -3160,9 +3160,9 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-box-power-pole-1", 1}, - {"nullius-box-insulated-wire", 2}, - {"nullius-box-aluminum-rod", 1} + {type = "item", name = "nullius-box-power-pole-1", amount = 1}, + {type = "item", name = "nullius-box-insulated-wire", amount = 2}, + {type = "item", name = "nullius-box-aluminum-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-power-pole-2", amount = 1} @@ -3176,10 +3176,10 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"medium-electric-pole", 1}, - {"nullius-red-wire", 3}, - {"nullius-fiberglass", 2}, - {"nullius-ceramic-powder", 1} + {type = "item", name = "medium-electric-pole", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 3}, + {type = "item", name = "nullius-fiberglass", amount = 2}, + {type = "item", name = "nullius-ceramic-powder", amount = 1} }, results = { {type = "item", name = "nullius-power-pole-3", amount = 1} @@ -3194,10 +3194,10 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-box-power-pole-2", 1}, - {"nullius-box-red-wire", 3}, - {"nullius-box-fiberglass", 2}, - {"nullius-box-ceramic-powder", 1} + {type = "item", name = "nullius-box-power-pole-2", amount = 1}, + {type = "item", name = "nullius-box-red-wire", amount = 3}, + {type = "item", name = "nullius-box-fiberglass", amount = 2}, + {type = "item", name = "nullius-box-ceramic-powder", amount = 1} }, results = { {type = "item", name = "nullius-box-power-pole-3", amount = 1} @@ -3211,12 +3211,12 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"nullius-power-pole-3", 1}, - {"nullius-optical-cable", 2}, - {"nullius-sensor-1", 1}, - {"nullius-transformer", 1}, - {"power-switch", 1}, - {"concrete", 2} + {type = "item", name = "nullius-power-pole-3", amount = 1}, + {type = "item", name = "nullius-optical-cable", amount = 2}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "power-switch", amount = 1}, + {type = "item", name = "concrete", amount = 2} }, results = { {type = "item", name = "nullius-power-pole-4", amount = 1} @@ -3231,12 +3231,12 @@ data:extend({ subgroup = "boxed-power-pole", energy_required = 40, ingredients = { - {"nullius-box-power-pole-3", 1}, - {"nullius-box-optical-cable", 2}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-transformer", 1}, - {"nullius-box-power-switch", 1}, - {"nullius-box-concrete", 1} + {type = "item", name = "nullius-box-power-pole-3", amount = 1}, + {type = "item", name = "nullius-box-optical-cable", amount = 2}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-transformer", amount = 1}, + {type = "item", name = "nullius-box-power-switch", amount = 1}, + {type = "item", name = "nullius-box-concrete", amount = 1} }, results = { {type = "item", name = "nullius-box-power-pole-4", amount = 1} @@ -3252,9 +3252,9 @@ data:extend({ category = "large-crafting", energy_required = 4, ingredients = { - {"medium-electric-pole", 1}, - {"copper-cable", 3}, - {"nullius-steel-beam", 2} + {type = "item", name = "medium-electric-pole", amount = 1}, + {type = "item", name = "copper-cable", amount = 3}, + {type = "item", name = "nullius-steel-beam", amount = 2} }, results = { {type = "item", name = "big-electric-pole", amount = 1} @@ -3269,9 +3269,9 @@ data:extend({ subgroup = "boxed-power-pole", energy_required = 20, ingredients = { - {"nullius-box-power-pole-2", 1}, - {"nullius-box-insulated-wire", 3}, - {"nullius-box-steel-beam", 2} + {type = "item", name = "nullius-box-power-pole-2", amount = 1}, + {type = "item", name = "nullius-box-insulated-wire", amount = 3}, + {type = "item", name = "nullius-box-steel-beam", amount = 2} }, results = { {type = "item", name = "nullius-box-pylon-1", amount = 1} @@ -3285,12 +3285,12 @@ data:extend({ category = "large-crafting", energy_required = 6, ingredients = { - {"big-electric-pole", 1}, - {"nullius-power-pole-3", 1}, - {"nullius-aluminum-wire", 3}, - {"nullius-steel-cable", 2}, - {"nullius-transformer", 1}, - {"concrete", 4} + {type = "item", name = "big-electric-pole", amount = 1}, + {type = "item", name = "nullius-power-pole-3", amount = 1}, + {type = "item", name = "nullius-aluminum-wire", amount = 3}, + {type = "item", name = "nullius-steel-cable", amount = 2}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "concrete", amount = 4} }, results = { {type = "item", name = "nullius-pylon-2", amount = 1} @@ -3305,12 +3305,12 @@ data:extend({ subgroup = "boxed-power-pole", energy_required = 30, ingredients = { - {"nullius-box-pylon-1", 1}, - {"nullius-box-power-pole-3", 1}, - {"nullius-box-aluminum-wire", 3}, - {"nullius-box-steel-cable", 2}, - {"nullius-box-transformer", 1}, - {"nullius-box-concrete", 2} + {type = "item", name = "nullius-box-pylon-1", amount = 1}, + {type = "item", name = "nullius-box-power-pole-3", amount = 1}, + {type = "item", name = "nullius-box-aluminum-wire", amount = 3}, + {type = "item", name = "nullius-box-steel-cable", amount = 2}, + {type = "item", name = "nullius-box-transformer", amount = 1}, + {type = "item", name = "nullius-box-concrete", amount = 2} }, results = { {type = "item", name = "nullius-box-pylon-2", amount = 1} @@ -3324,11 +3324,11 @@ data:extend({ category = "large-crafting", energy_required = 10, ingredients = { - {"nullius-pylon-2", 1}, - {"nullius-power-pole-4", 1}, - {"nullius-calcium", 10}, - {"nullius-efficiency-module-1", 1}, - {"refined-concrete", 6} + {type = "item", name = "nullius-pylon-2", amount = 1}, + {type = "item", name = "nullius-power-pole-4", amount = 1}, + {type = "item", name = "nullius-calcium", amount = 10}, + {type = "item", name = "nullius-efficiency-module-1", amount = 1}, + {type = "item", name = "refined-concrete", amount = 6} }, results = { {type = "item", name = "nullius-pylon-3", amount = 1} @@ -3343,11 +3343,11 @@ data:extend({ subgroup = "boxed-power-pole", energy_required = 50, ingredients = { - {"nullius-box-pylon-2", 1}, - {"nullius-box-power-pole-4", 1}, - {"nullius-box-calcium", 10}, - {"nullius-box-efficiency-module-1", 1}, - {"nullius-box-reinforced-concrete", 3} + {type = "item", name = "nullius-box-pylon-2", amount = 1}, + {type = "item", name = "nullius-box-power-pole-4", amount = 1}, + {type = "item", name = "nullius-box-calcium", amount = 10}, + {type = "item", name = "nullius-box-efficiency-module-1", amount = 1}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 3} }, results = { {type = "item", name = "nullius-box-pylon-3", amount = 1} @@ -3363,11 +3363,11 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"big-electric-pole", 1}, - {"medium-electric-pole", 1}, - {"power-switch", 1}, - {"concrete", 6}, - {"nullius-transformer", 1} + {type = "item", name = "big-electric-pole", amount = 1}, + {type = "item", name = "medium-electric-pole", amount = 1}, + {type = "item", name = "power-switch", amount = 1}, + {type = "item", name = "concrete", amount = 6}, + {type = "item", name = "nullius-transformer", amount = 1} }, results = { {type = "item", name = "substation", amount = 1} @@ -3397,11 +3397,11 @@ data:extend({ always_show_products = true, energy_required = 50, ingredients = { - {"nullius-box-pylon-1", 1}, - {"nullius-box-power-pole-2", 1}, - {"nullius-box-power-switch", 1}, - {"nullius-box-concrete", 3}, - {"nullius-box-transformer", 1} + {type = "item", name = "nullius-box-pylon-1", amount = 1}, + {type = "item", name = "nullius-box-power-pole-2", amount = 1}, + {type = "item", name = "nullius-box-power-switch", amount = 1}, + {type = "item", name = "nullius-box-concrete", amount = 3}, + {type = "item", name = "nullius-box-transformer", amount = 1} }, results = { {type = "item", name = "substation", amount = 5} @@ -3415,11 +3415,11 @@ data:extend({ always_show_made_in = true, energy_required = 18, ingredients = { - {"substation", 1}, - {"nullius-pylon-2", 1}, - {"nullius-power-pole-3", 1}, - {"nullius-sensor-1", 2}, - {"nullius-battery-1", 2} + {type = "item", name = "substation", amount = 1}, + {type = "item", name = "nullius-pylon-2", amount = 1}, + {type = "item", name = "nullius-power-pole-3", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 2}, + {type = "item", name = "nullius-battery-1", amount = 2} }, results = { {type = "item", name = "nullius-substation-2", amount = 1} @@ -3449,11 +3449,11 @@ data:extend({ always_show_products = true, energy_required = 90, ingredients = { - {"substation", 5}, - {"nullius-box-pylon-2", 1}, - {"nullius-box-power-pole-3", 1}, - {"nullius-box-sensor-1", 2}, - {"nullius-box-battery-1", 2} + {type = "item", name = "substation", amount = 5}, + {type = "item", name = "nullius-box-pylon-2", amount = 1}, + {type = "item", name = "nullius-box-power-pole-3", amount = 1}, + {type = "item", name = "nullius-box-sensor-1", amount = 2}, + {type = "item", name = "nullius-box-battery-1", amount = 2} }, results = { {type = "item", name = "nullius-substation-2", amount = 5} @@ -3467,12 +3467,12 @@ data:extend({ category = "large-crafting", energy_required = 40, ingredients = { - {"nullius-substation-2", 2}, - {"nullius-pylon-3", 1}, - {"nullius-power-pole-4", 2}, - {"nullius-sensor-2", 2}, - {"nullius-grid-battery-1", 1}, - {"refined-concrete", 20} + {type = "item", name = "nullius-substation-2", amount = 2}, + {type = "item", name = "nullius-pylon-3", amount = 1}, + {type = "item", name = "nullius-power-pole-4", amount = 2}, + {type = "item", name = "nullius-sensor-2", amount = 2}, + {type = "item", name = "nullius-grid-battery-1", amount = 1}, + {type = "item", name = "refined-concrete", amount = 20} }, results = { {type = "item", name = "nullius-substation-3", amount = 1} @@ -3502,12 +3502,12 @@ data:extend({ order = "nullius-fd", energy_required = 200, ingredients = { - {"nullius-substation-2", 10}, - {"nullius-box-pylon-3", 1}, - {"nullius-box-power-pole-4", 2}, - {"nullius-box-sensor-2", 2}, - {"nullius-box-grid-battery-1", 1}, - {"nullius-box-reinforced-concrete", 10} + {type = "item", name = "nullius-substation-2", amount = 10}, + {type = "item", name = "nullius-box-pylon-3", amount = 1}, + {type = "item", name = "nullius-box-power-pole-4", amount = 2}, + {type = "item", name = "nullius-box-sensor-2", amount = 2}, + {type = "item", name = "nullius-box-grid-battery-1", amount = 1}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 10} }, results = { {type = "item", name = "nullius-substation-3", amount = 5} @@ -3625,10 +3625,10 @@ data:extend({ category = "large-crafting", energy_required = 8, ingredients = { - {"nullius-glass", 6}, - {"nullius-aluminum-sheet", 5}, - {"nullius-steel-rod", 3}, - {"nullius-heat-pipe-1", 4} + {type = "item", name = "nullius-glass", amount = 6}, + {type = "item", name = "nullius-aluminum-sheet", amount = 5}, + {type = "item", name = "nullius-steel-rod", amount = 3}, + {type = "item", name = "nullius-heat-pipe-1", amount = 4} }, results = { {type = "item", name = "nullius-solar-collector-1", amount = 1} @@ -3643,10 +3643,10 @@ data:extend({ subgroup = "boxed-heat-energy", energy_required = 40, ingredients = { - {"nullius-box-glass", 6}, - {"nullius-box-aluminum-sheet", 5}, - {"nullius-box-steel-rod", 3}, - {"nullius-box-heat-pipe-1", 4} + {type = "item", name = "nullius-box-glass", amount = 6}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 5}, + {type = "item", name = "nullius-box-steel-rod", amount = 3}, + {type = "item", name = "nullius-box-heat-pipe-1", amount = 4} }, results = { {type = "item", name = "nullius-box-solar-collector-1", amount = 1} @@ -3660,11 +3660,11 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {"nullius-solar-collector-1", 2}, - {"nullius-heat-pipe-2", 8}, - {"nullius-motor-2", 1}, - {"nullius-steel-cable", 4}, - {"nullius-titanium-sheet", 5} + {type = "item", name = "nullius-solar-collector-1", amount = 2}, + {type = "item", name = "nullius-heat-pipe-2", amount = 8}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-steel-cable", amount = 4}, + {type = "item", name = "nullius-titanium-sheet", amount = 5} }, results = { {type = "item", name = "nullius-solar-collector-2", amount = 1} @@ -3679,11 +3679,11 @@ data:extend({ subgroup = "boxed-heat-energy", energy_required = 75, ingredients = { - {"nullius-box-solar-collector-1", 2}, - {"nullius-box-heat-pipe-2", 8}, - {"nullius-box-motor-2", 1}, - {"nullius-box-steel-cable", 4}, - {"nullius-box-titanium-sheet", 5} + {type = "item", name = "nullius-box-solar-collector-1", amount = 2}, + {type = "item", name = "nullius-box-heat-pipe-2", amount = 8}, + {type = "item", name = "nullius-box-motor-2", amount = 1}, + {type = "item", name = "nullius-box-steel-cable", amount = 4}, + {type = "item", name = "nullius-box-titanium-sheet", amount = 5} }, results = { {type = "item", name = "nullius-box-solar-collector-2", amount = 1} @@ -3697,12 +3697,12 @@ data:extend({ category = "large-crafting", energy_required = 30, ingredients = { - {"nullius-solar-collector-2", 3}, - {"nullius-hard-glass", 10}, - {"nullius-heat-pipe-3", 8}, - {"nullius-titanium-rod", 4}, - {"nullius-sensor-1", 1}, - {"nullius-monocrystalline-silicon", 12} + {type = "item", name = "nullius-solar-collector-2", amount = 3}, + {type = "item", name = "nullius-hard-glass", amount = 10}, + {type = "item", name = "nullius-heat-pipe-3", amount = 8}, + {type = "item", name = "nullius-titanium-rod", amount = 4}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-monocrystalline-silicon", amount = 12} }, results = { {type = "item", name = "nullius-solar-collector-3", amount = 1} @@ -3717,12 +3717,12 @@ data:extend({ subgroup = "boxed-heat-energy", energy_required = 150, ingredients = { - {"nullius-box-solar-collector-2", 3}, - {"nullius-box-hard-glass", 10}, - {"nullius-box-heat-pipe-3", 8}, - {"nullius-box-titanium-rod", 4}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-monocrystalline-silicon", 12} + {type = "item", name = "nullius-box-solar-collector-2", amount = 3}, + {type = "item", name = "nullius-box-hard-glass", amount = 10}, + {type = "item", name = "nullius-box-heat-pipe-3", amount = 8}, + {type = "item", name = "nullius-box-titanium-rod", amount = 4}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-monocrystalline-silicon", amount = 12} }, results = { {type = "item", name = "nullius-box-solar-collector-3", amount = 1} From fc36ef6be95774d831b6a0dc8330c3bed4920eae Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 14:50:04 +0200 Subject: [PATCH 016/236] Update ingredients to new format : plumbing.lua --- nullius/prototypes/item/plumbing.lua | 648 +++++++++++++-------------- 1 file changed, 324 insertions(+), 324 deletions(-) diff --git a/nullius/prototypes/item/plumbing.lua b/nullius/prototypes/item/plumbing.lua index bc2f092..9be0400 100644 --- a/nullius/prototypes/item/plumbing.lua +++ b/nullius/prototypes/item/plumbing.lua @@ -105,7 +105,7 @@ data:extend({ allow_as_intermediate = false, energy_required = 3, ingredients = { - {"nullius-iron-rod", 1} + {type = "item", name = "nullius-iron-rod", amount = 1} }, results = { {type = "item", name = "pipe", amount = 3} @@ -145,7 +145,7 @@ data:extend({ allow_as_intermediate = false, energy_required = 15, ingredients = { - {"nullius-box-iron-rod", 1} + {type = "item", name = "nullius-box-iron-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-pipe-1", amount = 3} @@ -163,8 +163,8 @@ data:extend({ subgroup = "pipes", energy_required = 8, ingredients = { - {"pipe", 5}, - {"nullius-sand", 2} + {type = "item", name = "pipe", amount = 5}, + {type = "item", name = "nullius-sand", amount = 2} }, results = { {type = "item", name = "pipe-to-ground", amount = 2} @@ -181,8 +181,8 @@ data:extend({ subgroup = "boxed-pipe", energy_required = 40, ingredients = { - {"nullius-box-pipe-1", 5}, - {"nullius-box-sand", 2} + {type = "item", name = "nullius-box-pipe-1", amount = 5}, + {type = "item", name = "nullius-box-sand", amount = 2} }, results = { {type = "item", name = "nullius-box-underground-pipe-1", amount = 2} @@ -216,7 +216,7 @@ data:extend({ allow_decomposition = false, energy_required = 9, ingredients = { - {"stone-brick", 8} + {type = "item", name = "stone-brick", amount = 8} }, results = { {type="item", name="pipe", amount=5}, @@ -236,7 +236,7 @@ data:extend({ allow_decomposition = false, energy_required = 45, ingredients = { - {"nullius-box-stone-brick", 4} + {type = "item", name = "nullius-box-stone-brick", amount = 4} }, results = { {type="item", name="nullius-box-pipe-1", amount=5}, @@ -273,7 +273,7 @@ data:extend({ allow_as_intermediate = false, energy_required = 8, ingredients = { - {"nullius-steel-rod", 2} + {type = "item", name = "nullius-steel-rod", amount = 2} }, results = { {type = "item", name = "nullius-pipe-2", amount = 3} @@ -312,7 +312,7 @@ data:extend({ allow_as_intermediate = false, energy_required = 40, ingredients = { - {"nullius-box-steel-rod", 2} + {type = "item", name = "nullius-box-steel-rod", amount = 2} }, results = { {type = "item", name = "nullius-box-pipe-2", amount = 3} @@ -329,8 +329,8 @@ data:extend({ subgroup = "pipes", energy_required = 10, ingredients = { - {"nullius-pipe-2", 8}, - {"nullius-gravel", 3} + {type = "item", name = "nullius-pipe-2", amount = 8}, + {type = "item", name = "nullius-gravel", amount = 3} }, results = { {type = "item", name = "nullius-underground-pipe-2", amount = 2} @@ -347,8 +347,8 @@ data:extend({ subgroup = "boxed-pipe", energy_required = 50, ingredients = { - {"nullius-box-pipe-2", 8}, - {"nullius-box-gravel", 3} + {type = "item", name = "nullius-box-pipe-2", amount = 8}, + {type = "item", name = "nullius-box-gravel", amount = 3} }, results = { {type = "item", name = "nullius-box-underground-pipe-2", amount = 2} @@ -381,7 +381,7 @@ data:extend({ allow_decomposition = false, energy_required = 2, ingredients = { - {"nullius-plastic", 1} + {type = "item", name = "nullius-plastic", amount = 1} }, results = { {type = "item", name = "nullius-pipe-2", amount = 1} @@ -399,7 +399,7 @@ data:extend({ allow_decomposition = false, energy_required = 10, ingredients = { - {"nullius-box-plastic", 1} + {type = "item", name = "nullius-box-plastic", amount = 1} }, results = { {type = "item", name = "nullius-box-pipe-2", amount = 1} @@ -452,8 +452,8 @@ data:extend({ subgroup = "pipes", energy_required = 20, ingredients = { - {"nullius-pipe-3", 10}, - {"concrete", 4} + {type = "item", name = "nullius-pipe-3", amount = 10}, + {type = "item", name = "concrete", amount = 4} }, results = { {type = "item", name = "nullius-underground-pipe-3", amount = 2} @@ -470,8 +470,8 @@ data:extend({ subgroup = "boxed-pipe", energy_required = 100, ingredients = { - {"nullius-box-pipe-3", 10}, - {"nullius-box-concrete", 2} + {type = "item", name = "nullius-box-pipe-3", amount = 10}, + {type = "item", name = "nullius-box-concrete", amount = 2} }, results = { {type = "item", name = "nullius-box-underground-pipe-3", amount = 2} @@ -531,8 +531,8 @@ data:extend({ always_show_products = true, energy_required = 30, ingredients = { - {"nullius-pipe-4", 12}, - {"refined-concrete", 6} + {type = "item", name = "nullius-pipe-4", amount = 12}, + {type = "item", name = "refined-concrete", amount = 6} }, results = { {type = "item", name = "nullius-underground-pipe-4", amount = 2} @@ -549,8 +549,8 @@ data:extend({ always_show_products = true, energy_required = 150, ingredients = { - {"nullius-box-pipe-4", 12}, - {"nullius-box-reinforced-concrete", 3} + {type = "item", name = "nullius-box-pipe-4", amount = 12}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 3} }, results = { {type = "item", name = "nullius-box-underground-pipe-4", amount = 2} @@ -585,8 +585,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-motor-1", 1}, - {"nullius-one-way-valve", 1} + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-one-way-valve", amount = 1} }, results = { {type = "item", name = "nullius-pump-1", amount = 1} @@ -601,8 +601,8 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-box-motor-1", 1}, - {"nullius-box-one-way-valve", 1} + {type = "item", name = "nullius-box-motor-1", amount = 1}, + {type = "item", name = "nullius-box-one-way-valve", amount = 1} }, results = { {type = "item", name = "nullius-box-pump-1", amount = 1} @@ -616,10 +616,10 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"nullius-pump-1", 1}, - {"nullius-motor-2", 1}, - {"nullius-pipe-2", 2}, - {"nullius-rubber", 1} + {type = "item", name = "nullius-pump-1", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-pipe-2", amount = 2}, + {type = "item", name = "nullius-rubber", amount = 1} }, results = { {type = "item", name = "nullius-pump-2", amount = 1} @@ -634,10 +634,10 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-pump-1", 1}, - {"nullius-box-motor-2", 1}, - {"nullius-box-pipe-2", 2}, - {"nullius-box-rubber", 1} + {type = "item", name = "nullius-box-pump-1", amount = 1}, + {type = "item", name = "nullius-box-motor-2", amount = 1}, + {type = "item", name = "nullius-box-pipe-2", amount = 2}, + {type = "item", name = "nullius-box-rubber", amount = 1} }, results = { {type = "item", name = "nullius-box-pump-2", amount = 1} @@ -652,11 +652,11 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-pump-2", 2}, - {"nullius-motor-3", 1}, - {"nullius-pipe-4", 2}, - {"nullius-top-up-valve", 2}, - {"power-switch", 1} + {type = "item", name = "nullius-pump-2", amount = 2}, + {type = "item", name = "nullius-motor-3", amount = 1}, + {type = "item", name = "nullius-pipe-4", amount = 2}, + {type = "item", name = "nullius-top-up-valve", amount = 2}, + {type = "item", name = "power-switch", amount = 1} }, results = { {type = "item", name = "pump", amount = 1} @@ -671,11 +671,11 @@ data:extend({ always_show_made_in = true, energy_required = 100, ingredients = { - {"nullius-box-pump-2", 2}, - {"nullius-box-motor-3", 1}, - {"nullius-box-pipe-4", 2}, - {"nullius-box-top-up-valve", 2}, - {"nullius-box-power-switch", 1} + {type = "item", name = "nullius-box-pump-2", amount = 2}, + {type = "item", name = "nullius-box-motor-3", amount = 1}, + {type = "item", name = "nullius-box-pipe-4", amount = 2}, + {type = "item", name = "nullius-box-top-up-valve", amount = 2}, + {type = "item", name = "nullius-box-power-switch", amount = 1} }, results = { {type = "item", name = "nullius-box-pump-3", amount = 1} @@ -718,8 +718,8 @@ data:extend({ always_show_products = true, energy_required = 2, ingredients = { - {"nullius-pump-2", 1}, - {"nullius-one-way-valve", 2} + {type = "item", name = "nullius-pump-2", amount = 1}, + {type = "item", name = "nullius-one-way-valve", amount = 2} }, results = { {type = "item", name = "nullius-small-pump-1", amount = 2} @@ -736,8 +736,8 @@ data:extend({ always_show_products = true, energy_required = 10, ingredients = { - {"nullius-box-pump-2", 1}, - {"nullius-box-one-way-valve", 2} + {type = "item", name = "nullius-box-pump-2", amount = 1}, + {type = "item", name = "nullius-box-one-way-valve", amount = 2} }, results = { {type = "item", name = "nullius-box-small-pump-1", amount = 2} @@ -753,8 +753,8 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {"nullius-small-pump-1", 2}, - {"pump", 1} + {type = "item", name = "nullius-small-pump-1", amount = 2}, + {type = "item", name = "pump", amount = 1} }, results = { {type = "item", name = "nullius-small-pump-2", amount = 2} @@ -771,8 +771,8 @@ data:extend({ subgroup = "boxed-plumbing", energy_required = 25, ingredients = { - {"nullius-box-small-pump-1", 2}, - {"nullius-box-pump-3", 1} + {type = "item", name = "nullius-box-small-pump-1", amount = 2}, + {type = "item", name = "nullius-box-pump-3", amount = 1} }, results = { {type = "item", name = "nullius-box-small-pump-2", amount = 2} @@ -823,10 +823,10 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"stone-brick", 3}, - {"pipe", 3}, - {"nullius-iron-rod", 2}, - {"nullius-one-way-valve", 1} + {type = "item", name = "stone-brick", amount = 3}, + {type = "item", name = "pipe", amount = 3}, + {type = "item", name = "nullius-iron-rod", amount = 2}, + {type = "item", name = "nullius-one-way-valve", amount = 1} }, results = { {type = "item", name = "nullius-chimney-1", amount = 1} @@ -840,11 +840,11 @@ data:extend({ always_show_made_in = true, energy_required = 12, ingredients = { - {"nullius-chimney-1", 2}, - {"nullius-pipe-2", 10}, - {"nullius-steel-beam", 4}, - {"concrete", 10}, - {"nullius-pump-2", 1} + {type = "item", name = "nullius-chimney-1", amount = 2}, + {type = "item", name = "nullius-pipe-2", amount = 10}, + {type = "item", name = "nullius-steel-beam", amount = 4}, + {type = "item", name = "concrete", amount = 10}, + {type = "item", name = "nullius-pump-2", amount = 1} }, results = { {type = "item", name = "nullius-chimney-2", amount = 1} @@ -858,10 +858,10 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-chimney-2", 4}, - {"nullius-underground-pipe-3", 8}, - {"nullius-compressor-2", 1}, - {"stone-wall", 4} + {type = "item", name = "nullius-chimney-2", amount = 4}, + {type = "item", name = "nullius-underground-pipe-3", amount = 8}, + {type = "item", name = "nullius-compressor-2", amount = 1}, + {type = "item", name = "stone-wall", amount = 4} }, results = { {type = "item", name = "nullius-chimney-3", amount = 1} @@ -920,8 +920,8 @@ data:extend({ order = "nullius-dbb", energy_required = 4, ingredients = { - {"pipe", 1}, - {"nullius-iron-sheet", 1} + {type = "item", name = "pipe", amount = 1}, + {type = "item", name = "nullius-iron-sheet", amount = 1} }, results = { {type = "item", name = "nullius-one-way-valve", amount = 1} @@ -951,9 +951,9 @@ data:extend({ order = "nullius-dbc", energy_required = 6, ingredients = { - {"nullius-pipe-2", 2}, - {"nullius-rubber", 1}, - {"nullius-steel-sheet", 1} + {type = "item", name = "nullius-pipe-2", amount = 2}, + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-steel-sheet", amount = 1} }, results = { {type = "item", name = "nullius-one-way-valve", amount = 5} @@ -970,9 +970,9 @@ data:extend({ always_show_products = true, energy_required = 30, ingredients = { - {"nullius-box-pipe-2", 2}, - {"nullius-box-rubber", 1}, - {"nullius-box-steel-sheet", 1} + {type = "item", name = "nullius-box-pipe-2", amount = 2}, + {type = "item", name = "nullius-box-rubber", amount = 1}, + {type = "item", name = "nullius-box-steel-sheet", amount = 1} }, results = { {type = "item", name = "nullius-box-one-way-valve", amount = 5} @@ -988,8 +988,8 @@ data:extend({ always_show_products = true, energy_required = 2, ingredients = { - {"nullius-priority-valve", 1}, - {"nullius-iron-wire", 1} + {type = "item", name = "nullius-priority-valve", amount = 1}, + {type = "item", name = "nullius-iron-wire", amount = 1} }, results = { {type = "item", name = "nullius-relief-valve", amount = 1} @@ -1006,8 +1006,8 @@ data:extend({ always_show_products = true, energy_required = 10, ingredients = { - {"nullius-box-priority-valve", 2}, - {"nullius-box-steel-wire", 1} + {type = "item", name = "nullius-box-priority-valve", amount = 2}, + {type = "item", name = "nullius-box-steel-wire", amount = 1} }, results = { {type = "item", name = "nullius-box-relief-valve", amount = 2} @@ -1023,8 +1023,8 @@ data:extend({ always_show_products = true, energy_required = 2, ingredients = { - {"nullius-priority-valve", 1}, - {"nullius-plastic", 1} + {type = "item", name = "nullius-priority-valve", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 1} }, results = { {type = "item", name = "nullius-top-up-valve", amount = 1} @@ -1041,8 +1041,8 @@ data:extend({ always_show_products = true, energy_required = 10, ingredients = { - {"nullius-box-priority-valve", 2}, - {"nullius-box-rubber", 1} + {type = "item", name = "nullius-box-priority-valve", amount = 2}, + {type = "item", name = "nullius-box-rubber", amount = 1} }, results = { {type = "item", name = "nullius-box-top-up-valve", amount = 2} @@ -1058,8 +1058,8 @@ data:extend({ always_show_products = true, energy_required = 2, ingredients = { - {"nullius-one-way-valve", 1}, - {"nullius-iron-wire", 1} + {type = "item", name = "nullius-one-way-valve", amount = 1}, + {type = "item", name = "nullius-iron-wire", amount = 1} }, results = { {type = "item", name = "nullius-priority-valve", amount = 1} @@ -1076,8 +1076,8 @@ data:extend({ always_show_products = true, energy_required = 10, ingredients = { - {"nullius-box-one-way-valve", 2}, - {"nullius-box-steel-wire", 1} + {type = "item", name = "nullius-box-one-way-valve", amount = 2}, + {type = "item", name = "nullius-box-steel-wire", amount = 1} }, results = { {type = "item", name = "nullius-box-priority-valve", amount = 2} @@ -1136,8 +1136,8 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"pipe-to-ground", 1}, - {"nullius-one-way-valve", 1} + {type = "item", name = "pipe-to-ground", amount = 1}, + {type = "item", name = "nullius-one-way-valve", amount = 1} }, results = { {type = "item", name = "nullius-outfall-1", amount = 1} @@ -1151,10 +1151,10 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-outfall-1", 2}, - {"nullius-underground-pipe-2", 4}, - {"concrete", 10}, - {"nullius-pump-2", 1} + {type = "item", name = "nullius-outfall-1", amount = 2}, + {type = "item", name = "nullius-underground-pipe-2", amount = 4}, + {type = "item", name = "concrete", amount = 10}, + {type = "item", name = "nullius-pump-2", amount = 1} }, results = { {type = "item", name = "nullius-outfall-2", amount = 1} @@ -1168,10 +1168,10 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {"nullius-outfall-2", 1}, - {"nullius-underground-pipe-3", 4}, - {"nullius-barrel-pump-2", 1}, - {"nullius-seawater-intake-2", 1} + {type = "item", name = "nullius-outfall-2", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 4}, + {type = "item", name = "nullius-barrel-pump-2", amount = 1}, + {type = "item", name = "nullius-seawater-intake-2", amount = 1} }, results = { {type = "item", name = "nullius-outfall-3", amount = 1} @@ -1252,9 +1252,9 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-pump-1", 1}, - {"nullius-outfall-1", 1}, - {"nullius-filter-1", 1} + {type = "item", name = "nullius-pump-1", amount = 1}, + {type = "item", name = "nullius-outfall-1", amount = 1}, + {type = "item", name = "nullius-filter-1", amount = 1} }, results = { {type = "item", name = "nullius-seawater-intake-1", amount = 1} @@ -1268,10 +1268,10 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-seawater-intake-1", 1}, - {"nullius-pump-2", 1}, - {"nullius-underground-pipe-2", 2}, - {"nullius-filter-1", 5} + {type = "item", name = "nullius-seawater-intake-1", amount = 1}, + {type = "item", name = "nullius-pump-2", amount = 1}, + {type = "item", name = "nullius-underground-pipe-2", amount = 2}, + {type = "item", name = "nullius-filter-1", amount = 5} }, results = { {type = "item", name = "nullius-seawater-intake-2", amount = 1} @@ -1338,9 +1338,9 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-turbine-open-1", 1}, - {"nullius-filter-1", 2}, - {"nullius-pump-1", 1} + {type = "item", name = "nullius-turbine-open-1", amount = 1}, + {type = "item", name = "nullius-filter-1", amount = 2}, + {type = "item", name = "nullius-pump-1", amount = 1} }, results = { {type = "item", name = "nullius-air-filter-1", amount = 1} @@ -1356,10 +1356,10 @@ data:extend({ category = "large-crafting", energy_required = 25, ingredients = { - {"nullius-air-filter-1", 2}, - {"nullius-turbine-open-2", 1}, - {"nullius-filter-1", 10}, - {"nullius-pump-2", 2} + {type = "item", name = "nullius-air-filter-1", amount = 2}, + {type = "item", name = "nullius-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-filter-1", amount = 10}, + {type = "item", name = "nullius-pump-2", amount = 2} }, results = { {type = "item", name = "nullius-air-filter-2", amount = 2} @@ -1375,12 +1375,12 @@ data:extend({ category = "large-crafting", energy_required = 60, ingredients = { - {"nullius-air-filter-2", 3}, - {"nullius-compressor-2", 1}, - {"nullius-filter-2", 6}, - {"pump", 2}, - {"nullius-chimney-2", 1}, - {"stone-wall", 8} + {type = "item", name = "nullius-air-filter-2", amount = 3}, + {type = "item", name = "nullius-compressor-2", amount = 1}, + {type = "item", name = "nullius-filter-2", amount = 6}, + {type = "item", name = "pump", amount = 2}, + {type = "item", name = "nullius-chimney-2", amount = 1}, + {type = "item", name = "stone-wall", amount = 8} }, results = { {type = "item", name = "nullius-air-filter-3", amount = 2} @@ -1442,8 +1442,8 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"nullius-small-furnace-1", 1}, - {"storage-tank", 1} + {type = "item", name = "nullius-small-furnace-1", amount = 1}, + {type = "item", name = "storage-tank", amount = 1} }, results = { {type = "item", name = "nullius-combustion-chamber-1", amount = 1} @@ -1457,9 +1457,9 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-combustion-chamber-1", 1}, - {"nullius-small-furnace-2", 1}, - {"nullius-medium-tank-2", 1} + {type = "item", name = "nullius-combustion-chamber-1", amount = 1}, + {type = "item", name = "nullius-small-furnace-2", amount = 1}, + {type = "item", name = "nullius-medium-tank-2", amount = 1} }, results = { {type = "item", name = "nullius-combustion-chamber-2", amount = 1} @@ -1473,10 +1473,10 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-combustion-chamber-2", 1}, - {"nullius-medium-furnace-2", 1}, - {"nullius-medium-tank-3", 1}, - {"nullius-ceramic-powder", 8} + {type = "item", name = "nullius-combustion-chamber-2", amount = 1}, + {type = "item", name = "nullius-medium-furnace-2", amount = 1}, + {type = "item", name = "nullius-medium-tank-3", amount = 1}, + {type = "item", name = "nullius-ceramic-powder", amount = 8} }, results = { {type = "item", name = "nullius-combustion-chamber-3", amount = 1} @@ -1534,8 +1534,8 @@ data:extend({ always_show_products = true, energy_required = 10, ingredients = { - {"nullius-distillery-1", 1}, - {"nullius-seawater-intake-1", 2} + {type = "item", name = "nullius-distillery-1", amount = 1}, + {type = "item", name = "nullius-seawater-intake-1", amount = 2} }, results = { {type = "item", name = "nullius-hydro-plant-1", amount = 2} @@ -1549,11 +1549,11 @@ data:extend({ always_show_made_in = true, energy_required = 16, ingredients = { - {"nullius-hydro-plant-1", 1}, - {"nullius-chemical-plant-1", 1}, - {"nullius-seawater-intake-2", 1}, - {"nullius-medium-tank-2", 1}, - {"nullius-red-wire", 5} + {type = "item", name = "nullius-hydro-plant-1", amount = 1}, + {type = "item", name = "nullius-chemical-plant-1", amount = 1}, + {type = "item", name = "nullius-seawater-intake-2", amount = 1}, + {type = "item", name = "nullius-medium-tank-2", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 5} }, results = { {type = "item", name = "nullius-hydro-plant-2", amount = 1} @@ -1567,13 +1567,13 @@ data:extend({ category = "huge-crafting", energy_required = 50, ingredients = { - {"nullius-hydro-plant-2", 1}, - {"nullius-flotation-cell-2", 1}, - {"nullius-chemical-plant-2", 1}, - {"nullius-large-tank-3", 1}, - {"pump", 3}, - {"nullius-box-filter-2", 1}, - {"nullius-box-sensor-2", 1} + {type = "item", name = "nullius-hydro-plant-2", amount = 1}, + {type = "item", name = "nullius-flotation-cell-2", amount = 1}, + {type = "item", name = "nullius-chemical-plant-2", amount = 1}, + {type = "item", name = "nullius-large-tank-3", amount = 1}, + {type = "item", name = "pump", amount = 3}, + {type = "item", name = "nullius-box-filter-2", amount = 1}, + {type = "item", name = "nullius-box-sensor-2", amount = 1} }, results = { {type = "item", name = "nullius-hydro-plant-3", amount = 1} @@ -1635,11 +1635,11 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"nullius-small-furnace-1", 1}, - {"storage-tank", 1}, - {"nullius-priority-valve", 2}, - {"nullius-chimney-1", 1}, - {"nullius-filter-1", 2} + {type = "item", name = "nullius-small-furnace-1", amount = 1}, + {type = "item", name = "storage-tank", amount = 1}, + {type = "item", name = "nullius-priority-valve", amount = 2}, + {type = "item", name = "nullius-chimney-1", amount = 1}, + {type = "item", name = "nullius-filter-1", amount = 2} }, results = { {type = "item", name = "nullius-distillery-1", amount = 1} @@ -1653,11 +1653,11 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-distillery-1", 1}, - {"nullius-small-furnace-2", 1}, - {"nullius-small-tank-1", 3}, - {"nullius-heat-pipe-1", 8}, - {"nullius-filter-1", 4} + {type = "item", name = "nullius-distillery-1", amount = 1}, + {type = "item", name = "nullius-small-furnace-2", amount = 1}, + {type = "item", name = "nullius-small-tank-1", amount = 3}, + {type = "item", name = "nullius-heat-pipe-1", amount = 8}, + {type = "item", name = "nullius-filter-1", amount = 4} }, results = { {type = "item", name = "nullius-distillery-2", amount = 1} @@ -1671,13 +1671,13 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-distillery-2", 2}, - {"nullius-hydro-plant-2", 1}, - {"nullius-air-filter-2", 1}, - {"nullius-filter-2", 4}, - {"nullius-large-furnace-1", 1}, - {"nullius-thermal-tank-2", 2}, - {"nullius-barrel-pump-1", 1} + {type = "item", name = "nullius-distillery-2", amount = 2}, + {type = "item", name = "nullius-hydro-plant-2", amount = 1}, + {type = "item", name = "nullius-air-filter-2", amount = 1}, + {type = "item", name = "nullius-filter-2", amount = 4}, + {type = "item", name = "nullius-large-furnace-1", amount = 1}, + {type = "item", name = "nullius-thermal-tank-2", amount = 2}, + {type = "item", name = "nullius-barrel-pump-1", amount = 1} }, results = { {type = "item", name = "nullius-distillery-3", amount = 1} @@ -1735,8 +1735,8 @@ data:extend({ always_show_products = true, energy_required = 18, ingredients = { - {"nullius-hydro-plant-1", 1}, - {"nullius-crusher-1", 1} + {type = "item", name = "nullius-hydro-plant-1", amount = 1}, + {type = "item", name = "nullius-crusher-1", amount = 1} }, results = { {type = "item", name = "nullius-flotation-cell-1", amount = 2} @@ -1750,9 +1750,9 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-flotation-cell-1", 2}, - {"nullius-chemical-plant-1", 1}, - {"nullius-foundry-1", 1} + {type = "item", name = "nullius-flotation-cell-1", amount = 2}, + {type = "item", name = "nullius-chemical-plant-1", amount = 1}, + {type = "item", name = "nullius-foundry-1", amount = 1} }, results = { {type = "item", name = "nullius-flotation-cell-2", amount = 1} @@ -1766,9 +1766,9 @@ data:extend({ category = "huge-crafting", energy_required = 60, ingredients = { - {"nullius-flotation-cell-2", 1}, - {"nullius-hydro-plant-2", 1}, - {"nullius-crusher-2", 1} + {type = "item", name = "nullius-flotation-cell-2", amount = 1}, + {type = "item", name = "nullius-hydro-plant-2", amount = 1}, + {type = "item", name = "nullius-crusher-2", amount = 1} }, results = { {type = "item", name = "nullius-flotation-cell-3", amount = 1} @@ -1830,11 +1830,11 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-small-assembler-1", 1}, - {"storage-tank", 1}, - {"nullius-filter-1", 1}, - {"nullius-priority-valve", 1}, - {"nullius-glass", 3} + {type = "item", name = "nullius-small-assembler-1", amount = 1}, + {type = "item", name = "storage-tank", amount = 1}, + {type = "item", name = "nullius-filter-1", amount = 1}, + {type = "item", name = "nullius-priority-valve", amount = 1}, + {type = "item", name = "nullius-glass", amount = 3} }, results = { {type = "item", name = "nullius-chemical-plant-1", amount = 1} @@ -1850,10 +1850,10 @@ data:extend({ always_show_products = true, energy_required = 50, ingredients = { - {"nullius-chemical-plant-1", 3}, - {"nullius-lab-1", 1}, - {"nullius-distillery-2", 1}, - {"nullius-sensor-1", 4} + {type = "item", name = "nullius-chemical-plant-1", amount = 3}, + {type = "item", name = "nullius-lab-1", amount = 1}, + {type = "item", name = "nullius-distillery-2", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 4} }, results = { {type = "item", name = "nullius-chemical-plant-2", amount = 2} @@ -1867,11 +1867,11 @@ data:extend({ always_show_made_in = true, energy_required = 80, ingredients = { - {"nullius-chemical-plant-2", 2}, - {"nullius-lab-2", 1}, - {"nullius-flotation-cell-2", 1}, - {"nullius-box-hard-glass", 4}, - {"nullius-filter-2", 3} + {type = "item", name = "nullius-chemical-plant-2", amount = 2}, + {type = "item", name = "nullius-lab-2", amount = 1}, + {type = "item", name = "nullius-flotation-cell-2", amount = 1}, + {type = "item", name = "nullius-box-hard-glass", amount = 4}, + {type = "item", name = "nullius-filter-2", amount = 3} }, results = { {type = "item", name = "nullius-chemical-plant-3", amount = 1} @@ -1933,10 +1933,10 @@ data:extend({ always_show_made_in = true, energy_required = 12, ingredients = { - {"small-electric-pole", 3}, - {"storage-tank", 1}, - {"nullius-filter-1", 1}, - {"nullius-priority-valve", 2} + {type = "item", name = "small-electric-pole", amount = 3}, + {type = "item", name = "storage-tank", amount = 1}, + {type = "item", name = "nullius-filter-1", amount = 1}, + {type = "item", name = "nullius-priority-valve", amount = 2} }, results = { {type = "item", name = "nullius-electrolyzer-1", amount = 1} @@ -1950,11 +1950,11 @@ data:extend({ category = "huge-crafting", energy_required = 25, ingredients = { - {"nullius-electrolyzer-1", 2}, - {"big-electric-pole", 2}, - {"nullius-small-tank-1", 2}, - {"nullius-small-pump-1", 1}, - {"power-switch", 1} + {type = "item", name = "nullius-electrolyzer-1", amount = 2}, + {type = "item", name = "big-electric-pole", amount = 2}, + {type = "item", name = "nullius-small-tank-1", amount = 2}, + {type = "item", name = "nullius-small-pump-1", amount = 1}, + {type = "item", name = "power-switch", amount = 1} }, results = { {type = "item", name = "nullius-electrolyzer-2", amount = 1} @@ -1968,11 +1968,11 @@ data:extend({ category = "huge-crafting", energy_required = 60, ingredients = { - {"nullius-electrolyzer-2", 2}, - {"nullius-distillery-2", 1}, - {"nullius-substation-2", 1}, - {"nullius-charger-2", 2}, - {"nullius-efficiency-module-2", 1} + {type = "item", name = "nullius-electrolyzer-2", amount = 2}, + {type = "item", name = "nullius-distillery-2", amount = 1}, + {type = "item", name = "nullius-substation-2", amount = 1}, + {type = "item", name = "nullius-charger-2", amount = 2}, + {type = "item", name = "nullius-efficiency-module-2", amount = 1} }, results = { {type = "item", name = "nullius-electrolyzer-3", amount = 1} @@ -1988,9 +1988,9 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"nullius-iron-sheet", 2}, - {"nullius-iron-rod", 1}, - {"pipe", 3} + {type = "item", name = "nullius-iron-sheet", amount = 2}, + {type = "item", name = "nullius-iron-rod", amount = 1}, + {type = "item", name = "pipe", amount = 3} }, results = { {type = "item", name = "storage-tank", amount = 1} @@ -2005,9 +2005,9 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-iron-sheet", 2}, - {"nullius-box-iron-rod", 1}, - {"nullius-box-pipe-1", 3} + {type = "item", name = "nullius-box-iron-sheet", amount = 2}, + {type = "item", name = "nullius-box-iron-rod", amount = 1}, + {type = "item", name = "nullius-box-pipe-1", amount = 3} }, results = { {type = "item", name = "nullius-box-medium-tank-1", amount = 1} @@ -2035,11 +2035,11 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"storage-tank", 1}, - {"nullius-steel-sheet", 2}, - {"nullius-steel-rod", 1}, - {"nullius-plastic", 2}, - {"nullius-pipe-2", 3} + {type = "item", name = "storage-tank", amount = 1}, + {type = "item", name = "nullius-steel-sheet", amount = 2}, + {type = "item", name = "nullius-steel-rod", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 2}, + {type = "item", name = "nullius-pipe-2", amount = 3} }, results = { {type = "item", name = "nullius-medium-tank-2", amount = 1} @@ -2054,11 +2054,11 @@ data:extend({ always_show_made_in = true, energy_required = 50, ingredients = { - {"nullius-box-medium-tank-1", 1}, - {"nullius-box-steel-sheet", 2}, - {"nullius-box-steel-rod", 1}, - {"nullius-box-plastic", 2}, - {"nullius-box-pipe-2", 3} + {type = "item", name = "nullius-box-medium-tank-1", amount = 1}, + {type = "item", name = "nullius-box-steel-sheet", amount = 2}, + {type = "item", name = "nullius-box-steel-rod", amount = 1}, + {type = "item", name = "nullius-box-plastic", amount = 2}, + {type = "item", name = "nullius-box-pipe-2", amount = 3} }, results = { {type = "item", name = "nullius-box-medium-tank-2", amount = 1} @@ -2137,7 +2137,7 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"nullius-medium-tank-2", 1} + {type = "item", name = "nullius-medium-tank-2", amount = 1} }, results = { {type = "item", name = "nullius-small-tank-1", amount = 3} @@ -2154,7 +2154,7 @@ data:extend({ subgroup = "boxed-tank", energy_required = 25, ingredients = { - {"nullius-box-medium-tank-2", 1} + {type = "item", name = "nullius-box-medium-tank-2", amount = 1} }, results = { {type = "item", name = "nullius-box-small-tank-1", amount = 3} @@ -2186,8 +2186,8 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"nullius-small-tank-1", 2}, - {"nullius-medium-tank-3", 1} + {type = "item", name = "nullius-small-tank-1", amount = 2}, + {type = "item", name = "nullius-medium-tank-3", amount = 1} }, results = { {type = "item", name = "nullius-small-tank-2", amount = 3} @@ -2204,8 +2204,8 @@ data:extend({ subgroup = "boxed-tank", energy_required = 40, ingredients = { - {"nullius-box-small-tank-1", 2}, - {"nullius-box-medium-tank-3", 1} + {type = "item", name = "nullius-box-small-tank-1", amount = 2}, + {type = "item", name = "nullius-box-medium-tank-3", amount = 1} }, results = { {type = "item", name = "nullius-box-small-tank-2", amount = 3} @@ -2376,11 +2376,11 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-underground-pipe-2", 4}, - {"nullius-filter-1", 3}, - {"nullius-pump-2", 1}, - {"nullius-top-up-valve", 1}, - {"stone-brick", 12} + {type = "item", name = "nullius-underground-pipe-2", amount = 4}, + {type = "item", name = "nullius-filter-1", amount = 3}, + {type = "item", name = "nullius-pump-2", amount = 1}, + {type = "item", name = "nullius-top-up-valve", amount = 1}, + {type = "item", name = "stone-brick", amount = 12} }, results = { {type = "item", name = "nullius-well-1", amount = 1} @@ -2394,11 +2394,11 @@ data:extend({ category = "medium-crafting", energy_required = 30, ingredients = { - {"nullius-well-1", 2}, - {"nullius-box-underground-pipe-4", 1}, - {"nullius-filter-2", 2}, - {"pump", 2}, - {"nullius-mortar", 8} + {type = "item", name = "nullius-well-1", amount = 2}, + {type = "item", name = "nullius-box-underground-pipe-4", amount = 1}, + {type = "item", name = "nullius-filter-2", amount = 2}, + {type = "item", name = "pump", amount = 2}, + {type = "item", name = "nullius-mortar", amount = 8} }, results = { {type = "item", name = "nullius-well-2", amount = 1} @@ -2437,10 +2437,10 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-well-1", 3}, - {"nullius-steel-sheet", 8}, - {"nullius-refractory-brick", 40}, - {"nullius-relief-valve", 1} + {type = "item", name = "nullius-well-1", amount = 3}, + {type = "item", name = "nullius-steel-sheet", amount = 8}, + {type = "item", name = "nullius-refractory-brick", amount = 40}, + {type = "item", name = "nullius-relief-valve", amount = 1} }, results = { {type = "item", name = "nullius-extractor-1", amount = 1} @@ -2454,12 +2454,12 @@ data:extend({ category = "huge-crafting", energy_required = 75, ingredients = { - {"nullius-extractor-1", 2}, - {"nullius-well-2", 1}, - {"nullius-box-heat-pipe-2", 2}, - {"nullius-chimney-3", 1}, - {"nullius-medium-miner-3", 1}, - {"nullius-sensor-2", 1} + {type = "item", name = "nullius-extractor-1", amount = 2}, + {type = "item", name = "nullius-well-2", amount = 1}, + {type = "item", name = "nullius-box-heat-pipe-2", amount = 2}, + {type = "item", name = "nullius-chimney-3", amount = 1}, + {type = "item", name = "nullius-medium-miner-3", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1} }, results = { {type = "item", name = "nullius-extractor-2", amount = 1} @@ -2476,12 +2476,12 @@ data:extend({ category = "huge-crafting", energy_required = 75, ingredients = { - {"nullius-extractor-1", 2}, - {"nullius-well-2", 2}, - {"nullius-box-heat-pipe-2", 3}, - {"nullius-barrel-pump-2", 1}, - {"nullius-medium-miner-3", 1}, - {"nullius-sensor-2", 1} + {type = "item", name = "nullius-extractor-1", amount = 2}, + {type = "item", name = "nullius-well-2", amount = 2}, + {type = "item", name = "nullius-box-heat-pipe-2", amount = 3}, + {type = "item", name = "nullius-barrel-pump-2", amount = 1}, + {type = "item", name = "nullius-medium-miner-3", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1} }, results = { {type = "item", name = "nullius-extractor-2", amount = 1} @@ -2543,10 +2543,10 @@ data:extend({ category = "large-crafting", energy_required = 8, ingredients = { - {"nullius-pump-2", 1}, - {"nullius-medium-tank-2", 1}, - {"nullius-top-up-valve", 1}, - {"power-switch", 1} + {type = "item", name = "nullius-pump-2", amount = 1}, + {type = "item", name = "nullius-medium-tank-2", amount = 1}, + {type = "item", name = "nullius-top-up-valve", amount = 1}, + {type = "item", name = "power-switch", amount = 1} }, results = { {type = "item", name = "nullius-compressor-1", amount = 1} @@ -2562,11 +2562,11 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-compressor-1", 5}, - {"nullius-air-filter-2", 1}, - {"nullius-large-tank-2", 1}, - {"nullius-relief-valve", 6}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-compressor-1", amount = 5}, + {type = "item", name = "nullius-air-filter-2", amount = 1}, + {type = "item", name = "nullius-large-tank-2", amount = 1}, + {type = "item", name = "nullius-relief-valve", amount = 6}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "nullius-compressor-2", amount = 3} @@ -2582,12 +2582,12 @@ data:extend({ category = "huge-crafting", energy_required = 90, ingredients = { - {"nullius-compressor-2", 6}, - {"nullius-air-filter-3", 1}, - {"nullius-large-tank-3", 1}, - {"nullius-turbine-closed-3", 1}, - {"nullius-box-pump-3", 1}, - {"nullius-pylon-2", 2} + {type = "item", name = "nullius-compressor-2", amount = 6}, + {type = "item", name = "nullius-air-filter-3", amount = 1}, + {type = "item", name = "nullius-large-tank-3", amount = 1}, + {type = "item", name = "nullius-turbine-closed-3", amount = 1}, + {type = "item", name = "nullius-box-pump-3", amount = 1}, + {type = "item", name = "nullius-pylon-2", amount = 2} }, results = { {type = "item", name = "nullius-compressor-3", amount = 4} @@ -2615,10 +2615,10 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-extractor-1", 3}, - {"nullius-heat-pipe-1", 30}, - {"nullius-aluminum-plate", 20}, - {"nullius-aluminum-rod", 10} + {type = "item", name = "nullius-extractor-1", amount = 3}, + {type = "item", name = "nullius-heat-pipe-1", amount = 30}, + {type = "item", name = "nullius-aluminum-plate", amount = 20}, + {type = "item", name = "nullius-aluminum-rod", amount = 10} }, results = { {type = "item", name = "nullius-geothermal-plant-1", amount = 1} @@ -2646,11 +2646,11 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-geothermal-plant-1", 2}, - {"nullius-thermal-tank-2", 2}, - {"nullius-heat-pipe-2", 25}, - {"stone-wall", 20}, - {"gate", 5} + {type = "item", name = "nullius-geothermal-plant-1", amount = 2}, + {type = "item", name = "nullius-thermal-tank-2", amount = 2}, + {type = "item", name = "nullius-heat-pipe-2", amount = 25}, + {type = "item", name = "stone-wall", amount = 20}, + {type = "item", name = "gate", amount = 5} }, results = { {type = "item", name = "nullius-geothermal-plant-2", amount = 1} @@ -2677,12 +2677,12 @@ data:extend({ category = "huge-crafting", energy_required = 80, ingredients = { - {"nullius-geothermal-plant-2", 2}, - {"nullius-extractor-2", 3}, - {"nullius-thermal-tank-3", 3}, - {"nullius-stirling-engine-3", 2}, - {"nullius-large-miner-2", 1}, - {"nullius-efficiency-module-2", 2} + {type = "item", name = "nullius-geothermal-plant-2", amount = 2}, + {type = "item", name = "nullius-extractor-2", amount = 3}, + {type = "item", name = "nullius-thermal-tank-3", amount = 3}, + {type = "item", name = "nullius-stirling-engine-3", amount = 2}, + {type = "item", name = "nullius-large-miner-2", amount = 1}, + {type = "item", name = "nullius-efficiency-module-2", amount = 2} }, results = { {type = "item", name = "nullius-geothermal-plant-3", amount = 1} @@ -3121,11 +3121,11 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-pump-1", 2}, - {"inserter", 1}, - {"nullius-iron-sheet", 3}, - {"nullius-pipe-2", 5}, - {"nullius-top-up-valve", 2} + {type = "item", name = "nullius-pump-1", amount = 2}, + {type = "item", name = "inserter", amount = 1}, + {type = "item", name = "nullius-iron-sheet", amount = 3}, + {type = "item", name = "nullius-pipe-2", amount = 5}, + {type = "item", name = "nullius-top-up-valve", amount = 2} }, results = { {type = "item", name = "nullius-barrel-pump-1", amount = 1} @@ -3152,8 +3152,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"nullius-combustion-chamber-1", 1}, - {"nullius-heat-pipe-1", 4} + {type = "item", name = "nullius-combustion-chamber-1", amount = 1}, + {type = "item", name = "nullius-heat-pipe-1", amount = 4} }, results = { {type = "item", name = "nullius-heat-exchanger-1", amount = 1} @@ -3179,9 +3179,9 @@ data:extend({ category = "medium-crafting", energy_required = 20, ingredients = { - {"nullius-heat-exchanger-1", 1}, - {"nullius-combustion-chamber-3", 1}, - {"nullius-heat-pipe-2", 8} + {type = "item", name = "nullius-heat-exchanger-1", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-3", amount = 1}, + {type = "item", name = "nullius-heat-pipe-2", amount = 8} }, results = { {type = "item", name = "nullius-heat-exchanger-2", amount = 1} @@ -3207,9 +3207,9 @@ data:extend({ category = "large-crafting", energy_required = 50, ingredients = { - {"nullius-heat-exchanger-2", 2}, - {"nullius-thermal-tank-3", 1}, - {"nullius-filter-2", 1} + {type = "item", name = "nullius-heat-exchanger-2", amount = 2}, + {type = "item", name = "nullius-thermal-tank-3", amount = 1}, + {type = "item", name = "nullius-filter-2", amount = 1} }, results = { {type = "item", name = "nullius-heat-exchanger-3", amount = 1} @@ -3248,10 +3248,10 @@ data:extend({ category = "medium-crafting", energy_required = 15, ingredients = { - {"nullius-heat-exchanger-1", 1}, - {"nullius-medium-furnace-2", 1}, - {"nullius-ceramic-powder", 5}, - {"nullius-transformer", 1} + {type = "item", name = "nullius-heat-exchanger-1", amount = 1}, + {type = "item", name = "nullius-medium-furnace-2", amount = 1}, + {type = "item", name = "nullius-ceramic-powder", amount = 5}, + {type = "item", name = "nullius-transformer", amount = 1} }, results = { {type = "item", name = "nullius-boiler-1", amount = 1} @@ -3265,9 +3265,9 @@ data:extend({ category = "medium-crafting", energy_required = 40, ingredients = { - {"nullius-heat-exchanger-3", 1}, - {"nullius-boiler-1", 1}, - {"nullius-medium-furnace-3", 1} + {type = "item", name = "nullius-heat-exchanger-3", amount = 1}, + {type = "item", name = "nullius-boiler-1", amount = 1}, + {type = "item", name = "nullius-medium-furnace-3", amount = 1} }, results = { {type = "item", name = "nullius-boiler-2", amount = 1} @@ -3294,11 +3294,11 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"nullius-barrel-pump-1", 1}, - {"nullius-small-pump-2", 2}, - {"nullius-small-tank-2", 1}, - {"nullius-sensor-1", 1}, - {"nullius-refueler", 1} + {type = "item", name = "nullius-barrel-pump-1", amount = 1}, + {type = "item", name = "nullius-small-pump-2", amount = 2}, + {type = "item", name = "nullius-small-tank-2", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-refueler", amount = 1} }, results = { {type = "item", name = "nullius-barrel-pump-2", amount = 1} @@ -3315,10 +3315,10 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"nullius-barrel-pump-1", 2}, - {"nullius-small-pump-2", 2}, - {"nullius-small-tank-2", 1}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-barrel-pump-1", amount = 2}, + {type = "item", name = "nullius-small-pump-2", amount = 2}, + {type = "item", name = "nullius-small-tank-2", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "nullius-barrel-pump-2", amount = 1} @@ -3362,12 +3362,12 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-chemical-plant-2", 1}, - {"nullius-electrolyzer-2", 1}, - {"nullius-telekinesis-field-1", 1}, - {"nullius-foundry-2", 1}, - {"nullius-flotation-cell-2", 1}, - {"nullius-air-filter-2", 1} + {type = "item", name = "nullius-chemical-plant-2", amount = 1}, + {type = "item", name = "nullius-electrolyzer-2", amount = 1}, + {type = "item", name = "nullius-telekinesis-field-1", amount = 1}, + {type = "item", name = "nullius-foundry-2", amount = 1}, + {type = "item", name = "nullius-flotation-cell-2", amount = 1}, + {type = "item", name = "nullius-air-filter-2", amount = 1} }, results = { {type = "item", name = "nullius-nanofabricator-1", amount = 2} @@ -3386,11 +3386,11 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-chemical-plant-2", 1}, - {"nullius-electrolyzer-2", 1}, - {"nullius-foundry-2", 1}, - {"nullius-flotation-cell-2", 1}, - {"nullius-air-filter-2", 1} + {type = "item", name = "nullius-chemical-plant-2", amount = 1}, + {type = "item", name = "nullius-electrolyzer-2", amount = 1}, + {type = "item", name = "nullius-foundry-2", amount = 1}, + {type = "item", name = "nullius-flotation-cell-2", amount = 1}, + {type = "item", name = "nullius-air-filter-2", amount = 1} }, results = { {type = "item", name = "nullius-nanofabricator-1", amount = 2} @@ -3406,13 +3406,13 @@ data:extend({ category = "huge-crafting", energy_required = 90, ingredients = { - {"nullius-nanofabricator-1", 1}, - {"nullius-chemical-plant-3", 1}, - {"nullius-electrolyzer-3", 1}, - {"nullius-large-furnace-2", 1}, - {"nullius-large-assembler-2", 1}, - {"nullius-fabrication-tool-3", 1}, - {"nullius-large-dispatch-chest-2", 2} + {type = "item", name = "nullius-nanofabricator-1", amount = 1}, + {type = "item", name = "nullius-chemical-plant-3", amount = 1}, + {type = "item", name = "nullius-electrolyzer-3", amount = 1}, + {type = "item", name = "nullius-large-furnace-2", amount = 1}, + {type = "item", name = "nullius-large-assembler-2", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-3", amount = 1}, + {type = "item", name = "nullius-large-dispatch-chest-2", amount = 2} }, results = { {type = "item", name = "nullius-nanofabricator-2", amount = 2} @@ -3431,12 +3431,12 @@ data:extend({ category = "huge-crafting", energy_required = 90, ingredients = { - {"nullius-nanofabricator-1", 2}, - {"nullius-chemical-plant-3", 1}, - {"nullius-electrolyzer-3", 1}, - {"nullius-large-furnace-2", 1}, - {"nullius-large-assembler-2", 1}, - {"nullius-large-dispatch-chest-2", 2} + {type = "item", name = "nullius-nanofabricator-1", amount = 2}, + {type = "item", name = "nullius-chemical-plant-3", amount = 1}, + {type = "item", name = "nullius-electrolyzer-3", amount = 1}, + {type = "item", name = "nullius-large-furnace-2", amount = 1}, + {type = "item", name = "nullius-large-assembler-2", amount = 1}, + {type = "item", name = "nullius-large-dispatch-chest-2", amount = 2} }, results = { {type = "item", name = "nullius-nanofabricator-2", amount = 2} From 4c7c37cfbb410c0a46fea13528c76e40984f8362 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 14:52:24 +0200 Subject: [PATCH 017/236] Update ingredients to new format : turbine.lua --- nullius/prototypes/item/turbine.lua | 96 ++++++++++++++--------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/nullius/prototypes/item/turbine.lua b/nullius/prototypes/item/turbine.lua index 706418d..6b4298b 100644 --- a/nullius/prototypes/item/turbine.lua +++ b/nullius/prototypes/item/turbine.lua @@ -206,10 +206,10 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-motor-1", 1}, - {"nullius-iron-sheet", 2}, - {"nullius-iron-gear", 1}, - {"pipe", 2} + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-iron-sheet", amount = 2}, + {type = "item", name = "nullius-iron-gear", amount = 1}, + {type = "item", name = "pipe", amount = 2} }, results = { {type = "item", name = "nullius-turbine-open-1", amount = 1} @@ -224,10 +224,10 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-box-motor-1", 1}, - {"nullius-box-iron-sheet", 2}, - {"nullius-box-iron-gear", 1}, - {"nullius-box-pipe-1", 2} + {type = "item", name = "nullius-box-motor-1", amount = 1}, + {type = "item", name = "nullius-box-iron-sheet", amount = 2}, + {type = "item", name = "nullius-box-iron-gear", amount = 1}, + {type = "item", name = "nullius-box-pipe-1", amount = 2} }, results = { {type = "item", name = "nullius-box-turbine-open-1", amount = 1} @@ -241,9 +241,9 @@ data:extend({ category = "large-crafting", energy_required = 4, ingredients = { - {"nullius-turbine-open-1", 1}, - {"nullius-small-tank-1", 1}, - {"nullius-top-up-valve", 1} + {type = "item", name = "nullius-turbine-open-1", amount = 1}, + {type = "item", name = "nullius-small-tank-1", amount = 1}, + {type = "item", name = "nullius-top-up-valve", amount = 1} }, results = { {type = "item", name = "nullius-turbine-closed-1", amount = 1} @@ -258,9 +258,9 @@ data:extend({ subgroup = "boxed-fluid-energy", energy_required = 20, ingredients = { - {"nullius-box-turbine-open-1", 1}, - {"nullius-box-small-tank-1", 1}, - {"nullius-box-top-up-valve", 1} + {type = "item", name = "nullius-box-turbine-open-1", amount = 1}, + {type = "item", name = "nullius-box-small-tank-1", amount = 1}, + {type = "item", name = "nullius-box-top-up-valve", amount = 1} }, results = { {type = "item", name = "nullius-box-turbine-closed-1", amount = 1} @@ -274,11 +274,11 @@ data:extend({ category = "large-crafting", energy_required = 16, ingredients = { - {"nullius-turbine-open-1", 2}, - {"nullius-pump-2", 1}, - {"nullius-aluminum-sheet", 6}, - {"nullius-steel-gear", 3}, - {"nullius-capacitor", 1} + {type = "item", name = "nullius-turbine-open-1", amount = 2}, + {type = "item", name = "nullius-pump-2", amount = 1}, + {type = "item", name = "nullius-aluminum-sheet", amount = 6}, + {type = "item", name = "nullius-steel-gear", amount = 3}, + {type = "item", name = "nullius-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-turbine-open-2", amount = 1} @@ -293,11 +293,11 @@ data:extend({ subgroup = "boxed-fluid-energy", energy_required = 80, ingredients = { - {"nullius-box-turbine-open-1", 2}, - {"nullius-box-pump-2", 1}, - {"nullius-box-aluminum-sheet", 6}, - {"nullius-box-steel-gear", 3}, - {"nullius-box-capacitor", 1} + {type = "item", name = "nullius-box-turbine-open-1", amount = 2}, + {type = "item", name = "nullius-box-pump-2", amount = 1}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 6}, + {type = "item", name = "nullius-box-steel-gear", amount = 3}, + {type = "item", name = "nullius-box-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-box-turbine-open-2", amount = 1} @@ -311,9 +311,9 @@ data:extend({ category = "large-crafting", energy_required = 10, ingredients = { - {"nullius-turbine-open-2", 1}, - {"nullius-turbine-closed-1", 1}, - {"nullius-small-pump-1", 1} + {type = "item", name = "nullius-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-turbine-closed-1", amount = 1}, + {type = "item", name = "nullius-small-pump-1", amount = 1} }, results = { {type = "item", name = "nullius-turbine-closed-2", amount = 1} @@ -328,9 +328,9 @@ data:extend({ subgroup = "boxed-fluid-energy", energy_required = 50, ingredients = { - {"nullius-box-turbine-open-2", 1}, - {"nullius-box-turbine-closed-1", 1}, - {"nullius-box-small-pump-1", 1} + {type = "item", name = "nullius-box-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-box-turbine-closed-1", amount = 1}, + {type = "item", name = "nullius-box-small-pump-1", amount = 1} }, results = { {type = "item", name = "nullius-box-turbine-closed-2", amount = 1} @@ -344,11 +344,11 @@ data:extend({ category = "large-crafting", energy_required = 40, ingredients = { - {"nullius-turbine-open-2", 2}, - {"pump", 3}, - {"nullius-titanium-sheet", 12}, - {"nullius-bearing", 6}, - {"nullius-transformer", 1} + {type = "item", name = "nullius-turbine-open-2", amount = 2}, + {type = "item", name = "pump", amount = 3}, + {type = "item", name = "nullius-titanium-sheet", amount = 12}, + {type = "item", name = "nullius-bearing", amount = 6}, + {type = "item", name = "nullius-transformer", amount = 1} }, results = { {type = "item", name = "nullius-turbine-open-3", amount = 1} @@ -363,11 +363,11 @@ data:extend({ subgroup = "boxed-fluid-energy", energy_required = 200, ingredients = { - {"nullius-box-turbine-open-2", 2}, - {"nullius-box-pump-3", 3}, - {"nullius-box-titanium-sheet", 12}, - {"nullius-box-bearing", 6}, - {"nullius-box-transformer", 1} + {type = "item", name = "nullius-box-turbine-open-2", amount = 2}, + {type = "item", name = "nullius-box-pump-3", amount = 3}, + {type = "item", name = "nullius-box-titanium-sheet", amount = 12}, + {type = "item", name = "nullius-box-bearing", amount = 6}, + {type = "item", name = "nullius-box-transformer", amount = 1} }, results = { {type = "item", name = "nullius-box-turbine-open-3", amount = 1} @@ -381,10 +381,10 @@ data:extend({ category = "large-crafting", energy_required = 20, ingredients = { - {"nullius-turbine-open-3", 1}, - {"nullius-turbine-closed-2", 1}, - {"nullius-small-tank-2", 1}, - {"nullius-small-pump-2", 1} + {type = "item", name = "nullius-turbine-open-3", amount = 1}, + {type = "item", name = "nullius-turbine-closed-2", amount = 1}, + {type = "item", name = "nullius-small-tank-2", amount = 1}, + {type = "item", name = "nullius-small-pump-2", amount = 1} }, results = { {type = "item", name = "nullius-turbine-closed-3", amount = 1} @@ -399,10 +399,10 @@ data:extend({ subgroup = "boxed-fluid-energy", energy_required = 100, ingredients = { - {"nullius-box-turbine-open-3", 1}, - {"nullius-box-turbine-closed-2", 1}, - {"nullius-box-small-tank-2", 1}, - {"nullius-box-small-pump-2", 1} + {type = "item", name = "nullius-box-turbine-open-3", amount = 1}, + {type = "item", name = "nullius-box-turbine-closed-2", amount = 1}, + {type = "item", name = "nullius-box-small-tank-2", amount = 1}, + {type = "item", name = "nullius-box-small-pump-2", amount = 1} }, results = { {type = "item", name = "nullius-box-turbine-closed-3", amount = 1} From 3512b2b3f7cf02485f79dc298afebae3351ea68d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 14:56:39 +0200 Subject: [PATCH 018/236] Update ingredients to new format : equipment.lua --- nullius/prototypes/item/equipment.lua | 822 +++++++++++++------------- 1 file changed, 411 insertions(+), 411 deletions(-) diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index a3692cf..0ee076f 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -132,9 +132,9 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-steel-plate", 12}, - {"nullius-rubber", 8}, - {"inserter", 4} + {type = "item", name = "nullius-steel-plate", amount = 12}, + {type = "item", name = "nullius-rubber", amount = 8}, + {type = "item", name = "inserter", amount = 4} }, results = { {type = "item", name = "nullius-chassis-2", amount = 1} @@ -148,12 +148,12 @@ data:extend({ always_show_made_in = true, energy_required = 60, ingredients = { - {"nullius-titanium-plate", 20}, - {"nullius-ceramic-powder", 15}, - {"nullius-textile", 10}, - {"nullius-robot-frame-1", 2}, - {"nullius-efficiency-module-1", 1}, - {"nullius-transformer", 1} + {type = "item", name = "nullius-titanium-plate", amount = 20}, + {type = "item", name = "nullius-ceramic-powder", amount = 15}, + {type = "item", name = "nullius-textile", amount = 10}, + {type = "item", name = "nullius-robot-frame-1", amount = 2}, + {type = "item", name = "nullius-efficiency-module-1", amount = 1}, + {type = "item", name = "nullius-transformer", amount = 1} }, results = { {type = "item", name = "nullius-chassis-3", amount = 1} @@ -167,13 +167,13 @@ data:extend({ category = "hand-casting", energy_required = 120, ingredients = { - {"nullius-titanium-plate", 20}, - {"nullius-ceramic-powder", 20}, - {"nullius-carbon-composite", 20}, - {"nullius-textile", 20}, - {"nullius-robot-frame-3", 4}, - {"nullius-efficiency-module-2", 2}, - {"nullius-small-cargo-pod-2", 3} + {type = "item", name = "nullius-titanium-plate", amount = 20}, + {type = "item", name = "nullius-ceramic-powder", amount = 20}, + {type = "item", name = "nullius-carbon-composite", amount = 20}, + {type = "item", name = "nullius-textile", amount = 20}, + {type = "item", name = "nullius-robot-frame-3", amount = 4}, + {type = "item", name = "nullius-efficiency-module-2", amount = 2}, + {type = "item", name = "nullius-small-cargo-pod-2", amount = 3} }, results = { {type = "item", name = "nullius-chassis-4", amount = 1} @@ -187,13 +187,13 @@ data:extend({ category = "hand-casting", energy_required = 250, ingredients = { - {"nullius-box-titanium-plate", 8}, - {"nullius-box-carbon-composite", 8}, - {"nullius-armor-plate", 8}, - {"nullius-box-robot-frame-4", 1}, - {"nullius-leg-augmentation-3", 2}, - {"nullius-productivity-module-3", 2}, - {"nullius-large-cargo-pod-3", 2} + {type = "item", name = "nullius-box-titanium-plate", amount = 8}, + {type = "item", name = "nullius-box-carbon-composite", amount = 8}, + {type = "item", name = "nullius-armor-plate", amount = 8}, + {type = "item", name = "nullius-box-robot-frame-4", amount = 1}, + {type = "item", name = "nullius-leg-augmentation-3", amount = 2}, + {type = "item", name = "nullius-productivity-module-3", amount = 2}, + {type = "item", name = "nullius-large-cargo-pod-3", amount = 2} }, results = { {type = "item", name = "nullius-chassis-5", amount = 1} @@ -211,14 +211,14 @@ data:extend({ category = "hand-casting", energy_required = 250, ingredients = { - {"nullius-box-titanium-plate", 8}, - {"nullius-box-ceramic-powder", 6}, - {"nullius-box-carbon-composite", 8}, - {"nullius-box-textile", 6}, - {"nullius-box-robot-frame-4", 1}, - {"nullius-leg-augmentation-3", 4}, - {"nullius-box-productivity-module-3", 1}, - {"nullius-large-buffer-chest-2", 1} + {type = "item", name = "nullius-box-titanium-plate", amount = 8}, + {type = "item", name = "nullius-box-ceramic-powder", amount = 6}, + {type = "item", name = "nullius-box-carbon-composite", amount = 8}, + {type = "item", name = "nullius-box-textile", amount = 6}, + {type = "item", name = "nullius-box-robot-frame-4", amount = 1}, + {type = "item", name = "nullius-leg-augmentation-3", amount = 4}, + {type = "item", name = "nullius-box-productivity-module-3", amount = 1}, + {type = "item", name = "nullius-large-buffer-chest-2", amount = 1} }, results = { {type = "item", name = "nullius-chassis-5", amount = 1} @@ -231,12 +231,12 @@ data:extend({ category = "nanotechnology", energy_required = 500, ingredients = { - {"nullius-chassis-5", 1}, - {"nullius-solar-panel-4", 3}, - {"nullius-battery-3", 4}, - {"nullius-box-graphene", 6}, - {"nullius-leg-augmentation-4", 2}, - {"nullius-relay-4", 1} + {type = "item", name = "nullius-chassis-5", amount = 1}, + {type = "item", name = "nullius-solar-panel-4", amount = 3}, + {type = "item", name = "nullius-battery-3", amount = 4}, + {type = "item", name = "nullius-box-graphene", amount = 6}, + {type = "item", name = "nullius-leg-augmentation-4", amount = 2}, + {type = "item", name = "nullius-relay-4", amount = 1} }, results = { {type = "item", name = "nullius-chassis-6", amount = 1} @@ -311,11 +311,11 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-polycrystalline-silicon", 6}, - {"nullius-glass", 4}, - {"nullius-aluminum-sheet", 3}, - {"nullius-plastic", 2}, - {"nullius-aluminum-rod", 1} + {type = "item", name = "nullius-polycrystalline-silicon", amount = 6}, + {type = "item", name = "nullius-glass", amount = 4}, + {type = "item", name = "nullius-aluminum-sheet", amount = 3}, + {type = "item", name = "nullius-plastic", amount = 2}, + {type = "item", name = "nullius-aluminum-rod", amount = 1} }, results = { {type = "item", name = "nullius-solar-panel-1", amount = 1} @@ -330,11 +330,11 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-box-polycrystalline-silicon", 6}, - {"nullius-box-glass", 4}, - {"nullius-box-aluminum-sheet", 3}, - {"nullius-box-plastic", 2}, - {"nullius-box-aluminum-rod", 1} + {type = "item", name = "nullius-box-polycrystalline-silicon", amount = 6}, + {type = "item", name = "nullius-box-glass", amount = 4}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 3}, + {type = "item", name = "nullius-box-plastic", amount = 2}, + {type = "item", name = "nullius-box-aluminum-rod", amount = 1} }, results = { {type = "item", name = "nullius-box-solar-panel-1", amount = 1} @@ -658,7 +658,7 @@ data:extend({ order = "nullius-eb", energy_required = 2, ingredients = { - {"nullius-uncharged-battery-1", 1} + {type = "item", name = "nullius-uncharged-battery-1", amount = 1} }, results = { {type = "item", name = "nullius-battery-1", amount = 1} @@ -687,7 +687,7 @@ data:extend({ order = "nullius-ebd", energy_required = 10, ingredients = { - {"nullius-uncharged-battery-1", 5} + {type = "item", name = "nullius-uncharged-battery-1", amount = 5} }, results = { {type = "item", name = "nullius-box-battery-1", amount = 1} @@ -773,7 +773,7 @@ data:extend({ order = "nullius-ec", energy_required = 6, ingredients = { - {"nullius-uncharged-battery-2", 1} + {type = "item", name = "nullius-uncharged-battery-2", amount = 1} }, results = { {type = "item", name = "nullius-battery-2", amount = 1} @@ -802,7 +802,7 @@ data:extend({ order = "nullius-ec", energy_required = 30, ingredients = { - {"nullius-uncharged-battery-2", 5} + {type = "item", name = "nullius-uncharged-battery-2", amount = 5} }, results = { {type = "item", name = "nullius-box-battery-2", amount = 1} @@ -869,7 +869,7 @@ data:extend({ order = "nullius-ed", energy_required = 12, ingredients = { - {"nullius-uncharged-battery-3", 1} + {type = "item", name = "nullius-uncharged-battery-3", amount = 1} }, results = { {type = "item", name = "nullius-battery-3", amount = 1} @@ -1075,9 +1075,9 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"medium-electric-pole", 1}, - {"nullius-capacitor", 3}, - {"programmable-speaker", 1} + {type = "item", name = "medium-electric-pole", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 3}, + {type = "item", name = "programmable-speaker", amount = 1} }, results = { {type = "item", name = "nullius-charger-1", amount = 1} @@ -1092,9 +1092,9 @@ data:extend({ subgroup = "boxed-hangar", energy_required = 20, ingredients = { - {"nullius-box-power-pole-2", 1}, - {"nullius-box-capacitor", 3}, - {"nullius-box-antenna", 1} + {type = "item", name = "nullius-box-power-pole-2", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 3}, + {type = "item", name = "nullius-box-antenna", amount = 1} }, results = { {type = "item", name = "nullius-box-charger-1", amount = 1} @@ -1108,9 +1108,9 @@ data:extend({ category = "medium-crafting", energy_required = 10, ingredients = { - {"nullius-charger-1", 1}, - {"nullius-grid-battery-1", 1}, - {"rail-signal", 3} + {type = "item", name = "nullius-charger-1", amount = 1}, + {type = "item", name = "nullius-grid-battery-1", amount = 1}, + {type = "item", name = "rail-signal", amount = 3} }, results = { {type = "item", name = "nullius-charger-2", amount = 1} @@ -1125,9 +1125,9 @@ data:extend({ subgroup = "boxed-hangar", energy_required = 50, ingredients = { - {"nullius-box-charger-1", 1}, - {"nullius-box-grid-battery-1", 1}, - {"nullius-box-rail-signal", 3} + {type = "item", name = "nullius-box-charger-1", amount = 1}, + {type = "item", name = "nullius-box-grid-battery-1", amount = 1}, + {type = "item", name = "nullius-box-rail-signal", amount = 3} }, results = { {type = "item", name = "nullius-box-charger-2", amount = 1} @@ -1141,9 +1141,9 @@ data:extend({ category = "medium-crafting", energy_required = 20, ingredients = { - {"nullius-charger-2", 1}, - {"nullius-relay-2", 1}, - {"nullius-grid-battery-2", 1} + {type = "item", name = "nullius-charger-2", amount = 1}, + {type = "item", name = "nullius-relay-2", amount = 1}, + {type = "item", name = "nullius-grid-battery-2", amount = 1} }, results = { {type = "item", name = "nullius-charger-3", amount = 1} @@ -1158,9 +1158,9 @@ data:extend({ subgroup = "boxed-hangar", energy_required = 100, ingredients = { - {"nullius-box-charger-2", 1}, - {"nullius-box-relay-2", 1}, - {"nullius-box-grid-battery-2", 1} + {type = "item", name = "nullius-box-charger-2", amount = 1}, + {type = "item", name = "nullius-box-relay-2", amount = 1}, + {type = "item", name = "nullius-box-grid-battery-2", amount = 1} }, results = { {type = "item", name = "nullius-box-charger-3", amount = 1} @@ -1174,10 +1174,10 @@ data:extend({ category = "nanotechnology", energy_required = 25, ingredients = { - {"nullius-charger-3", 1}, - {"nullius-substation-3", 1}, - {"nullius-copper-wire", 5}, - {"nullius-lithium", 2} + {type = "item", name = "nullius-charger-3", amount = 1}, + {type = "item", name = "nullius-substation-3", amount = 1}, + {type = "item", name = "nullius-copper-wire", amount = 5}, + {type = "item", name = "nullius-lithium", amount = 2} }, results = { {type = "item", name = "nullius-charger-4", amount = 1} @@ -1192,10 +1192,10 @@ data:extend({ subgroup = "boxed-hangar", energy_required = 125, ingredients = { - {"nullius-box-charger-3", 1}, - {"nullius-substation-3", 5}, - {"nullius-box-copper-wire", 5}, - {"nullius-box-lithium", 2} + {type = "item", name = "nullius-box-charger-3", amount = 1}, + {type = "item", name = "nullius-substation-3", amount = 5}, + {type = "item", name = "nullius-box-copper-wire", amount = 5}, + {type = "item", name = "nullius-box-lithium", amount = 2} }, results = { {type = "item", name = "nullius-box-charger-4", amount = 1} @@ -1267,10 +1267,10 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"programmable-speaker", 1}, - {"decider-combinator", 2}, - {"constant-combinator", 1}, - {"small-lamp", 1} + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "decider-combinator", amount = 2}, + {type = "item", name = "constant-combinator", amount = 1}, + {type = "item", name = "small-lamp", amount = 1} }, results = { {type = "item", name = "nullius-relay-1", amount = 1} @@ -1285,10 +1285,10 @@ data:extend({ subgroup = "boxed-beacon", energy_required = 20, ingredients = { - {"nullius-box-antenna", 1}, - {"nullius-box-logic-circuit", 2}, - {"nullius-box-memory-circuit", 1}, - {"nullius-box-lamp-1", 1} + {type = "item", name = "nullius-box-antenna", amount = 1}, + {type = "item", name = "nullius-box-logic-circuit", amount = 2}, + {type = "item", name = "nullius-box-memory-circuit", amount = 1}, + {type = "item", name = "nullius-box-lamp-1", amount = 1} }, results = { {type = "item", name = "nullius-box-relay-1", amount = 1} @@ -1302,10 +1302,10 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"nullius-relay-1", 1}, - {"nullius-sensor-1", 2}, - {"nullius-transformer", 1}, - {"rail-chain-signal", 2} + {type = "item", name = "nullius-relay-1", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 2}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "rail-chain-signal", amount = 2} }, results = { {type = "item", name = "nullius-relay-2", amount = 1} @@ -1320,10 +1320,10 @@ data:extend({ subgroup = "boxed-beacon", energy_required = 40, ingredients = { - {"nullius-box-relay-1", 1}, - {"nullius-box-sensor-1", 2}, - {"nullius-box-transformer", 1}, - {"nullius-box-chain-signal", 2} + {type = "item", name = "nullius-box-relay-1", amount = 1}, + {type = "item", name = "nullius-box-sensor-1", amount = 2}, + {type = "item", name = "nullius-box-transformer", amount = 1}, + {type = "item", name = "nullius-box-chain-signal", amount = 2} }, results = { {type = "item", name = "nullius-box-relay-2", amount = 1} @@ -1337,11 +1337,11 @@ data:extend({ category = "medium-crafting", energy_required = 20, ingredients = { - {"nullius-relay-2", 2}, - {"nullius-sensor-2", 2}, - {"nullius-power-pole-4", 1}, - {"nullius-lamp-2", 3}, - {"nullius-processor-2", 1} + {type = "item", name = "nullius-relay-2", amount = 2}, + {type = "item", name = "nullius-sensor-2", amount = 2}, + {type = "item", name = "nullius-power-pole-4", amount = 1}, + {type = "item", name = "nullius-lamp-2", amount = 3}, + {type = "item", name = "nullius-processor-2", amount = 1} }, results = { {type = "item", name = "nullius-relay-3", amount = 1} @@ -1356,11 +1356,11 @@ data:extend({ subgroup = "boxed-beacon", energy_required = 100, ingredients = { - {"nullius-box-relay-2", 2}, - {"nullius-box-sensor-2", 2}, - {"nullius-box-power-pole-4", 1}, - {"nullius-box-lamp-2", 3}, - {"nullius-box-processor-2", 1} + {type = "item", name = "nullius-box-relay-2", amount = 2}, + {type = "item", name = "nullius-box-sensor-2", amount = 2}, + {type = "item", name = "nullius-box-power-pole-4", amount = 1}, + {type = "item", name = "nullius-box-lamp-2", amount = 3}, + {type = "item", name = "nullius-box-processor-2", amount = 1} }, results = { {type = "item", name = "nullius-box-relay-3", amount = 1} @@ -1373,9 +1373,9 @@ data:extend({ category = "nanotechnology", energy_required = 30, ingredients = { - {"nullius-box-relay-3", 1}, - {"nullius-box-copper-wire", 3}, - {"nullius-speed-module-4", 1} + {type = "item", name = "nullius-box-relay-3", amount = 1}, + {type = "item", name = "nullius-box-copper-wire", amount = 3}, + {type = "item", name = "nullius-speed-module-4", amount = 1} }, results = { {type = "item", name = "nullius-relay-4", amount = 1} @@ -1427,11 +1427,11 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"decider-combinator", 1}, - {"nullius-fabrication-tool-1", 1}, - {"nullius-steel-gear", 2}, - {"nullius-plastic", 2}, - {"nullius-aluminum-carbide", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-1", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 2}, + {type = "item", name = "nullius-plastic", amount = 2}, + {type = "item", name = "nullius-aluminum-carbide", amount = 1} }, results = { {type = "item", name = "repair-pack", amount = 1} @@ -1446,11 +1446,11 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-fabrication-tool-1", 1}, - {"nullius-box-steel-gear", 2}, - {"nullius-box-plastic", 2}, - {"nullius-box-aluminum-carbide", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-fabrication-tool-1", amount = 1}, + {type = "item", name = "nullius-box-steel-gear", amount = 2}, + {type = "item", name = "nullius-box-plastic", amount = 2}, + {type = "item", name = "nullius-box-aluminum-carbide", amount = 1} }, results = { {type = "item", name = "nullius-box-repair-pack", amount = 1} @@ -1467,11 +1467,11 @@ data:extend({ always_show_made_in = true, energy_required = 6, ingredients = { - {"decider-combinator", 1}, - {"inserter", 1}, - {"nullius-steel-gear", 1}, - {"nullius-plastic", 1}, - {"nullius-aluminum-carbide", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "inserter", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 1}, + {type = "item", name = "nullius-aluminum-carbide", amount = 1} }, results = { {type = "item", name = "repair-pack", amount = 1} @@ -1489,11 +1489,11 @@ data:extend({ always_show_made_in = true, energy_required = 30, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-inserter-1", 1}, - {"nullius-box-steel-gear", 1}, - {"nullius-box-plastic", 1}, - {"nullius-box-aluminum-carbide", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-inserter-1", amount = 1}, + {type = "item", name = "nullius-box-steel-gear", amount = 1}, + {type = "item", name = "nullius-box-plastic", amount = 1}, + {type = "item", name = "nullius-box-aluminum-carbide", amount = 1} }, results = { {type = "item", name = "nullius-box-repair-pack", amount = 1} @@ -1507,11 +1507,11 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-fabrication-tool-2", 1}, - {"bob-turbo-inserter", 1}, - {"repair-pack", 2}, - {"nullius-steel-plate", 2}, - {"nullius-rubber", 2} + {type = "item", name = "nullius-fabrication-tool-2", amount = 1}, + {type = "item", name = "bob-turbo-inserter", amount = 1}, + {type = "item", name = "repair-pack", amount = 2}, + {type = "item", name = "nullius-steel-plate", amount = 2}, + {type = "item", name = "nullius-rubber", amount = 2} }, results = { {type = "item", name = "nullius-self-repair-pack", amount = 10} @@ -1557,12 +1557,12 @@ data:extend({ always_show_made_in = true, energy_required = 12, ingredients = { - {"copper-cable", 6}, - {"nullius-plastic", 4}, - {"nullius-iron-rod", 3}, - {"nullius-sensor-1", 1}, - {"programmable-speaker", 2}, - {"nullius-capacitor", 3} + {type = "item", name = "copper-cable", amount = 6}, + {type = "item", name = "nullius-plastic", amount = 4}, + {type = "item", name = "nullius-iron-rod", amount = 3}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 2}, + {type = "item", name = "nullius-capacitor", amount = 3} }, results = { {type = "item", name = "nullius-levitation-field-1", amount = 1} @@ -1577,12 +1577,12 @@ data:extend({ always_show_made_in = true, energy_required = 60, ingredients = { - {"nullius-box-insulated-wire", 6}, - {"nullius-box-plastic", 4}, - {"nullius-box-iron-rod", 3}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-antenna", 2}, - {"nullius-box-capacitor", 3} + {type = "item", name = "nullius-box-insulated-wire", amount = 6}, + {type = "item", name = "nullius-box-plastic", amount = 4}, + {type = "item", name = "nullius-box-iron-rod", amount = 3}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-antenna", amount = 2}, + {type = "item", name = "nullius-box-capacitor", amount = 3} }, results = { {type = "item", name = "nullius-box-levitation-field-1", amount = 1} @@ -1596,13 +1596,13 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-levitation-field-1", 2}, - {"nullius-ceramic-powder", 2}, - {"nullius-carbon-composite", 3}, - {"nullius-stabilizer-1", 1}, - {"nullius-transformer", 1}, - {"nullius-processor-3", 1}, - {"nullius-copper-sheet", 4} + {type = "item", name = "nullius-levitation-field-1", amount = 2}, + {type = "item", name = "nullius-ceramic-powder", amount = 2}, + {type = "item", name = "nullius-carbon-composite", amount = 3}, + {type = "item", name = "nullius-stabilizer-1", amount = 1}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "nullius-processor-3", amount = 1}, + {type = "item", name = "nullius-copper-sheet", amount = 4} }, results = { {type = "item", name = "nullius-levitation-field-2", amount = 1} @@ -1619,14 +1619,14 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-levitation-field-1", 2}, - {"nullius-ceramic-powder", 2}, - {"nullius-carbon-composite", 3}, - {"nullius-battery-2", 1}, - {"nullius-transformer", 1}, - {"nullius-sensor-2", 1}, - {"nullius-processor-3", 1}, - {"nullius-copper-sheet", 4} + {type = "item", name = "nullius-levitation-field-1", amount = 2}, + {type = "item", name = "nullius-ceramic-powder", amount = 2}, + {type = "item", name = "nullius-carbon-composite", amount = 3}, + {type = "item", name = "nullius-battery-2", amount = 1}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-processor-3", amount = 1}, + {type = "item", name = "nullius-copper-sheet", amount = 4} }, results = { {type = "item", name = "nullius-levitation-field-2", amount = 1} @@ -1681,10 +1681,10 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-sensor-1", 2}, - {"nullius-glass", 2}, - {"nullius-aluminum-sheet", 1}, - {"nullius-capacitor", 2} + {type = "item", name = "nullius-sensor-1", amount = 2}, + {type = "item", name = "nullius-glass", amount = 2}, + {type = "item", name = "nullius-aluminum-sheet", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 2} }, results = { {type = "item", name = "nullius-night-vision-1", amount = 1} @@ -1699,10 +1699,10 @@ data:extend({ always_show_made_in = true, energy_required = 50, ingredients = { - {"nullius-box-sensor-1", 2}, - {"nullius-box-glass", 2}, - {"nullius-box-aluminum-sheet", 1}, - {"nullius-box-capacitor", 2} + {type = "item", name = "nullius-box-sensor-1", amount = 2}, + {type = "item", name = "nullius-box-glass", amount = 2}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 1}, + {type = "item", name = "nullius-box-capacitor", amount = 2} }, results = { {type = "item", name = "nullius-box-night-vision-1", amount = 1} @@ -1716,9 +1716,9 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-night-vision-1", 1}, - {"nullius-sensor-2", 2}, - {"nullius-hard-glass", 2} + {type = "item", name = "nullius-night-vision-1", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 2}, + {type = "item", name = "nullius-hard-glass", amount = 2} }, results = { {type = "item", name = "nullius-night-vision-2", amount = 1} @@ -1732,10 +1732,10 @@ data:extend({ category = "small-crafting", energy_required = 60, ingredients = { - {"nullius-night-vision-2", 2}, - {"nullius-yield-module-3", 1}, - {"nullius-graphene", 2}, - {"nullius-battery-2", 1} + {type = "item", name = "nullius-night-vision-2", amount = 2}, + {type = "item", name = "nullius-yield-module-3", amount = 1}, + {type = "item", name = "nullius-graphene", amount = 2}, + {type = "item", name = "nullius-battery-2", amount = 1} }, results = { {type = "item", name = "nullius-night-vision-3", amount = 1} @@ -1767,12 +1767,12 @@ data:extend({ category = "medium-crafting", energy_required = 15, ingredients = { - {"bulk-inserter", 2}, - {"nullius-sensor-2", 1}, - {"nullius-motor-2", 3}, - {"nullius-titanium-rod", 5}, - {"nullius-jump-boots", 1}, - {"nullius-battery-1", 2} + {type = "item", name = "bulk-inserter", amount = 2}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 3}, + {type = "item", name = "nullius-titanium-rod", amount = 5}, + {type = "item", name = "nullius-jump-boots", amount = 1}, + {type = "item", name = "nullius-battery-1", amount = 2} }, results = { {type = "item", name = "nullius-leg-augmentation-1", amount = 1} @@ -1789,12 +1789,12 @@ data:extend({ category = "medium-crafting", energy_required = 15, ingredients = { - {"bulk-inserter", 4}, - {"nullius-sensor-2", 2}, - {"nullius-motor-2", 6}, - {"nullius-titanium-rod", 6}, - {"nullius-steel-gear", 4}, - {"nullius-battery-1", 2} + {type = "item", name = "bulk-inserter", amount = 4}, + {type = "item", name = "nullius-sensor-2", amount = 2}, + {type = "item", name = "nullius-motor-2", amount = 6}, + {type = "item", name = "nullius-titanium-rod", amount = 6}, + {type = "item", name = "nullius-steel-gear", amount = 4}, + {type = "item", name = "nullius-battery-1", amount = 2} }, results = { {type = "item", name = "nullius-leg-augmentation-1", amount = 1} @@ -1826,13 +1826,13 @@ data:extend({ category = "medium-crafting", energy_required = 30, ingredients = { - {"nullius-leg-augmentation-1", 2}, - {"bob-express-bulk-inserter", 4}, - {"nullius-motor-3", 5}, - {"nullius-carbon-composite", 6}, - {"nullius-levitation-field-1", 1}, - {"nullius-battery-2", 3}, - {"nullius-speed-module-3", 1} + {type = "item", name = "nullius-leg-augmentation-1", amount = 2}, + {type = "item", name = "bob-express-bulk-inserter", amount = 4}, + {type = "item", name = "nullius-motor-3", amount = 5}, + {type = "item", name = "nullius-carbon-composite", amount = 6}, + {type = "item", name = "nullius-levitation-field-1", amount = 1}, + {type = "item", name = "nullius-battery-2", amount = 3}, + {type = "item", name = "nullius-speed-module-3", amount = 1} }, results = { {type = "item", name = "nullius-leg-augmentation-2", amount = 1} @@ -1988,9 +1988,9 @@ data:extend({ category = "large-crafting", energy_required = 6, ingredients = { - {"nullius-leg-augmentation-1", 2}, - {"nullius-steel-beam", 2}, - {"nullius-red-wire", 4} + {type = "item", name = "nullius-leg-augmentation-1", amount = 2}, + {type = "item", name = "nullius-steel-beam", amount = 2}, + {type = "item", name = "nullius-red-wire", amount = 4} }, results = { {type = "item", name = "nullius-quadrupedal-adaptation-1", amount = 1} @@ -2004,9 +2004,9 @@ data:extend({ category = "large-crafting", energy_required = 10, ingredients = { - {"nullius-leg-augmentation-2", 1}, - {"nullius-quadrupedal-adaptation-1", 1}, - {"nullius-steel-gear", 8} + {type = "item", name = "nullius-leg-augmentation-2", amount = 1}, + {type = "item", name = "nullius-quadrupedal-adaptation-1", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 8} }, results = { {type = "item", name = "nullius-quadrupedal-adaptation-2", amount = 1} @@ -2020,9 +2020,9 @@ data:extend({ category = "large-crafting", energy_required = 20, ingredients = { - {"nullius-leg-augmentation-3", 2}, - {"nullius-quadrupedal-adaptation-2", 1}, - {"nullius-titanium-plate", 4} + {type = "item", name = "nullius-leg-augmentation-3", amount = 2}, + {type = "item", name = "nullius-quadrupedal-adaptation-2", amount = 1}, + {type = "item", name = "nullius-titanium-plate", amount = 4} }, results = { {type = "item", name = "nullius-quadrupedal-adaptation-3", amount = 1} @@ -2036,9 +2036,9 @@ data:extend({ category = "large-crafting", energy_required = 30, ingredients = { - {"nullius-leg-augmentation-4", 1}, - {"nullius-quadrupedal-adaptation-3", 1}, - {"nullius-sensor-2", 2} + {type = "item", name = "nullius-leg-augmentation-4", amount = 1}, + {type = "item", name = "nullius-quadrupedal-adaptation-3", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 2} }, results = { {type = "item", name = "nullius-quadrupedal-adaptation-4", amount = 1} @@ -2069,11 +2069,11 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"bob-turbo-inserter", 2}, - {"nullius-steel-gear", 3}, - {"nullius-aluminum-plate", 2}, - {"nullius-red-wire", 2}, - {"nullius-capacitor", 1} + {type = "item", name = "bob-turbo-inserter", amount = 2}, + {type = "item", name = "nullius-steel-gear", amount = 3}, + {type = "item", name = "nullius-aluminum-plate", amount = 2}, + {type = "item", name = "nullius-red-wire", amount = 2}, + {type = "item", name = "nullius-capacitor", amount = 1} }, results = { {type = "item", name = "nullius-jump-boots", amount = 1} @@ -2104,10 +2104,10 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-antimatter", 3}, - {"nullius-telekinesis-field-3", 1}, - {"nullius-armor-plate", 1}, - {"nullius-optical-cable", 8} + {type = "item", name = "nullius-antimatter", amount = 3}, + {type = "item", name = "nullius-telekinesis-field-3", amount = 1}, + {type = "item", name = "nullius-armor-plate", amount = 1}, + {type = "item", name = "nullius-optical-cable", amount = 8} }, results = { {type = "item", name = "nullius-shield", amount = 1} @@ -2171,11 +2171,11 @@ data:extend({ category = "large-crafting", energy_required = 10, ingredients = { - {"nullius-cargo-wagon-1", 1}, - {"nullius-portable-generator-1", 1}, - {"nullius-motor-1", 4}, - {"nullius-steel-gear", 10}, - {"nullius-glass", 3} + {type = "item", name = "nullius-cargo-wagon-1", amount = 1}, + {type = "item", name = "nullius-portable-generator-1", amount = 1}, + {type = "item", name = "nullius-motor-1", amount = 4}, + {type = "item", name = "nullius-steel-gear", amount = 10}, + {type = "item", name = "nullius-glass", amount = 3} }, results = { {type = "item", name = "nullius-locomotive-1", amount = 1} @@ -2192,12 +2192,12 @@ data:extend({ category = "large-crafting", energy_required = 10, ingredients = { - {"nullius-cargo-wagon-1", 1}, - {"nullius-combustion-chamber-1", 1}, - {"nullius-turbine-open-1", 1}, - {"nullius-motor-1", 4}, - {"nullius-steel-gear", 10}, - {"nullius-glass", 3} + {type = "item", name = "nullius-cargo-wagon-1", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-1", amount = 1}, + {type = "item", name = "nullius-turbine-open-1", amount = 1}, + {type = "item", name = "nullius-motor-1", amount = 4}, + {type = "item", name = "nullius-steel-gear", amount = 10}, + {type = "item", name = "nullius-glass", amount = 3} }, results = { {type = "item", name = "nullius-locomotive-1", amount = 1} @@ -2211,12 +2211,12 @@ data:extend({ category = "huge-crafting", energy_required = 20, ingredients = { - {"nullius-locomotive-1", 1}, - {"nullius-cargo-wagon-2", 1}, - {"nullius-refueler", 1}, - {"nullius-portable-generator-2", 1}, - {"nullius-motor-2", 4}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-locomotive-1", amount = 1}, + {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, + {type = "item", name = "nullius-refueler", amount = 1}, + {type = "item", name = "nullius-portable-generator-2", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 4}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "nullius-locomotive-2", amount = 1} @@ -2233,12 +2233,12 @@ data:extend({ category = "huge-crafting", energy_required = 20, ingredients = { - {"nullius-locomotive-1", 1}, - {"nullius-cargo-wagon-2", 1}, - {"nullius-combustion-chamber-2", 1}, - {"nullius-turbine-open-2", 1}, - {"nullius-motor-2", 4}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-locomotive-1", amount = 1}, + {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-2", amount = 1}, + {type = "item", name = "nullius-turbine-open-2", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 4}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "nullius-locomotive-2", amount = 1} @@ -2252,10 +2252,10 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-locomotive-2", 1}, - {"nullius-portable-reactor", 1}, - {"nullius-motor-3", 4}, - {"nullius-speed-module-2", 1} + {type = "item", name = "nullius-locomotive-2", amount = 1}, + {type = "item", name = "nullius-portable-reactor", amount = 1}, + {type = "item", name = "nullius-motor-3", amount = 4}, + {type = "item", name = "nullius-speed-module-2", amount = 1} }, results = { {type = "item", name = "nullius-locomotive-3", amount = 1} @@ -2272,11 +2272,11 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-locomotive-2", 1}, - {"nullius-combustion-chamber-3", 1}, - {"nullius-turbine-closed-3", 1}, - {"nullius-motor-3", 4}, - {"nullius-speed-module-2", 1} + {type = "item", name = "nullius-locomotive-2", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-3", amount = 1}, + {type = "item", name = "nullius-turbine-closed-3", amount = 1}, + {type = "item", name = "nullius-motor-3", amount = 4}, + {type = "item", name = "nullius-speed-module-2", amount = 1} }, results = { {type = "item", name = "nullius-locomotive-3", amount = 1} @@ -2290,11 +2290,11 @@ data:extend({ category = "huge-crafting", energy_required = 40, ingredients = { - {"nullius-locomotive-2", 1}, - {"nullius-solar-panel-2", 8}, - {"nullius-grid-battery-2", 1}, - {"nullius-motor-3", 2}, - {"nullius-efficiency-module-2", 1} + {type = "item", name = "nullius-locomotive-2", amount = 1}, + {type = "item", name = "nullius-solar-panel-2", amount = 8}, + {type = "item", name = "nullius-grid-battery-2", amount = 1}, + {type = "item", name = "nullius-motor-3", amount = 2}, + {type = "item", name = "nullius-efficiency-module-2", amount = 1} }, results = { {type = "item", name = "nullius-solar-locomotive", amount = 1} @@ -2372,11 +2372,11 @@ data:extend({ category = "large-crafting", energy_required = 5, ingredients = { - {"iron-chest", 3}, - {"nullius-steel-beam", 4}, - {"nullius-steel-plate", 5}, - {"nullius-steel-rod", 3}, - {"nullius-graphite", 2} + {type = "item", name = "iron-chest", amount = 3}, + {type = "item", name = "nullius-steel-beam", amount = 4}, + {type = "item", name = "nullius-steel-plate", amount = 5}, + {type = "item", name = "nullius-steel-rod", amount = 3}, + {type = "item", name = "nullius-graphite", amount = 2} }, results = { {type = "item", name = "nullius-cargo-wagon-1", amount = 1} @@ -2468,8 +2468,8 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-cargo-wagon-1", 1}, - {"nullius-small-tank-1", 3} + {type = "item", name = "nullius-cargo-wagon-1", amount = 1}, + {type = "item", name = "nullius-small-tank-1", amount = 3} }, results = { {type = "item", name = "nullius-fluid-wagon-1", amount = 1} @@ -2483,9 +2483,9 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-fluid-wagon-1", 1}, - {"nullius-cargo-wagon-2", 1}, - {"nullius-small-tank-2", 3} + {type = "item", name = "nullius-fluid-wagon-1", amount = 1}, + {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, + {type = "item", name = "nullius-small-tank-2", amount = 3} }, results = { {type = "item", name = "nullius-fluid-wagon-2", amount = 1} @@ -2499,9 +2499,9 @@ data:extend({ category = "large-crafting", energy_required = 20, ingredients = { - {"nullius-fluid-wagon-2", 1}, - {"nullius-large-tank-2", 1}, - {"nullius-box-steel-cable", 1} + {type = "item", name = "nullius-fluid-wagon-2", amount = 1}, + {type = "item", name = "nullius-large-tank-2", amount = 1}, + {type = "item", name = "nullius-box-steel-cable", amount = 1} }, results = { {type = "item", name = "nullius-fluid-wagon-3", amount = 1} @@ -2564,9 +2564,9 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {"nullius-robot-frame-1", 1}, - {"decider-combinator", 1}, - {"nullius-fabrication-tool-2", 1} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-2", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-1", amount = 1} @@ -2581,9 +2581,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 25, ingredients = { - {"nullius-box-robot-frame-1", 1}, - {"nullius-box-logic-circuit", 1}, - {"nullius-box-fabrication-tool-2", 1} + {type = "item", name = "nullius-box-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-fabrication-tool-2", amount = 1} }, results = { {type = "item", name = "nullius-box-construction-bot-1", amount = 1} @@ -2600,9 +2600,9 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {"nullius-robot-frame-1", 1}, - {"decider-combinator", 1}, - {"repair-pack", 1} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "repair-pack", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-1", amount = 1} @@ -2620,9 +2620,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 25, ingredients = { - {"nullius-box-robot-frame-1", 1}, - {"nullius-box-logic-circuit", 1}, - {"nullius-box-repair-pack", 1} + {type = "item", name = "nullius-box-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-repair-pack", amount = 1} }, results = { {type = "item", name = "nullius-box-construction-bot-1", amount = 1} @@ -2636,10 +2636,10 @@ data:extend({ category = "tiny-crafting", energy_required = 6, ingredients = { - {"nullius-construction-bot-1", 1}, - {"nullius-robot-frame-2", 1}, - {"nullius-yield-module-1", 1}, - {"nullius-multi-tool-1", 1} + {type = "item", name = "nullius-construction-bot-1", amount = 1}, + {type = "item", name = "nullius-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-yield-module-1", amount = 1}, + {type = "item", name = "nullius-multi-tool-1", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-2", amount = 1} @@ -2654,10 +2654,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 30, ingredients = { - {"nullius-box-construction-bot-1", 1}, - {"nullius-box-robot-frame-2", 1}, - {"nullius-box-yield-module-1", 1}, - {"nullius-multi-tool-1", 5} + {type = "item", name = "nullius-box-construction-bot-1", amount = 1}, + {type = "item", name = "nullius-box-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-box-yield-module-1", amount = 1}, + {type = "item", name = "nullius-multi-tool-1", amount = 5} }, results = { {type = "item", name = "nullius-box-construction-bot-2", amount = 1} @@ -2674,9 +2674,9 @@ data:extend({ category = "tiny-crafting", energy_required = 6, ingredients = { - {"nullius-construction-bot-1", 1}, - {"nullius-robot-frame-2", 1}, - {"nullius-yield-module-1", 1} + {type = "item", name = "nullius-construction-bot-1", amount = 1}, + {type = "item", name = "nullius-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-yield-module-1", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-2", amount = 1} @@ -2694,9 +2694,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 30, ingredients = { - {"nullius-box-construction-bot-1", 1}, - {"nullius-box-robot-frame-2", 1}, - {"nullius-box-yield-module-1", 1} + {type = "item", name = "nullius-box-construction-bot-1", amount = 1}, + {type = "item", name = "nullius-box-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-box-yield-module-1", amount = 1} }, results = { {type = "item", name = "nullius-box-construction-bot-2", amount = 1} @@ -2710,10 +2710,10 @@ data:extend({ category = "tiny-crafting", energy_required = 8, ingredients = { - {"nullius-construction-bot-2", 2}, - {"nullius-robot-frame-3", 1}, - {"nullius-productivity-module-1", 1}, - {"nullius-fabrication-tool-3", 1} + {type = "item", name = "nullius-construction-bot-2", amount = 2}, + {type = "item", name = "nullius-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-productivity-module-1", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-3", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-3", amount = 1} @@ -2728,10 +2728,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 40, ingredients = { - {"nullius-box-construction-bot-2", 2}, - {"nullius-box-robot-frame-3", 1}, - {"nullius-box-productivity-module-1", 1}, - {"nullius-fabrication-tool-3", 5} + {type = "item", name = "nullius-box-construction-bot-2", amount = 2}, + {type = "item", name = "nullius-box-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-box-productivity-module-1", amount = 1}, + {type = "item", name = "nullius-fabrication-tool-3", amount = 5} }, results = { {type = "item", name = "nullius-box-construction-bot-3", amount = 1} @@ -2748,10 +2748,10 @@ data:extend({ category = "tiny-crafting", energy_required = 8, ingredients = { - {"nullius-construction-bot-2", 2}, - {"nullius-robot-frame-3", 1}, - {"nullius-productivity-module-1", 1}, - {"nullius-small-miner-3", 1} + {type = "item", name = "nullius-construction-bot-2", amount = 2}, + {type = "item", name = "nullius-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-productivity-module-1", amount = 1}, + {type = "item", name = "nullius-small-miner-3", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-3", amount = 1} @@ -2769,10 +2769,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 40, ingredients = { - {"nullius-box-construction-bot-2", 2}, - {"nullius-box-robot-frame-3", 1}, - {"nullius-box-productivity-module-1", 1}, - {"nullius-small-miner-3", 5} + {type = "item", name = "nullius-box-construction-bot-2", amount = 2}, + {type = "item", name = "nullius-box-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-box-productivity-module-1", amount = 1}, + {type = "item", name = "nullius-small-miner-3", amount = 5} }, results = { {type = "item", name = "nullius-box-construction-bot-3", amount = 1} @@ -2788,10 +2788,10 @@ data:extend({ category = "tiny-crafting", energy_required = 25, ingredients = { - {"nullius-construction-bot-3", 3}, - {"nullius-robot-frame-4", 2}, - {"nullius-productivity-module-3", 1}, - {"nullius-multi-tool-2", 2} + {type = "item", name = "nullius-construction-bot-3", amount = 3}, + {type = "item", name = "nullius-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-productivity-module-3", amount = 1}, + {type = "item", name = "nullius-multi-tool-2", amount = 2} }, results = { {type = "item", name = "nullius-construction-bot-4", amount = 2} @@ -2808,10 +2808,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 125, ingredients = { - {"nullius-box-construction-bot-3", 3}, - {"nullius-box-robot-frame-4", 2}, - {"nullius-box-productivity-module-3", 1}, - {"nullius-multi-tool-2", 10} + {type = "item", name = "nullius-box-construction-bot-3", amount = 3}, + {type = "item", name = "nullius-box-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-box-productivity-module-3", amount = 1}, + {type = "item", name = "nullius-multi-tool-2", amount = 10} }, results = { {type = "item", name = "nullius-box-construction-bot-4", amount = 2} @@ -2830,9 +2830,9 @@ data:extend({ category = "tiny-crafting", energy_required = 25, ingredients = { - {"nullius-construction-bot-3", 3}, - {"nullius-robot-frame-4", 2}, - {"nullius-productivity-module-3", 1} + {type = "item", name = "nullius-construction-bot-3", amount = 3}, + {type = "item", name = "nullius-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-productivity-module-3", amount = 1} }, results = { {type = "item", name = "nullius-construction-bot-4", amount = 2} @@ -2852,9 +2852,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 125, ingredients = { - {"nullius-box-construction-bot-3", 3}, - {"nullius-box-robot-frame-4", 2}, - {"nullius-box-productivity-module-3", 1} + {type = "item", name = "nullius-box-construction-bot-3", amount = 3}, + {type = "item", name = "nullius-box-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-box-productivity-module-3", amount = 1} }, results = { {type = "item", name = "nullius-box-construction-bot-4", amount = 2} @@ -2917,9 +2917,9 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {"nullius-robot-frame-1", 1}, - {"arithmetic-combinator", 1}, - {"nullius-small-cargo-pod-1", 1} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 1}, + {type = "item", name = "nullius-small-cargo-pod-1", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-1", amount = 1} @@ -2934,9 +2934,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 25, ingredients = { - {"nullius-box-robot-frame-1", 1}, - {"nullius-box-arithmetic-circuit", 1}, - {"nullius-small-cargo-pod-1", 5} + {type = "item", name = "nullius-box-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1}, + {type = "item", name = "nullius-small-cargo-pod-1", amount = 5} }, results = { {type = "item", name = "nullius-box-logistic-bot-1", amount = 1} @@ -2953,9 +2953,9 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {"nullius-robot-frame-1", 1}, - {"arithmetic-combinator", 1}, - {"nullius-small-storage-chest-1", 1} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 1}, + {type = "item", name = "nullius-small-storage-chest-1", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-1", amount = 1} @@ -2973,9 +2973,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 25, ingredients = { - {"nullius-box-robot-frame-1", 1}, - {"nullius-box-arithmetic-circuit", 1}, - {"nullius-small-storage-chest-1", 5} + {type = "item", name = "nullius-box-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-box-arithmetic-circuit", amount = 1}, + {type = "item", name = "nullius-small-storage-chest-1", amount = 5} }, results = { {type = "item", name = "nullius-box-logistic-bot-1", amount = 1} @@ -2989,10 +2989,10 @@ data:extend({ category = "tiny-crafting", energy_required = 6, ingredients = { - {"nullius-logistic-bot-1", 1}, - {"nullius-robot-frame-2", 1}, - {"nullius-efficiency-module-1", 1}, - {"nullius-large-cargo-pod-1", 1} + {type = "item", name = "nullius-logistic-bot-1", amount = 1}, + {type = "item", name = "nullius-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-efficiency-module-1", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-1", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-2", amount = 1} @@ -3007,10 +3007,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 30, ingredients = { - {"nullius-box-logistic-bot-1", 1}, - {"nullius-box-robot-frame-2", 1}, - {"nullius-box-efficiency-module-1", 1}, - {"nullius-large-cargo-pod-1", 5} + {type = "item", name = "nullius-box-logistic-bot-1", amount = 1}, + {type = "item", name = "nullius-box-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-box-efficiency-module-1", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-1", amount = 5} }, results = { {type = "item", name = "nullius-box-logistic-bot-2", amount = 1} @@ -3027,9 +3027,9 @@ data:extend({ category = "tiny-crafting", energy_required = 6, ingredients = { - {"nullius-logistic-bot-1", 1}, - {"nullius-robot-frame-2", 1}, - {"nullius-efficiency-module-1", 1} + {type = "item", name = "nullius-logistic-bot-1", amount = 1}, + {type = "item", name = "nullius-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-efficiency-module-1", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-2", amount = 1} @@ -3047,9 +3047,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 30, ingredients = { - {"nullius-box-logistic-bot-1", 1}, - {"nullius-box-robot-frame-2", 1}, - {"nullius-box-efficiency-module-1", 1} + {type = "item", name = "nullius-box-logistic-bot-1", amount = 1}, + {type = "item", name = "nullius-box-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-box-efficiency-module-1", amount = 1} }, results = { {type = "item", name = "nullius-box-logistic-bot-2", amount = 1} @@ -3063,10 +3063,10 @@ data:extend({ category = "tiny-crafting", energy_required = 8, ingredients = { - {"nullius-logistic-bot-2", 2}, - {"nullius-robot-frame-3", 1}, - {"nullius-speed-module-2", 1}, - {"nullius-large-cargo-pod-2", 1} + {type = "item", name = "nullius-logistic-bot-2", amount = 2}, + {type = "item", name = "nullius-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-speed-module-2", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-2", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-3", amount = 1} @@ -3081,10 +3081,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 40, ingredients = { - {"nullius-box-logistic-bot-2", 2}, - {"nullius-box-robot-frame-3", 1}, - {"nullius-box-speed-module-2", 1}, - {"nullius-large-cargo-pod-2", 5} + {type = "item", name = "nullius-box-logistic-bot-2", amount = 2}, + {type = "item", name = "nullius-box-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-box-speed-module-2", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-2", amount = 5} }, results = { {type = "item", name = "nullius-box-logistic-bot-3", amount = 1} @@ -3101,10 +3101,10 @@ data:extend({ category = "tiny-crafting", energy_required = 8, ingredients = { - {"nullius-logistic-bot-2", 2}, - {"nullius-robot-frame-3", 1}, - {"nullius-speed-module-2", 1}, - {"buffer-chest", 1} + {type = "item", name = "nullius-logistic-bot-2", amount = 2}, + {type = "item", name = "nullius-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-speed-module-2", amount = 1}, + {type = "item", name = "buffer-chest", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-3", amount = 1} @@ -3122,10 +3122,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 40, ingredients = { - {"nullius-box-logistic-bot-2", 2}, - {"nullius-box-robot-frame-3", 1}, - {"nullius-box-speed-module-2", 1}, - {"buffer-chest", 5} + {type = "item", name = "nullius-box-logistic-bot-2", amount = 2}, + {type = "item", name = "nullius-box-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-box-speed-module-2", amount = 1}, + {type = "item", name = "buffer-chest", amount = 5} }, results = { {type = "item", name = "nullius-box-logistic-bot-3", amount = 1} @@ -3141,10 +3141,10 @@ data:extend({ category = "tiny-crafting", energy_required = 25, ingredients = { - {"nullius-logistic-bot-3", 3}, - {"nullius-robot-frame-4", 2}, - {"nullius-speed-module-4", 1}, - {"nullius-large-cargo-pod-3", 2} + {type = "item", name = "nullius-logistic-bot-3", amount = 3}, + {type = "item", name = "nullius-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-speed-module-4", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-3", amount = 2} }, results = { {type = "item", name = "nullius-logistic-bot-4", amount = 2} @@ -3161,10 +3161,10 @@ data:extend({ subgroup = "boxed-robot", energy_required = 125, ingredients = { - {"nullius-box-logistic-bot-3", 3}, - {"nullius-box-robot-frame-4", 2}, - {"nullius-box-speed-module-4", 1}, - {"nullius-large-cargo-pod-3", 10} + {type = "item", name = "nullius-box-logistic-bot-3", amount = 3}, + {type = "item", name = "nullius-box-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-box-speed-module-4", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-3", amount = 10} }, results = { {type = "item", name = "nullius-box-logistic-bot-4", amount = 2} @@ -3183,9 +3183,9 @@ data:extend({ category = "tiny-crafting", energy_required = 25, ingredients = { - {"nullius-logistic-bot-3", 3}, - {"nullius-robot-frame-4", 2}, - {"nullius-speed-module-4", 1} + {type = "item", name = "nullius-logistic-bot-3", amount = 3}, + {type = "item", name = "nullius-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-speed-module-4", amount = 1} }, results = { {type = "item", name = "nullius-logistic-bot-4", amount = 2} @@ -3205,9 +3205,9 @@ data:extend({ subgroup = "boxed-robot", energy_required = 125, ingredients = { - {"nullius-box-logistic-bot-3", 3}, - {"nullius-box-robot-frame-4", 2}, - {"nullius-box-speed-module-4", 1} + {type = "item", name = "nullius-box-logistic-bot-3", amount = 3}, + {type = "item", name = "nullius-box-robot-frame-4", amount = 2}, + {type = "item", name = "nullius-box-speed-module-4", amount = 1} }, results = { {type = "item", name = "nullius-box-logistic-bot-4", amount = 2} @@ -3487,8 +3487,8 @@ data:extend({ category = "tiny-crafting", energy_required = 20, ingredients = { - {"nullius-scout-remote", 1}, - {"nullius-processor-2", 1} + {type = "item", name = "nullius-scout-remote", amount = 1}, + {type = "item", name = "nullius-processor-2", amount = 1} }, results = { {type = "item", name = "nullius-mecha-remote", amount = 1} @@ -3513,17 +3513,17 @@ data:extend({ category = "rocketry", energy_required = 400, ingredients = { - {"nullius-box-rocket-fuel", 50}, - {"nullius-box-carbon-composite", 40}, - {"nullius-box-titanium-sheet", 30}, - {"nullius-haste-module-3", 2}, - {"nullius-sensor-node-2", 3}, - {"nullius-box-steel-beam", 20}, - {"nullius-box-heat-pipe-3", 6}, - {"nullius-box-insulation", 12}, - {"nullius-box-ceramic-powder", 20}, - {"nullius-box-logistic-bot-2", 1}, - {"nullius-box-gate", 1} + {type = "item", name = "nullius-box-rocket-fuel", amount = 50}, + {type = "item", name = "nullius-box-carbon-composite", amount = 40}, + {type = "item", name = "nullius-box-titanium-sheet", amount = 30}, + {type = "item", name = "nullius-haste-module-3", amount = 2}, + {type = "item", name = "nullius-sensor-node-2", amount = 3}, + {type = "item", name = "nullius-box-steel-beam", amount = 20}, + {type = "item", name = "nullius-box-heat-pipe-3", amount = 6}, + {type = "item", name = "nullius-box-insulation", amount = 12}, + {type = "item", name = "nullius-box-ceramic-powder", amount = 20}, + {type = "item", name = "nullius-box-logistic-bot-2", amount = 1}, + {type = "item", name = "nullius-box-gate", amount = 1} }, results = { {type = "item", name = "nullius-rocket", amount = 1} @@ -3549,14 +3549,14 @@ data:extend({ category = "huge-crafting", energy_required = 120, ingredients = { - {"nullius-box-rocket-fuel", 10}, - {"nullius-box-carbon-composite", 6}, - {"nullius-box-aluminum-sheet", 5}, - {"nullius-efficiency-module-3", 2}, - {"nullius-lab-2", 3}, - {"nullius-beacon-3", 2}, - {"nullius-box-solar-panel-2", 3}, - {"nullius-grid-battery-2", 4} + {type = "item", name = "nullius-box-rocket-fuel", amount = 10}, + {type = "item", name = "nullius-box-carbon-composite", amount = 6}, + {type = "item", name = "nullius-box-aluminum-sheet", amount = 5}, + {type = "item", name = "nullius-efficiency-module-3", amount = 2}, + {type = "item", name = "nullius-lab-2", amount = 3}, + {type = "item", name = "nullius-beacon-3", amount = 2}, + {type = "item", name = "nullius-box-solar-panel-2", amount = 3}, + {type = "item", name = "nullius-grid-battery-2", amount = 4} }, results = { {type = "item", name = "nullius-satellite", amount = 1} @@ -3587,13 +3587,13 @@ data:extend({ category = "huge-crafting", energy_required = 800, ingredients = { - {"nullius-asteroid-miner-1", 1}, - {"nullius-satellite", 2}, - {"nullius-antimatter", 25}, - {"nullius-box-copper-sheet", 10}, - {"nullius-android-2", 1}, - {"nullius-nanofabricator-2", 1}, - {"nullius-reactor", 1} + {type = "item", name = "nullius-asteroid-miner-1", amount = 1}, + {type = "item", name = "nullius-satellite", amount = 2}, + {type = "item", name = "nullius-antimatter", amount = 25}, + {type = "item", name = "nullius-box-copper-sheet", amount = 10}, + {type = "item", name = "nullius-android-2", amount = 1}, + {type = "item", name = "nullius-nanofabricator-2", amount = 1}, + {type = "item", name = "nullius-reactor", amount = 1} }, results = { {type = "item", name = "nullius-probe", amount = 1} @@ -3620,11 +3620,11 @@ data:extend({ category = "hand-casting", energy_required = 12, ingredients = { - {"nullius-steel-plate", 3}, - {"nullius-ceramic-powder", 4}, - {"nullius-plastic", 3}, - {"nullius-textile", 2}, - {"nullius-rubber", 1} + {type = "item", name = "nullius-steel-plate", amount = 3}, + {type = "item", name = "nullius-ceramic-powder", amount = 4}, + {type = "item", name = "nullius-plastic", amount = 3}, + {type = "item", name = "nullius-textile", amount = 2}, + {type = "item", name = "nullius-rubber", amount = 1} }, results = { {type = "item", name = "nullius-armor-plate", amount = 1} @@ -4439,8 +4439,8 @@ data:extend({ order = "nullius-dbdc", energy_required = 1, ingredients = { - {"nullius-portable-generator-backup", 1}, - {"copper-cable", 1} + {type = "item", name = "nullius-portable-generator-backup", amount = 1}, + {type = "item", name = "copper-cable", amount = 1} }, results = { {type = "item", name = "nullius-portable-generator-2", amount = 1} From b16b0dcbe4422ccc2d23bf5fb91bd60febd6ea95 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 14:58:43 +0200 Subject: [PATCH 019/236] Update ingredients to new format : biology.lua --- nullius/prototypes/item/biology.lua | 50 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index f712046..ae887bc 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -2321,11 +2321,11 @@ data:extend({ category = "huge-assembly", energy_required = 300, ingredients = { - {"nullius-terraforming-drone-grey", 1}, - {"nullius-box-rocket-fuel", 20}, - {"nullius-box-coal", 30000}, - {"nullius-large-dispatch-chest-2", 1}, - {"nullius-large-miner-2", 4} + {type = "item", name = "nullius-terraforming-drone-grey", amount = 1}, + {type = "item", name = "nullius-box-rocket-fuel", amount = 20}, + {type = "item", name = "nullius-box-coal", amount = 30000}, + {type = "item", name = "nullius-large-dispatch-chest-2", amount = 1}, + {type = "item", name = "nullius-large-miner-2", amount = 4} }, results = { {type = "item", name = "nullius-sequestration-coal-drone", amount = 1} @@ -2340,8 +2340,8 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-terraforming-remote-grey", 1}, - {"nullius-yield-module-3", 1} + {type = "item", name = "nullius-terraforming-remote-grey", amount = 1}, + {type = "item", name = "nullius-yield-module-3", amount = 1} }, results = { {type = "item", name = "nullius-sequestration-coal-remote", amount = 1} @@ -2375,8 +2375,8 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-terraforming-remote-tan", 1}, - {"nullius-yield-module-3", 1} + {type = "item", name = "nullius-terraforming-remote-tan", amount = 1}, + {type = "item", name = "nullius-yield-module-3", amount = 1} }, results = { {type = "item", name = "nullius-sequestration-petroleum-remote", amount = 1} @@ -4963,8 +4963,8 @@ data:extend({ order = "nullius-cb", energy_required = 3, ingredients = { - {"nullius-aluminum-wire", 2}, - {"nullius-wood", 1} + {type = "item", name = "nullius-aluminum-wire", amount = 2}, + {type = "item", name = "nullius-wood", amount = 1} }, results = { {type = "item", name = "small-electric-pole", amount = 2} @@ -4996,8 +4996,8 @@ data:extend({ order = "nullius-wbb", energy_required = 15, ingredients = { - {"nullius-box-aluminum-wire", 2}, - {"nullius-box-wood", 1} + {type = "item", name = "nullius-box-aluminum-wire", amount = 2}, + {type = "item", name = "nullius-box-wood", amount = 1} }, results = { {type = "item", name = "nullius-box-power-pole-1", amount = 2} @@ -5258,10 +5258,10 @@ data:extend({ order = "nullius-eb", energy_required = 8, ingredients = { - {"nullius-steel-wire", 1}, - {"nullius-gypsum", 2}, - {"nullius-wood", 4}, - {"nullius-textile", 1} + {type = "item", name = "nullius-steel-wire", amount = 1}, + {type = "item", name = "nullius-gypsum", amount = 2}, + {type = "item", name = "nullius-wood", amount = 4}, + {type = "item", name = "nullius-textile", amount = 1} }, results = { {type="item", name="nullius-insulation", amount=3}, @@ -5292,10 +5292,10 @@ data:extend({ order = "nullius-wdb", energy_required = 40, ingredients = { - {"nullius-box-steel-wire", 1}, - {"nullius-box-gypsum", 2}, - {"nullius-box-wood", 4}, - {"nullius-box-textile", 1} + {type = "item", name = "nullius-box-steel-wire", amount = 1}, + {type = "item", name = "nullius-box-gypsum", amount = 2}, + {type = "item", name = "nullius-box-wood", amount = 4}, + {type = "item", name = "nullius-box-textile", amount = 1} }, results = { {type="item", name="nullius-box-insulation", amount=3}, @@ -5327,8 +5327,8 @@ data:extend({ order = "nullius-f", energy_required = 15, ingredients = { - {"nullius-small-assembler-1", 5}, - {"nullius-wood", 4} + {type = "item", name = "nullius-small-assembler-1", amount = 5}, + {type = "item", name = "nullius-wood", amount = 4} }, results = { {type="item", name="nullius-medium-assembler-1", amount=3}, @@ -5360,8 +5360,8 @@ data:extend({ order = "nullius-g", energy_required = 12, ingredients = { - {"nullius-small-miner-1", 3}, - {"nullius-box-wood", 1} + {type = "item", name = "nullius-small-miner-1", amount = 3}, + {type = "item", name = "nullius-box-wood", amount = 1} }, results = { {type="item", name="nullius-medium-miner-1", amount=2}, From 7cfddabcf0f63934ee596442afcc46b1fd4690fe Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:13:39 +0200 Subject: [PATCH 020/236] Update ingredients to new format : drone.lua --- nullius/prototypes/item/drone.lua | 259 ++++++++++++++++-------------- 1 file changed, 135 insertions(+), 124 deletions(-) diff --git a/nullius/prototypes/item/drone.lua b/nullius/prototypes/item/drone.lua index 2f71fc9..2f9a9a3 100644 --- a/nullius/prototypes/item/drone.lua +++ b/nullius/prototypes/item/drone.lua @@ -95,10 +95,10 @@ local function create_terraform(suffix, tile, suborder) category = "huge-crafting", energy_required = 60, ingredients = { - {"nullius-shallow-excavation-drone", 1}, - {"nullius-construction-bot-3", 2}, - {"rocket-fuel", 2}, - {"nullius-box-land-fill-"..tile, 200} + {type = "item", name = "nullius-shallow-excavation-drone", amount = 1}, + {type = "item", name = "nullius-construction-bot-3", amount = 2}, + {type = "item", name = "rocket-fuel", amount = 2}, + {type = "item", name = "nullius-box-land-fill-"..tile, amount = 200} }, results = { {type="item", name="nullius-terraforming-drone-"..suffix, amount = 1} @@ -113,8 +113,8 @@ local function create_terraform(suffix, tile, suborder) category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-shallow-excavation-remote", 1}, - {"nullius-productivity-module-1", 1} + {type = "item", name = "nullius-shallow-excavation-remote", amount = 1}, + {type = "item", name = "nullius-productivity-module-1", amount = 1} }, results = { {type="item", name="nullius-terraforming-remote-"..suffix, amount = 1} @@ -137,10 +137,10 @@ local function create_paving(suffix, landfill, suborder, tile) category = "huge-crafting", energy_required = 25, ingredients = { - {"nullius-terraforming-drone-"..landfill, 1}, - {"nullius-logistic-bot-3", 1}, - {"rocket-fuel", 1}, - {"nullius-box-"..tile.."-concrete", 300} + {type = "item", name = "nullius-terraforming-drone-"..landfill, amount = 1}, + {type = "item", name = "nullius-logistic-bot-3", amount = 1}, + {type = "item", name = "rocket-fuel", amount = 1}, + {type = "item", name = "nullius-box-"..tile.."-concrete", amount = 300} }, results = { {type="item", name="nullius-paving-drone-"..suffix, amount = 1} @@ -155,8 +155,8 @@ local function create_paving(suffix, landfill, suborder, tile) category = "small-crafting", energy_required = 5, ingredients = { - {"nullius-terraforming-remote-"..landfill, 1}, - {"nullius-productivity-module-2", 1} + {type = "item", name = "nullius-terraforming-remote-"..landfill, amount = 1}, + {type = "item", name = "nullius-productivity-module-2", amount = 1} }, results = { {type="item", name="nullius-paving-remote-"..suffix, amount = 1} @@ -230,8 +230,8 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-terraforming-remote-"..landfill, 1}, - {"nullius-yield-module-3", 1} + {type = "item", name = "nullius-terraforming-remote-"..landfill, amount = 1}, + {type = "item", name = "nullius-yield-module-3", amount = 1} }, results = { {type="item", name="nullius-guide-remote-"..mineral, amount = 1} @@ -265,8 +265,8 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it order = "nullius-"..suborder.."d", energy_required = 20, ingredients = { - {"nullius-guide-drone-"..mineral.."-1", 2}, - {"nullius-box-astronomy-pack", 1} + {type = "item", name = "nullius-guide-drone-"..mineral.."-1", amount = 2}, + {type = "item", name = "nullius-box-astronomy-pack", amount = 1} }, results = { {type="item", name="nullius-asteroid-miner-1", amount = 1} @@ -281,8 +281,8 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it category = "huge-crafting", energy_required = 30, ingredients = { - {"nullius-guide-drone-"..mineral.."-1", 40}, - {"nullius-relay-3", 1} + {type = "item", name = "nullius-guide-drone-"..mineral.."-1", amount = 40}, + {type = "item", name = "nullius-relay-3", amount = 1} }, results = { {type="item", name="nullius-guide-drone-"..mineral.."-2", amount = 1} @@ -333,10 +333,10 @@ local function create_farmer(base, suborder, species, spore, spore_count, category = "huge-crafting", energy_required = 60, ingredients = { - {"nullius-scout-drone-" .. drone_tier, 1}, - {"nullius-construction-bot-" .. bot_tier, 1}, - {"nullius-"..species.."-progenitor", 1}, - {"nullius-"..spore, spore_count}, + {type = "item", name = "nullius-scout-drone-" .. drone_tier, amount = 1}, + {type = "item", name = "nullius-construction-bot-" .. bot_tier, amount = 1}, + {type = "item", name = "nullius-"..species.."-progenitor", amount = 1}, + {type = "item", name = "nullius-"..spore, amount = spore_count}, cost1, cost2, cost3, cost4 }, results = { @@ -352,8 +352,8 @@ local function create_farmer(base, suborder, species, spore, spore_count, category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-"..remote, 1}, - {"nullius-"..modtype, 1} + {type = "item", name = "nullius-"..remote, amount = 1}, + {type = "item", name = "nullius-"..modtype, amount = 1} }, results = { {type="item", name="nullius-"..base.."-remote", amount = 1} @@ -397,22 +397,33 @@ create_miner("uranium", "g", 2, "grey", "__base__/graphics/icons/uranium-ore.png create_farmer("algaculture", "b", "algae", "algae-spore", 60, "scout-remote", "productivity-module-1", ICONPATH .. "algae.png", 1, 1, - {"nullius-box-mineral-dust", 10}, {"nullius-bacteria-barrel", 1}) + {type = "item", name = "nullius-box-mineral-dust", amount = 10}, + {type = "item", name = "nullius-bacteria-barrel", amount = 1}) create_farmer("horticulture", "c", "grass", "box-grass-seed", 20, "algaculture-remote", "productivity-module-1", ICONPATH .. "grass.png", 1, 1, - {"nullius-fertilizer", 20}, {"nullius-water-barrel", 10}, {"nullius-bacteria-barrel", 1}) + {type = "item", name = "nullius-fertilizer", amount = 20}, + {type = "item", name = "nullius-water-barrel", amount = 10}, + {type = "item", name = "nullius-bacteria-barrel", amount = 1}) create_farmer("arboriculture", "d", "tree", "tree-seed", 40, "horticulture-remote", "productivity-module-2", "__base__/graphics/icons/tree-08.png", 2, 1, - {"nullius-fertilizer", 30}, {"nullius-water-barrel", 15}, {"nullius-worm", 10}) + {type = "item", name = "nullius-fertilizer", amount = 30}, + {type = "item", name = "nullius-water-barrel", amount = 15}, + {type = "item", name = "nullius-worm", amount = 10}) create_farmer("entomology", "e", "worm", "worm-egg", 40, "algaculture-remote", "productivity-module-2", "__base__/graphics/icons/small-worm.png", 1, 2, - {"nullius-grass", 30}, {"nullius-sludge-barrel", 5}, {"nullius-bacteria-barrel", 2}) + {type = "item", name = "nullius-grass", amount = 30}, + {type = "item", name = "nullius-sludge-barrel", amount = 5}, + {type = "item", name = "nullius-bacteria-barrel", amount = 2}) create_farmer("aquaculture", "f", "fish", "fish-egg", 50, "entomology-remote", "productivity-module-2", "__base__/graphics/icons/fish.png", 2, 2, - {"nullius-algae", 40}, {"nullius-worm", 20}) + {type = "item", name = "nullius-algae", amount = 40}, + {type = "item", name = "nullius-worm", amount = 20}) create_farmer("husbandry", "g", "arthropod", "arthropod-egg", 30, "aquaculture-remote", "productivity-module-3", "__base__/graphics/icons/small-biter.png", 2, 3, - {"nullius-box-wood", 15}, {"nullius-fish", 40}, {"nullius-arthropod", 5}, {"nullius-shackle", 6}) + {type = "item", name = "nullius-box-wood", amount = 15}, + {type = "item", name = "nullius-fish", amount = 40}, + {type = "item", name = "nullius-arthropod", amount = 5}, + {type = "item", name = "nullius-shackle", amount = 6}) create_bio_drone("sequestration-coal", "cb", "__base__/graphics/icons/coal-1.png") create_bio_drone("sequestration-petroleum", "cc", "__base__/graphics/icons/fluid/crude-oil.png") @@ -427,10 +438,10 @@ data:extend({ category = "small-crafting", energy_required = 4, ingredients = { - {"nullius-robot-frame-1", 1}, - {"nullius-haste-module-1", 1}, - {"nullius-sensor-2", 1}, - {"nullius-missile-1", 1} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-haste-module-1", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-missile-1", amount = 1} }, results = { {type="item", name="nullius-scout-drone-1", amount = 1} @@ -444,9 +455,9 @@ data:extend({ category = "small-crafting", energy_required = 5, ingredients = { - {"nullius-scout-drone-1", 2}, - {"nullius-robot-frame-2", 1}, - {"nullius-processor-2", 2} + {type = "item", name = "nullius-scout-drone-1", amount = 2}, + {type = "item", name = "nullius-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-processor-2", amount = 2} }, results = { {type="item", name="nullius-scout-drone-2", amount = 1} @@ -474,8 +485,8 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-sensor-2", 1}, - {"programmable-speaker", 1} + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 1} }, results = { {type="item", name="nullius-scout-remote", amount = 1} @@ -490,10 +501,10 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-scout-drone-2", 1}, - {"nullius-missile-launcher", 1}, - {"nullius-box-missile-1", 2}, - {"nullius-rock-picker", 1} + {type = "item", name = "nullius-scout-drone-2", amount = 1}, + {type = "item", name = "nullius-missile-launcher", amount = 1}, + {type = "item", name = "nullius-box-missile-1", amount = 2}, + {type = "item", name = "nullius-rock-picker", amount = 1} }, results = { {type="item", name="nullius-demolition-drone", amount = 1} @@ -510,9 +521,9 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-scout-drone-2", 1}, - {"nullius-missile-launcher", 1}, - {"nullius-box-missile-1", 2} + {type = "item", name = "nullius-scout-drone-2", amount = 1}, + {type = "item", name = "nullius-missile-launcher", amount = 1}, + {type = "item", name = "nullius-box-missile-1", amount = 2} }, results = { {type="item", name="nullius-demolition-drone", amount = 1} @@ -527,8 +538,8 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-scout-remote", 1}, - {"nullius-processor-1", 1} + {type = "item", name = "nullius-scout-remote", amount = 1}, + {type = "item", name = "nullius-processor-1", amount = 1} }, results = { {type="item", name="nullius-demolition-remote", amount = 1} @@ -543,10 +554,10 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-demolition-drone", 1}, - {"nullius-missile-2", 3}, - {"nullius-trash-compactor", 1}, - {"nullius-large-cargo-pod-2", 2} + {type = "item", name = "nullius-demolition-drone", amount = 1}, + {type = "item", name = "nullius-missile-2", amount = 3}, + {type = "item", name = "nullius-trash-compactor", amount = 1}, + {type = "item", name = "nullius-large-cargo-pod-2", amount = 2} }, results = { {type="item", name="nullius-shallow-excavation-drone", amount = 1} @@ -561,8 +572,8 @@ data:extend({ category = "small-crafting", energy_required = 4, ingredients = { - {"nullius-shallow-excavation-drone", 1}, - {"nullius-missile-2", 2} + {type = "item", name = "nullius-shallow-excavation-drone", amount = 1}, + {type = "item", name = "nullius-missile-2", amount = 2} }, results = { {type="item", name="nullius-excavation-drone", amount = 1} @@ -579,8 +590,8 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-demolition-drone", 1}, - {"nullius-box-missile-2", 1} + {type = "item", name = "nullius-demolition-drone", amount = 1}, + {type = "item", name = "nullius-box-missile-2", amount = 1} }, results = { {type="item", name="nullius-excavation-drone", amount = 1} @@ -595,8 +606,8 @@ data:extend({ category = "small-crafting", energy_required = 5, ingredients = { - {"nullius-demolition-remote", 1}, - {"nullius-processor-2", 1} + {type = "item", name = "nullius-demolition-remote", amount = 1}, + {type = "item", name = "nullius-processor-2", amount = 1} }, results = { {type="item", name="nullius-shallow-excavation-remote", amount = 1} @@ -611,8 +622,8 @@ data:extend({ category = "small-crafting", energy_required = 3, ingredients = { - {"nullius-shallow-excavation-remote", 1}, - {"nullius-red-wire", 1} + {type = "item", name = "nullius-shallow-excavation-remote", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 1} }, results = { {type="item", name="nullius-excavation-remote", amount = 1} @@ -640,12 +651,12 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"radar", 1}, - {"nullius-beacon-1", 1}, - {"nullius-hangar-1", 1}, - {"nullius-missile-launcher", 4}, - {"nullius-motor-2", 2}, - {"nullius-bearing", 3} + {type = "item", name = "radar", amount = 1}, + {type = "item", name = "nullius-beacon-1", amount = 1}, + {type = "item", name = "nullius-hangar-1", amount = 1}, + {type = "item", name = "nullius-missile-launcher", amount = 4}, + {type = "item", name = "nullius-motor-2", amount = 2}, + {type = "item", name = "nullius-bearing", amount = 3} }, results = { {type="item", name="nullius-drone-launcher-1", amount = 1} @@ -673,10 +684,10 @@ data:extend({ category = "huge-crafting", energy_required = 30, ingredients = { - {"nullius-drone-launcher-1", 2}, - {"nullius-sensor-node-3", 1}, - {"nullius-hangar-2", 1}, - {"nullius-productivity-module-1", 1} + {type = "item", name = "nullius-drone-launcher-1", amount = 2}, + {type = "item", name = "nullius-sensor-node-3", amount = 1}, + {type = "item", name = "nullius-hangar-2", amount = 1}, + {type = "item", name = "nullius-productivity-module-1", amount = 1} }, results = { {type="item", name="nullius-drone-launcher-2", amount = 1} @@ -704,8 +715,8 @@ data:extend({ always_show_made_in = true, energy_required = 12, ingredients = { - {"nullius-cargo-wagon-2", 1}, - {"nullius-drone-launcher-1", 1} + {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, + {type = "item", name = "nullius-drone-launcher-1", amount = 1} }, results = { {type="item", name="nullius-drone-carrier-1", amount = 1} @@ -733,9 +744,9 @@ data:extend({ category = "huge-crafting", energy_required = 20, ingredients = { - {"nullius-drone-carrier-1", 1}, - {"nullius-cargo-wagon-3", 1}, - {"nullius-drone-launcher-2", 1} + {type = "item", name = "nullius-drone-carrier-1", amount = 1}, + {type = "item", name = "nullius-cargo-wagon-3", amount = 1}, + {type = "item", name = "nullius-drone-launcher-2", amount = 1} }, results = { {type="item", name="nullius-drone-carrier-2", amount = 1} @@ -769,14 +780,14 @@ data:extend({ category = "huge-crafting", energy_required = 120, ingredients = { - {"nullius-satellite", 1}, - {"nullius-box-rocket-fuel", 25}, - {"nullius-excavation-drone", 3}, - {"nullius-medium-miner-3", 5}, - {"nullius-drone-launcher-2", 1}, - {"nullius-construction-bot-3", 3}, - {"nullius-box-astronomy-pack", 6}, - {"nullius-large-buffer-chest-2", 4} + {type = "item", name = "nullius-satellite", amount = 1}, + {type = "item", name = "nullius-box-rocket-fuel", amount = 25}, + {type = "item", name = "nullius-excavation-drone", amount = 3}, + {type = "item", name = "nullius-medium-miner-3", amount = 5}, + {type = "item", name = "nullius-drone-launcher-2", amount = 1}, + {type = "item", name = "nullius-construction-bot-3", amount = 3}, + {type = "item", name = "nullius-box-astronomy-pack", amount = 6}, + {type = "item", name = "nullius-large-buffer-chest-2", amount = 4} }, results = { {type="item", name="nullius-asteroid-miner-1", amount = 1} @@ -810,13 +821,13 @@ data:extend({ category = "huge-crafting", energy_required = 240, ingredients = { - {"nullius-asteroid-miner-1", 2}, - {"nullius-antimatter", 8}, - {"nullius-turret", 4}, - {"nullius-hangar-3", 1}, - {"nullius-sensor-node-3", 1}, - {"nullius-construction-bot-4", 3}, - {"nullius-trash-compactor-2", 2} + {type = "item", name = "nullius-asteroid-miner-1", amount = 2}, + {type = "item", name = "nullius-antimatter", amount = 8}, + {type = "item", name = "nullius-turret", amount = 4}, + {type = "item", name = "nullius-hangar-3", amount = 1}, + {type = "item", name = "nullius-sensor-node-3", amount = 1}, + {type = "item", name = "nullius-construction-bot-4", amount = 3}, + {type = "item", name = "nullius-trash-compactor-2", amount = 2} }, results = { {type="item", name="nullius-asteroid-miner-2", amount = 1} @@ -858,14 +869,14 @@ data:extend({ category = "nanotechnology", energy_required = 250, ingredients = { - {"nullius-chassis-3", 1}, - {"nullius-construction-bot-2", 3}, - {"nullius-leg-augmentation-1", 2}, - {"nullius-coprocessor-productivity-2", 1}, - {"nullius-battery-1", 4}, - {"nullius-solar-panel-2", 3}, - {"nullius-night-vision-2", 2}, - {"nullius-large-cargo-pod-2", 2} + {type = "item", name = "nullius-chassis-3", amount = 1}, + {type = "item", name = "nullius-construction-bot-2", amount = 3}, + {type = "item", name = "nullius-leg-augmentation-1", amount = 2}, + {type = "item", name = "nullius-coprocessor-productivity-2", amount = 1}, + {type = "item", name = "nullius-battery-1", amount = 4}, + {type = "item", name = "nullius-solar-panel-2", amount = 3}, + {type = "item", name = "nullius-night-vision-2", amount = 2}, + {type = "item", name = "nullius-large-cargo-pod-2", amount = 2} }, results = { {type="item", name="nullius-android-1", amount = 1} @@ -882,15 +893,15 @@ data:extend({ category = "nanotechnology", energy_required = 250, ingredients = { - {"nullius-chassis-3", 1}, - {"nullius-construction-bot-2", 3}, - {"nullius-leg-augmentation-1", 2}, - {"nullius-productivity-module-1", 4}, - {"nullius-battery-1", 4}, - {"nullius-solar-panel-2", 3}, - {"nullius-night-vision-2", 2}, - {"nullius-hangar-2", 1}, - {"bob-express-bulk-inserter", 4} + {type = "item", name = "nullius-chassis-3", amount = 1}, + {type = "item", name = "nullius-construction-bot-2", amount = 3}, + {type = "item", name = "nullius-leg-augmentation-1", amount = 2}, + {type = "item", name = "nullius-productivity-module-1", amount = 4}, + {type = "item", name = "nullius-battery-1", amount = 4}, + {type = "item", name = "nullius-solar-panel-2", amount = 3}, + {type = "item", name = "nullius-night-vision-2", amount = 2}, + {type = "item", name = "nullius-hangar-2", amount = 1}, + {type = "item", name = "bob-express-bulk-inserter", amount = 4} }, results = { {type="item", name="nullius-android-1", amount = 1} @@ -904,13 +915,13 @@ data:extend({ category = "nanotechnology", energy_required = 400, ingredients = { - {"nullius-android-1", 1}, - {"nullius-chassis-5", 1}, - {"nullius-construction-bot-4", 2}, - {"nullius-leg-augmentation-3", 1}, - {"nullius-coprocessor-quantum", 1}, - {"nullius-battery-2", 4}, - {"nullius-solar-panel-3", 3} + {type = "item", name = "nullius-android-1", amount = 1}, + {type = "item", name = "nullius-chassis-5", amount = 1}, + {type = "item", name = "nullius-construction-bot-4", amount = 2}, + {type = "item", name = "nullius-leg-augmentation-3", amount = 1}, + {type = "item", name = "nullius-coprocessor-quantum", amount = 1}, + {type = "item", name = "nullius-battery-2", amount = 4}, + {type = "item", name = "nullius-solar-panel-3", amount = 3} }, results = { {type="item", name="nullius-android-2", amount = 1} @@ -927,16 +938,16 @@ data:extend({ category = "nanotechnology", energy_required = 400, ingredients = { - {"nullius-android-1", 1}, - {"nullius-chassis-5", 1}, - {"nullius-construction-bot-4", 2}, - {"nullius-leg-augmentation-3", 1}, - {"nullius-box-processor-3", 1}, - {"nullius-efficiency-module-3", 2}, - {"nullius-battery-2", 4}, - {"nullius-solar-panel-3", 3}, - {"nullius-heat-pipe-3", 2}, - {"nullius-hangar-3", 1} + {type = "item", name = "nullius-android-1", amount = 1}, + {type = "item", name = "nullius-chassis-5", amount = 1}, + {type = "item", name = "nullius-construction-bot-4", amount = 2}, + {type = "item", name = "nullius-leg-augmentation-3", amount = 1}, + {type = "item", name = "nullius-box-processor-3", amount = 1}, + {type = "item", name = "nullius-efficiency-module-3", amount = 2}, + {type = "item", name = "nullius-battery-2", amount = 4}, + {type = "item", name = "nullius-solar-panel-3", amount = 3}, + {type = "item", name = "nullius-heat-pipe-3", amount = 2}, + {type = "item", name = "nullius-hangar-3", amount = 1} }, results = { {type="item", name="nullius-android-2", amount = 1} From bf80909b5da39330615c6c555a42f2442cb3957a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:15:50 +0200 Subject: [PATCH 021/236] Update ingredients to new format : weapon.lua --- nullius/prototypes/item/weapon.lua | 80 +++++++++++++++--------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/nullius/prototypes/item/weapon.lua b/nullius/prototypes/item/weapon.lua index 1d2c128..c77df2c 100644 --- a/nullius/prototypes/item/weapon.lua +++ b/nullius/prototypes/item/weapon.lua @@ -388,10 +388,10 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-steel-plate", 6}, - {"nullius-steel-wire", 2}, - {"nullius-steel-gear", 1}, - {"nullius-rubber", 1} + {type = "item", name = "nullius-steel-plate", amount = 6}, + {type = "item", name = "nullius-steel-wire", amount = 2}, + {type = "item", name = "nullius-steel-gear", amount = 1}, + {type = "item", name = "nullius-rubber", amount = 1} }, results = { {type="item", name="nullius-gun", amount = 1} @@ -435,10 +435,10 @@ data:extend({ category = "small-crafting", energy_required = 30, ingredients = { - {"nullius-gun", 2}, - {"nullius-titanium-plate", 4}, - {"nullius-motor-3", 1}, - {"nullius-sensor-2", 1} + {type = "item", name = "nullius-gun", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 4}, + {type = "item", name = "nullius-motor-3", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1} }, results = { {type="item", name="nullius-rifle", amount = 1} @@ -473,9 +473,9 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-gun", 1}, - {"nullius-pipe-2", 3}, - {"nullius-sensor-1", 1} + {type = "item", name = "nullius-gun", amount = 1}, + {type = "item", name = "nullius-pipe-2", amount = 3}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type="item", name="nullius-missile-launcher", amount = 1} @@ -518,12 +518,12 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"cliff-explosives", 5}, - {"nullius-steel-sheet", 3}, - {"processed-fuel", 1}, - {"nullius-sensor-1", 1}, - {"nullius-battery-1", 1}, - {"nullius-motor-2", 1} + {type = "item", name = "cliff-explosives", amount = 5}, + {type = "item", name = "nullius-steel-sheet", amount = 3}, + {type = "item", name = "processed-fuel", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-battery-1", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1} }, results = { {type="item", name="nullius-missile-1", amount = 6} @@ -540,12 +540,12 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-box-explosive", 5}, - {"nullius-box-steel-sheet", 3}, - {"nullius-box-methanol-canister", 1}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-battery-1", 1}, - {"nullius-box-motor-2", 1} + {type = "item", name = "nullius-box-explosive", amount = 5}, + {type = "item", name = "nullius-box-steel-sheet", amount = 3}, + {type = "item", name = "nullius-box-methanol-canister", amount = 1}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-battery-1", amount = 1}, + {type = "item", name = "nullius-box-motor-2", amount = 1} }, results = { {type="item", name="nullius-box-missile-1", amount = 6} @@ -588,11 +588,11 @@ data:extend({ category = "small-crafting", energy_required = 10, ingredients = { - {"nullius-missile-1", 3}, - {"nullius-titanium-sheet", 5}, - {"nullius-fusion-cell", 1}, - {"nullius-sensor-2", 1}, - {"nullius-yield-module-2", 1} + {type = "item", name = "nullius-missile-1", amount = 3}, + {type = "item", name = "nullius-titanium-sheet", amount = 5}, + {type = "item", name = "nullius-fusion-cell", amount = 1}, + {type = "item", name = "nullius-sensor-2", amount = 1}, + {type = "item", name = "nullius-yield-module-2", amount = 1} }, results = { {type="item", name="nullius-missile-2", amount = 1} @@ -609,11 +609,11 @@ data:extend({ subgroup = "boxed-demolition", energy_required = 10, ingredients = { - {"nullius-box-missile-1", 3}, - {"nullius-box-titanium-sheet", 5}, - {"nullius-fusion-cell", 5}, - {"nullius-box-sensor-2", 1}, - {"nullius-box-yield-module-2", 1} + {type = "item", name = "nullius-box-missile-1", amount = 3}, + {type = "item", name = "nullius-box-titanium-sheet", amount = 5}, + {type = "item", name = "nullius-fusion-cell", amount = 5}, + {type = "item", name = "nullius-box-sensor-2", amount = 1}, + {type = "item", name = "nullius-box-yield-module-2", amount = 1} }, results = { {type="item", name="nullius-box-missile-2", amount = 1} @@ -740,8 +740,8 @@ data:extend({ category = "hand-casting", energy_required = 5, ingredients = { - {"cliff-explosives", 1}, - {"nullius-steel-rod", 6} + {type = "item", name = "cliff-explosives", amount = 1}, + {type = "item", name = "nullius-steel-rod", amount = 6} }, results = { {type="item", name="nullius-magazine", amount = 20} @@ -758,8 +758,8 @@ data:extend({ subgroup = "boxed-demolition", energy_required = 25, ingredients = { - {"nullius-box-explosive", 1}, - {"nullius-box-steel-rod", 6} + {type = "item", name = "nullius-box-explosive", amount = 1}, + {type = "item", name = "nullius-box-steel-rod", amount = 6} }, results = { {type="item", name="nullius-box-magazine", amount = 20} @@ -775,9 +775,9 @@ data:extend({ category = "hand-casting", energy_required = 8, ingredients = { - {"nullius-box-magazine", 2}, - {"nullius-uranium", 1}, - {"nullius-copper-sheet", 1} + {type = "item", name = "nullius-box-magazine", amount = 2}, + {type = "item", name = "nullius-uranium", amount = 1}, + {type = "item", name = "nullius-copper-sheet", amount = 1} }, results = { {type="item", name="nullius-magazine-2", amount = 3} From 2d103106648eda28911ccee21f645b6e5193b679 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:20:12 +0200 Subject: [PATCH 022/236] Update ingredients to new format : recipe.lua --- nullius/prototypes/item/recipe.lua | 336 ++++++++++++++--------------- 1 file changed, 168 insertions(+), 168 deletions(-) diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index 598e56d..650d4f6 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -14,7 +14,7 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"stone", 2} + {type = "item", name = "stone", amount = 2} }, results = { {type="item", name="stone-brick", amount=5}, @@ -32,7 +32,7 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-box-stone", 4} + {type = "item", name = "nullius-box-stone", amount = 4} }, results = { {type="item", name="nullius-box-stone-brick", amount=5}, @@ -66,7 +66,7 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"nullius-limestone", 4} + {type = "item", name = "nullius-limestone", amount = 4} }, results = { {type="item", name="stone-brick", amount=12}, @@ -100,7 +100,7 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"nullius-sandstone", 3} + {type = "item", name = "nullius-sandstone", amount = 3} }, results = { {type="item", name="stone-brick", amount=10}, @@ -120,9 +120,9 @@ data:extend({ category = "small-crafting", energy_required = 8, ingredients = { - {"nullius-motor-1", 1}, - {"nullius-iron-gear", 2}, - {"nullius-iron-rod", 3} + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-iron-gear", amount = 2}, + {type = "item", name = "nullius-iron-rod", amount = 3} }, results = { {type="item", name="inserter", amount = 4} @@ -139,9 +139,9 @@ data:extend({ subgroup = "boxed-inserter", energy_required = 25, ingredients = { - {"nullius-box-motor-1", 1}, - {"nullius-box-steel-gear", 1}, - {"nullius-box-steel-rod", 2} + {type = "item", name = "nullius-box-motor-1", amount = 1}, + {type = "item", name = "nullius-box-steel-gear", amount = 1}, + {type = "item", name = "nullius-box-steel-rod", amount = 2} }, results = { {type="item", name="nullius-box-inserter-1", amount = 5} @@ -156,10 +156,10 @@ data:extend({ category = "small-crafting", energy_required = 4, ingredients = { - {"inserter", 1}, - {"nullius-motor-1", 1}, - {"nullius-steel-gear", 1}, - {"nullius-aluminum-rod", 1} + {type = "item", name = "inserter", amount = 1}, + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 1}, + {type = "item", name = "nullius-aluminum-rod", amount = 1} }, results = { {type="item", name="bob-turbo-inserter", amount = 1} @@ -174,10 +174,10 @@ data:extend({ subgroup = "boxed-inserter", energy_required = 20, ingredients = { - {"nullius-box-inserter-1", 1}, - {"nullius-box-motor-1", 1}, - {"nullius-box-steel-gear", 1}, - {"nullius-box-aluminum-rod", 1} + {type = "item", name = "nullius-box-inserter-1", amount = 1}, + {type = "item", name = "nullius-box-motor-1", amount = 1}, + {type = "item", name = "nullius-box-steel-gear", amount = 1}, + {type = "item", name = "nullius-box-aluminum-rod", amount = 1} }, results = { {type="item", name="nullius-box-inserter-2", amount = 1} @@ -191,8 +191,8 @@ data:extend({ -- category = "small-crafting", -- energy_required = 2, -- ingredients = { - -- {"turbo-inserter", 1}, - -- {"decider-combinator", 1} + -- {type = "item", name = "turbo-inserter", amount = 1}, + -- {type = "item", name = "decider-combinator", amount = 1} -- }, -- results = { -- {type="item", name="turbo-filter-inserter", amount = 1} @@ -207,8 +207,8 @@ data:extend({ -- subgroup = "boxed-inserter", -- energy_required = 10, -- ingredients = { - -- {"nullius-box-inserter-2", 1}, - -- {"nullius-box-logic-circuit", 1} + -- {type = "item", name = "nullius-box-inserter-2", amount = 1}, + -- {type = "item", name = "nullius-box-logic-circuit", amount = 1} -- }, -- results = { -- {type="item", name="nullius-box-filter-inserter-2", amount = 1} @@ -224,10 +224,10 @@ data:extend({ category = "small-crafting", energy_required = 7, ingredients = { - {"bob-turbo-inserter", 1}, - {"nullius-motor-2", 1}, - {"nullius-bearing", 1}, - {"nullius-rubber", 2} + {type = "item", name = "bob-turbo-inserter", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 1}, + {type = "item", name = "nullius-rubber", amount = 2} }, results = { {type="item", name="bulk-inserter", amount = 1} @@ -242,10 +242,10 @@ data:extend({ subgroup = "boxed-inserter", energy_required = 35, ingredients = { - {"nullius-box-inserter-2", 1}, - {"nullius-box-motor-2", 1}, - {"nullius-box-bearing", 1}, - {"nullius-box-rubber", 2} + {type = "item", name = "nullius-box-inserter-2", amount = 1}, + {type = "item", name = "nullius-box-motor-2", amount = 1}, + {type = "item", name = "nullius-box-bearing", amount = 1}, + {type = "item", name = "nullius-box-rubber", amount = 2} }, results = { {type="item", name="nullius-box-inserter-3", amount = 1} @@ -259,8 +259,8 @@ data:extend({ -- category = "small-crafting", -- energy_required = 3, -- ingredients = { - -- {"bulk-inserter", 1}, - -- {"nullius-sensor-1", 1} + -- {type = "item", name = "bulk-inserter", amount = 1}, + -- {type = "item", name = "nullius-sensor-1", amount = 1} -- }, -- results = { -- {type="item", name="stack-filter-inserter", amount = 1} @@ -275,8 +275,8 @@ data:extend({ -- subgroup = "boxed-inserter", -- energy_required = 15, -- ingredients = { - -- {"nullius-box-inserter-3", 1}, - -- {"nullius-box-sensor-1", 1} + -- {type = "item", name = "nullius-box-inserter-3", amount = 1}, + -- {type = "item", name = "nullius-box-sensor-1", amount = 1} -- }, -- results = { -- {type="item", name="nullius-box-filter-inserter-3", amount = 1} @@ -292,10 +292,10 @@ data:extend({ category = "small-crafting", energy_required = 12, ingredients = { - {"bulk-inserter", 2}, - {"nullius-motor-3", 1}, - {"nullius-titanium-rod", 2}, - {"nullius-carbon-composite", 3} + {type = "item", name = "bulk-inserter", amount = 2}, + {type = "item", name = "nullius-motor-3", amount = 1}, + {type = "item", name = "nullius-titanium-rod", amount = 2}, + {type = "item", name = "nullius-carbon-composite", amount = 3} }, results = { {type="item", name="bob-express-bulk-inserter", amount = 1} @@ -310,10 +310,10 @@ data:extend({ subgroup = "boxed-inserter", energy_required = 60, ingredients = { - {"nullius-box-inserter-3", 2}, - {"nullius-box-motor-3", 1}, - {"nullius-box-titanium-rod", 2}, - {"nullius-box-carbon-composite", 3} + {type = "item", name = "nullius-box-inserter-3", amount = 2}, + {type = "item", name = "nullius-box-motor-3", amount = 1}, + {type = "item", name = "nullius-box-titanium-rod", amount = 2}, + {type = "item", name = "nullius-box-carbon-composite", amount = 3} }, results = { {type="item", name="nullius-box-inserter-4", amount = 1} @@ -329,8 +329,8 @@ data:extend({ -- category = "small-crafting", -- energy_required = 8, -- ingredients = { - -- {"express-bulk-inserter", 2}, - -- {"nullius-sensor-2", 1} + -- {type = "item", name = "express-bulk-inserter", amount = 2}, + -- {type = "item", name = "nullius-sensor-2", amount = 1} -- }, -- results = { -- {type="item", name="express-stack-filter-inserter", amount = 2} @@ -347,8 +347,8 @@ data:extend({ -- subgroup = "boxed-inserter", -- energy_required = 40, -- ingredients = { - -- {"nullius-box-inserter-4", 2}, - -- {"nullius-box-sensor-2", 1} + -- {type = "item", name = "nullius-box-inserter-4", amount = 2}, + -- {type = "item", name = "nullius-box-sensor-2", amount = 1} -- }, -- results = { -- {type="item", name="nullius-box-filter-inserter-4", amount = 2} @@ -366,10 +366,10 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"nullius-motor-1", 1}, - {"nullius-iron-gear", 2}, - {"nullius-iron-sheet", 2}, - {"nullius-iron-rod", 2} + {type = "item", name = "nullius-motor-1", amount = 1}, + {type = "item", name = "nullius-iron-gear", amount = 2}, + {type = "item", name = "nullius-iron-sheet", amount = 2}, + {type = "item", name = "nullius-iron-rod", amount = 2} }, results = { {type="item", name="transport-belt", amount = 15} @@ -386,10 +386,10 @@ data:extend({ subgroup = "boxed-belt", energy_required = 15, ingredients = { - {"nullius-box-motor-1", 1}, - {"nullius-box-iron-gear", 1}, - {"nullius-box-steel-sheet", 2}, - {"nullius-box-steel-rod", 1} + {type = "item", name = "nullius-box-motor-1", amount = 1}, + {type = "item", name = "nullius-box-iron-gear", amount = 1}, + {type = "item", name = "nullius-box-steel-sheet", amount = 2}, + {type = "item", name = "nullius-box-steel-rod", amount = 1} }, results = { {type="item", name="nullius-box-belt-1", amount = 18} @@ -406,8 +406,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"transport-belt", 10}, - {"pipe-to-ground", 2} + {type = "item", name = "transport-belt", amount = 10}, + {type = "item", name = "pipe-to-ground", amount = 2} }, results = { {type="item", name="underground-belt", amount = 2} @@ -424,8 +424,8 @@ data:extend({ subgroup = "boxed-belt", energy_required = 15, ingredients = { - {"nullius-box-belt-1", 10}, - {"nullius-box-underground-pipe-1", 2} + {type = "item", name = "nullius-box-belt-1", amount = 10}, + {type = "item", name = "nullius-box-underground-pipe-1", amount = 2} }, results = { {type="item", name="nullius-box-underground-belt-1", amount = 2} @@ -442,8 +442,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"underground-belt", 2}, - {"nullius-plastic", 2} + {type = "item", name = "underground-belt", amount = 2}, + {type = "item", name = "nullius-plastic", amount = 2} }, results = { {type="item", name="splitter", amount = 1} @@ -472,8 +472,8 @@ data:extend({ subgroup = "boxed-belt", energy_required = 15, ingredients = { - {"nullius-box-underground-belt-1", 2}, - {"nullius-box-plastic", 2} + {type = "item", name = "nullius-box-underground-belt-1", amount = 2}, + {type = "item", name = "nullius-box-plastic", amount = 2} }, results = { {type="item", name="splitter", amount = 5} @@ -533,9 +533,9 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"fast-transport-belt", 10}, - {"underground-belt", 1}, - {"nullius-underground-pipe-2", 1} + {type = "item", name = "fast-transport-belt", amount = 10}, + {type = "item", name = "underground-belt", amount = 1}, + {type = "item", name = "nullius-underground-pipe-2", amount = 1} }, results = { {type="item", name="fast-underground-belt", amount = 2} @@ -552,9 +552,9 @@ data:extend({ subgroup = "boxed-belt", energy_required = 30, ingredients = { - {"nullius-box-belt-2", 10}, - {"nullius-box-underground-belt-1", 1}, - {"nullius-box-underground-pipe-2", 1} + {type = "item", name = "nullius-box-belt-2", amount = 10}, + {type = "item", name = "nullius-box-underground-belt-1", amount = 1}, + {type = "item", name = "nullius-box-underground-pipe-2", amount = 1} }, results = { {type="item", name="nullius-box-underground-belt-2", amount = 2} @@ -571,10 +571,10 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"fast-underground-belt", 1}, - {"splitter", 1}, - {"nullius-steel-sheet", 4}, - {"decider-combinator", 1} + {type = "item", name = "fast-underground-belt", amount = 1}, + {type = "item", name = "splitter", amount = 1}, + {type = "item", name = "nullius-steel-sheet", amount = 4}, + {type = "item", name = "decider-combinator", amount = 1} }, results = { {type="item", name="fast-splitter", amount = 1} @@ -603,10 +603,10 @@ data:extend({ subgroup = "boxed-belt", energy_required = 25, ingredients = { - {"nullius-box-underground-belt-2", 1}, - {"splitter", 5}, - {"nullius-box-steel-sheet", 4}, - {"nullius-box-logic-circuit", 1} + {type = "item", name = "nullius-box-underground-belt-2", amount = 1}, + {type = "item", name = "splitter", amount = 5}, + {type = "item", name = "nullius-box-steel-sheet", amount = 4}, + {type = "item", name = "nullius-box-logic-circuit", amount = 1} }, results = { {type="item", name="fast-splitter", amount = 5} @@ -664,9 +664,9 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"express-transport-belt", 12}, - {"fast-underground-belt", 2}, - {"nullius-underground-pipe-3", 1} + {type = "item", name = "express-transport-belt", amount = 12}, + {type = "item", name = "fast-underground-belt", amount = 2}, + {type = "item", name = "nullius-underground-pipe-3", amount = 1} }, results = { {type="item", name="express-underground-belt", amount = 2} @@ -683,9 +683,9 @@ data:extend({ subgroup = "boxed-belt", energy_required = 40, ingredients = { - {"nullius-box-belt-3", 12}, - {"nullius-box-underground-belt-2", 2}, - {"nullius-box-underground-pipe-3", 1} + {type = "item", name = "nullius-box-belt-3", amount = 12}, + {type = "item", name = "nullius-box-underground-belt-2", amount = 2}, + {type = "item", name = "nullius-box-underground-pipe-3", amount = 1} }, results = { {type="item", name="nullius-box-underground-belt-3", amount = 2} @@ -702,9 +702,9 @@ data:extend({ category = "medium-crafting", energy_required = 10, ingredients = { - {"express-underground-belt", 1}, - {"fast-splitter", 1}, - {"nullius-sensor-1", 1} + {type = "item", name = "express-underground-belt", amount = 1}, + {type = "item", name = "fast-splitter", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type="item", name="express-splitter", amount = 1} @@ -734,9 +734,9 @@ data:extend({ order = "nullius-pb", energy_required = 50, ingredients = { - {"nullius-box-underground-belt-3", 1}, - {"fast-splitter", 5}, - {"nullius-box-sensor-1", 1} + {type = "item", name = "nullius-box-underground-belt-3", amount = 1}, + {type = "item", name = "fast-splitter", amount = 5}, + {type = "item", name = "nullius-box-sensor-1", amount = 1} }, results = { {type="item", name="express-splitter", amount = 5} @@ -796,9 +796,9 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"bob-ultimate-transport-belt", 16}, - {"express-underground-belt", 2}, - {"nullius-underground-pipe-4", 2} + {type = "item", name = "bob-ultimate-transport-belt", amount = 16}, + {type = "item", name = "express-underground-belt", amount = 2}, + {type = "item", name = "nullius-underground-pipe-4", amount = 2} }, results = { {type="item", name="bob-ultimate-underground-belt", amount = 2} @@ -815,9 +815,9 @@ data:extend({ subgroup = "boxed-belt", energy_required = 60, ingredients = { - {"nullius-box-belt-4", 16}, - {"nullius-box-underground-belt-3", 2}, - {"nullius-box-underground-pipe-4", 2} + {type = "item", name = "nullius-box-belt-4", amount = 16}, + {type = "item", name = "nullius-box-underground-belt-3", amount = 2}, + {type = "item", name = "nullius-box-underground-pipe-4", amount = 2} }, results = { {type="item", name="nullius-box-underground-belt-4", amount = 2} @@ -834,9 +834,9 @@ data:extend({ category = "small-crafting", energy_required = 16, ingredients = { - {"bob-ultimate-underground-belt", 2}, - {"express-splitter", 2}, - {"bob-express-bulk-inserter", 1} + {type = "item", name = "bob-ultimate-underground-belt", amount = 2}, + {type = "item", name = "express-splitter", amount = 2}, + {type = "item", name = "bob-express-bulk-inserter", amount = 1} }, results = { {type="item", name="bob-ultimate-splitter", amount = 1} @@ -866,9 +866,9 @@ data:extend({ order = "nullius-pc", energy_required = 80, ingredients = { - {"nullius-box-underground-belt-4", 2}, - {"express-splitter", 10}, - {"nullius-box-inserter-4", 1} + {type = "item", name = "nullius-box-underground-belt-4", amount = 2}, + {type = "item", name = "express-splitter", amount = 10}, + {type = "item", name = "nullius-box-inserter-4", amount = 1} }, results = { {type="item", name="bob-ultimate-splitter", amount = 5} @@ -886,10 +886,10 @@ data:extend({ always_show_products = true, energy_required = 8, ingredients = { - {"nullius-steel-beam", 2}, - {"nullius-plastic", 3}, - {"nullius-steel-rod", 1}, - {"nullius-gravel", 5} + {type = "item", name = "nullius-steel-beam", amount = 2}, + {type = "item", name = "nullius-plastic", amount = 3}, + {type = "item", name = "nullius-steel-rod", amount = 1}, + {type = "item", name = "nullius-gravel", amount = 5} }, results = { {type="item", name="rail", amount = 3} @@ -906,10 +906,10 @@ data:extend({ always_show_products = true, energy_required = 40, ingredients = { - {"nullius-box-steel-beam", 2}, - {"nullius-box-plastic", 3}, - {"nullius-box-steel-rod", 1}, - {"nullius-box-gravel", 5} + {type = "item", name = "nullius-box-steel-beam", amount = 2}, + {type = "item", name = "nullius-box-plastic", amount = 3}, + {type = "item", name = "nullius-box-steel-rod", amount = 1}, + {type = "item", name = "nullius-box-gravel", amount = 5} }, results = { {type="item", name="nullius-box-rail", amount = 3} @@ -925,10 +925,10 @@ data:extend({ always_show_made_in = true, energy_required = 8, ingredients = { - {"nullius-steel-sheet", 5}, - {"decider-combinator", 2}, - {"programmable-speaker", 1}, - {"small-lamp", 2} + {type = "item", name = "nullius-steel-sheet", amount = 5}, + {type = "item", name = "decider-combinator", amount = 2}, + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "small-lamp", amount = 2} }, results = { {type="item", name="train-stop", amount = 1} @@ -943,10 +943,10 @@ data:extend({ always_show_made_in = true, energy_required = 40, ingredients = { - {"nullius-box-steel-sheet", 5}, - {"nullius-box-logic-circuit", 2}, - {"nullius-box-antenna", 1}, - {"nullius-box-lamp-1", 2} + {type = "item", name = "nullius-box-steel-sheet", amount = 5}, + {type = "item", name = "nullius-box-logic-circuit", amount = 2}, + {type = "item", name = "nullius-box-antenna", amount = 1}, + {type = "item", name = "nullius-box-lamp-1", amount = 2} }, results = { {type="item", name="nullius-box-train-stop", amount = 1} @@ -963,10 +963,10 @@ data:extend({ category = "small-crafting", energy_required = 8, ingredients = { - {"decider-combinator", 1}, - {"small-lamp", 3}, - {"nullius-sensor-1", 1}, - {"power-switch", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "small-lamp", amount = 3}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "power-switch", amount = 1} }, results = { {type="item", name="rail-signal", amount = 2} @@ -983,9 +983,9 @@ data:extend({ category = "small-crafting", energy_required = 3, ingredients = { - {"decider-combinator", 1}, - {"small-lamp", 3}, - {"nullius-sensor-1", 1} + {type = "item", name = "decider-combinator", amount = 1}, + {type = "item", name = "small-lamp", amount = 3}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type="item", name="rail-signal", amount = 1} @@ -1000,10 +1000,10 @@ data:extend({ subgroup = "boxed-rail", energy_required = 40, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-lamp-1", 3}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-power-switch", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-lamp-1", amount = 3}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-power-switch", amount = 1} }, results = { {type="item", name="nullius-box-rail-signal", amount = 2} @@ -1021,9 +1021,9 @@ data:extend({ subgroup = "boxed-rail", energy_required = 15, ingredients = { - {"nullius-box-logic-circuit", 1}, - {"nullius-box-lamp-1", 3}, - {"nullius-box-sensor-1", 1} + {type = "item", name = "nullius-box-logic-circuit", amount = 1}, + {type = "item", name = "nullius-box-lamp-1", amount = 3}, + {type = "item", name = "nullius-box-sensor-1", amount = 1} }, results = { {type="item", name="nullius-box-rail-signal", amount = 1} @@ -1038,8 +1038,8 @@ data:extend({ always_show_made_in = true, energy_required = 2, ingredients = { - {"rail-signal", 1}, - {"copper-cable", 2} + {type = "item", name = "rail-signal", amount = 1}, + {type = "item", name = "copper-cable", amount = 2} }, results = { {type="item", name="rail-chain-signal", amount = 1} @@ -1054,8 +1054,8 @@ data:extend({ always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-box-rail-signal", 1}, - {"nullius-box-insulated-wire", 2} + {type = "item", name = "nullius-box-rail-signal", amount = 1}, + {type = "item", name = "nullius-box-insulated-wire", amount = 2} }, results = { {type="item", name="nullius-box-chain-signal", amount = 1} @@ -1071,10 +1071,10 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"copper-cable", 2}, - {"nullius-steel-sheet", 1}, - {"nullius-rubber", 1}, - {"nullius-iron-rod", 1} + {type = "item", name = "copper-cable", amount = 2}, + {type = "item", name = "nullius-steel-sheet", amount = 1}, + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-iron-rod", amount = 1} }, results = { {type="item", name="power-switch", amount = 1} @@ -1089,10 +1089,10 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"nullius-box-insulated-wire", 2}, - {"nullius-box-steel-sheet", 1}, - {"nullius-box-rubber", 1}, - {"nullius-box-iron-rod", 1} + {type = "item", name = "nullius-box-insulated-wire", amount = 2}, + {type = "item", name = "nullius-box-steel-sheet", amount = 1}, + {type = "item", name = "nullius-box-rubber", amount = 1}, + {type = "item", name = "nullius-box-iron-rod", amount = 1} }, results = { {type="item", name="nullius-box-power-switch", amount = 1} @@ -1108,8 +1108,8 @@ data:extend({ always_show_products = true, energy_required = 10, ingredients = { - {"copper-cable", 5}, - {"decider-combinator", 1} + {type = "item", name = "copper-cable", amount = 5}, + {type = "item", name = "decider-combinator", amount = 1} }, results = { {type="item", name="nullius-red-wire", amount = 8} @@ -1126,8 +1126,8 @@ data:extend({ always_show_products = true, energy_required = 50, ingredients = { - {"nullius-box-insulated-wire", 5}, - {"nullius-box-logic-circuit", 1} + {type = "item", name = "nullius-box-insulated-wire", amount = 5}, + {type = "item", name = "nullius-box-logic-circuit", amount = 1} }, results = { {type="item", name="nullius-box-red-wire", amount = 8} @@ -1143,7 +1143,7 @@ data:extend({ always_show_products = true, energy_required = 3, ingredients = { - {"nullius-red-wire", 5} + {type = "item", name = "nullius-red-wire", amount = 5} }, results = { {type="item", name="nullius-green-wire", amount = 4} @@ -1160,7 +1160,7 @@ data:extend({ always_show_products = true, energy_required = 15, ingredients = { - {"nullius-box-red-wire", 5} + {type = "item", name = "nullius-box-red-wire", amount = 5} }, results = { {type="item", name="nullius-box-green-wire", amount = 4} @@ -1176,10 +1176,10 @@ data:extend({ always_show_made_in = true, energy_required = 4, ingredients = { - {"refined-concrete", 4}, - {"nullius-steel-beam", 3}, - {"nullius-insulation", 1}, - {"nullius-mortar", 1} + {type = "item", name = "refined-concrete", amount = 4}, + {type = "item", name = "nullius-steel-beam", amount = 3}, + {type = "item", name = "nullius-insulation", amount = 1}, + {type = "item", name = "nullius-mortar", amount = 1} }, results = { {type="item", name="stone-wall", amount = 1} @@ -1194,10 +1194,10 @@ data:extend({ always_show_made_in = true, energy_required = 20, ingredients = { - {"nullius-box-reinforced-concrete", 2}, - {"nullius-box-steel-beam", 3}, - {"nullius-box-insulation", 1}, - {"nullius-mortar", 5} + {type = "item", name = "nullius-box-reinforced-concrete", amount = 2}, + {type = "item", name = "nullius-box-steel-beam", amount = 3}, + {type = "item", name = "nullius-box-insulation", amount = 1}, + {type = "item", name = "nullius-mortar", amount = 5} }, results = { {type="item", name="nullius-box-wall", amount = 1} @@ -1212,12 +1212,12 @@ data:extend({ always_show_made_in = true, energy_required = 5, ingredients = { - {"stone-wall", 1}, - {"nullius-steel-plate", 2}, - {"nullius-steel-gear", 1}, - {"nullius-motor-2", 1}, - {"nullius-sensor-1", 1}, - {"rail-signal", 1} + {type = "item", name = "stone-wall", amount = 1}, + {type = "item", name = "nullius-steel-plate", amount = 2}, + {type = "item", name = "nullius-steel-gear", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "rail-signal", amount = 1} }, results = { {type="item", name="gate", amount = 1} @@ -1232,12 +1232,12 @@ data:extend({ always_show_made_in = true, energy_required = 25, ingredients = { - {"nullius-box-wall", 1}, - {"nullius-box-steel-plate", 2}, - {"nullius-box-steel-gear", 1}, - {"nullius-box-motor-2", 1}, - {"nullius-box-sensor-1", 1}, - {"nullius-box-rail-signal", 1} + {type = "item", name = "nullius-box-wall", amount = 1}, + {type = "item", name = "nullius-box-steel-plate", amount = 2}, + {type = "item", name = "nullius-box-steel-gear", amount = 1}, + {type = "item", name = "nullius-box-motor-2", amount = 1}, + {type = "item", name = "nullius-box-sensor-1", amount = 1}, + {type = "item", name = "nullius-box-rail-signal", amount = 1} }, results = { {type="item", name="nullius-box-gate", amount = 1} From 58c4f395882924059683fa4d5d43418ec7fbf417 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:24:05 +0200 Subject: [PATCH 023/236] Update ingredients to new format : alignment.lua --- nullius/prototypes/item/alignment.lua | 56 +++++++++++++-------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/nullius/prototypes/item/alignment.lua b/nullius/prototypes/item/alignment.lua index 43717fe..115d95d 100644 --- a/nullius/prototypes/item/alignment.lua +++ b/nullius/prototypes/item/alignment.lua @@ -275,8 +275,8 @@ data:extend({ order = "nullius-dc", energy_required = 3, ingredients = { - {"nullius-broken-align-transponder", 1}, - {"nullius-iron-wire", 1} + {type = "item", name = "nullius-broken-align-transponder", amount = 1}, + {type = "item", name = "nullius-iron-wire", amount = 1} }, results = { {type="item", name="nullius-align-transponder", amount = 1} @@ -292,8 +292,8 @@ data:extend({ category = "tiny-crafting", energy_required = 8, ingredients = { - {"nullius-steel-sheet", 1}, - {"nullius-plastic", 1} + {type = "item", name = "nullius-steel-sheet", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 1} }, results = { {type="item", name="nullius-align-identification-card", amount = 1} @@ -308,9 +308,9 @@ data:extend({ category = "tiny-crafting", energy_required = 10, ingredients = { - {"nullius-align-identification-card", 1}, - {"nullius-glass", 1}, - {"nullius-aluminum-sheet", 1} + {type = "item", name = "nullius-align-identification-card", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "nullius-aluminum-sheet", amount = 1} }, results = { {type="item", name="nullius-align-invitation-card", amount = 1} @@ -325,9 +325,9 @@ data:extend({ category = "small-crafting", energy_required = 12, ingredients = { - {"nullius-align-identification-card", 1}, - {"constant-combinator", 1}, - {"nullius-capacitor", 2} + {type = "item", name = "nullius-align-identification-card", amount = 1}, + {type = "item", name = "constant-combinator", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 2} }, results = { {type="item", name="nullius-align-transponder", amount = 1} @@ -344,9 +344,9 @@ data:extend({ category = "nullius-electrolysis", energy_required = 10, ingredients = { - {"nullius-align-invitation-card", 1}, - {"nullius-align-transponder", 1}, - {"nullius-capacitor", 4} + {type = "item", name = "nullius-align-invitation-card", amount = 1}, + {type = "item", name = "nullius-align-transponder", amount = 1}, + {type = "item", name = "nullius-capacitor", amount = 4} }, results = { {type="item", name="nullius-align-conscription-charge", amount = 3} @@ -361,9 +361,9 @@ data:extend({ category = "small-crafting", energy_required = 20, ingredients = { - {"power-switch", 1}, - {"nullius-multi-tool-1", 1}, - {"nullius-relay-1", 1} + {type = "item", name = "power-switch", amount = 1}, + {type = "item", name = "nullius-multi-tool-1", amount = 1}, + {type = "item", name = "nullius-relay-1", amount = 1} }, results = { {type="item", name="nullius-align-conscription-ray", amount = 1} @@ -378,12 +378,12 @@ data:extend({ category = "medium-crafting", energy_required = 30, ingredients = { - {"nullius-align-conscription-ray", 2}, - {"nullius-night-vision-1", 1}, - {"nullius-transformer", 1}, - {"nullius-bearing", 1}, - {"nullius-missile-launcher", 2}, - {"nullius-steel-beam", 6} + {type = "item", name = "nullius-align-conscription-ray", amount = 2}, + {type = "item", name = "nullius-night-vision-1", amount = 1}, + {type = "item", name = "nullius-transformer", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 1}, + {type = "item", name = "nullius-missile-launcher", amount = 2}, + {type = "item", name = "nullius-steel-beam", amount = 6} }, results = { {type="item", name="nullius-align-conscription-turret", amount = 1} @@ -398,9 +398,9 @@ data:extend({ category = "large-crafting", energy_required = 60, ingredients = { - {"nullius-align-conscription-turret", 3}, - {"nullius-large-beacon-1", 2}, - {"nullius-align-conscription-charge", 10} + {type = "item", name = "nullius-align-conscription-turret", amount = 3}, + {type = "item", name = "nullius-large-beacon-1", amount = 2}, + {type = "item", name = "nullius-align-conscription-charge", amount = 10} }, results = { {type="item", name="nullius-align-concordance-transmitter", amount = 1} @@ -415,9 +415,9 @@ data:extend({ category = "huge-crafting", energy_required = 300, ingredients = { - {"nullius-align-concordance-transmitter", 3}, - {"nullius-large-beacon-2", 2}, - {"nullius-satellite", 1} + {type = "item", name = "nullius-align-concordance-transmitter", amount = 3}, + {type = "item", name = "nullius-large-beacon-2", amount = 2}, + {type = "item", name = "nullius-satellite", amount = 1} }, results = { {type="item", name="nullius-align-concordance-satellite", amount = 1} From 7578f4a78137734cc7e1447c719ad4c45f882672 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:25:38 +0200 Subject: [PATCH 024/236] Update ingredients to new format : broken.lua --- nullius/prototypes/item/broken.lua | 42 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/nullius/prototypes/item/broken.lua b/nullius/prototypes/item/broken.lua index 5b4d5da..3c28b86 100644 --- a/nullius/prototypes/item/broken.lua +++ b/nullius/prototypes/item/broken.lua @@ -176,8 +176,8 @@ data:extend({ order = "nullius-c", energy_required = 3, ingredients = { - {"nullius-broken-air-filter", 1}, - {"nullius-iron-sheet", 2} + {type = "item", name = "nullius-broken-air-filter", amount = 1}, + {type = "item", name = "nullius-iron-sheet", amount = 2} }, results = { {type="item", name="nullius-air-filter-1", amount = 1} @@ -200,8 +200,8 @@ data:extend({ order = "nullius-e", energy_required = 4, ingredients = { - {"nullius-broken-hydro-plant", 1}, - {"pipe", 4} + {type = "item", name = "nullius-broken-hydro-plant", amount = 1}, + {type = "item", name = "pipe", amount = 4} }, results = { {type="item", name="nullius-hydro-plant-1", amount = 1} @@ -224,8 +224,8 @@ data:extend({ order = "nullius-g", energy_required = 6, ingredients = { - {"nullius-broken-electrolyzer", 1}, - {"nullius-iron-wire", 5} + {type = "item", name = "nullius-broken-electrolyzer", amount = 1}, + {type = "item", name = "nullius-iron-wire", amount = 5} }, results = { {type="item", name="nullius-electrolyzer-1", amount = 1} @@ -248,8 +248,8 @@ data:extend({ order = "nullius-i", energy_required = 5, ingredients = { - {"nullius-broken-chemical-plant", 1}, - {"nullius-one-way-valve", 2} + {type = "item", name = "nullius-broken-chemical-plant", amount = 1}, + {type = "item", name = "nullius-one-way-valve", amount = 2} }, results = { {type="item", name="nullius-chemical-plant-1", amount = 1} @@ -272,8 +272,8 @@ data:extend({ order = "nullius-k", energy_required = 4, ingredients = { - {"nullius-broken-foundry", 1}, - {"stone-brick", 5} + {type = "item", name = "nullius-broken-foundry", amount = 1}, + {type = "item", name = "stone-brick", amount = 5} }, results = { {type="item", name="nullius-foundry-1", amount = 1} @@ -296,8 +296,8 @@ data:extend({ order = "nullius-m", energy_required = 3, ingredients = { - {"nullius-broken-assembler", 1}, - {"nullius-iron-gear", 2} + {type = "item", name = "nullius-broken-assembler", amount = 1}, + {type = "item", name = "nullius-iron-gear", amount = 2} }, results = { {type="item", name="nullius-medium-assembler-1", amount = 1} @@ -320,8 +320,8 @@ data:extend({ order = "nullius-o", energy_required = 2, ingredients = { - {"nullius-broken-pylon", 1}, - {"nullius-iron-rod", 3} + {type = "item", name = "nullius-broken-pylon", amount = 1}, + {type = "item", name = "nullius-iron-rod", amount = 3} }, results = { {type="item", name="big-electric-pole", amount = 1} @@ -344,8 +344,8 @@ data:extend({ order = "nullius-q", energy_required = 8, ingredients = { - {"nullius-broken-solar-panel", 1}, - {"nullius-sand", 1} + {type = "item", name = "nullius-broken-solar-panel", amount = 1}, + {type = "item", name = "nullius-sand", amount = 1} }, results = { {type="item", name="nullius-solar-panel-1", amount = 1} @@ -368,8 +368,8 @@ data:extend({ order = "nullius-s", energy_required = 6, ingredients = { - {"nullius-broken-grid-battery", 1}, - {"nullius-graphite", 1} + {type = "item", name = "nullius-broken-grid-battery", amount = 1}, + {type = "item", name = "nullius-graphite", amount = 1} }, results = { {type="item", name="nullius-grid-battery-1", amount = 1} @@ -392,9 +392,9 @@ data:extend({ order = "nullius-u", energy_required = 10, ingredients = { - {"nullius-broken-sensor-node", 1}, - {"nullius-glass", 2}, - {"small-lamp", 2} + {type = "item", name = "nullius-broken-sensor-node", amount = 1}, + {type = "item", name = "nullius-glass", amount = 2}, + {type = "item", name = "small-lamp", amount = 2} }, results = { {type="item", name="radar", amount = 1} From 8c66b852dbff48e1fc935ca2845d3dd901d06e84 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:29:19 +0200 Subject: [PATCH 025/236] Update ingredients to new format : landfill.lua --- nullius/prototypes/item/landfill.lua | 66 ++++++++++++++-------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index bd30c35..7b26538 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -88,8 +88,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, ingredients = { - {"nullius-gravel", 5}, - {"nullius-sand", 1} + {type = "item", name = "nullius-gravel", amount = 5}, + {type = "item", name = "nullius-sand", amount = 1} }, results = { {type="item", name="nullius-land-fill-gravel", amount = 2} @@ -108,8 +108,8 @@ data:extend({ category = "ore-crushing", subgroup = "boxed-land-fill", ingredients = { - {"nullius-box-gravel", 5}, - {"nullius-box-sand", 1} + {type = "item", name = "nullius-box-gravel", amount = 5}, + {type = "item", name = "nullius-box-sand", amount = 1} }, results = { {type="item", name="nullius-box-land-fill-gravel", amount = 1} @@ -127,8 +127,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, ingredients = { - {"nullius-sand", 10}, - {"nullius-gravel", 2} + {type = "item", name = "nullius-sand", amount = 10}, + {type = "item", name = "nullius-gravel", amount = 2} }, results = { {type="item", name="nullius-land-fill-sand", amount = 4} @@ -147,8 +147,8 @@ data:extend({ category = "ore-crushing", subgroup = "boxed-land-fill", ingredients = { - {"nullius-box-sand", 5}, - {"nullius-box-gravel", 1} + {type = "item", name = "nullius-box-sand", amount = 5}, + {type = "item", name = "nullius-box-gravel", amount = 1} }, results = { {type="item", name="nullius-box-land-fill-sand", amount = 1} @@ -166,8 +166,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, ingredients = { - {"nullius-crushed-bauxite", 15}, - {"nullius-gravel", 5} + {type = "item", name = "nullius-crushed-bauxite", amount = 15}, + {type = "item", name = "nullius-gravel", amount = 5} }, results = { {type="item", name="nullius-land-fill-bauxite", amount = 10} @@ -184,8 +184,8 @@ data:extend({ always_show_products = true, category = "ore-crushing", ingredients = { - {"nullius-crushed-iron-ore", 4}, - {"nullius-sand", 1} + {type = "item", name = "nullius-crushed-iron-ore", amount = 4}, + {type = "item", name = "nullius-sand", amount = 1} }, results = { {type="item", name="nullius-land-fill-iron", amount = 2} @@ -202,7 +202,7 @@ data:extend({ always_show_products = true, category = "ore-crushing", ingredients = { - {"nullius-crushed-limestone", 25} + {type = "item", name = "nullius-crushed-limestone", amount = 25} }, results = { {type="item", name="nullius-land-fill-limestone", amount = 10} @@ -234,8 +234,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, ingredients = { - {"nullius-gravel", 10}, - {"concrete", 15} + {type = "item", name = "nullius-gravel", amount = 10}, + {type = "item", name = "concrete", amount = 15} }, results = { {type="item", name="nullius-land-fill-gravel", amount = 20} @@ -272,8 +272,8 @@ data:extend({ subgroup = "boxed-land-fill", energy_required = 16, ingredients = { - {"nullius-box-gravel", 4}, - {"nullius-box-concrete", 3} + {type = "item", name = "nullius-box-gravel", amount = 4}, + {type = "item", name = "nullius-box-concrete", amount = 3} }, results = { {type="item", name="nullius-box-land-fill-gravel", amount = 4} @@ -305,8 +305,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, ingredients = { - {"nullius-sand", 10}, - {"nullius-yellow-concrete", 10} + {type = "item", name = "nullius-sand", amount = 10}, + {type = "item", name = "nullius-yellow-concrete", amount = 10} }, results = { {type="item", name="nullius-land-fill-sand", amount = 20} @@ -343,8 +343,8 @@ data:extend({ subgroup = "boxed-land-fill", energy_required = 6, ingredients = { - {"nullius-box-sand", 2}, - {"nullius-box-yellow-concrete", 1} + {type = "item", name = "nullius-box-sand", amount = 2}, + {type = "item", name = "nullius-box-yellow-concrete", amount = 1} }, results = { {type="item", name="nullius-box-land-fill-sand", amount = 2} @@ -376,8 +376,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, ingredients = { - {"nullius-crushed-bauxite", 3}, - {"nullius-brown-concrete", 5} + {type = "item", name = "nullius-crushed-bauxite", amount = 3}, + {type = "item", name = "nullius-brown-concrete", amount = 5} }, results = { {type="item", name="nullius-land-fill-bauxite", amount = 10} @@ -395,8 +395,8 @@ data:extend({ order = "nullius-db", energy_required = 40, ingredients = { - {"nullius-box-crushed-bauxite", 6}, - {"nullius-box-brown-concrete", 5} + {type = "item", name = "nullius-box-crushed-bauxite", amount = 6}, + {type = "item", name = "nullius-box-brown-concrete", amount = 5} }, results = { {type="item", name="nullius-box-land-fill-bauxite", amount = 10} @@ -427,8 +427,8 @@ data:extend({ always_show_products = true, category = "ore-crushing", ingredients = { - {"nullius-crushed-iron-ore", 4}, - {"nullius-red-concrete", 5} + {type = "item", name = "nullius-crushed-iron-ore", amount = 4}, + {type = "item", name = "nullius-red-concrete", amount = 5} }, results = { {type="item", name="nullius-land-fill-iron", amount = 10} @@ -445,8 +445,8 @@ data:extend({ order = "nullius-eb", energy_required = 40, ingredients = { - {"nullius-box-crushed-iron-ore", 8}, - {"nullius-box-red-concrete", 5} + {type = "item", name = "nullius-box-crushed-iron-ore", amount = 8}, + {type = "item", name = "nullius-box-red-concrete", amount = 5} }, results = { {type="item", name="nullius-box-land-fill-iron", amount = 10} @@ -477,8 +477,8 @@ data:extend({ always_show_products = true, category = "ore-crushing", ingredients = { - {"nullius-crushed-limestone", 5}, - {"refined-concrete", 4} + {type = "item", name = "nullius-crushed-limestone", amount = 5}, + {type = "item", name = "refined-concrete", amount = 4} }, results = { {type="item", name="nullius-land-fill-limestone", amount = 10} @@ -495,8 +495,8 @@ data:extend({ order = "nullius-fb", energy_required = 20, ingredients = { - {"nullius-box-crushed-limestone", 5}, - {"nullius-box-reinforced-concrete", 2} + {type = "item", name = "nullius-box-crushed-limestone", amount = 5}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 2} }, results = { {type="item", name="nullius-box-land-fill-limestone", amount = 5} From 176efac0293d143ff704fd50be6353dfab176615 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 15:34:49 +0200 Subject: [PATCH 026/236] Update ingredients to new format : boxing.lua --- nullius/TODO_list.txt | 4 ++-- nullius/prototypes/item/boxing.lua | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 337c679..da11b0a 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -5,7 +5,6 @@ Fix fluid boxes (volume and pipe connections) pipes hold as much fluid as medium Valves, pipes and tanks: fix mentions of pressure in locales Rework the entity mirroring system Rework the checkpoint system (maybe) -Update the recipe ingredients format fix the others warnings in the log landfill transitions things -> i have no clue how this thing works and if i even have to do anything fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) @@ -13,4 +12,5 @@ mods compatibility do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions -update changelog and info.json(min version of dependencies) before publishing \ No newline at end of file +update changelog and info.json(min version of dependencies) before publishing +drones ammo category locale broken \ No newline at end of file diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index 61948e2..5ea1236 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -70,7 +70,7 @@ local function create_boxed_item(base_name, group, box_order, requester_paste_multiplier = 5, energy_required = 1, ingredients = { - {full_name, 4*ratio} + {type="item", name= full_name, amount = 4*ratio} }, results = { {type="item", name="nullius-box-"..base_name, amount = 4} @@ -94,7 +94,7 @@ local function create_boxed_item(base_name, group, box_order, requester_paste_multiplier = 4, energy_required = 0.2, ingredients = { - {"nullius-box-"..base_name, 1} + {type="item", name="nullius-box-"..base_name, amount = 1} }, results = { {type="item", name=full_name, amount = ratio} From 08b61481727adffd76778f0b2d9ebe41687358e6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 16:21:17 +0200 Subject: [PATCH 027/236] Replaced vehicle_impact_sound with impact_category Removed unused field GCKI_ignore to reduce the amount of warnings in the log Fixed missing types in recipes for hangars --- nullius/TODO_list.txt | 1 - nullius/data-final-fixes.lua | 8 ++- nullius/prototypes/entity/assembler.lua | 24 ++++---- nullius/prototypes/entity/beacon.lua | 10 ++-- nullius/prototypes/entity/chemistry.lua | 50 ++++++++--------- nullius/prototypes/entity/chest.lua | 34 ++++++------ nullius/prototypes/entity/drone.lua | 4 +- nullius/prototypes/entity/energy.lua | 70 ++++++++++++------------ nullius/prototypes/entity/furnace.lua | 40 +++++++------- nullius/prototypes/entity/logistics.lua | 22 ++++---- nullius/prototypes/entity/miner.lua | 16 +++--- nullius/prototypes/entity/plumbing.lua | 58 ++++++++++---------- nullius/prototypes/entity/power_pole.lua | 12 ++-- nullius/prototypes/entity/robot.lua | 8 +-- nullius/prototypes/entity/train.lua | 24 ++++---- nullius/prototypes/entity/turbine.lua | 2 +- nullius/prototypes/entity/vehicle.lua | 12 ++-- nullius/prototypes/entity/vent.lua | 8 +-- nullius/prototypes/item/equipment.lua | 38 ++++++------- 19 files changed, 223 insertions(+), 218 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index da11b0a..d7e565c 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -1,5 +1,4 @@ TODO list: -Rework sounds: remove vehicle impact sound, add impact-category instead (i think) add working_sounds to entities (i think) Fix fluid boxes (volume and pipe connections) pipes hold as much fluid as medium tank for instance Valves, pipes and tanks: fix mentions of pressure in locales diff --git a/nullius/data-final-fixes.lua b/nullius/data-final-fixes.lua index 883c82a..66c1c9d 100644 --- a/nullius/data-final-fixes.lua +++ b/nullius/data-final-fixes.lua @@ -2,4 +2,10 @@ require("prototypes.override_final") require("prototypes.override_final_only") require("prototypes.override_mod_final") require("prototypes.item.module_limitation") -require("prototypes.item.box_icons") \ No newline at end of file +require("prototypes.item.box_icons") + +for _, recipe in pairs(data.raw.recipe) do + if recipe.GCKI_ignore ~= nil then + recipe.GCKI_ignore = nil + end +end \ No newline at end of file diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 30cdac8..85c34d9 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -63,7 +63,7 @@ data:extend({ energy_usage = "59kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = { sound = { { filename = "__base__/sound/assembling-machine-t1-1.ogg", volume = 0.8 }, @@ -153,7 +153,7 @@ data:extend({ energy_usage = "144kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = { sound = { { filename = "__base__/sound/assembling-machine-t1-1.ogg", volume = 0.8 }, @@ -242,7 +242,7 @@ data:extend({ energy_usage = "650kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = { sound = { { filename = "__base__/sound/assembling-machine-t1-1.ogg", volume = 0.8 }, @@ -304,7 +304,7 @@ data:extend({ energy_usage = "123kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-small-assembler-1"].working_sound }, @@ -367,7 +367,7 @@ data:extend({ energy_usage = "270kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-small-assembler-1"].working_sound }, @@ -432,7 +432,7 @@ data:extend({ energy_usage = "285kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-medium-assembler-1"].working_sound }, @@ -496,7 +496,7 @@ data:extend({ energy_usage = "670kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-medium-assembler-1"].working_sound }, @@ -559,7 +559,7 @@ data:extend({ energy_usage = "1500kW", open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-large-assembler-1"].working_sound } }) @@ -599,7 +599,7 @@ data:extend({ graphics_set = { animation = scale_image(data.raw["assembling-machine"]["angels-crystallizer"].graphics_set.animation, 0.775), }, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-crystallizer"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-crystallizer"].impact_category, working_sound = data.raw["assembling-machine"]["angels-crystallizer"].working_sound, fluid_boxes = { { @@ -682,7 +682,7 @@ data:extend({ graphics_set = { animation = scale_image(data.raw["assembling-machine"]["angels-crystallizer-2"].graphics_set.animation, 0.775), }, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, fluid_boxes = { { @@ -753,7 +753,7 @@ data:extend({ graphics_set = { animation = data.raw["assembling-machine"]["nullius-nanofabricator-2"].graphics_set.animation, }, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, fluid_boxes = { { @@ -814,7 +814,7 @@ data:extend({ drain = "5kW" }, energy_usage = "395kW", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.4 }, + impact_category = "metal", working_sound = { sound = { { filename = "__base__/sound/assembling-machine-t1-1.ogg", volume = 0.6 }, diff --git a/nullius/prototypes/entity/beacon.lua b/nullius/prototypes/entity/beacon.lua index 890faa3..5f2c5f4 100644 --- a/nullius/prototypes/entity/beacon.lua +++ b/nullius/prototypes/entity/beacon.lua @@ -30,7 +30,7 @@ data:extend({ radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, supply_area_distance = 3, energy_source = { type = "electric", usage_priority = "secondary-input" }, - vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, + impact_category = data.raw.beacon["beacon"].impact_category, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "80kW", @@ -197,7 +197,7 @@ data:extend({ radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, supply_area_distance = 3, energy_source = { type = "electric", usage_priority = "secondary-input" }, - vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, + impact_category = data.raw.beacon["beacon"].impact_category, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "150kW", @@ -419,7 +419,7 @@ data:extend({ radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, supply_area_distance = 3, energy_source = { type = "electric", usage_priority = "secondary-input" }, - vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, + impact_category = data.raw.beacon["beacon"].impact_category, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "250kW", @@ -640,7 +640,7 @@ data:extend({ radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, supply_area_distance = 12, energy_source = { type = "electric", usage_priority = "secondary-input" }, - vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, + impact_category = data.raw.beacon["beacon"].impact_category, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "600kW", @@ -805,7 +805,7 @@ data:extend({ radius_visualisation_picture = data.raw.beacon["beacon"].radius_visualisation_picture, supply_area_distance = 12, energy_source = { type = "electric", usage_priority = "secondary-input" }, - vehicle_impact_sound = data.raw.beacon["beacon"].vehicle_impact_sound, + impact_category = data.raw.beacon["beacon"].impact_category, open_sound = data.raw.beacon["beacon"].open_sound, close_sound = data.raw.beacon["beacon"].close_sound, energy_usage = "1.5MW", diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 3e591e3..798c13f 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -73,7 +73,7 @@ data:extend({ animation = hydro_animation("angels-hydro-plant",{0.77, 0.77, 0.68}), working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant"].graphics_set.working_visualisations, 0.725), }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, fluid_boxes = { { @@ -139,7 +139,7 @@ data:extend({ animation = hydro_animation("angels-hydro-plant-2",{0.8, 0.8, 0.9}), working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant-2"].graphics_set.working_visualisations, 0.725), }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-hydro-plant-2"].working_sound, fluid_boxes = { { @@ -202,7 +202,7 @@ data:extend({ animation = hydro_animation("angels-hydro-plant-3"), working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant-3"].graphics_set.working_visualisations, 0.725), }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-hydro-plant-3"].working_sound, fluid_boxes = { { @@ -289,7 +289,7 @@ data:extend({ fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-mirror-hydro-plant-3", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, fluid_boxes = { @@ -355,7 +355,7 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, fluid_boxes = { @@ -452,7 +452,7 @@ data:extend({ pipe_connections = {{ flow_direction ="output", position = {1, -2}, direction = defines.direction.north }} } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", @@ -550,7 +550,7 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", @@ -644,7 +644,7 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", @@ -714,7 +714,7 @@ data:extend({ energy_usage = "550kW", resistances = data.raw["assembling-machine"]["nullius-distillery-2"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", @@ -786,7 +786,7 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", @@ -913,7 +913,7 @@ data:extend({ } } }, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-electrolyser"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-electrolyser"].impact_category, working_sound = { sound = { filename = "__angelspetrochemgraphics__/sound/electrolyser.ogg", volume = 0.15 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.4 }, @@ -1030,7 +1030,7 @@ data:extend({ } } }, - vehicle_impact_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].impact_category, working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound }, @@ -1118,7 +1118,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = { { @@ -1257,7 +1257,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound }, @@ -1296,7 +1296,7 @@ data:extend({ energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_usage, resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].resistances, graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].graphics_set, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = { { @@ -1363,7 +1363,7 @@ data:extend({ energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_usage, resistances = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].resistances, graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].graphics_set, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-2"].fluid_boxes }, @@ -1444,7 +1444,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = { { @@ -1509,7 +1509,7 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].graphics_set, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, fluid_boxes = { { @@ -1616,7 +1616,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound } }) @@ -1657,7 +1657,7 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-3"].fluid_boxes, graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].graphics_set, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound }, @@ -1835,7 +1835,7 @@ data:extend({ resistances = { { type = "impact", decrease = 100, percent = 90 } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["chemical-plant"].working_sound, crafting_speed = 1, energy_source = { @@ -1948,7 +1948,7 @@ data:extend({ resistances = { { type = "impact", decrease = 100, percent = 90 } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["chemical-plant"].working_sound, crafting_speed = 2, energy_source = { @@ -2028,7 +2028,7 @@ data:extend({ working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, }, resistances = data.raw["assembling-machine"]["nullius-chemical-plant-2"].resistances, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-chemical-plant-2"].working_sound, crafting_speed = 2, energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-2"].energy_source, @@ -2118,7 +2118,7 @@ data:extend({ resistances = { { type = "impact", decrease = 100, percent = 90 } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["chemical-plant"].working_sound, crafting_speed = 4, energy_source = { @@ -2197,7 +2197,7 @@ data:extend({ }, resistances = data.raw["assembling-machine"]["nullius-chemical-plant-3"].resistances, energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-3"].energy_source, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["chemical-plant"].working_sound, crafting_speed = 4, energy_usage = "760kW", diff --git a/nullius/prototypes/entity/chest.lua b/nullius/prototypes/entity/chest.lua index 8ef3fd1..8767b14 100644 --- a/nullius/prototypes/entity/chest.lua +++ b/nullius/prototypes/entity/chest.lua @@ -22,7 +22,7 @@ data:extend({ fast_replaceable_group = "container", next_upgrade = "nullius-large-chest-2", inventory_size = 100, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 1 }, + impact_category = "metal", picture = { layers = { { @@ -66,7 +66,7 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, fast_replaceable_group = "container", inventory_size = 150, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 1 }, + impact_category = "metal", circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, @@ -119,7 +119,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -198,7 +198,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -278,7 +278,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -332,7 +332,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -410,7 +410,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -489,7 +489,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -545,7 +545,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -625,7 +625,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -706,7 +706,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -762,7 +762,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -842,7 +842,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -923,7 +923,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -977,7 +977,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -1055,7 +1055,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, @@ -1134,7 +1134,7 @@ data:extend({ open_sound = data.raw["logistic-container"]["storage-chest"].open_sound, close_sound = data.raw["logistic-container"]["storage-chest"].close_sound, animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, - vehicle_impact_sound = data.raw["logistic-container"]["storage-chest"].vehicle_impact_sound, + impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, circuit_wire_connection_point = circuit_connector_definitions["chest"].points, circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index bdb4ee7..be3f679 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -42,7 +42,7 @@ data:extend({ cannon_barrel_recoil_shiftings = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_recoil_shiftings, cannon_barrel_light_direction = {0.5976251, 0.0242053, -0.8014102}, cannon_barrel_recoil_shiftings_load_correction_matrix = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_recoil_shiftings_load_correction_matrix, - vehicle_impact_sound = data.raw["artillery-turret"]["artillery-turret"].vehicle_impact_sound, + impact_category = data.raw["artillery-turret"]["artillery-turret"].impact_category, water_reflection = data.raw["artillery-turret"]["artillery-turret"].water_reflection, base_shift = util.by_pixel(0, -22), base_picture_render_layer = "lower-object-above-shadow", @@ -117,7 +117,7 @@ data:extend({ cannon_barrel_recoil_shiftings = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_recoil_shiftings, cannon_barrel_light_direction = {0.5976251, 0.0242053, -0.8014102}, cannon_barrel_recoil_shiftings_load_correction_matrix = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_recoil_shiftings_load_correction_matrix, - vehicle_impact_sound = data.raw["artillery-turret"]["artillery-turret"].vehicle_impact_sound, + impact_category = data.raw["artillery-turret"]["artillery-turret"].impact_category, water_reflection = data.raw["artillery-turret"]["artillery-turret"].water_reflection, base_shift = util.by_pixel(0, -22), base_picture_render_layer = "lower-object-above-shadow", diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index b9f955b..1609fa0 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -86,7 +86,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.6 } + impact_category = "metal", } }) @@ -108,7 +108,7 @@ data:extend({ fast_replaceable_group = "solar-panel", next_upgrade = "nullius-solar-panel-3", overlay = data.raw["solar-panel"]["nullius-solar-panel-1"].overlay, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.6 }, + impact_category = "metal", picture = { layers = { { @@ -142,7 +142,7 @@ data:extend({ fast_replaceable_group = "solar-panel", next_upgrade = "nullius-solar-panel-4", overlay = data.raw["solar-panel"]["nullius-solar-panel-1"].overlay, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.6 }, + impact_category = "metal", picture = { layers = { { @@ -174,7 +174,7 @@ data:extend({ resistances = data.raw["solar-panel"]["nullius-solar-panel-1"].resistances, fast_replaceable_group = "solar-panel", overlay = data.raw["solar-panel"]["nullius-solar-panel-1"].overlay, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.6 }, + impact_category = "metal", picture = { layers = { { @@ -252,7 +252,7 @@ data:extend({ discharge_cooldown = 60, discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}} }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, circuit_connector_sprites = circuit_connector_definitions["accumulator"].sprites, @@ -318,7 +318,7 @@ data:extend({ }, discharge_cooldown = 60, discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, circuit_connector_sprites = circuit_connector_definitions["accumulator"].sprites, @@ -383,7 +383,7 @@ data:extend({ }, discharge_cooldown = 60, discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, circuit_connector_sprites = circuit_connector_definitions["accumulator"].sprites, @@ -402,7 +402,7 @@ data:extend({ crafting_speed = 1, max_health = 200, corpse = "boiler-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 100, percent = 90 }, @@ -660,7 +660,7 @@ data:extend({ base_productivity = 0.02, max_health = 300, corpse = "boiler-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 100, percent = 90 }, @@ -818,7 +818,7 @@ data:extend({ base_productivity = 0.02, max_health = 300, corpse = "boiler-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, fast_replaceable_group = "combustion-chamber", next_upgrade = "nullius-mirror-combustion-chamber-3", @@ -869,7 +869,7 @@ data:extend({ base_productivity = 0.04, max_health = 400, corpse = "boiler-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, fast_replaceable_group = "combustion-chamber", collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, @@ -992,7 +992,7 @@ data:extend({ base_productivity = 0.04, max_health = 400, corpse = "boiler-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, fast_replaceable_group = "combustion-chamber", collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, @@ -1038,7 +1038,7 @@ data:extend({ resistances = { { type = "impact", decrease = 100, percent = 90 } }, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { @@ -1183,7 +1183,7 @@ data:extend({ }, energy_usage = "495kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, @@ -1315,7 +1315,7 @@ data:extend({ }, energy_usage = "2925kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { @@ -1460,7 +1460,7 @@ data:extend({ }, energy_usage = "1930kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-2"].resistances, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-2"].fluid_boxes, @@ -1556,7 +1556,7 @@ data:extend({ }, energy_usage = "7725kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { @@ -1696,7 +1696,7 @@ data:extend({ }, energy_usage = "7650kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, fluid_boxes = { { @@ -1798,7 +1798,7 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { @@ -1845,7 +1845,7 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { @@ -1892,7 +1892,7 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { @@ -1933,7 +1933,7 @@ data:extend({ }, energy_source = {type = "void"}, working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -1991,7 +1991,7 @@ data:extend({ }, energy_source = {type = "void"}, working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -2040,7 +2040,7 @@ data:extend({ }, energy_source = {type = "void"}, working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, fast_replaceable_group = "geothermal-plant", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { @@ -2117,7 +2117,7 @@ data:extend({ collision_box = {{-0.3, -0.3}, {0.3, 0.3}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, working_sound = data.raw["heat-pipe"]["heat-pipe"].working_sound, - vehicle_impact_sound = data.raw["heat-pipe"]["heat-pipe"].vehicle_impact_sound, + impact_category = data.raw["heat-pipe"]["heat-pipe"].impact_category, damaged_trigger_effect = data.raw["heat-pipe"]["heat-pipe"].damaged_trigger_effect, min_temperature_gradient = 4, heat_buffer = { @@ -2194,7 +2194,7 @@ data:extend({ collision_box = {{-0.3, -0.3}, {0.3, 0.3}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, working_sound = data.raw["heat-pipe"]["heat-pipe"].working_sound, - vehicle_impact_sound = data.raw["heat-pipe"]["heat-pipe"].vehicle_impact_sound, + impact_category = data.raw["heat-pipe"]["heat-pipe"].impact_category, damaged_trigger_effect = data.raw["heat-pipe"]["heat-pipe"].damaged_trigger_effect, min_temperature_gradient = 2, heat_buffer = { @@ -2270,7 +2270,7 @@ data:extend({ collision_box = {{-0.3, -0.3}, {0.3, 0.3}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, working_sound = data.raw["heat-pipe"]["heat-pipe"].working_sound, - vehicle_impact_sound = data.raw["heat-pipe"]["heat-pipe"].vehicle_impact_sound, + impact_category = data.raw["heat-pipe"]["heat-pipe"].impact_category, damaged_trigger_effect = data.raw["heat-pipe"]["heat-pipe"].damaged_trigger_effect, connection_sprites = data.raw["heat-pipe"]["heat-pipe"].connection_sprites, heat_glow_sprites = data.raw["heat-pipe"]["heat-pipe"].heat_glow_sprites, @@ -2350,7 +2350,7 @@ data:extend({ }, consumption = "2kW", working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2440,7 +2440,7 @@ data:extend({ }, consumption = "5kW", working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2530,7 +2530,7 @@ data:extend({ }, consumption = "20kW", working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - vehicle_impact_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2858,7 +2858,7 @@ data:extend({ render_no_power_icon = false }, damaged_trigger_effect = data.raw.generator["steam-engine"].damaged_trigger_effect, - vehicle_impact_sound = data.raw.generator["steam-engine"].vehicle_impact_sound, + impact_category = data.raw.generator["steam-engine"].impact_category, open_sound = data.raw.generator["steam-engine"].open_sound, close_sound = data.raw.generator["steam-engine"].close_sound, working_sound = data.raw.generator["steam-engine"].working_sound, @@ -2927,7 +2927,7 @@ data:extend({ render_no_power_icon = false }, damaged_trigger_effect = data.raw.generator["steam-engine"].damaged_trigger_effect, - vehicle_impact_sound = data.raw.generator["steam-engine"].vehicle_impact_sound, + impact_category = data.raw.generator["steam-engine"].impact_category, open_sound = data.raw.generator["steam-engine"].open_sound, close_sound = data.raw.generator["steam-engine"].close_sound, working_sound = data.raw.generator["steam-engine"].working_sound, @@ -2995,7 +2995,7 @@ data:extend({ render_no_power_icon = false }, damaged_trigger_effect = data.raw.generator["steam-engine"].damaged_trigger_effect, - vehicle_impact_sound = data.raw.generator["steam-engine"].vehicle_impact_sound, + impact_category = data.raw.generator["steam-engine"].impact_category, open_sound = data.raw.generator["steam-engine"].open_sound, close_sound = data.raw.generator["steam-engine"].close_sound, working_sound = data.raw.generator["steam-engine"].working_sound, @@ -3444,7 +3444,7 @@ data:extend({ connection_patches_disconnected = data.raw.reactor["nuclear-reactor"].connection_patches_disconnected, heat_connection_patches_connected = data.raw.reactor["nuclear-reactor"].heat_connection_patches_connected, heat_connection_patches_disconnected = data.raw.reactor["nuclear-reactor"].heat_connection_patches_disconnected, - vehicle_impact_sound = data.raw.reactor["nuclear-reactor"].vehicle_impact_sound, + impact_category = data.raw.reactor["nuclear-reactor"].impact_category, open_sound = data.raw.reactor["nuclear-reactor"].open_sound, close_sound = data.raw.reactor["nuclear-reactor"].close_sound, working_sound = data.raw.reactor["nuclear-reactor"].working_sound, @@ -3743,7 +3743,7 @@ data:extend({ } }, corpse = data.raw.boiler["heat-exchanger"].corpse, - vehicle_impact_sound = data.raw.boiler["heat-exchanger"].vehicle_impact_sound, + impact_category = data.raw.boiler["heat-exchanger"].impact_category, working_sound = data.raw.boiler["heat-exchanger"].working_sound } }) diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 43e6c2f..aac0579 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -19,8 +19,8 @@ data:extend({ mined_sound = { filename = "__base__/sound/deconstruct-bricks.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, - vehicle_impact_sound = { filename = "__base__/sound/car-stone-impact.ogg", volume = 1.0 }, - working_sound = data.raw["furnace"]["steel-furnace"].working_sound, + impact_category = "stone", + working_sound = data.raw["furnace"]["steel-furnace"].working_sound, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 100, percent = 90 }, @@ -53,7 +53,7 @@ data:extend({ minable = {mining_time = 0.9, result = "nullius-small-furnace-2"}, max_health = 250, corpse = "steel-furnace-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["furnace"]["steel-furnace"].working_sound, resistances = { { type = "impact", decrease = 100, percent = 90 }, @@ -107,7 +107,7 @@ data:extend({ emissions_per_minute = {pollution = 1}, drain = "20kW" }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["furnace"]["electric-furnace"].working_sound, module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -228,7 +228,7 @@ data:extend({ minable = {mining_time = 1.2, result = "nullius-medium-furnace-1"}, max_health = 300, corpse = "steel-furnace-remnants", - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["furnace"]["steel-furnace"].working_sound, resistances = { { type = "impact", decrease = 100, percent = 90 }, @@ -385,7 +385,7 @@ data:extend({ working_visualisations = data.raw["furnace"]["electric-furnace"].working_visualisations, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, water_reflection = data.raw["furnace"]["electric-furnace"].water_reflection, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -460,7 +460,7 @@ data:extend({ emissions_per_minute = {pollution = 2.5}, drain = "180kW" }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["furnace"]["electric-furnace"].working_sound, module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -609,7 +609,7 @@ data:extend({ graphics_set = data.raw["furnace"]["electric-furnace"].graphics_set, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, water_reflection = data.raw["furnace"]["electric-furnace"].water_reflection, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 } + impact_category = "metal", }, { @@ -640,7 +640,7 @@ data:extend({ emissions_per_minute = {pollution = 5}, drain = "400kW" }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["furnace"]["electric-furnace"].working_sound, working_visualisations = data.raw["assembling-machine"]["nullius-large-furnace-1"].working_visualisations, water_reflection = data.raw["assembling-machine"]["nullius-large-furnace-1"].water_reflection, @@ -761,7 +761,7 @@ data:extend({ pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.north }} }, }, - vehicle_impact_sound = data.raw["furnace"]["stone-furnace"].vehicle_impact_sound, + impact_category = data.raw["furnace"]["stone-furnace"].impact_category, working_sound = data.raw["furnace"]["stone-furnace"].working_sound } }) @@ -841,7 +841,7 @@ data:extend({ pipe_connections = {{ flow_direction ="output", position = {1.2, -1}, direction = defines.direction.east }} }, }, - vehicle_impact_sound = data.raw["assembling-machine"]["nullius-foundry-1"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["nullius-foundry-1"].impact_category, working_sound = data.raw["assembling-machine"]["nullius-foundry-1"].working_sound }, @@ -917,7 +917,7 @@ data:extend({ pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.east }} }, }, - vehicle_impact_sound = data.raw["assembling-machine"]["nullius-foundry-1"].vehicle_impact_sound, + impact_category = data.raw["assembling-machine"]["nullius-foundry-1"].impact_category, working_sound = data.raw["assembling-machine"]["nullius-foundry-1"].working_sound }, @@ -965,7 +965,7 @@ data:extend({ }, fluid_boxes_off_when_no_fluid_recipe = true, graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher"].graphics_set), - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-burner-ore-crusher"].working_sound, }, @@ -997,7 +997,7 @@ data:extend({ }, module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-crusher"].working_sound, fluid_boxes = { { @@ -1044,7 +1044,7 @@ data:extend({ }, module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-crusher"].working_sound, fluid_boxes = { { @@ -1133,7 +1133,7 @@ data:extend({ animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell"].graphics_set.animation.east, 0.81), working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell"].graphics_set.working_visualisations, 0.81), }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, }, @@ -1200,7 +1200,7 @@ data:extend({ animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].graphics_set.animation.east, 0.81), working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].graphics_set.working_visualisations, 0.81), }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].working_sound, pipe_covers = pipecoverspictures() }, @@ -1267,7 +1267,7 @@ data:extend({ animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].graphics_set.animation.east, 0.81), working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].graphics_set.working_visualisations, 0.81), }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].working_sound, pipe_covers = pipecoverspictures() } @@ -1333,7 +1333,7 @@ data:extend({ animation = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.animation, working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, fluid_boxes = { @@ -1395,7 +1395,7 @@ data:extend({ graphics_set = data.raw["assembling-machine"]["nullius-flotation-cell-3"].graphics_set, energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, fluid_boxes = { diff --git a/nullius/prototypes/entity/logistics.lua b/nullius/prototypes/entity/logistics.lua index 4be9d30..3fe0b04 100644 --- a/nullius/prototypes/entity/logistics.lua +++ b/nullius/prototypes/entity/logistics.lua @@ -26,7 +26,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input" }, energy_usage = "150kW", integration_patch = data.raw.radar["radar"].integration_patch, - vehicle_impact_sound = data.raw.radar["radar"].vehicle_impact_sound, + impact_category = data.raw.radar["radar"].impact_category, working_sound = data.raw.radar["radar"].working_sound, radius_minimap_visualisation_color = { r = 0.059, g = 0.092, b = 0.235, a = 0.275 }, rotation_speed = 0.008, @@ -83,7 +83,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input" }, energy_usage = "250kW", integration_patch = data.raw.radar["radar"].integration_patch, - vehicle_impact_sound = data.raw.radar["radar"].vehicle_impact_sound, + impact_category = data.raw.radar["radar"].impact_category, working_sound = data.raw.radar["radar"].working_sound, radius_minimap_visualisation_color = { r = 0.059, g = 0.092, b = 0.235, a = 0.275 }, rotation_speed = 0.01, @@ -165,7 +165,7 @@ data:extend({ light = {intensity = 0.75, size = 8, color = {r = 1.0, g = 1.0, b = 1.0}}, damaged_trigger_effect = data.raw.lab["lab"].damaged_trigger_effect, working_sound = data.raw.lab["lab"].working_sound, - vehicle_impact_sound = data.raw.lab["lab"].vehicle_impact_sound, + impact_category = data.raw.lab["lab"].impact_category, open_sound = data.raw.lab["lab"].open_sound, close_sound = data.raw.lab["lab"].close_sound, energy_source = { @@ -294,7 +294,7 @@ data:extend({ light = {intensity = 0.75, size = 8, color = {r = 1.0, g = 1.0, b = 1.0}}, damaged_trigger_effect = data.raw.lab["lab"].damaged_trigger_effect, working_sound = data.raw.lab["lab"].working_sound, - vehicle_impact_sound = data.raw.lab["lab"].vehicle_impact_sound, + impact_category = data.raw.lab["lab"].impact_category, open_sound = data.raw.lab["lab"].open_sound, close_sound = data.raw.lab["lab"].close_sound, energy_source = { @@ -397,7 +397,7 @@ data:extend({ light = {intensity = 0.75, size = 8, color = {r = 1.0, g = 1.0, b = 1.0}}, damaged_trigger_effect = data.raw.lab["lab"].damaged_trigger_effect, working_sound = data.raw.lab["lab"].working_sound, - vehicle_impact_sound = data.raw.lab["lab"].vehicle_impact_sound, + impact_category = data.raw.lab["lab"].impact_category, open_sound = data.raw.lab["lab"].open_sound, close_sound = data.raw.lab["lab"].close_sound, energy_source = { @@ -497,7 +497,7 @@ data:extend({ light = {intensity = 0.75, size = 8, color = {r = 1.0, g = 1.0, b = 1.0}}, damaged_trigger_effect = data.raw.lab["lab"].damaged_trigger_effect, working_sound = data.raw.lab["lab"].working_sound, - vehicle_impact_sound = data.raw.lab["lab"].vehicle_impact_sound, + impact_category = data.raw.lab["lab"].impact_category, open_sound = data.raw.lab["lab"].open_sound, close_sound = data.raw.lab["lab"].close_sound, energy_source = { @@ -621,7 +621,7 @@ data:extend({ collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["lamp"]["small-lamp"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["lamp"]["small-lamp"].vehicle_impact_sound, + impact_category = data.raw["lamp"]["small-lamp"].impact_category, open_sound = data.raw["lamp"]["small-lamp"].open_sound, close_sound = data.raw["lamp"]["small-lamp"].close_sound, working_sound = data.raw["lamp"]["small-lamp"].working_sound, @@ -693,7 +693,7 @@ data:extend({ collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["lamp"]["small-lamp"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["lamp"]["small-lamp"].vehicle_impact_sound, + impact_category = data.raw["lamp"]["small-lamp"].impact_category, open_sound = data.raw["lamp"]["small-lamp"].open_sound, close_sound = data.raw["lamp"]["small-lamp"].close_sound, working_sound = data.raw["lamp"]["small-lamp"].working_sound, @@ -790,7 +790,7 @@ data:extend({ -- base_picture = data.raw["electric-turret"]["laser-turret"].base_picture, graphics_set = data.raw["electric-turret"]["laser-turret"].graphics_set, glow_light_intensity = 0.5, -- defaults to 0 - vehicle_impact_sound = data.raw["electric-turret"]["laser-turret"].vehicle_impact_sound, + impact_category = data.raw["electric-turret"]["laser-turret"].impact_category, water_reflection = data.raw["electric-turret"]["laser-turret"].water_reflection, call_for_help_radius = 40, @@ -849,7 +849,7 @@ data:extend({ }, fast_replaceable_group = "inserter", next_upgrade = "bulk-inserter", - vehicle_impact_sound = data.raw["inserter"]["fast-inserter"].vehicle_impact_sound, + impact_category = data.raw["inserter"]["fast-inserter"].impact_category, open_sound = data.raw["inserter"]["fast-inserter"].open_sound, close_sound = data.raw["inserter"]["fast-inserter"].close_sound, working_sound = data.raw["inserter"]["fast-inserter"].working_sound, @@ -892,7 +892,7 @@ data:extend({ -- }, -- fast_replaceable_group = "inserter", -- filter_count = 5, - -- vehicle_impact_sound = data.raw["inserter"]["filter-inserter"].vehicle_impact_sound, + -- impact_category = data.raw["inserter"]["filter-inserter"].impact_category, -- open_sound = data.raw["inserter"]["filter-inserter"].open_sound, -- close_sound = data.raw["inserter"]["filter-inserter"].close_sound, -- working_sound = data.raw["inserter"]["filter-inserter"].working_sound, diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index 5b31961..09ae6de 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -57,7 +57,7 @@ data:extend({ collision_box = {{ -0.75, -0.75}, {0.75, 0.75}}, selection_box = {{ -1, -1}, {1, 1}}, mining_speed = 0.3, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", energy_source = { type = "electric", emissions_per_minute = {pollution = 3}, @@ -95,7 +95,7 @@ data:extend({ collision_box = {{ -1.25, -1.25}, {1.25, 1.25}}, selection_box = {{ -1.5, -1.5}, {1.5, 1.5}}, mining_speed = 0.6, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", energy_source = { type = "electric", emissions_per_minute = {pollution = 6}, @@ -274,7 +274,7 @@ data:extend({ damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, - vehicle_impact_sound = data.raw["mining-drill"]["electric-mining-drill"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, radius_visualisation_picture = { @@ -917,7 +917,7 @@ data:extend({ damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, - vehicle_impact_sound = data.raw["mining-drill"]["electric-mining-drill"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, radius_visualisation_picture = data.raw["mining-drill"]["nullius-small-miner-2"].radius_visualisation_picture, @@ -1222,7 +1222,7 @@ data:extend({ next_upgrade = "nullius-medium-miner-3", damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, - vehicle_impact_sound = data.raw["mining-drill"]["electric-mining-drill"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, @@ -1536,7 +1536,7 @@ data:extend({ fast_replaceable_group = "medium-miner", damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, - vehicle_impact_sound = data.raw["mining-drill"]["electric-mining-drill"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, graphics_set = data.raw["mining-drill"]["electric-mining-drill"].graphics_set, @@ -1575,7 +1575,7 @@ data:extend({ damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, - vehicle_impact_sound = data.raw["mining-drill"]["electric-mining-drill"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, radius_visualisation_picture = { @@ -2218,7 +2218,7 @@ data:extend({ damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, - vehicle_impact_sound = data.raw["mining-drill"]["electric-mining-drill"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, radius_visualisation_picture = data.raw["mining-drill"]["nullius-large-miner-1"].radius_visualisation_picture, diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index dc412fe..73b15bb 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -48,7 +48,7 @@ local si1 = { fast_replaceable_group = "seawater-intake", next_upgrade = "nullius-seawater-intake-2", working_sound = op.working_sound, - vehicle_impact_sound = op.vehicle_impact_sound, + impact_category = op.impact_category, graphics_set = {} } @@ -161,7 +161,7 @@ data:extend({ }, tile_width = 1, tile_height = 1, - vehicle_impact_sound = data.raw["offshore-pump"]["offshore-pump"].vehicle_impact_sound, + impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, placeable_position_visualization = data.raw["offshore-pump"]["offshore-pump"].placeable_position_visualization, circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, @@ -472,7 +472,7 @@ data:extend({ tile_width = 1, tile_height = 1, graphics_set = data.raw["offshore-pump"]["offshore-pump"].graphics_set, - vehicle_impact_sound = data.raw["offshore-pump"]["offshore-pump"].vehicle_impact_sound, + impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, placeable_position_visualization = data.raw["offshore-pump"]["offshore-pump"].placeable_position_visualization, circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, @@ -512,7 +512,7 @@ data:extend({ { type = "fire", decrease = 100, percent = 90 } }, working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, - vehicle_impact_sound = data.raw["offshore-pump"]["offshore-pump"].vehicle_impact_sound, + impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, fluid_boxes = { { production_type = "output", @@ -764,7 +764,7 @@ data:extend({ { type = "fire", decrease = 100, percent = 90 } }, working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, - vehicle_impact_sound = data.raw["offshore-pump"]["offshore-pump"].vehicle_impact_sound, + impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, fluid_boxes = { { production_type = "output", @@ -1090,7 +1090,7 @@ data:extend({ { type = "fire", percent = 75 } }, working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", fluid_boxes = { { production_type = "output", @@ -1177,7 +1177,7 @@ data:extend({ module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", fluid_boxes = { { production_type = "output", @@ -1231,7 +1231,7 @@ data:extend({ module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", fluid_boxes = { { production_type = "output", @@ -1656,7 +1656,7 @@ data:extend({ }, window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -1724,7 +1724,7 @@ data:extend({ }, window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -1937,7 +1937,7 @@ data:extend({ gas_flow = data.raw["storage-tank"]["angels-storage-tank-3"].pictures.gas_flow }, flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -1975,7 +1975,7 @@ data:extend({ fast_replaceable_group = "small-tank", pictures = util.table.deepcopy(data.raw["storage-tank"]["nullius-small-tank-1"].pictures), flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -2019,7 +2019,7 @@ data:extend({ next_upgrade = "nullius-large-tank-2", window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["angels-storage-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -2052,7 +2052,7 @@ data:extend({ next_upgrade = "nullius-large-tank-3", window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["angels-storage-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -2084,7 +2084,7 @@ data:extend({ fast_replaceable_group = "large-tank", window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", working_sound = data.raw["storage-tank"]["angels-storage-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, @@ -2137,7 +2137,7 @@ data:extend({ { type = "fire", decrease = 100, percent = 90 } }, damaged_trigger_effect = data.raw["mining-drill"]["pumpjack"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["mining-drill"]["pumpjack"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["pumpjack"].impact_category, open_sound = data.raw["mining-drill"]["pumpjack"].open_sound, close_sound = data.raw["mining-drill"]["pumpjack"].close_sound, working_sound = data.raw["mining-drill"]["pumpjack"].working_sound, @@ -2242,7 +2242,7 @@ data:extend({ { type = "fire", decrease = 100, percent = 90 } }, damaged_trigger_effect = data.raw["mining-drill"]["pumpjack"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["mining-drill"]["pumpjack"].vehicle_impact_sound, + impact_category = data.raw["mining-drill"]["pumpjack"].impact_category, open_sound = data.raw["mining-drill"]["pumpjack"].open_sound, close_sound = data.raw["mining-drill"]["pumpjack"].close_sound, working_sound = data.raw["mining-drill"]["pumpjack"].working_sound, @@ -2346,7 +2346,7 @@ data:extend({ idle_sound = {filename = "__base__/sound/idle1.ogg", volume = 0.6}, apparent_volume = 2.5 }, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", fluid_boxes = { { production_type = "input", @@ -2453,7 +2453,7 @@ data:extend({ idle_sound = {filename = "__base__/sound/idle1.ogg", volume = 0.6}, apparent_volume = 2.5 }, - vehicle_impact_sound = {filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65}, + impact_category = "metal", fluid_boxes = { { production_type = "input", @@ -2560,7 +2560,7 @@ data:extend({ }, energy_usage = "15kW", pumping_speed = 50, - vehicle_impact_sound = data.raw.pump["pump"].vehicle_impact_sound, + impact_category = data.raw.pump["pump"].impact_category, open_sound = data.raw.pump["pump"].open_sound, close_sound = data.raw.pump["pump"].close_sound, fluid_wagon_connector_frame_count = 35, @@ -2727,7 +2727,7 @@ data:extend({ }, energy_usage = "20kW", pumping_speed = 100, - vehicle_impact_sound = data.raw.pump["pump"].vehicle_impact_sound, + impact_category = data.raw.pump["pump"].impact_category, open_sound = data.raw.pump["pump"].open_sound, close_sound = data.raw.pump["pump"].close_sound, fluid_wagon_connector_frame_count = 35, @@ -2892,7 +2892,7 @@ data:extend({ }, energy_usage = "10kW", pumping_speed = 40, - vehicle_impact_sound = data.raw["pump"]["pump"].vehicle_impact_sound, + impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, circuit_wire_connection_points = data.raw["pump"]["pump"].circuit_wire_connection_points, @@ -3003,7 +3003,7 @@ data:extend({ }, energy_usage = "15kW", pumping_speed = 80, - vehicle_impact_sound = data.raw["pump"]["pump"].vehicle_impact_sound, + impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, circuit_wire_connection_points = data.raw["pump"]["pump"].circuit_wire_connection_points, @@ -3110,7 +3110,7 @@ data:extend({ { position = {-0.1, 0}, direction = defines.direction.west } } }, - vehicle_impact_sound = data.raw["pipe"]["pipe"].vehicle_impact_sound, + impact_category = data.raw["pipe"]["pipe"].impact_category, working_sound = data.raw["pipe"]["pipe"].working_sound, horizontal_window_bounding_box = {{-0.25, -0.25}, {0.25, 0.15625}}, vertical_window_bounding_box = {{-0.28125, -0.40625}, {0.03125, 0.125}}, @@ -3145,7 +3145,7 @@ data:extend({ { position = {-0.1, 0}, direction = defines.direction.west } } }, - vehicle_impact_sound = data.raw["pipe"]["pipe"].vehicle_impact_sound, + impact_category = data.raw["pipe"]["pipe"].impact_category, working_sound = data.raw["pipe"]["pipe"].working_sound, horizontal_window_bounding_box = {{-0.25, -0.25}, {0.25, 0.15625}}, vertical_window_bounding_box = {{-0.28125, -0.40625}, {0.03125, 0.125}}, @@ -3179,7 +3179,7 @@ data:extend({ { position = {-0.1, 0}, direction = defines.direction.west } } }, - vehicle_impact_sound = data.raw["pipe"]["pipe"].vehicle_impact_sound, + impact_category = data.raw["pipe"]["pipe"].impact_category, working_sound = data.raw["pipe"]["pipe"].working_sound, horizontal_window_bounding_box = {{-0.25, -0.25}, {0.25, 0.15625}}, vertical_window_bounding_box = {{-0.28125, -0.40625}, {0.03125, 0.125}}, @@ -3218,7 +3218,7 @@ data:extend({ } } }, - vehicle_impact_sound = data.raw["pipe-to-ground"]["pipe-to-ground"].vehicle_impact_sound, + impact_category = data.raw["pipe-to-ground"]["pipe-to-ground"].impact_category, pictures = undergroundpipepics("__boblogistics__/graphics/entity/pipe/copper-tungsten/") }, @@ -3254,7 +3254,7 @@ data:extend({ } } }, - vehicle_impact_sound = data.raw["pipe-to-ground"]["pipe-to-ground"].vehicle_impact_sound, + impact_category = data.raw["pipe-to-ground"]["pipe-to-ground"].impact_category, pictures = data.raw["pipe-to-ground"]["bob-plastic-pipe-to-ground"].pictures }, @@ -3289,7 +3289,7 @@ data:extend({ } } }, - vehicle_impact_sound = data.raw["pipe-to-ground"]["pipe-to-ground"].vehicle_impact_sound, + impact_category = data.raw["pipe-to-ground"]["pipe-to-ground"].impact_category, pictures = undergroundpipepics("__boblogistics__/graphics/entity/pipe/tungsten/") } }) diff --git a/nullius/prototypes/entity/power_pole.lua b/nullius/prototypes/entity/power_pole.lua index 965594c..f05bd33 100644 --- a/nullius/prototypes/entity/power_pole.lua +++ b/nullius/prototypes/entity/power_pole.lua @@ -23,7 +23,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["electric-pole"]["medium-electric-pole"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["electric-pole"]["medium-electric-pole"].vehicle_impact_sound, + impact_category = data.raw["electric-pole"]["medium-electric-pole"].impact_category, open_sound = data.raw["electric-pole"]["medium-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["medium-electric-pole"].close_sound, connection_points = data.raw["electric-pole"]["medium-electric-pole"].connection_points, @@ -64,7 +64,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["electric-pole"]["medium-electric-pole"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["electric-pole"]["medium-electric-pole"].vehicle_impact_sound, + impact_category = data.raw["electric-pole"]["medium-electric-pole"].impact_category, open_sound = data.raw["electric-pole"]["medium-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["medium-electric-pole"].close_sound, connection_points = data.raw["electric-pole"]["medium-electric-pole"].connection_points, @@ -92,7 +92,7 @@ data:extend({ damaged_trigger_effect = data.raw["electric-pole"]["big-electric-pole"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["electric-pole"]["big-electric-pole"].vehicle_impact_sound, + impact_category = data.raw["electric-pole"]["big-electric-pole"].impact_category, open_sound = data.raw["electric-pole"]["big-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["big-electric-pole"].close_sound, connection_points = data.raw["electric-pole"]["big-electric-pole"].connection_points, @@ -140,7 +140,7 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, damaged_trigger_effect = data.raw["electric-pole"]["big-electric-pole"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["electric-pole"]["big-electric-pole"].vehicle_impact_sound, + impact_category = data.raw["electric-pole"]["big-electric-pole"].impact_category, open_sound = data.raw["electric-pole"]["big-electric-pole"].open_sound, close_sound = data.raw["electric-pole"]["big-electric-pole"].close_sound, connection_points = data.raw["electric-pole"]["big-electric-pole"].connection_points, @@ -182,7 +182,7 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, damaged_trigger_effect = data.raw["electric-pole"]["substation"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["electric-pole"]["substation"].vehicle_impact_sound, + impact_category = data.raw["electric-pole"]["substation"].impact_category, open_sound = data.raw["electric-pole"]["substation"].open_sound, close_sound = data.raw["electric-pole"]["substation"].close_sound, working_sound = data.raw["electric-pole"]["substation"].working_sound, @@ -210,7 +210,7 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, damaged_trigger_effect = data.raw["electric-pole"]["substation"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["electric-pole"]["substation"].vehicle_impact_sound, + impact_category = data.raw["electric-pole"]["substation"].impact_category, open_sound = data.raw["electric-pole"]["substation"].open_sound, close_sound = data.raw["electric-pole"]["substation"].close_sound, working_sound = data.raw["electric-pole"]["substation"].working_sound, diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index ebbb472..a5225df 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -377,7 +377,7 @@ data:extend({ }, recharging_animation = data.raw["roboport"]["roboport"].recharging_animation, - vehicle_impact_sound = data.raw["roboport"]["roboport"].vehicle_impact_sound, + impact_category = data.raw["roboport"]["roboport"].impact_category, open_sound = data.raw["roboport"]["roboport"].open_sound, close_sound = data.raw["roboport"]["roboport"].close_sound, working_sound = data.raw["roboport"]["roboport"].working_sound, @@ -496,7 +496,7 @@ data:extend({ }, recharging_animation = data.raw["roboport"]["roboport"].recharging_animation, - vehicle_impact_sound = data.raw["roboport"]["roboport"].vehicle_impact_sound, + impact_category = data.raw["roboport"]["roboport"].impact_category, open_sound = data.raw["roboport"]["roboport"].open_sound, close_sound = data.raw["roboport"]["roboport"].close_sound, working_sound = data.raw["roboport"]["roboport"].working_sound, @@ -614,7 +614,7 @@ data:extend({ }, recharging_animation = data.raw["roboport"]["roboport"].recharging_animation, - vehicle_impact_sound = data.raw["roboport"]["roboport"].vehicle_impact_sound, + impact_category = data.raw["roboport"]["roboport"].impact_category, open_sound = data.raw["roboport"]["roboport"].open_sound, close_sound = data.raw["roboport"]["roboport"].close_sound, working_sound = data.raw["roboport"]["roboport"].working_sound, @@ -732,7 +732,7 @@ data:extend({ }, recharging_animation = data.raw["roboport"]["roboport"].recharging_animation, - vehicle_impact_sound = data.raw["roboport"]["roboport"].vehicle_impact_sound, + impact_category = data.raw["roboport"]["roboport"].impact_category, open_sound = data.raw["roboport"]["roboport"].open_sound, close_sound = data.raw["roboport"]["roboport"].close_sound, working_sound = data.raw["roboport"]["roboport"].working_sound, diff --git a/nullius/prototypes/entity/train.lua b/nullius/prototypes/entity/train.lua index 4c2f352..c336371 100644 --- a/nullius/prototypes/entity/train.lua +++ b/nullius/prototypes/entity/train.lua @@ -56,7 +56,7 @@ data:extend({ wheels = data.raw.locomotive["locomotive"].wheels, stop_trigger = data.raw.locomotive["locomotive"].stop_trigger, drive_over_tie_trigger = data.raw.locomotive["locomotive"].drive_over_tie_trigger, - vehicle_impact_sound = data.raw.locomotive["locomotive"].vehicle_impact_sound, + impact_category = data.raw.locomotive["locomotive"].impact_category, working_sound = data.raw.locomotive["locomotive"].working_sound, open_sound = data.raw.locomotive["locomotive"].open_sound, close_sound = data.raw.locomotive["locomotive"].close_sound, @@ -162,7 +162,7 @@ data:extend({ wheels = data.raw.locomotive["locomotive"].wheels, stop_trigger = data.raw.locomotive["locomotive"].stop_trigger, drive_over_tie_trigger = data.raw.locomotive["locomotive"].drive_over_tie_trigger, - vehicle_impact_sound = data.raw.locomotive["locomotive"].vehicle_impact_sound, + impact_category = data.raw.locomotive["locomotive"].impact_category, working_sound = data.raw.locomotive["locomotive"].working_sound, open_sound = data.raw.locomotive["locomotive"].open_sound, close_sound = data.raw.locomotive["locomotive"].close_sound, @@ -239,7 +239,7 @@ data:extend({ wheels = data.raw.locomotive["locomotive"].wheels, stop_trigger = data.raw.locomotive["locomotive"].stop_trigger, drive_over_tie_trigger = data.raw.locomotive["locomotive"].drive_over_tie_trigger, - vehicle_impact_sound = data.raw.locomotive["locomotive"].vehicle_impact_sound, + impact_category = data.raw.locomotive["locomotive"].impact_category, working_sound = data.raw.locomotive["locomotive"].working_sound, open_sound = data.raw.locomotive["locomotive"].open_sound, close_sound = data.raw.locomotive["locomotive"].close_sound, @@ -309,7 +309,7 @@ data:extend({ wheels = data.raw.locomotive["locomotive"].wheels, stop_trigger = data.raw.locomotive["locomotive"].stop_trigger, drive_over_tie_trigger = data.raw.locomotive["locomotive"].drive_over_tie_trigger, - vehicle_impact_sound = data.raw.locomotive["locomotive"].vehicle_impact_sound, + impact_category = data.raw.locomotive["locomotive"].impact_category, working_sound = data.raw.locomotive["locomotive"].working_sound, open_sound = data.raw.locomotive["locomotive"].open_sound, close_sound = data.raw.locomotive["locomotive"].close_sound, @@ -383,7 +383,7 @@ data:extend({ crash_trigger = data.raw["cargo-wagon"]["cargo-wagon"].crash_trigger, open_sound = data.raw["cargo-wagon"]["cargo-wagon"].open_sound, close_sound = data.raw["cargo-wagon"]["cargo-wagon"].close_sound, - vehicle_impact_sound = data.raw["cargo-wagon"]["cargo-wagon"].vehicle_impact_sound, + impact_category = data.raw["cargo-wagon"]["cargo-wagon"].impact_category, water_reflection = data.raw["cargo-wagon"]["cargo-wagon"].water_reflection, sound_minimum_speed = 1, pictures = data.raw["cargo-wagon"]["cargo-wagon"].pictures, @@ -434,7 +434,7 @@ data:extend({ crash_trigger = data.raw["cargo-wagon"]["cargo-wagon"].crash_trigger, open_sound = data.raw["cargo-wagon"]["cargo-wagon"].open_sound, close_sound = data.raw["cargo-wagon"]["cargo-wagon"].close_sound, - vehicle_impact_sound = data.raw["cargo-wagon"]["cargo-wagon"].vehicle_impact_sound, + impact_category = data.raw["cargo-wagon"]["cargo-wagon"].impact_category, water_reflection = data.raw["cargo-wagon"]["cargo-wagon"].water_reflection, sound_minimum_speed = 1, pictures = data.raw["cargo-wagon"]["cargo-wagon"].pictures, @@ -485,7 +485,7 @@ data:extend({ crash_trigger = data.raw["cargo-wagon"]["cargo-wagon"].crash_trigger, open_sound = data.raw["cargo-wagon"]["cargo-wagon"].open_sound, close_sound = data.raw["cargo-wagon"]["cargo-wagon"].close_sound, - vehicle_impact_sound = data.raw["cargo-wagon"]["cargo-wagon"].vehicle_impact_sound, + impact_category = data.raw["cargo-wagon"]["cargo-wagon"].impact_category, water_reflection = data.raw["cargo-wagon"]["cargo-wagon"].water_reflection, sound_minimum_speed = 1, pictures = data.raw["cargo-wagon"]["cargo-wagon"].pictures, @@ -533,7 +533,7 @@ data:extend({ tie_distance = 50, working_sound = data.raw["fluid-wagon"]["fluid-wagon"].working_sound, crash_trigger = data.raw["fluid-wagon"]["fluid-wagon"].crash_trigger, - vehicle_impact_sound = data.raw["fluid-wagon"]["fluid-wagon"].vehicle_impact_sound, + impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, sound_minimum_speed = 0.1, @@ -614,7 +614,7 @@ data:extend({ tie_distance = 50, working_sound = data.raw["fluid-wagon"]["fluid-wagon"].working_sound, crash_trigger = data.raw["fluid-wagon"]["fluid-wagon"].crash_trigger, - vehicle_impact_sound = data.raw["fluid-wagon"]["fluid-wagon"].vehicle_impact_sound, + impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, sound_minimum_speed = 0.1, pictures = data.raw["fluid-wagon"]["nullius-fluid-wagon-1"].pictures @@ -661,7 +661,7 @@ data:extend({ tie_distance = 50, working_sound = data.raw["fluid-wagon"]["fluid-wagon"].working_sound, crash_trigger = data.raw["fluid-wagon"]["fluid-wagon"].crash_trigger, - vehicle_impact_sound = data.raw["fluid-wagon"]["fluid-wagon"].vehicle_impact_sound, + impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, sound_minimum_speed = 0.1, pictures = data.raw["fluid-wagon"]["nullius-fluid-wagon-1"].pictures @@ -722,7 +722,7 @@ data:extend({ crash_trigger = data.raw["artillery-wagon"]["artillery-wagon"].crash_trigger, open_sound = data.raw["artillery-wagon"]["artillery-wagon"].open_sound, close_sound = data.raw["artillery-wagon"]["artillery-wagon"].close_sound, - vehicle_impact_sound = data.raw["artillery-wagon"]["artillery-wagon"].vehicle_impact_sound, + impact_category = data.raw["artillery-wagon"]["artillery-wagon"].impact_category, water_reflection = data.raw["artillery-wagon"]["artillery-wagon"].water_reflection, rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.2 }}, rotating_stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, @@ -818,7 +818,7 @@ data:extend({ crash_trigger = data.raw["artillery-wagon"]["artillery-wagon"].crash_trigger, open_sound = data.raw["artillery-wagon"]["artillery-wagon"].open_sound, close_sound = data.raw["artillery-wagon"]["artillery-wagon"].close_sound, - vehicle_impact_sound = data.raw["artillery-wagon"]["artillery-wagon"].vehicle_impact_sound, + impact_category = data.raw["artillery-wagon"]["artillery-wagon"].impact_category, water_reflection = data.raw["artillery-wagon"]["artillery-wagon"].water_reflection, rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.2 }}, rotating_stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 6405533..573a304 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -212,7 +212,7 @@ local furnace1cb = { damaged_trigger_effect = data.raw.generator["steam-turbine"].damaged_trigger_effect, open_sound = data.raw.generator["steam-turbine"].open_sound, close_sound = data.raw.generator["steam-turbine"].close_sound, - vehicle_impact_sound = data.raw.generator["steam-turbine"].vehicle_impact_sound, + impact_category = data.raw.generator["steam-turbine"].impact_category, water_reflection = data.raw.generator["steam-turbine"].water_reflection, bottleneck_ignore = true, show_recipe_icon = false, diff --git a/nullius/prototypes/entity/vehicle.lua b/nullius/prototypes/entity/vehicle.lua index 91f24a5..0cc7db7 100644 --- a/nullius/prototypes/entity/vehicle.lua +++ b/nullius/prototypes/entity/vehicle.lua @@ -51,7 +51,7 @@ data:extend({ stop_trigger = data.raw["car"]["car"].stop_trigger, sound_minimum_speed = 0.25, sound_scaling_ratio = 0.8, - vehicle_impact_sound = data.raw["car"]["car"].vehicle_impact_sound, + impact_category = data.raw["car"]["car"].impact_category, working_sound = data.raw["car"]["car"].working_sound, open_sound = data.raw["car"]["car"].open_sound, close_sound = data.raw["car"]["car"].close_sound, @@ -128,7 +128,7 @@ data:extend({ stop_trigger = data.raw["car"]["car"].stop_trigger, sound_minimum_speed = 0.25, sound_scaling_ratio = 0.8, - vehicle_impact_sound = data.raw["car"]["car"].vehicle_impact_sound, + impact_category = data.raw["car"]["car"].impact_category, working_sound = data.raw["car"]["car"].working_sound, open_sound = data.raw["car"]["car"].open_sound, close_sound = data.raw["car"]["car"].close_sound, @@ -197,7 +197,7 @@ data:extend({ stop_trigger = data.raw["car"]["car"].stop_trigger, sound_minimum_speed = 0.25, sound_scaling_ratio = 0.8, - vehicle_impact_sound = data.raw["car"]["car"].vehicle_impact_sound, + impact_category = data.raw["car"]["car"].impact_category, working_sound = data.raw["car"]["car"].working_sound, open_sound = data.raw["car"]["car"].open_sound, close_sound = data.raw["car"]["car"].close_sound, @@ -278,7 +278,7 @@ data:extend({ sound_no_fuel = data.raw["car"]["tank"].sound_no_fuel, sound_minimum_speed = 0.2, sound_scaling_ratio = 0.8, - vehicle_impact_sound = data.raw["car"]["tank"].vehicle_impact_sound, + impact_category = data.raw["car"]["tank"].impact_category, working_sound = data.raw["car"]["tank"].working_sound, stop_trigger_speed = 0.1, stop_trigger = data.raw["car"]["tank"].stop_trigger, @@ -343,7 +343,7 @@ data:extend({ sound_no_fuel = data.raw["car"]["tank"].sound_no_fuel, sound_minimum_speed = 0.2, sound_scaling_ratio = 0.8, - vehicle_impact_sound = data.raw["car"]["tank"].vehicle_impact_sound, + impact_category = data.raw["car"]["tank"].impact_category, working_sound = data.raw["car"]["tank"].working_sound, stop_trigger_speed = 0.1, stop_trigger = data.raw["car"]["tank"].stop_trigger, @@ -508,7 +508,7 @@ data:extend({ { type = "physical", decrease = 20, percent = 50 } }, damaged_trigger_effect = data.raw["rocket-silo"]["rocket-silo"].damaged_trigger_effect, - vehicle_impact_sound = data.raw["rocket-silo"]["rocket-silo"].vehicle_impact_sound, + impact_category = data.raw["rocket-silo"]["rocket-silo"].impact_category, energy_source = { type = "electric", usage_priority = "primary-input", diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index 7bf7b80..d7cce5c 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -155,7 +155,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -211,7 +211,7 @@ data:extend({ } } }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -363,7 +363,7 @@ data:extend({ } }, placeable_position_visualization = data.raw["offshore-pump"]["angels-seafloor-pump"].placeable_position_visualization, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, @@ -439,7 +439,7 @@ data:extend({ } }, placeable_position_visualization = data.raw["offshore-pump"]["angels-seafloor-pump"].placeable_position_visualization, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index 0ee076f..ab729fe 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -947,11 +947,11 @@ data:extend({ category = "large-crafting", energy_required = 6, ingredients = { - {name="nullius-small-storage-chest-1", amount=2}, - {name="nullius-relay-1", amount=1}, - {name="nullius-charger-1", amount=1}, - {name="fast-transport-belt", amount=4}, - {name="train-stop", amount=1} + {type = "item", name="nullius-small-storage-chest-1", amount=2}, + {type = "item", name="nullius-relay-1", amount=1}, + {type = "item", name="nullius-charger-1", amount=1}, + {type = "item", name="fast-transport-belt", amount=4}, + {type = "item", name="train-stop", amount=1} }, results = { {type = "item", name = "nullius-hangar-1", amount = 1} @@ -965,11 +965,11 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {name="nullius-hangar-1", amount=1}, - {name="nullius-large-storage-chest-1", amount=1}, - {name="nullius-relay-2", amount=1}, - {name="nullius-charger-2", amount=1}, - {name="fast-splitter", amount=2} + {type = "item", name="nullius-hangar-1", amount=1}, + {type = "item", name="nullius-large-storage-chest-1", amount=1}, + {type = "item", name="nullius-relay-2", amount=1}, + {type = "item", name="nullius-charger-2", amount=1}, + {type = "item", name="fast-splitter", amount=2} }, results = { {type = "item", name = "nullius-hangar-2", amount = 1} @@ -983,12 +983,12 @@ data:extend({ category = "large-crafting", energy_required = 30, ingredients = { - {name="nullius-hangar-2", amount=1}, - {name="nullius-large-buffer-chest-2", amount=1}, - {name="nullius-relay-3", amount=1}, - {name="nullius-charger-3", amount=1}, - {name="bob-express-bulk-inserter", amount=2}, - {name="gate", amount=3} + {type = "item", name="nullius-hangar-2", amount=1}, + {type = "item", name="nullius-large-buffer-chest-2", amount=1}, + {type = "item", name="nullius-relay-3", amount=1}, + {type = "item", name="nullius-charger-3", amount=1}, + {type = "item", name="bob-express-bulk-inserter", amount=2}, + {type = "item", name="gate", amount=3} }, results = { {type = "item", name = "nullius-hangar-3", amount = 1} @@ -1002,9 +1002,9 @@ data:extend({ category = "nanotechnology", energy_required = 20, ingredients = { - {name="nullius-hangar-3", amount=1}, - {name="nullius-yield-module-4", amount=1}, - {name="nullius-charger-4", amount=1} + {type = "item", name="nullius-hangar-3", amount=1}, + {type = "item", name="nullius-yield-module-4", amount=1}, + {type = "item", name="nullius-charger-4", amount=1} }, results = { {type = "item", name = "nullius-hangar-4", amount = 1} From c02db0f4a81bc952a3e27f6bc104eeb7cae3f964 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 16:57:21 +0200 Subject: [PATCH 028/236] Fixed fluid box volumes for pipes and tanks Fixed orientation of valves graphics (it was the other way around) --- nullius/prototypes/entity/plumbing.lua | 42 +++++++++++++------------- nullius/prototypes/override_final.lua | 6 ++-- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 73b15bb..9176a5a 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1263,8 +1263,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1359,8 +1359,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1454,8 +1454,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1550,8 +1550,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1640,7 +1640,7 @@ data:extend({ collision_box = {{-1.3, -1.3}, {1.3, 1.3}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_box = { - volume = 500, + volume = 30000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {-1, -1}, direction = defines.direction.north }, @@ -1708,7 +1708,7 @@ data:extend({ collision_box = {{-1.3, -1.3}, {1.3, 1.3}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_box = { - volume = 500, + volume = 60000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {-1, -1}, direction = defines.direction.north }, @@ -1773,7 +1773,7 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, two_direction_only = false, fluid_box = { - volume = 500, + volume = 10000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0.5, -0.5}, direction = defines.direction.north }, @@ -1959,7 +1959,7 @@ data:extend({ selection_box = {{-1, -1}, {1, 1}}, two_direction_only = false, fluid_box = { - volume = 500, + volume = 20000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0.5, -0.5}, direction = defines.direction.north }, @@ -2006,7 +2006,7 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, two_direction_only = false, fluid_box = { - volume = 500, + volume = 125000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0, -2}, direction = defines.direction.north }, @@ -2039,7 +2039,7 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, two_direction_only = false, fluid_box = { - volume = 500, + volume = 250000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0, -2}, direction = defines.direction.north }, @@ -2072,7 +2072,7 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, two_direction_only = false, fluid_box = { - volume = 500, + volume = 500000, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0, -2}, direction = defines.direction.north }, @@ -3102,7 +3102,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { - volume = 500, + volume = 400, pipe_connections = { { position = {0, -0.1}, direction = defines.direction.north }, { position = {0.1, 0}, direction = defines.direction.east }, @@ -3137,7 +3137,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { - volume = 500, + volume = 400, pipe_connections = { { position = {0, -0.1}, direction = defines.direction.north }, { position = {0.1, 0}, direction = defines.direction.east }, @@ -3171,7 +3171,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { - volume = 500, + volume = 400, pipe_connections = { { position = {0, -0.1}, direction = defines.direction.north }, { position = {0.1, 0}, direction = defines.direction.east }, @@ -3206,7 +3206,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe-to-ground"]["pipe-to-ground"].damaged_trigger_effect, fluid_box = { - volume = 500, + volume = 400, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0, -0.1}, direction = defines.direction.north }, @@ -3242,7 +3242,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe-to-ground"]["pipe-to-ground"].damaged_trigger_effect, fluid_box = { - volume = 500, + volume = 400, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0, -0.1}, direction = defines.direction.north }, @@ -3277,7 +3277,7 @@ data:extend({ selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["pipe-to-ground"]["pipe-to-ground"].damaged_trigger_effect, fluid_box = { - volume = 500, + volume = 400, pipe_covers = pipecoverspictures(), pipe_connections = { { position = {0, -0.1}, direction = defines.direction.north }, diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index f646a72..5ab71fd 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -33,7 +33,7 @@ data.raw.item["storage-tank"].icons = {{ icon_size = 64, }} data.raw["storage-tank"]["storage-tank"].icons = data.raw.item["storage-tank"].icons -data.raw["storage-tank"]["storage-tank"].fluid_box.volume = 500 +data.raw["storage-tank"]["storage-tank"].fluid_box.volume = 15000 data.raw["storage-tank"]["storage-tank"].pictures = util.table.deepcopy(data.raw["storage-tank"]["nullius-medium-tank-3"].pictures) data.raw["storage-tank"]["storage-tank"].pictures.picture.sheets[1].tint = {0.9, 0.8, 0.6} @@ -235,7 +235,7 @@ data.raw["logistic-container"]["active-provider-chest"].next_upgrade = nil data.raw["pipe"]["pipe"].next_upgrade = "nullius-pipe-2" data.raw["pipe-to-ground"]["pipe-to-ground"].next_upgrade = "nullius-underground-pipe-2" -data.raw["pipe"]["pipe"].fluid_box.volume = 500 +data.raw["pipe"]["pipe"].fluid_box.volume = 400 data.raw["pipe-to-ground"]["pipe-to-ground"].fluid_box.max_underground_distance = 11 data.raw.item["pipe"].stack_size = 200 data.raw.item["pipe-to-ground"].stack_size = 100 @@ -244,7 +244,7 @@ data.raw.item["pipe-to-ground"].stack_size = 100 data.raw.item["pump"].stack_size = 50 data.raw["pump"]["pump"].fast_replaceable_group = "pump" data.raw["pump"]["pump"].next_upgrade = nil -data.raw["pump"]["pump"].fluid_box.volume = 500 +data.raw["pump"]["pump"].fluid_box.volume = 1000 data.raw["pump"]["pump"].pumping_speed = 200 data.raw.pump["nullius-pump-2"].collision_mask = data.raw.pump.pump.collision_mask data.raw.pump["nullius-pump-2"].collision_box = data.raw.pump.pump.collision_box From eec1999c53b492e33281f73e7f33966d8f1724e7 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 17:41:28 +0200 Subject: [PATCH 029/236] Fixed top up valve (was using the converter valve graphics) Fixed crash on startup (missing angels rename) --- nullius/prototypes/entity/plumbing.lua | 10 +++++----- nullius/prototypes/item/plumbing.lua | 2 +- nullius/scripts/startup.lua | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 9176a5a..a799e8e 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1438,7 +1438,7 @@ data:extend({ { type = "valve", name = "nullius-top-up-valve", - icon = "__angelspetrochemgraphics__/graphics/icons/valve-converter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-underflow.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-top-up-valve"}, @@ -1481,7 +1481,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", frames = 1, width = 64, @@ -1490,7 +1490,7 @@ data:extend({ } }, east = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 64, frame_count = 1, @@ -1509,7 +1509,7 @@ data:extend({ shift = {0, -0.5} }, { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 128, frame_count = 1, @@ -1520,7 +1520,7 @@ data:extend({ } }, west = { - filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-converter.png", + filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 192, frame_count = 1, diff --git a/nullius/prototypes/item/plumbing.lua b/nullius/prototypes/item/plumbing.lua index 9be0400..f30918f 100644 --- a/nullius/prototypes/item/plumbing.lua +++ b/nullius/prototypes/item/plumbing.lua @@ -891,7 +891,7 @@ data:extend({ { type = "item", name = "nullius-top-up-valve", - icon = "__angelspetrochemgraphics__/graphics/icons/valve-converter.png", + icon = "__angelspetrochemgraphics__/graphics/icons/valve-underflow.png", icon_size = 32, subgroup = "valves", order = "nullius-dd", diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index 3bd953c..b2aa4cc 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -208,7 +208,7 @@ end script.on_event(defines.events.on_player_created, function(event) local player = game.players[event.player_index] - player.remove_item{name = "burner-ore-crusher", count = 1} + player.remove_item{name = "angels-burner-ore-crusher", count = 1} local intro = {"nullius-intro"} if (not storage.init_landing) then From a11deffa1c97c503938eaeee25d55da0665e98be Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 21:35:54 +0200 Subject: [PATCH 030/236] Fixed compatibility for Advanced Fluid Handling (underground-pipe-pack) --- nullius/prototypes/mods.lua | 106 ++++++++++++++----- nullius/prototypes/override_mod.lua | 154 +++++++++++++++++----------- 2 files changed, 174 insertions(+), 86 deletions(-) diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 3b8003c..d08e3b5 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -913,20 +913,24 @@ data:extend({ { type = "recipe", name = "nullius-surface-two-way-junction-1", + --localised_name = {"entity-name.one-to-one-forward-t2-pipe"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 3, ingredients = { - {"nullius-underground-pipe-2", 2}, - {"nullius-steel-plate", 1}, - {"nullius-rubber", 1} + {type = "item", name = "nullius-underground-pipe-2", amount = 2}, + {type = "item", name = "nullius-steel-plate", amount = 1}, + {type = "item", name = "nullius-rubber", amount = 1} }, - result = "one-to-one-forward-t2-pipe" + results = { + {type = "item", name = "one-to-one-forward-t2-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-surface-three-way-junction-1", + --localised_name = {"entity-name.one-to-two-perpendicular-t2-pipe"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -935,11 +939,14 @@ data:extend({ {"one-to-one-forward-t2-pipe", 1}, {"nullius-underground-pipe-2", 1} }, - result = "one-to-two-perpendicular-t2-pipe" + results = { + {type = "item", name = "one-to-two-perpendicular-t2-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-surface-four-way-junction-1", + --localised_name = {"entity-name.one-to-three-forward-t2-pipe"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -948,11 +955,14 @@ data:extend({ {"one-to-two-perpendicular-t2-pipe", 1}, {"nullius-underground-pipe-2", 1} }, - result = "one-to-three-forward-t2-pipe" + results = { + {type = "item", name = "one-to-three-forward-t2-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-underground-straight-junction-1", + --localised_name = {"entity-name.underground-i-t2-pipe"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -962,11 +972,14 @@ data:extend({ {"nullius-underground-pipe-2", 1}, {"nullius-glass", 1} }, - result = "underground-i-t2-pipe" + results = { + {type = "item", name = "underground-i-t2-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-underground-elbow-junction-1", + --localised_name = {"entity-name.underground-L-t2-pipe"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -975,7 +988,9 @@ data:extend({ {"underground-i-t2-pipe", 1}, {"nullius-pipe-2", 2} }, - result = "underground-L-t2-pipe" + results = { + {type = "item", name = "underground-L-t2-pipe", amount = 1} + } }, { type = "recipe", @@ -988,11 +1003,14 @@ data:extend({ {"underground-L-t2-pipe", 1}, {"nullius-underground-pipe-2", 1} }, - result = "underground-t-t2-pipe" + results = { + {type = "item", name = "underground-t-t2-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-adjustable-relief-valve", + localised_name = {"item-name.nullius-adjustable-relief-valve"}, enabled = false, always_show_made_in = true, category = "tiny-crafting", @@ -1001,7 +1019,9 @@ data:extend({ {"nullius-relief-valve", 2}, {"nullius-red-wire", 1} }, - result = "80-overflow-valve" + results = { + {type = "item", name = "80-overflow-valve", amount = 1} + } }, { @@ -1016,7 +1036,9 @@ data:extend({ {"nullius-bearing", 1}, {"nullius-underground-pipe-3", 1} }, - result = "one-to-one-forward-t3-pipe" + results = { + {type = "item", name = "one-to-one-forward-t3-pipe", amount = 1} + } }, { type = "recipe", @@ -1030,7 +1052,9 @@ data:extend({ {"nullius-bearing", 1}, {"nullius-underground-pipe-3", 2} }, - result = "one-to-two-perpendicular-t3-pipe" + results = { + {type = "item", name = "one-to-two-perpendicular-t3-pipe", amount = 1} + } }, { type = "recipe", @@ -1044,7 +1068,9 @@ data:extend({ {"nullius-bearing", 1}, {"nullius-underground-pipe-3", 3} }, - result = "one-to-three-forward-t3-pipe" + results = { + {type = "item", name = "one-to-three-forward-t3-pipe", amount = 1} + } }, { type = "recipe", @@ -1057,7 +1083,9 @@ data:extend({ {"underground-i-t2-pipe", 1}, {"nullius-underground-pipe-3", 2} }, - result = "underground-i-t3-pipe" + results = { + {type = "item", name = "underground-i-t3-pipe", amount = 1} + } }, { type = "recipe", @@ -1070,7 +1098,9 @@ data:extend({ {"underground-L-t2-pipe", 1}, {"nullius-underground-pipe-3", 3} }, - result = "underground-L-t3-pipe" + results = { + {type = "item", name = "underground-L-t3-pipe", amount = 1} + } }, { type = "recipe", @@ -1083,11 +1113,14 @@ data:extend({ {"underground-t-t2-pipe", 1}, {"nullius-underground-pipe-3", 4} }, - result = "underground-t-t3-pipe" + results = { + {type = "item", name = "underground-t-t3-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-adjustable-top-up-valve", + localised_name = {"item-name.nullius-adjustable-top-up-valve"}, enabled = false, always_show_made_in = true, category = "tiny-crafting", @@ -1096,7 +1129,9 @@ data:extend({ {"nullius-top-up-valve", 2}, {"nullius-red-wire", 1} }, - result = "80-top-up-valve" + results = { + {type = "item", name = "80-top-up-valve", amount = 1} + } }, { @@ -1110,7 +1145,9 @@ data:extend({ {"one-to-one-forward-t3-pipe", 1}, {"nullius-underground-pipe-4", 1} }, - result = "one-to-one-forward-pipe" + results = { + {type = "item", name = "one-to-one-forward-pipe", amount = 1} + } }, { type = "recipe", @@ -1123,7 +1160,9 @@ data:extend({ {"one-to-two-perpendicular-t3-pipe", 1}, {"nullius-underground-pipe-4", 2} }, - result = "one-to-two-perpendicular-pipe" + results = { + {type = "item", name = "one-to-two-perpendicular-pipe", amount = 1} + } }, { type = "recipe", @@ -1136,7 +1175,9 @@ data:extend({ {"one-to-three-forward-t3-pipe", 1}, {"nullius-underground-pipe-4", 3} }, - result = "one-to-three-forward-pipe" + results = { + {type = "item", name = "one-to-three-forward-pipe", amount = 1} + } }, { type = "recipe", @@ -1149,7 +1190,9 @@ data:extend({ {"one-to-two-perpendicular-pipe", 1}, {"one-to-one-forward-pipe", 1} }, - result = "one-to-four-pipe" + results = { + {type = "item", name = "one-to-four-pipe", amount = 1} + } }, { type = "recipe", @@ -1163,7 +1206,9 @@ data:extend({ {"nullius-hard-glass", 1}, {"nullius-underground-pipe-4", 2} }, - result = "underground-i-pipe" + results = { + {type = "item", name = "underground-i-pipe", amount = 1} + } }, { type = "recipe", @@ -1177,7 +1222,9 @@ data:extend({ {"nullius-hard-glass", 1}, {"nullius-underground-pipe-4", 2} }, - result = "underground-L-pipe" + results = { + {type = "item", name = "underground-L-pipe", amount = 1} + } }, { type = "recipe", @@ -1191,7 +1238,9 @@ data:extend({ {"nullius-hard-glass", 1}, {"nullius-underground-pipe-4", 3} }, - result = "underground-t-pipe" + results = { + {type = "item", name = "underground-t-pipe", amount = 1} + } }, { type = "recipe", @@ -1204,11 +1253,14 @@ data:extend({ {"underground-L-pipe", 2}, {"nullius-underground-pipe-4", 1} }, - result = "underground-cross-pipe" + results = { + {type = "item", name = "underground-cross-pipe", amount = 1} + } }, { type = "recipe", name = "nullius-underground-pump", + localised_name = {"item-name.nullius-underground-pump"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -1217,7 +1269,9 @@ data:extend({ {"nullius-small-pump-2", 3}, {"underground-i-pipe", 2} }, - result = "underground-mini-pump" + results = { + {type = "item", name = "underground-mini-pump", amount = 1} + } } }) end diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index ce2c16d..df89db6 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -605,145 +605,184 @@ if mods["underground-pipe-pack"] then data.raw.item["one-to-one-forward-t2-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-one-forward-t2-pipe"].order = "nullius-bb" data.raw.item["one-to-one-forward-t2-pipe"].localised_name = - {"", {"item-name.nullius-surface-two-way-junction"}, " ", 1} + {"", {"item-name.nullius-surface-two-way-junction"}, " ", tostring(1)} data.raw.item["one-to-one-forward-t2-pipe"].localised_description = {"", {"item-description.nullius-surface-two-way-junction"}, {"item-description.nullius-pressure-2"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-two-way-junction-1"].localised_name = data.raw.item["one-to-one-forward-t2-pipe"].localised_name + data.raw.item["one-to-two-perpendicular-t2-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-two-perpendicular-t2-pipe"].order = "nullius-bc" data.raw.item["one-to-two-perpendicular-t2-pipe"].localised_name = - {"", {"item-name.nullius-surface-three-way-junction"}, " ", 1} + {"", {"item-name.nullius-surface-three-way-junction"}, " ", tostring(1)} data.raw.item["one-to-two-perpendicular-t2-pipe"].localised_description = {"", {"item-description.nullius-surface-three-way-junction"}, {"item-description.nullius-pressure-2"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-three-way-junction-1"].localised_name = data.raw.item["one-to-two-perpendicular-t2-pipe"].localised_name + data.raw.item["one-to-three-forward-t2-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-three-forward-t2-pipe"].order = "nullius-bd" data.raw.item["one-to-three-forward-t2-pipe"].localised_name = - {"", {"item-name.nullius-surface-four-way-junction"}, " ", 1} + {"", {"item-name.nullius-surface-four-way-junction"}, " ", tostring(1)} data.raw.item["one-to-three-forward-t2-pipe"].localised_description = {"", {"item-description.nullius-surface-four-way-junction"}, {"item-description.nullius-pressure-2"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-four-way-junction-1"].localised_name = data.raw.item["one-to-three-forward-t2-pipe"].localised_name + data.raw.item["underground-i-t2-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-i-t2-pipe"].order = "nullius-bb" data.raw.item["underground-i-t2-pipe"].localised_name = - {"", {"item-name.nullius-underground-straight-junction"}, " ", 1} + {"", {"item-name.nullius-underground-straight-junction"}, " ", tostring(1)} data.raw.item["underground-i-t2-pipe"].localised_description = {"", {"item-description.nullius-underground-straight-junction"}, {"item-description.nullius-pressure-2"}} +data.raw.recipe["nullius-underground-straight-junction-1"].localised_name = data.raw.item["underground-i-t2-pipe"].localised_name + data.raw.item["underground-L-t2-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-L-t2-pipe"].order = "nullius-bc" data.raw.item["underground-L-t2-pipe"].localised_name = - {"", {"item-name.nullius-underground-elbow-junction"}, " ", 1} + {"", {"item-name.nullius-underground-elbow-junction"}, " ", tostring(1)} data.raw.item["underground-L-t2-pipe"].localised_description = {"", {"item-description.nullius-underground-elbow-junction"}, {"item-description.nullius-pressure-2"}} +data.raw.recipe["nullius-underground-elbow-junction-1"].localised_name = data.raw.item["underground-L-t2-pipe"].localised_name + data.raw.item["underground-t-t2-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-t-t2-pipe"].order = "nullius-bd" data.raw.item["underground-t-t2-pipe"].localised_name = - {"", {"item-name.nullius-underground-three-way-junction"}, " ", 1} + {"", {"item-name.nullius-underground-three-way-junction"}, " ", tostring(1)} data.raw.item["underground-t-t2-pipe"].localised_description = {"", {"item-description.nullius-underground-three-way-junction"}, {"item-description.nullius-pressure-2"}} +data.raw.recipe["nullius-underground-three-way-junction-1"].localised_name = data.raw.item["underground-t-t2-pipe"].localised_name data.raw.item["one-to-one-forward-t3-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-one-forward-t3-pipe"].order = "nullius-cb" data.raw.item["one-to-one-forward-t3-pipe"].localised_name = - {"", {"item-name.nullius-surface-two-way-junction"}, " ", 2} + {"", {"item-name.nullius-surface-two-way-junction"}, " ", tostring(2)} data.raw.item["one-to-one-forward-t3-pipe"].localised_description = {"", {"item-description.nullius-surface-two-way-junction"}, {"item-description.nullius-pressure-3"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-two-way-junction-2"].localised_name = data.raw.item["one-to-one-forward-t3-pipe"].localised_name + data.raw.item["one-to-two-perpendicular-t3-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-two-perpendicular-t3-pipe"].order = "nullius-cc" data.raw.item["one-to-two-perpendicular-t3-pipe"].localised_name = - {"", {"item-name.nullius-surface-three-way-junction"}, " ", 2} + {"", {"item-name.nullius-surface-three-way-junction"}, " ", tostring(2)} data.raw.item["one-to-two-perpendicular-t3-pipe"].localised_description = {"", {"item-description.nullius-surface-three-way-junction"}, {"item-description.nullius-pressure-3"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-three-way-junction-2"].localised_name = data.raw.item["one-to-two-perpendicular-t3-pipe"].localised_name + data.raw.item["one-to-three-forward-t3-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-three-forward-t3-pipe"].order = "nullius-cd" data.raw.item["one-to-three-forward-t3-pipe"].localised_name = - {"", {"item-name.nullius-surface-four-way-junction"}, " ", 2} + {"", {"item-name.nullius-surface-four-way-junction"}, " ", tostring(2)} data.raw.item["one-to-three-forward-t3-pipe"].localised_description = {"", {"item-description.nullius-surface-four-way-junction"}, {"item-description.nullius-pressure-3"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-four-way-junction-2"].localised_name = data.raw.item["one-to-three-forward-t3-pipe"].localised_name + data.raw.item["underground-i-t3-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-i-t3-pipe"].order = "nullius-cb" data.raw.item["underground-i-t3-pipe"].localised_name = - {"", {"item-name.nullius-underground-straight-junction"}, " ", 2} + {"", {"item-name.nullius-underground-straight-junction"}, " ", tostring(2)} data.raw.item["underground-i-t3-pipe"].localised_description = {"", {"item-description.nullius-underground-straight-junction"}, {"item-description.nullius-pressure-3"}} +data.raw.recipe["nullius-underground-straight-junction-2"].localised_name = data.raw.item["underground-i-t3-pipe"].localised_name + data.raw.item["underground-L-t3-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-L-t3-pipe"].order = "nullius-cc" data.raw.item["underground-L-t3-pipe"].localised_name = - {"", {"item-name.nullius-underground-elbow-junction"}, " ", 2} + {"", {"item-name.nullius-underground-elbow-junction"}, " ", tostring(2)} data.raw.item["underground-L-t3-pipe"].localised_description = {"", {"item-description.nullius-underground-elbow-junction"}, {"item-description.nullius-pressure-3"}} +data.raw.recipe["nullius-underground-elbow-junction-2"].localised_name = data.raw.item["underground-L-t3-pipe"].localised_name + data.raw.item["underground-t-t3-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-t-t3-pipe"].order = "nullius-cd" data.raw.item["underground-t-t3-pipe"].localised_name = - {"", {"item-name.nullius-underground-three-way-junction"}, " ", 2} + {"", {"item-name.nullius-underground-three-way-junction"}, " ", tostring(2)} data.raw.item["underground-t-t3-pipe"].localised_description = {"", {"item-description.nullius-underground-three-way-junction"}, {"item-description.nullius-pressure-3"}} +data.raw.recipe["nullius-underground-three-way-junction-2"].localised_name = data.raw.item["underground-t-t3-pipe"].localised_name + data.raw.item["one-to-one-forward-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-one-forward-pipe"].order = "nullius-db" data.raw.item["one-to-one-forward-pipe"].localised_name = - {"", {"item-name.nullius-surface-two-way-junction"}, " ", 3} + {"", {"item-name.nullius-surface-two-way-junction"}, " ", tostring(3)} data.raw.item["one-to-one-forward-pipe"].localised_description = {"", {"item-description.nullius-surface-two-way-junction"}, {"item-description.nullius-pressure-4"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-two-way-junction-3"].localised_name = data.raw.item["one-to-one-forward-pipe"].localised_name + data.raw.item["one-to-two-perpendicular-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-two-perpendicular-pipe"].order = "nullius-dc" data.raw.item["one-to-two-perpendicular-pipe"].localised_name = - {"", {"item-name.nullius-surface-three-way-junction"}, " ", 3} + {"", {"item-name.nullius-surface-three-way-junction"}, " ", tostring(3)} data.raw.item["one-to-two-perpendicular-pipe"].localised_description = {"", {"item-description.nullius-surface-three-way-junction"}, {"item-description.nullius-pressure-4"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-three-way-junction-3"].localised_name = data.raw.item["one-to-two-perpendicular-pipe"].localised_name + data.raw.item["one-to-three-forward-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-three-forward-pipe"].order = "nullius-dd" data.raw.item["one-to-three-forward-pipe"].localised_name = - {"", {"item-name.nullius-surface-four-way-junction"}, " ", 3} + {"", {"item-name.nullius-surface-four-way-junction"}, " ", tostring(3)} data.raw.item["one-to-three-forward-pipe"].localised_description = {"", {"item-description.nullius-surface-four-way-junction"}, {"item-description.nullius-pressure-4"}, {"item-description.nullius-underground-ctrl-r"}} +data.raw.recipe["nullius-surface-four-way-junction-3"].localised_name = data.raw.item["one-to-three-forward-pipe"].localised_name + data.raw.item["one-to-four-pipe"].subgroup = "nullius-surface-junction" data.raw.item["one-to-four-pipe"].order = "nullius-de" data.raw.item["one-to-four-pipe"].localised_name = - {"", {"item-name.nullius-surface-five-way-junction"}, " ", 3} + {"", {"item-name.nullius-surface-five-way-junction"}, " ", tostring(3)} data.raw.item["one-to-four-pipe"].localised_description = {"", {"item-description.nullius-surface-five-way-junction"}, {"item-description.nullius-pressure-4"}} +data.raw.recipe["nullius-surface-five-way-junction-3"].localised_name = data.raw.item["one-to-four-pipe"].localised_name + data.raw.item["underground-i-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-i-pipe"].order = "nullius-db" data.raw.item["underground-i-pipe"].localised_name = - {"", {"item-name.nullius-underground-straight-junction"}, " ", 3} + {"", {"item-name.nullius-underground-straight-junction"}, " ", tostring(3)} data.raw.item["underground-i-pipe"].localised_description = {"", {"item-description.nullius-underground-straight-junction"}, {"item-description.nullius-pressure-4"}} +data.raw.recipe["nullius-underground-straight-junction-3"].localised_name = data.raw.item["underground-i-pipe"].localised_name + data.raw.item["underground-L-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-L-pipe"].order = "nullius-dc" data.raw.item["underground-L-pipe"].localised_name = - {"", {"item-name.nullius-underground-elbow-junction"}, " ", 3} + {"", {"item-name.nullius-underground-elbow-junction"}, " ", tostring(3)} data.raw.item["underground-L-pipe"].localised_description = {"", {"item-description.nullius-underground-elbow-junction"}, {"item-description.nullius-pressure-4"}} +data.raw.recipe["nullius-underground-elbow-junction-3"].localised_name = data.raw.item["underground-L-pipe"].localised_name + data.raw.item["underground-t-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-t-pipe"].order = "nullius-dd" data.raw.item["underground-t-pipe"].localised_name = - {"", {"item-name.nullius-underground-three-way-junction"}, " ", 3} + {"", {"item-name.nullius-underground-three-way-junction"}, " ", tostring(3)} data.raw.item["underground-t-pipe"].localised_description = {"", {"item-description.nullius-underground-three-way-junction"}, {"item-description.nullius-pressure-4"}} +data.raw.recipe["nullius-underground-three-way-junction-3"].localised_name = data.raw.item["underground-t-pipe"].localised_name + data.raw.item["underground-cross-pipe"].subgroup = "nullius-underground-junction" data.raw.item["underground-cross-pipe"].order = "nullius-de" data.raw.item["underground-cross-pipe"].localised_name = - {"", {"item-name.nullius-underground-four-way-junction"}, " ", 3} + {"", {"item-name.nullius-underground-four-way-junction"}, " ", tostring(3)} data.raw.item["underground-cross-pipe"].localised_description = {"", {"item-description.nullius-underground-four-way-junction"}, {"item-description.nullius-pressure-4"}} +data.raw.recipe["nullius-underground-four-way-junction-3"].localised_name = data.raw.item["underground-cross-pipe"].localised_name + data.raw.item["80-overflow-valve"].subgroup = "valves" data.raw.item["80-overflow-valve"].order = "nullius-dmb" @@ -766,7 +805,7 @@ data.raw.item["underground-mini-pump"].localised_description = {"item-description.nullius-underground-pump"} data.raw.technology["advanced-underground-piping"].localised_name = {"", - {"technology-name.advanced-underground-piping"}, " ", 1} + {"technology-name.advanced-underground-piping"}, " ", tostring(1)} data.raw.technology["advanced-underground-piping"].icon = "__underground-pipe-pack__/graphics/technology/advanced-underground-piping-t2.png" data.raw.technology["advanced-underground-piping"].prerequisites = {"nullius-checkpoint-freshwater"} @@ -815,7 +854,7 @@ data.raw.technology["advanced-underground-piping"].effects = { } data.raw.technology["advanced-underground-piping-t2"].localised_name = {"", - {"technology-name.advanced-underground-piping"}, " ", 2} + {"technology-name.advanced-underground-piping"}, " ", tostring(2)} data.raw.technology["advanced-underground-piping-t2"].localised_description = {"technology-description.advanced-underground-piping"} data.raw.technology["advanced-underground-piping-t2"].icon = @@ -858,7 +897,7 @@ data.raw.technology["advanced-underground-piping-t2"].effects = { } data.raw.technology["advanced-underground-piping-t3"].localised_name = {"", - {"technology-name.advanced-underground-piping"}, " ", 3} + {"technology-name.advanced-underground-piping"}, " ", tostring(3)} data.raw.technology["advanced-underground-piping-t3"].localised_description = {"technology-description.advanced-underground-piping"} data.raw.technology["advanced-underground-piping-t3"].icon = @@ -964,13 +1003,14 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do if (lvl < 4) then basename = string.sub(junction.name, 1, -8).."pipe" end - junction.localised_name = {"", {"entity-name."..basename}, " ", (lvl - 1)} + junction.localised_name = {"", {"entity-name."..basename}, " ", tostring(lvl - 1)} junction.localised_description = data.raw.item[junction.minable.result].localised_description local archetype = data.raw["pipe-to-ground"]["nullius-underground-pipe-"..lvl] junction.fluid_box.volume = archetype.fluid_box.volume junction.minable.mining_time = (lvl * 0.5) + junction.hidden_in_factoriopedia = true -- TODO: confirm that those are just clutter for factoriopedia for _,connection in pairs(junction.fluid_box.pipe_connections) do if ((connection.max_underground_distance ~= nil) and @@ -990,47 +1030,41 @@ local northpipe = { } for i=1,9 do - local topup = data.raw["storage-tank"][i.."0-top-up-valve"] - local relief = data.raw["storage-tank"][i.."0-overflow-valve"] - topup.localised_name = {"", (i*10), "% ", {"entity-name.nullius-top-up-valve"}} - relief.localised_name = {"", (i*10), "% ", {"entity-name.nullius-relief-valve"}} + local topup = data.raw["valve"][i.."0-top-up-valve"] + local relief = data.raw["valve"][i.."0-overflow-valve"] + topup.localised_name = {"", tostring(i*10), "% ", {"entity-name.nullius-top-up-valve"}} + relief.localised_name = {"", tostring(i*10), "% ", {"entity-name.nullius-relief-valve"}} topup.localised_description = {"item-description.nullius-adjustable-top-up-valve"} relief.localised_description = {"item-description.nullius-adjustable-relief-valve"} - local theight = (i * 0.5) - topup.fluid_box.height = theight - topup.fluid_box.base_level = 0 - topup.fluid_box.base_area = 5 / theight - local rheight = 6 - theight - relief.fluid_box.height = rheight - relief.fluid_box.base_level = theight - relief.fluid_box.base_area = 5 / rheight + topup.hidden_in_factoriopedia = true + relief.hidden_in_factoriopedia = true topup.minable.mining_time = 0.8 relief.minable.mining_time = 0.8 - topup.pictures.picture.north.layers = { - northpipe, - topup.pictures.picture.north.layers[1], - topup.pictures.picture.north.layers[2], - topup.pictures.picture.north.layers[3] - } - topup.pictures.picture.south.layers = { - northpipe, - topup.pictures.picture.south.layers[1], - topup.pictures.picture.south.layers[2], - topup.pictures.picture.south.layers[3] - } - relief.pictures.picture.north.layers = { - northpipe, - relief.pictures.picture.north.layers[1], - relief.pictures.picture.north.layers[2], - relief.pictures.picture.north.layers[3] - } - relief.pictures.picture.south.layers = { - northpipe, - relief.pictures.picture.south.layers[1], - relief.pictures.picture.south.layers[2], - relief.pictures.picture.south.layers[3] - } + -- topup.pictures.picture.north.layers = { -- TODO: handle this ? + -- northpipe, + -- topup.pictures.picture.north.layers[1], + -- topup.pictures.picture.north.layers[2], + -- topup.pictures.picture.north.layers[3] + -- } + -- topup.pictures.picture.south.layers = { + -- northpipe, + -- topup.pictures.picture.south.layers[1], + -- topup.pictures.picture.south.layers[2], + -- topup.pictures.picture.south.layers[3] + -- } + -- relief.pictures.picture.north.layers = { + -- northpipe, + -- relief.pictures.picture.north.layers[1], + -- relief.pictures.picture.north.layers[2], + -- relief.pictures.picture.north.layers[3] + -- } + -- relief.pictures.picture.south.layers = { + -- northpipe, + -- relief.pictures.picture.south.layers[1], + -- relief.pictures.picture.south.layers[2], + -- relief.pictures.picture.south.layers[3] + -- } end end From 99a5f39f13d3e10170d34bc713e791e862442c1b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 13 Aug 2025 01:37:22 +0200 Subject: [PATCH 031/236] Fixed broken checkpoints --- nullius/scripts/checkpoint.lua | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index 438197d..06a903e 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -51,7 +51,7 @@ local checkpoint_data = { ["sensor"] = {{ CHK_ITEM, STT_CONSUME, 100, {{"nullius-sensor-1"}} }}, ["freight-logistics"] = {{ CHK_BUILD, STT_NET, 1, {{"nullius-locomotive-1"}} }, { CHK_BUILD, STT_NET, 2, {{"train-stop"}} }, - { CHK_BUILD, STT_NET, 150, {{"straight-rail"},{"curved-rail",4}} }}, + { CHK_BUILD, STT_NET, 150, {{"straight-rail"}}}},--,{"curved-rail-a",4}} }}, ["limestone"] = {{ CHK_ITEM, STT_PRODUCE, 500, {{"nullius-limestone"}} }}, ["optimization"] = {{ CHK_ITEM, STT_PRODUCE, 5, {{"nullius-haste-module-1"}} }, { CHK_ITEM, STT_PRODUCE, 5, {{"nullius-efficiency-module-1"}} }}, @@ -61,7 +61,7 @@ local checkpoint_data = { { CHK_ITEM, STT_PRODUCE, 6, {{"nullius-robot-frame-1"}} }}, ["logistic-robot"] = {{ CHK_ITEM, STT_PRODUCE, 8, {{"nullius-logistic-bot-1"}} }, { CHK_BUILD, STT_NET, 2, {{"nullius-small-supply-chest-1"}} }}, - ["logistics"] = {{ CHK_BUILD, STT_NET, 10, {{"turbo-inserter"}} }, + ["logistics"] = {{ CHK_BUILD, STT_NET, 10, {{"bob-turbo-inserter"}} }, { CHK_BUILD, STT_NET, 10, {{"fast-underground-belt"}} }}, ["concrete"] = {{ CHK_ITEM, STT_PRODUCE, 1000, {{"concrete"}} }}, ["heat-pipe"] = {{ CHK_ITEM, STT_PRODUCE, 50, {{"nullius-heat-pipe-1"}} }}, @@ -103,7 +103,7 @@ local checkpoint_data = { ["filter"] = {{ CHK_ITEM, STT_PRODUCE, 100, {{"nullius-filter-2"}, {"nullius-box-filter-2", 5}} }}, ["pumping"] = {{ CHK_BUILD, STT_NET, 40, {{"nullius-pump-2"}} }}, - ["logistics-3"] = {{ CHK_BUILD, STT_NET, 10, {{"ultimate-splitter"}} }}, + ["logistics-3"] = {{ CHK_BUILD, STT_NET, 10, {{"bob-ultimate-splitter"}} }}, ["automation"] = {{ CHK_BUILD, STT_NET, 20, {{"nullius-large-assembler-2"}} }}, ["mining"] = {{ CHK_ITEM, STT_CONSUME, 1200000, {{"iron-ore"},{"nullius-box-iron-ore",5}} }, { CHK_ITEM, STT_CONSUME, 900000, {{"nullius-sandstone"},{"nullius-box-sandstone",5}} }, @@ -271,22 +271,22 @@ local function count_req_list(list, stats, calc) local count = 0 for _,item in pairs(list) do local itemname = item[1] - local value = 0 + local value = 0 if (calc == STT_PRODUCE) then value = stats.get_input_count(itemname) elseif (calc == STT_CONSUME) then value = stats.get_output_count(itemname) elseif (calc == STT_NET) then value = stats.get_input_count(itemname) - stats.get_output_count(itemname) - if (item[3] ~= nil) then - if (value < item[3]) then - item[3] = value - else - value = value - item[3] - end - elseif (value < 0) then - item[3] = value - end + if (item[3] ~= nil) then + if (value < item[3]) then + item[3] = value + else + value = value - item[3] + end + elseif (value < 0) then + item[3] = value + end end if (item[2] ~= nil) then value = (value * item[2]) end count = count + value From b13610c9d26e7bfb4e24ffc5a65ba84acd832281 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 13 Aug 2025 20:32:27 +0200 Subject: [PATCH 032/236] Fixed broken turbines --- nullius/prototypes/entity/turbine.lua | 40 +++++++++++++++------------ nullius/prototypes/item/void.lua | 2 +- nullius/scripts/mirror.lua | 2 +- nullius/scripts/turbine.lua | 5 ++-- 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 573a304..a330d4a 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -38,12 +38,13 @@ local turbine_graphics = { { filename = "__base__/graphics/entity/steam-turbine/steam-turbine-V.png", width = 217, - height = 347, + height = 374, frame_count = 1, line_length = 1, - shift = util.by_pixel(4.75, 6.75), + shift = util.by_pixel(4.75, 0.0), scale = 0.5 - }, { + }, + { width = 217, height = 347, frame_count = 1, @@ -85,11 +86,13 @@ end local function set_furnace_idle(proto, overlay, tint) local vertical = turbine_frame(true, overlay, tint) local horizontal = turbine_frame(false, overlay, tint) - proto.idle_animation = { - north = vertical, - east = horizontal, - south = vertical, - west = horizontal + proto.graphics_set = { + idle_animation = { + north = vertical, + east = horizontal, + south = vertical, + west = horizontal + } } end @@ -240,9 +243,11 @@ local furnace1cb = { { filter = "nullius-energy", production_type = "output", - pipe_connections = {{ flow_direction = "output", position = {1, -1.1}, direction = defines.direction.north }}, + pipe_connections = { + { flow_direction = "output", position = {1, -1.1}, direction = defines.direction.north }, + { flow_direction = "output", position = {-1, 1.1}, direction = defines.direction.south }}, volume = 500, - hide_connection_info = true + hide_connection_info = true }, { production_type = "output", @@ -276,8 +281,8 @@ furnace3cb.fluid_boxes[3].volume = 500 local generator1ob = { type = "generator", flags = { "placeable-neutral", "player-creation", "not-on-map", - "not-blueprintable", "not-deconstructable", - "hide-alt-info", "not-upgradable" }, + "not-blueprintable", "not-deconstructable", "hide-alt-info", + "not-upgradable" }, hidden = true, max_power_output = "1MW", effectivity = 0.9, @@ -334,8 +339,8 @@ local connector = { icon_size = 64, }}, flags = { "placeable-neutral", "player-creation", "not-on-map", - "not-blueprintable", "not-deconstructable", - "hide-alt-info", "not-upgradable", "placeable-off-grid" }, + "not-blueprintable", "not-deconstructable", "hide-alt-info", + "not-upgradable", "placeable-off-grid" }, hidden = true, selectable_in_game = false, allow_copy_paste = false, @@ -356,8 +361,8 @@ local connector = { volume = 500, hide_connection_info = true, pipe_connections = { - { position = {1, 0.04}, direction = defines.direction.east }, - { position = {-1, 0.04}, direction = defines.direction.west } + { position = {1, 0.04}, direction = defines.direction.south }, + { position = {-1, 0.04}, direction = defines.direction.south } } } } @@ -370,6 +375,7 @@ local vent1 = { collision_box = connector.collision_box, selection_box = connector.selection_box, collision_mask = { layers = {}, not_colliding_with_itself = true}, + hidden = true, selectable_in_game = false, allow_copy_paste = false, bottleneck_ignore = true, @@ -384,7 +390,7 @@ local vent1 = { production_type = "input", volume = 500, hide_connection_info = true, - pipe_connections = {{ flow_direction ="input-output", position = {-1, 0.04}, direction = defines.direction.west }} + pipe_connections = {{ flow_direction ="input-output", position = {-1, 0.04}, direction = defines.direction.south }} }}, energy_source = {type = "void"}, energy_usage = "1W" diff --git a/nullius/prototypes/item/void.lua b/nullius/prototypes/item/void.lua index d143041..23f40cc 100644 --- a/nullius/prototypes/item/void.lua +++ b/nullius/prototypes/item/void.lua @@ -32,7 +32,7 @@ data:extend({ { type = "item", name = "nullius-power-sink", - icons = data.raw.fluid["nullius-energy"].icons, + icons = data.raw.fluid["nullius-energy"].icons, hidden = true, subgroup = "other", stack_size = 100 diff --git a/nullius/scripts/mirror.lua b/nullius/scripts/mirror.lua index 3efb4ff..407a473 100644 --- a/nullius/scripts/mirror.lua +++ b/nullius/scripts/mirror.lua @@ -145,7 +145,7 @@ local function match_pipette(pipette, player, event) if (not (pipette.entity.valid and pipette.item.valid)) then return nil end local iname = pipette.item.name local ename = pipette.entity.name - local entity = event.created_entity + local entity = event.entity if (player.is_cursor_empty()) then return nil end if (player.is_cursor_blueprint()) then return nil end diff --git a/nullius/scripts/turbine.lua b/nullius/scripts/turbine.lua index 461d3ba..93d856c 100644 --- a/nullius/scripts/turbine.lua +++ b/nullius/scripts/turbine.lua @@ -5,7 +5,6 @@ local connector_offset = { [defines.direction.west] = {x = -2.15, y = 0} } - local function turbine_priority(name) local priority = string.sub(name, -9, -2) if (priority == "-backup-") then @@ -65,9 +64,9 @@ function build_turbine(entity) if (priority == "exhaust") then local revdir = rotate_right[rotate_right[dir]] - local roffs = connector_offset[revdir] + local roffs = connector_offset[revdir] entry.vent = entity.surface.create_entity{ - name = "nullius-turbine-vent" .. "-" .. tier, + name = "nullius-turbine-vent" .. "-" .. tier, force = entity.force, direction = revdir, position = {x = (pos.x + roffs.x), y = (pos.y + roffs.y)}} end From f7e5b619c495d1da328eee5a7537bd78cc820ca3 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 12 Aug 2025 17:22:51 +0200 Subject: [PATCH 033/236] Removed angels dependency (only depends on the graphics) - inital work, probably buggy --- nullius/TODO_list.txt | 2 +- nullius/data.lua | 2 + nullius/info.json | 1 - nullius/legacyAngels.lua | 2800 ++++++++++++++++++++++ nullius/prototypes/entity/assembler.lua | 73 +- nullius/prototypes/entity/chemistry.lua | 28 +- nullius/prototypes/entity/energy.lua | 48 +- nullius/prototypes/entity/furnace.lua | 36 +- nullius/prototypes/entity/plumbing.lua | 26 +- nullius/prototypes/entity/vent.lua | 119 +- nullius/prototypes/item/biology.lua | 4 +- nullius/prototypes/item/fluid.lua | 226 +- nullius/prototypes/item/void.lua | 2 +- nullius/prototypes/override_final.lua | 5 - nullius/prototypes/resource.lua | 2 - nullius/prototypes/resource_override.lua | 26 +- nullius/prototypes/rock.lua | 28 +- nullius/prototypes/technology.lua | 12 +- nullius/scripts/startup.lua | 1 - nullius/settings-updates.lua | 104 - 20 files changed, 3204 insertions(+), 341 deletions(-) create mode 100644 nullius/legacyAngels.lua diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index d7e565c..a0e38ac 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -1,6 +1,6 @@ TODO list: add working_sounds to entities (i think) -Fix fluid boxes (volume and pipe connections) pipes hold as much fluid as medium tank for instance +Fix fluid boxes (volume and pipe connections) Valves, pipes and tanks: fix mentions of pressure in locales Rework the entity mirroring system Rework the checkpoint system (maybe) diff --git a/nullius/data.lua b/nullius/data.lua index af74146..df995ee 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -1,3 +1,5 @@ +require("legacyAngels") + require("prototypes.reskin") require("prototypes.category") require("prototypes.item.fluid") diff --git a/nullius/info.json b/nullius/info.json index 57c0226..b60fa85 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -13,7 +13,6 @@ "angelsrefininggraphics >= 1.0.0", "angelssmeltinggraphics >= 1.0.0", "angelspetrochemgraphics >= 1.0.0", - "angelssmelting >= 0.5.0", "boblogistics >= 2.0.2", "? RecipeBook >= 2.7.1", "? underground-pipe-pack >= 1.1.2", diff --git a/nullius/legacyAngels.lua b/nullius/legacyAngels.lua new file mode 100644 index 0000000..b93973c --- /dev/null +++ b/nullius/legacyAngels.lua @@ -0,0 +1,2800 @@ +angelsLegacy = {} +angelsLegacy.functions = {} +angelsLegacy.data = {} + +--REMOVE RESOURCE +function angelsLegacy.functions.remove_resource(resource) + if data.raw.resource[resource] then + data.raw.resource[resource] = nil + data.raw["autoplace-control"][resource] = nil + end + + local infinite_resource = nil + if data.raw.resource["infinite-" .. resource] then + infinite_resource = "infinite-" .. resource + data.raw.resource["infinite-" .. resource] = nil + data.raw["autoplace-control"]["infinite-" .. resource] = nil + end + + -- Remove from presets + for _, preset in pairs(data.raw["map-gen-presets"]["default"]) do + if + preset + and preset.basic_settings + and preset.basic_settings.autoplace_controls + and preset.basic_settings.autoplace_controls[resource] + then + preset.basic_settings.autoplace_controls[resource] = nil + end + if + infinite_resource + and preset + and preset.basic_settings + and preset.basic_settings.autoplace_controls + and preset.basic_settings.autoplace_controls[infinite_resource] + then + preset.basic_settings.autoplace_controls[infinite_resource] = nil + end + end + + -- Remove from planets + for _, planet in pairs(data.raw.planet) do + if + planet + and planet.map_gen_settings + and planet.map_gen_settings.autoplace_controls + and planet.map_gen_settings.autoplace_controls[resource] + then + planet.map_gen_settings.autoplace_controls[resource] = nil + planet.map_gen_settings.autoplace_settings.entity.settings[resource] = nil + end + if + infinite_resource + and planet + and planet.map_gen_settings + and planet.map_gen_settings.autoplace_controls + and planet.map_gen_settings.autoplace_controls[infinite_resource] + then + planet.map_gen_settings.autoplace_controls[infinite_resource] = nil + planet.map_gen_settings.autoplace_settings.entity.settings[infinite_resource] = nil + end + end + + -- for r, subdir in pairs(angelsmods.functions.store) do --TODO: remove that + -- for r, input in pairs(subdir) do + -- if input == resource then + -- input.inactive = true + -- end + -- end + -- end +end + +local function clean_table(t) + -- removes nil values from a table so it becomes a table without holes + if type(t) ~= "table" then + return t + end + local clone = {} + for k, v in pairs(t or {}) do + t[k] = nil + table.insert(clone, v) + end + for i, v in ipairs(clone) do + t[i] = v + end + return t +end +angelsLegacy.functions.clean_ingredient_list = clean_table +angelsLegacy.functions.clean_localised_description = clean_table + +------------------------------------------------------------------------------- +-- GET ICON/ICONS FROM FLUID/ITEM --------------------------------------------- +------------------------------------------------------------------------------- +local function get_icons(object_name) + for _, prototype in pairs({ "item", "fluid", "ammo", "capsule" }) do + local object = data.raw[prototype][object_name] + if object then + if object.icons then -- icons has precedence over icon + return object.icons + end + if object.icon then + return { + { + icon = object.icon, + icon_size = object.icon_size or 64, + scale = 32 / (object.icon_size or 64), + }, + } + end + end + end + --something is wrong here but we need to return something + return "__angelsrefininggraphics__/graphics/icons/void.png" +end +angelsLegacy.functions.get_object_icons = get_icons + +local function unify_tint(tint) + -- allows tints to be defined as {255, 255, 255, 255} + -- meaning doesn't need keys rgba (but assumes that order) + -- doesn't need to be in range 0..1, but up to 255 as well + if tint then + local unified_tint = {} + + unified_tint.r = tint.r or tint[1] or 0 + unified_tint.g = tint.g or tint[2] or 0 + unified_tint.b = tint.b or tint[3] or 0 + + if unified_tint.r > 1 or unified_tint.g > 1 or unified_tint.b > 1 then + unified_tint.r = (unified_tint.r <= 255 and unified_tint.r or 255) / 255 + unified_tint.g = (unified_tint.g <= 255 and unified_tint.g or 255) / 255 + unified_tint.b = (unified_tint.b <= 255 and unified_tint.b or 255) / 255 + end + + unified_tint.a = tint.a or tint[4] or 1 + unified_tint.a = unified_tint.a > 1 and unified_tint.a / 255 or unified_tint.a + + return unified_tint + else + return nil + end +end + +------------------------------------------------------------------------------- +-- ICON GENERATION ------------------------------------------------------------ +------------------------------------------------------------------------------- +local icon_tints_table = { + --Sourced from: + --https://sciencenotes.org/molecule-atom-colors-cpk-colors/ + -- Sorted by periodic atomic number + H = { { 255, 255, 255 }, { 243, 243, 243 }, { 242, 242, 242 } }, --Hydrogen + Hd = { { 255, 255, 192 }, { 206, 206, 173 }, { 196, 196, 156 } }, --Deuterium + Li = { { 204, 128, 255 } }, --Lithium + C = { { 044, 044, 044 }, { 064, 064, 064 }, { 090, 090, 090 } }, --Carbon -- but darkened + N = { { 048, 080, 248 }, { 045, 076, 175 }, { 038, 063, 150 } }, --Nitrogen + O = { { 255, 013, 013 }, { 214, 012, 012 }, { 198, 011, 011 } }, --Oxygen + F = { { 144, 224, 080 }, { 181, 208, 000 }, { 181, 208, 000 } }, --Fluorine + Na = { { 171, 092, 242 } }, --Sodium + Mg = { { 138, 255, 000 } }, --Magnesium + Al = { { 191, 166, 166 } }, --Aluminium + Si = { { 240, 200, 160 } }, --Silicon + P = { { 255, 128, 000 } }, --Phosphorus + S = { { 255, 255, 048 }, { 216, 196, 017 }, { 210, 187, 030 } }, --Sulfur + Cl = { { 031, 240, 031 }, { 057, 211, 040 }, { 075, 195, 045 } }, --Chlorine + K = { { 143, 064, 212 } }, --Potassium + Ca = { { 061, 255, 000 } }, --Calcium + Ti = { { 191, 194, 199 } }, --Titanium + Cr = { { 138, 153, 199 } }, --Chrome + Mn = { { 156, 122, 199 } }, --Manganese + Fe = { { 224, 102, 051 } }, --Iron + Co = { { 240, 144, 160 } }, --Cobalt + Ni = { { 080, 208, 080 } }, --Nickel + Cu = { { 200, 128, 051 } }, --Copper + Zn = { { 125, 128, 176 } }, --Zinc + Ag = { { 192, 192, 192 } }, --Silver + Sn = { { 102, 128, 128 } }, --Tin + Cs = { { 087, 023, 143 } }, --Cesium + W = { { 033, 148, 214 } }, --Tungsten (Wolfram) + Os = { { 038, 102, 150 } }, --Osmium + Pt = { { 208, 208, 224 } }, --Platium + Au = { { 255, 209, 035 } }, --Gold + Hg = { { 184, 184, 208 } }, --Mercury + Pb = { { 087, 089, 097 } }, --Lead + Po = { { 171, 092, 000 } }, --Polonium + Th = { { 000, 186, 255 } }, --Thorium + Pa = { { 000, 161, 255 } }, --Protactinium + U = { { 000, 143, 255 } }, --Uranium + Np = { { 000, 128, 255 } }, --Neptunium + Pu = { { 000, 107, 255 } }, --Plutonium + Am = { { 084, 092, 242 } }, --Americium + Cm = { { 120, 092, 227 } }, --Curium + --fake/compicated/custom tints + Tw = { { 243, 135, 000 } }, --Thermal water + Oi = { { 069, 069, 069 }, { 054, 054, 054 }, { 036, 036, 036 } }, --Coal/Oil + Xx = { { 041, 041, 180 } }, --Complex (really strange materials) + Ws = { { 094, 114, 174 }, { 088, 104, 163 }, { 088, 101, 155 } }, --Water/Steam + Sg = { { 255, 105, 180 } }, --Syngas + Ng = { { 105, 135, 090 }, { 096, 122, 082 }, { 088, 113, 075 } }, --Natural Gas + Cb = { { 015, 015, 015 } }, --Other Carbon Solids + Ax = { { 241, 050, 238 } }, --Alien Stuffs + Aw = { { 194, 227, 091 }, { 184, 239, 000 }, { 156, 207, 000 } }, --Alien Feed (gas/water) + Oc = { { 044, 044, 044 }, { 140, 000, 000 }, { 140, 000, 000 } }, -- Carbon (oxides) darker for less contrast +} + +--[[{ unused materials + Ne = {{179, 227, 245}}, Ar = {{128, 209, 227}}, Sc = {{230, 230, 230}}, V = {{166, 166, 171}}, Ga = {{194, 143, 143}}, Ge = {{102, 143, 143}}, As = {{189, 128, 227}}, Se = {{255, 161, 000}}, + Br = {{166, 041, 041}}, Kr = {{092, 184, 209}}, Rb = {{112, 046, 176}}, Sr = {{000, 255, 000}}, Y = {{148, 255, 255}}, Zr = {{148, 224, 224}}, Nb = {{115, 194, 201}}, Mo = {{084, 181, 181}}, + Tc = {{059, 158, 158}}, Ru = {{036, 143, 143}}, Rh = {{010, 125, 140}}, Pd = {{000, 105, 133}}, Cd = {{255, 217, 143}}, In = {{166, 117, 115}}, Sb = {{158, 099, 181}}, Te = {{212, 122, 000}}, + I = {{148, 000, 148}}, Xe = {{066, 158, 176}}, Ba = {{000, 201, 000}}, La = {{112, 212, 255}}, Ce = {{255, 255, 199}}, Pr = {{217, 255, 199}}, Nd = {{199, 255, 199}}, Pm = {{163, 255, 199}}, + Sm = {{143, 255, 199}}, Eu = {{097, 255, 199}}, Gd = {{069, 255, 199}}, Tb = {{048, 255, 199}}, Dy = {{031, 255, 199}}, Ho = {{000, 255, 156}}, Er = {{000, 230, 117}}, Tm = {{000, 212, 082}}, + Yb = {{000, 191, 056}}, Lu = {{000, 171, 036}}, Hf = {{077, 194, 255}}, Ta = {{077, 166, 255}}, Re = {{038, 125, 171}}, Ir = {{023, 084, 135}}, Tl = {{166, 084, 077}}, Bi = {{158, 079, 181}}, + At = {{117, 079, 069}}, Rn = {{066, 130, 150}}, Fr = {{066, 000, 102}}, Ra = {{000, 125, 000}}, Ac = {{112, 171, 250}}, Bk = {{138, 079, 227}}, Cf = {{161, 054, 212}}, Es = {{179, 031, 212}}, + Fm = {{179, 031, 186}}, Md = {{179, 013, 166}}, No = {{189, 013, 135}}, Lr = {{199, 000, 102}}, Rf = {{204, 000, 089}}, Db = {{209, 000, 079}}, Sg = {{217, 000, 069}}, Bh = {{224, 000, 056}}, + Hs = {{230, 000, 046}}, Mt = {{235, 000, 038}}, }]] + +local function get_molecule_codes(molec_formula) + local orig = molec_formula + local string_codes = {} --subtables of tint codes eg. {{form = Ws ,amount = 12},} + while string.len(molec_formula) > 0 do + --take first segment (or throw error) and trim each code off and repeat until empty or error + local trim = 1 --always trim at least 1 per code + if string.find(molec_formula, "^%u%l%d+") == 1 then --Two letter code with number + table.insert(string_codes, { + form = string.sub(molec_formula, 1, 2), + amount = tonumber(string.sub(molec_formula, string.find(molec_formula, "%d+"))), + }) + trim = string.len(tostring(string_codes[#string_codes].amount)) + 1 + elseif string.find(molec_formula, "^%u%l") == 1 then --Two letter code without number + table.insert(string_codes, { form = string.sub(molec_formula, 1, 2), amount = 1 }) --no amount-default 1 + elseif string.find(molec_formula, "^%u%d+") == 1 then --One letter code with number + table.insert(string_codes, { + form = string.sub(molec_formula, 1, 1), + amount = tonumber(string.sub(molec_formula, string.find(molec_formula, "%d+"))), + }) + trim = string.len(tostring(string_codes[#string_codes].amount)) + 1 + elseif string.find(molec_formula, "^%u") == 1 then --One letter code without number + table.insert(string_codes, { form = string.sub(molec_formula, 1, 1), amount = 1 }) --no amount-default 1 + else --none of the above segments + error( + "Cannot determine next string code in '" + .. (molec_formula or "") + .. " of original code " + .. orig + .. "'. Please report this to the Angel's dev team." + ) + end + --trim string correctly + local symbol = string_codes[#string_codes].form + trim = trim + string.len(symbol) + molec_formula = string.sub(molec_formula, trim) + end + return string_codes +end + +local function create_recipe_molecule_icons(molecules_icon, molecules_shift, molecules_scale) + molecules_icon = clean_table(molecules_icon) or {} + molecules_shift = molecules_shift or { { -11.5, 12 }, { 11.5, 12 }, { 0, 12 } } + molecules_scale = molecules_scale or (10.24 / 32) -- assume base 64 size, scaled by 0.5 + + for molecule_index, molecule_icon in pairs(molecules_icon) do + if type(molecule_icon) ~= "table" and get_icons(molecule_icon) ~= "__angelsrefininggraphics__/graphics/icons/void.png" then + molecules_icon[molecule_index] = util.table.deepcopy(get_icons(molecule_icon)) + end + end + + for molecule_index, molecule_icon in pairs(molecules_icon) do + if type(molecule_icon) ~= "table" then + molecules_icon[molecule_index] = { + { + icon = molecule_icon, + icon_size = 32, + }, + } + elseif type(molecule_icon[1]) ~= "table" then + local mi = util.table.deepcopy(molecule_icon) + molecules_icon[molecule_index] = { + { + icon = mi.icon or mi[1] or nil, + shift = mi.shift or mi[3] or nil, + scale = mi.scale or mi[4] or nil, + tint = mi.tint or mi[5] or nil, + floating = mi.floating or nil, + }, + } + if molecules_icon[molecule_index][1].icon then + molecules_icon[molecule_index][1].icon_size = mi.icon_size or mi[2] or 64 + if molecules_icon[molecule_index][1].icon_size ~= 32 then + molecules_icon[molecule_index][1].scale = (molecules_icon[molecule_index][1].scale or 1) + * 32 + / molecules_icon[molecule_index][1].icon_size + end + else + --something is wrong here but we need to return something + molecules_icon[molecule_index] = { + { + icon = "__angelsrefininggraphics__/graphics/icons/void.png", + icon_size = 32, + }, + } + end + else + for molecule_icon_layer_index, molecule_icon_layer in pairs(molecule_icon) do + if not molecule_icon_layer.icon_size then + molecules_icon[molecule_index][molecule_icon_layer_index].icon_size = 64 + molecules_icon[molecule_index][molecule_icon_layer_index].scale = 0.5 + end + end + end + molecule_icon = molecules_icon[molecule_index] + + -- now shift this icon to its correct position + local molecule_shift = molecules_shift[molecule_index] or { 0, 0 } + local molecule_scale = molecules_scale + for layer_index, layer in pairs(molecule_icon) do + layer.scale = layer.scale or 1 + layer.shift = { (layer.shift or {})[1] or 0, (layer.shift or {})[2] or 0 } + + layer.shift = { + layer.shift[1] * molecule_scale + molecule_shift[1], + layer.shift[2] * molecule_scale + molecule_shift[2], + } + layer.scale = layer.scale * molecule_scale + + molecule_icon[layer_index].scale = layer.scale + molecule_icon[layer_index].shift = layer.shift + end + molecules_icon[molecule_index] = clean_table(molecule_icon) + end + + return clean_table(molecules_icon) +end + +-- CREATE LIQUID RECIPE ICONS (NOT FOR FLUIDS) +function angelsLegacy.functions.create_liquid_recipe_icon(bot_molecules_icon, tints, top_molecules_icon) + -- bot_molecules_icon and top_molecules_icon is a table of molecule_icon, which can be a string + -- (assumes icon_size 64) or be a table with size defined + bot_molecules_icon = + create_recipe_molecule_icons(bot_molecules_icon, { { -11.5, 12 }, { 11.5, 12 }, { 0, 12 } } ) + top_molecules_icon = + create_recipe_molecule_icons(top_molecules_icon, { { -11.5, -12 }, { 11.5, -12 }, { 0, -12 } } ) + + -- tints is a table of 3 tints, for the top, mid and bot section, + -- uses the get_molecule_codes for default tints + if tints then + if type(tints) ~= "table" then + local reference = get_molecule_codes(tints) + tints = { + top = unify_tint(icon_tints_table[(reference[1] or { form = "unknown" }).form][1] or {}), + mid = unify_tint(icon_tints_table[(reference[2] or { form = "unknown" }).form][2] or {}), + bot = unify_tint(icon_tints_table[(reference[3] or { form = "unknown" }).form][3] or {}), + } + else + tints.top = unify_tint(tints.top or tints[1] or nil) + tints.mid = unify_tint(tints.mid or tints[2] or nil) + tints.bot = unify_tint(tints.bot or tints[3] or nil) + end + else + tints = {} + end + + local recipe_icons = { + { + -- base layer required for background shadow + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-recipe-base.png", + icon_size = 600, + scale = 32 / 600, + tint = { r = 0.25, g = 0.25, b = 0.25, a = 0.7 }, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-recipe-top.png", + icon_size = 600, + scale = 32 / 600, + tint = tints.top, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-recipe-mid.png", + icon_size = 600, + scale = 32 / 600, + tint = tints.mid, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-recipe-bot.png", + icon_size = 600, + scale = 32 / 600, + tint = tints.bot, + }, + } + for _, bot_molecule_icon in pairs(bot_molecules_icon) do + for _, bot_molecule_icon_layer in pairs(bot_molecule_icon) do + table.insert(recipe_icons, bot_molecule_icon_layer) + end + end + for _, top_molecule_icon in pairs(top_molecules_icon) do + for _, top_molecule_icon_layer in pairs(top_molecule_icon) do + table.insert(recipe_icons, top_molecule_icon_layer) + end + end + return recipe_icons +end + +-- CREATE LIQUID FLUID ICONS (NOT FOR RECIPES) +function angelsLegacy.functions.create_liquid_fluid_icon(molecule_icon, tints) + -- molecule_icon can be a string (assumes icon_size 64) + -- or be a table with size defined + if molecule_icon then + if type(molecule_icon) ~= "table" then + molecule_icon = { + icon = molecule_icon, + icon_size = 64, + } + else + molecule_icon.icon = molecule_icon.icon or molecule_icon[1] or nil + if molecule_icon.icon then + molecule_icon.icon_size = molecule_icon.icon_size or molecule_icon[2] or 64 + else + --something is wrong here but we need to return something + molecule_icon.icon = "__angelsrefininggraphics__/graphics/icons/void.png" + molecule_icon.icon_size = 32 + end + end + + molecule_icon.shift = molecule_icon.shift or molecule_icon[3] or { -10, -10 } + molecule_icon.scale = molecule_icon.scale or molecule_icon[4] or 15 / molecule_icon.icon_size + molecule_icon.tint = molecule_icon.tint or molecule_icon[5] or nil + + molecule_icon[1] = nil + molecule_icon[2] = nil + molecule_icon[3] = nil + molecule_icon[4] = nil + molecule_icon[5] = nil + else + molecule_icon = nil + end + + -- tints is a table of 3 tints, for the top, mid and bot section, + -- uses the get_molecule_codes for default tints + if tints then + if type(tints) ~= "table" then + local reference = get_molecule_codes(tints) + tints = { + top = unify_tint(icon_tints_table[(reference[1] or { form = "unknown" }).form][1] or {}), + mid = unify_tint(icon_tints_table[(reference[2] or { form = "unknown" }).form][2] or {}), + bot = unify_tint(icon_tints_table[(reference[3] or { form = "unknown" }).form][3] or {}), + } + else + tints.top = unify_tint(tints.top or tints[1] or nil) + tints.mid = unify_tint(tints.mid or tints[2] or nil) + tints.bot = unify_tint(tints.bot or tints[3] or nil) + end + else + tints = {} + end + + return { + { + -- base layer required for background shadow + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-item-base.png", + icon_size = 330, + scale = 32 / 330, + tint = { r = 0.25, g = 0.25, b = 0.25, a = 0.7 }, + shift = molecule_icon and { 3.5, 0 } or nil, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-item-top.png", + icon_size = 330, + scale = 32 / 330, + tint = tints.top, + shift = molecule_icon and { 3.5, 0 } or nil, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-item-mid.png", + icon_size = 330, + scale = 32 / 330, + tint = tints.mid, + shift = molecule_icon and { 3.5, 0 } or nil, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-liquid/liquid-item-bot.png", + icon_size = 330, + scale = 32 / 330, + tint = tints.bot, + shift = molecule_icon and { 3.5, 0 } or nil, + }, + molecule_icon, + } +end + +-- CREATE GAS FLUID ICONS (NOT FOR RECIPES) +function angelsLegacy.functions.create_gas_fluid_icon(molecule_icon, tints) + -- molecule_icon can be a string (assumes icon_size 32) + -- or be a table with size defined + if molecule_icon then + if type(molecule_icon) ~= "table" then + molecule_icon = { + icon = molecule_icon, + icon_size = 32, + } + else + molecule_icon.icon = molecule_icon.icon or molecule_icon[1] or nil + if molecule_icon.icon then + molecule_icon.icon_size = molecule_icon.icon_size or molecule_icon[2] or 32 + else + --something is wrong here but we need to return something + molecule_icon.icon = "__angelsrefininggraphics__/graphics/icons/void.png" + molecule_icon.icon_size = 32 + end + end + + molecule_icon.shift = molecule_icon.shift or molecule_icon[3] or { -10, -10 } + molecule_icon.scale = molecule_icon.scale or molecule_icon[4] or 15 / molecule_icon.icon_size + + molecule_icon[1] = nil + molecule_icon[2] = nil + molecule_icon[3] = nil + molecule_icon[4] = nil + else + molecule_icon = nil + end + + -- tints is a table of 3 tints, for the top, mid and bot section, + -- allows a string of max 3 characters for default tints + if tints then + if type(tints) ~= "table" then + local reference = get_molecule_codes(tints) + tints = { + top = unify_tint(icon_tints_table[(reference[1] or { form = "unknown" }).form][1] or {}), + mid = unify_tint(icon_tints_table[(reference[2] or { form = "unknown" }).form][2] or {}), + bot = unify_tint(icon_tints_table[(reference[3] or { form = "unknown" }).form][3] or {}), + } + else + tints.top = unify_tint(tints.top or tints[1] or nil) + tints.mid = unify_tint(tints.mid or tints[2] or nil) + tints.bot = unify_tint(tints.bot or tints[3] or nil) + end + else + tints = {} + end + + return { + { + -- base layer required for background shadow + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-item-base.png", + icon_size = 596, + scale = 32 / 596, + tint = { r = 0.25, g = 0.25, b = 0.25, a = 0.7 }, + shift = not molecule_icon and { -3.5, 0 } or nil, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-item-top.png", + icon_size = 596, + scale = 32 / 596, + tint = tints.top, + shift = not molecule_icon and { -3.5, 0 } or nil, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-item-mid.png", + icon_size = 596, + scale = 32 / 596, + tint = tints.mid, + shift = not molecule_icon and { -3.5, 0 } or nil, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-item-bot.png", + icon_size = 596, + scale = 32 / 596, + tint = tints.bot, + shift = not molecule_icon and { -3.5, 0 } or nil, + }, + molecule_icon, + } +end + +-- CREATE GAS RECIPE ICONS (NOT FOR FLUIDS) +function angelsLegacy.functions.create_gas_recipe_icon(bot_molecules_icon, tints, top_molecules_icon) + -- bot_molecules_icon and top_molecules_icon is a table of molecule_icon, which can be a string + -- (assumes icon_size 64) or be a table with size defined + bot_molecules_icon = + create_recipe_molecule_icons(bot_molecules_icon, { { -11.5, 12 }, { 11.5, 12 }, { 0, 12 } }) + top_molecules_icon = + create_recipe_molecule_icons(top_molecules_icon, { { -11.5, -12 }, { 11.5, -12 }, { 0, -12 } }) + + -- tints is a table of 3 tints, for the top, mid and bot section, + -- uses the get_molecule_codes for default tints + if tints then + if type(tints) ~= "table" then + local reference = get_molecule_codes(tints) + tints = { + top = unify_tint(icon_tints_table[(reference[1] or { form = "unknown" }).form][1] or {}), + mid = unify_tint(icon_tints_table[(reference[2] or { form = "unknown" }).form][2] or {}), + bot = unify_tint(icon_tints_table[(reference[3] or { form = "unknown" }).form][3] or {}), + } + else + tints.top = unify_tint(tints.top or tints[1] or nil) + tints.mid = unify_tint(tints.mid or tints[2] or nil) + tints.bot = unify_tint(tints.bot or tints[3] or nil) + end + else + tints = {} + end + + local recipe_icons = { + { + -- base layer required for background shadow + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-recipe-base.png", + icon_size = 750, + scale = 32 / 750, + tint = { r = 0.25, g = 0.25, b = 0.25, a = 0.7 }, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-recipe-top.png", + icon_size = 750, + scale = 32 / 750, + tint = tints.top, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-recipe-mid.png", + icon_size = 750, + scale = 32 / 750, + tint = tints.mid, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-recipe-bot.png", + icon_size = 750, + scale = 32 / 750, + tint = tints.bot, + }, + } + for _, bot_molecule_icon in pairs(bot_molecules_icon) do + for _, bot_molecule_icon_layer in pairs(bot_molecule_icon) do + table.insert(recipe_icons, bot_molecule_icon_layer) + end + end + for _, top_molecule_icon in pairs(top_molecules_icon) do + for _, top_molecule_icon_layer in pairs(top_molecule_icon) do + table.insert(recipe_icons, top_molecule_icon_layer) + end + end + return recipe_icons +end + +------------------------------------------------------------------------------- +-- FLUID FLOW AND RECIPE COLOUR FUNCTIONS ------------------------------------- +------------------------------------------------------------------------------- +--the following functions were gratefully donated by @Maxreader on Discord +local function isColor(input) + if type(input) ~= "table" then + return nil + end + local length = table_size(input) + if length ~= 3 and length ~= 4 then + return nil + end + local is_small = true + for _, v in pairs(input) do + if v > 1 then + is_small = false + break + end + end + if not is_small then + for k, v in pairs(input) do + input[k] = v / 255 + end + end + local color = { + r = input.r or input[1], + g = input.g or input[2], + b = input.b or input[3], + a = input.a or input[4] or 1, + } + return color +end + +local function findRGB(inputString) + if type(inputString) ~= "string" then + return nil + end + if inputString:find("%a") then + return nil + end + local rawColor = util.split(inputString:gsub("%D", " "), " ") + if #rawColor < 3 then + return nil + end + local color = {} + for k, v in pairs(rawColor) do + color[k] = v / 255 + end + return { + r = color[1], + g = color[2], + b = color[3], + a = color[4] or 1, + } +end + +--modified version of util.color provided by API +local function findHex(hex) + if type(hex) ~= "string" then + return nil + end + if hex:find("%X") or #hex > 8 or #hex == 5 or #hex == 7 then + return nil + end + + local function h(i, j) + return j and tonumber("0x" .. hex:sub(i, j)) / 255 or tonumber("0x" .. hex:sub(i, i)) / 15 + end + + hex = hex:gsub("#", "") + return #hex == 6 and { r = h(1, 2), g = h(3, 4), b = h(5, 6) } + or #hex == 3 and { r = h(1), g = h(2), b = h(3) } + or #hex == 8 and { r = h(1, 2), g = h(3, 4), b = h(5, 6), a = h(7, 8) } + or #hex == 4 and { r = h(1), g = h(2), b = h(3), a = h(4) } + or #hex == 2 and { r = h(1, 2), g = h(1, 2), b = h(1, 2) } + or #hex == 1 and { r = h(1), g = h(1), b = h(1) } + or { r = 1, g = 1, b = 1 } +end + +local function toColor(color) + return isColor(color) or findHex(color) or findRGB(color) or { r = 0, g = 0, b = 0, a = 1 } +end +local function RGBtoHSV(color) + color = toColor(color) + local r, g, b = color.r, color.g, color.b + local max = math.max(r, g, b) + local min = math.min(r, g, b) + local range = max - min + local h + if range == 0 then + h = 0 + elseif max == r then + h = (g - b) / range * 60 + elseif max == g then + h = (2 + (b - r) / range) * 60 + elseif max == b then + h = (4 + (r - g) / range) * 60 + end + if h < 0 then + h = h + 360 + end + local v = max + local s = range / max + return { + h = h, + s = s, + v = v, + a = color.a or 1, + } +end + +local function HSVtoRGB(color) + local h, s, v, a = color.h, color.s, color.v, color.a + local function f(n) + local k = (n + h / 60) % 6 + return v - v * s * math.max(math.min(k, 4 - k, 1), 0) + end + return { + r = f(5), + g = f(3), + b = f(1), + a = color.a or 1, + } +end + +local function rgb_fetch(chemical_formula) + local rgb = {} + local codes = get_molecule_codes(chemical_formula) + for i = 1, #codes do + local tint_table = icon_tints_table[codes[i].form] + if tint_table then + rgb[i] = #tint_table <= i and tint_table[i] or tint_table[1] + else + rgb[i] = { 0, 0, 0 } + end + end + return rgb +end + +local function total_shade(chemical_formula) + local change = 0 + local array = get_molecule_codes(chemical_formula) + for i = 1, #array do + change = change + array[i].amount + end + return change +end + +function angelsLegacy.functions.fluid_color(chemical_formula) --color blending based on a general chemical formula + local color = {} + local arrays = get_molecule_codes(chemical_formula) + local lettering, multi, rgb = {}, {}, {} + for i = 1, #arrays do + table.insert(lettering, arrays[i].form) + table.insert(multi, arrays[i].amount) + --table.insert(rgb, arrays[i].rgb) + end + rgb = rgb_fetch(chemical_formula) + --local rgb = formula_extraction_1a(chemical_formula)--formula_extraction_1(chemical_formula) + --local multi = formula_extraction_2(chemical_formula) + --should only consist of the first 3 items, with an optional 4th + local red, green, blue, alpha, comb = 0, 0, 0, 0, 0 + local ave_denom = #rgb + if + ave_denom == 2 + and ( + (rgb[1] == icon_tints_table["C"][1] and rgb[2] == icon_tints_table["H"][1]) + or (rgb[1] == icon_tints_table["H"][1] and rgb[2] == icon_tints_table["C"][1]) + ) + then + -- Hydrocarbon only + local m_c = tonumber(multi[1]) / 8 + local m_h = tonumber(multi[2]) / 12 + local value = ((m_h / m_c / 4) ^ 2.2) / 0.41 + local function sigmoid(x, b, c) --more maxreader madness :D + return 1 / (1 + 2 ^ (-b * (x + c))) + end + value = sigmoid(value, 20, -0.25) + for i, j in pairs({ "r", "g", "b" }) do + color[j] = value + end + else --everything else + for i, colour in pairs(rgb) do + alpha = colour[4] or 1 + red = red + ((colour[1] / 255) ^ 2 * tonumber(multi[i]) * alpha) + green = green + ((colour[2] / 255) ^ 2 * tonumber(multi[i]) * alpha) + blue = blue + ((colour[3] / 255) ^ 2 * tonumber(multi[i]) * alpha) + comb = comb + tonumber(multi[i] * alpha) + end + color = { r = math.sqrt(red / comb), g = math.sqrt(green / comb), b = math.sqrt(blue / comb), a = 1 } + --normalise + local HSV = RGBtoHSV(color) + HSV.v = 0.8 * HSV.v + HSV.s = 1 - 0.60 * (1 - HSV.s) + color = HSVtoRGB(HSV) + end + return color +end + +function angelsLegacy.functions.flow_color(chemical_formula) --makes it lighter by some margin + local change = total_shade(chemical_formula) * 6 + local chemical_formula = chemical_formula .. "H" .. change --table.insert(chemical_formula,"H"..change) + local color = angelsLegacy.functions.fluid_color(chemical_formula) + return color +end + +-- CREATE GAS TECH ICONS +function angelsLegacy.functions.create_gas_tech_icon(tints) + -- tints is a table of 3 tints, for the top, mid and bot section, + -- uses the get_molecule_codes for default tints + if tints then + if type(tints) ~= "table" then + local reference = get_molecule_codes(tints) + tints = { + top = unify_tint(icon_tints_table[(reference[1] or { form = "unknown" }).form][1] or {}), + mid = unify_tint(icon_tints_table[(reference[2] or { form = "unknown" }).form][2] or {}), + bot = unify_tint(icon_tints_table[(reference[3] or { form = "unknown" }).form][3] or {}), + } + else + tints.top = unify_tint(tints.top or tints[1] or nil) + tints.mid = unify_tint(tints.mid or tints[2] or nil) + tints.bot = unify_tint(tints.bot or tints[3] or nil) + end + else + tints = {} + end + + return { + { + -- base layer required for background shadow + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-tech-base.png", + icon_size = 604, + scale = 32 / 604, + tint = { r = 0.25, g = 0.25, b = 0.25, a = 0.7 }, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-tech-top.png", + icon_size = 604, + scale = 32 / 604, + tint = tints.top, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-tech-mid.png", + icon_size = 604, + scale = 32 / 604, + tint = tints.mid, + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/angels-gas/gas-tech-bot.png", + icon_size = 604, + scale = 32 / 604, + tint = tints.bot, + }, + } +end + +function angelsLegacy.data.floatationpipepictures() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-north.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.01, 0.95 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-east.png", + priority = "extra-high", + width = 40, + height = 45, + shift = { -0.71875, 0.1 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-south.png", + priority = "extra-high", + width = 34, + height = 39, + shift = { 0, -0.75 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-west.png", + priority = "extra-high", + width = 40, + height = 45, + shift = { 0.78125, 0.01 }, + }, + } +end + +angelsLegacy.data["angels-floatation-cell"] = { + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, + }, +} + +angelsLegacy.data["angels-floatation-cell-2"] = { +graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + } + +angelsLegacy.data["angels-floatation-cell-3"] = { + graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, +} + +angelsLegacy.data["angels-thermal-extractor"] = { + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/thermal-extractor.ogg" }, + max_sounds_per_prototype = 3, + fade_in_ticks = 4, + fade_out_ticks = 10 + } +} +angelsLegacy.data["angels-chemical-furnace"] = { + impact_category = "metal", + working_sound = { + sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-burner-ore-crusher"] = { + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-ore-crusher"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + }, + --impact_category = "metal", + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-ore-crusher-2"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + } +} +angelsLegacy.data["angels-ore-crusher-3"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + } +} +angelsLegacy.data["angels-crystallizer"] = { + graphics_set = { + animation = { + layers = { + -- Base + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + scale = 0.5, + }, + -- Shadow + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + impact_category = "metal", + working_sound = { + sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-crystallizer-2"] = { + graphics_set = { + animation = { + layers = { + -- Base + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + scale = 0.5, + }, + -- Shadow + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + } +} + +local function hydropipepictures() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { -0.08, 0.45 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", + priority = "extra-high", + width = 1, + height = 1, + shift = { 0, 0 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.06, -0.6 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.62, 0.05 }, + }, + } +end + +local function hydropipepictures2() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north2.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { -0.08, 0.45 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", + priority = "extra-high", + width = 1, + height = 1, + shift = { 0, 0 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.06, -0.6 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east2.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.62, 0.05 }, + }, + } +end + +angelsLegacy.data["angels-hydro-plant"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, + }, + --impact_category = "metal", + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + fluid_boxes = { + { + production_type = "input", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 1000, + pipe_connections = { + { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, + }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures2(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { + { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, + }, + }, + } +} + +angelsLegacy.data["angels-hydro-plant-2"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, + }, + --impact_category = "metal", + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + fluid_boxes = { + { + production_type = "input", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 1000, + pipe_connections = { + { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, + }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures2(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { + { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, + }, + }, + } +} + +angelsLegacy.data["angels-hydro-plant-3"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, + }, + --impact_category = "metal", + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} + +angelsLegacy.data["angels-air-filter"] = { + working_sound = { + sound = { filename = "__base__/sound/idle1.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-storage-tank-1"] = { + pictures = { + picture = { + sheets = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank.png", + priority = "extra-high", + frames = 1, + width = 334, + height = 387, + shift = util.by_pixel(-0.5, -6), + scale = 0.5, + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank-shadow.png", + priority = "extra-high", + frames = 1, + width = 437, + height = 237, + shift = util.by_pixel(26, 32), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + fluid_background = { + filename = "__base__/graphics/entity/storage-tank/fluid-background.png", + priority = "extra-high", + width = 32, + height = 15, + }, + window_background = { + filename = "__base__/graphics/entity/storage-tank/window-background.png", + priority = "extra-high", + width = 34, + height = 48, + scale = 0.5, + }, + flow_sprite = { + filename = "__base__/graphics/entity/pipe/fluid-flow-low-temperature.png", + priority = "extra-high", + width = 160, + height = 20, + }, + gas_flow = { + filename = "__base__/graphics/entity/pipe/steam.png", + priority = "extra-high", + line_length = 10, + width = 48, + height = 30, + frame_count = 60, + animation_speed = 0.25, + scale = 0.5, + }, + }, + working_sound = { + sound = { + filename = "__base__/sound/storage-tank.ogg", + volume = 0.6, + }, + match_volume_to_activity = true, + max_sounds_per_prototype = 3, + } +} + +angelsLegacy.data["angels-storage-tank-3"] = { + pictures = { + picture = { + sheets = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", + priority = "extra-high", + frames = 4, + width = 142, + height = 199, + shift = util.by_pixel(0, -7.5), + scale = 0.5, + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", + priority = "extra-high", + frames = 4, + width = 207, + height = 199, + shift = util.by_pixel(16.5, 9), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + fluid_background = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + window_background = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + flow_sprite = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + gas_flow = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + frame_count = 1, + animation_speed = 0.25, + }, + } +} + + + +data:extend({ + { + type = "tile", + name = "angels-tile-clay-brick", + needs_correction = false, + minable = { mining_time = 0.5, result = "angels-clay-brick" }, + mined_sound = { filename = "__base__/sound/deconstruct-bricks.ogg" }, + collision_mask = {layers={ + ground_tile=true}}, + walking_speed_modifier = 1.25, + layer = 60, + decorative_removal_probability = 0.75, + variants = { + main = { + { + picture = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-small.png", + count = 16, + scale = 0.5, + size = 1, + }, + }, + transition = { + overlay_layout = { + inner_corner = { + spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-inner.png", + count = 8, + scale = 0.5, + }, + outer_corner = { + spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-outer.png", + count = 1, + scale = 0.5, + }, + side = { + spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-side.png", + count = 8, + scale = 0.5, + }, + -- u_transition = { + -- spritesheet = "__base__/graphics/terrain/stone-path/stone-path-u.png", + -- count = 10, + -- }, + -- o_transition = { + -- spritesheet = "__base__/graphics/terrain/stone-path/stone-path-o.png", + -- count = 10, + -- }, + }, + }, + }, + walking_sound = { + { + filename = "__base__/sound/walking/concrete-1.ogg", + volume = 1.2, + }, + { + filename = "__base__/sound/walking/concrete-2.ogg", + volume = 1.2, + }, + { + filename = "__base__/sound/walking/concrete-3.ogg", + volume = 1.2, + }, + { + filename = "__base__/sound/walking/concrete-4.ogg", + volume = 1.2, + }, + }, + map_color = { r = 50, g = 50, b = 50 }, + absorptions_per_second = {pollution = 0}, + --ageing=0, + vehicle_friction_modifier = 1.1, + }, +}) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 85c34d9..4144a39 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -564,7 +564,41 @@ data:extend({ } }) -local nanofab_pipes = util.table.deepcopy(data.raw["assembling-machine"]["angels-crystallizer"].fluid_boxes[1].pipe_picture) +--local nanofab_pipes = util.table.deepcopy(data.raw["assembling-machine"]["angels-crystallizer"].fluid_boxes[1].pipe_picture) --TODO: check those pipes +local nanofab_pipes = { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-pipe-connection.png", + priority = "extra-high", + size = 128, + x = 0, + shift = { 0, 1 }, + scale = 0.5, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-pipe-connection.png", + priority = "extra-high", + size = 128, + x = 128, + shift = { -1, 0 }, + scale = 0.5, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-pipe-connection.png", + priority = "extra-high", + size = 128, + x = 256, + shift = { 0, -1 }, + scale = 0.5, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-pipe-connection.png", + priority = "extra-high", + size = 128, + x = 384, + shift = { 1, 0 }, + scale = 0.5, + }, + } nanofab_pipes.south = util.table.deepcopy(data.raw["pipe-to-ground"]["pipe-to-ground"].pictures.south) nanofab_pipes.south.shift = {0, -1} @@ -597,10 +631,10 @@ data:extend({ }, energy_usage = "470kW", graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["angels-crystallizer"].graphics_set.animation, 0.775), + animation = scale_image(angelsLegacy.data["angels-crystallizer"].graphics_set.animation, 0.775), }, - impact_category = data.raw["assembling-machine"]["angels-crystallizer"].impact_category, - working_sound = data.raw["assembling-machine"]["angels-crystallizer"].working_sound, + impact_category = angelsLegacy.data["angels-crystallizer"].impact_category, + working_sound = angelsLegacy.data["angels-crystallizer"].working_sound, fluid_boxes = { { production_type = "input", @@ -680,7 +714,7 @@ data:extend({ }, energy_usage = "940kW", graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["angels-crystallizer-2"].graphics_set.animation, 0.775), + animation = scale_image(angelsLegacy.data["angels-crystallizer-2"].graphics_set.animation, 0.775), }, impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, @@ -824,8 +858,33 @@ data:extend({ apparent_volume = 0.5 }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["angels-powder-mixer"].graphics_set.animation, 0.52) - } + animation = scale_image({ + layers = { + { + filename = "__angelssmeltinggraphics__/graphics/entity/powder-mixer/powder-mixer-base.png", + priority = "high", + width = 138, + height = 170, + line_length = 4, + frame_count = 4, + animation_speed = 0.5, + shift = util.by_pixel(0.5, -9.5), + scale = 0.5, + }, + { + filename = "__angelssmeltinggraphics__/graphics/entity/powder-mixer/powder-mixer-shadow.png", + priority = "high", + width = 183, + height = 99, + repeat_count = 4, + animation_speed = 0.5, + draw_as_shadow = true, + shift = util.by_pixel(13, 9), + scale = 0.5, + }, + }, + }, 0.52) + }, } }) diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 798c13f..28cde5c 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -5,7 +5,7 @@ local BASEENTITY = "__base__/graphics/entity/" local function hydro_animation(basename, newtint) local baselayer = scale_image( - data.raw["assembling-machine"][basename].graphics_set.animation.layers[1], 0.725) + angelsLegacy.data[basename].graphics_set.animation.layers[1], 0.725) baselayer.tint = newtint local vertical = { layers = { @@ -71,35 +71,35 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, graphics_set = { animation = hydro_animation("angels-hydro-plant",{0.77, 0.77, 0.68}), - working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant"].graphics_set.working_visualisations, 0.725), + working_visualisations = scale_image(angelsLegacy.data["angels-hydro-plant"].graphics_set.working_visualisations, 0.725), }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, + working_sound = angelsLegacy.data["angels-hydro-plant"].working_sound, fluid_boxes = { { production_type = "input", - pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[1].pipe_picture, + pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "input", - pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[1].pipe_picture, + pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[1].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "output", - pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[2].pipe_picture, + pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[2].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", - pipe_picture = data.raw["assembling-machine"]["angels-hydro-plant"].fluid_boxes[3].pipe_picture, + pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[3].pipe_picture, pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} @@ -137,10 +137,10 @@ data:extend({ next_upgrade = "nullius-hydro-plant-3", graphics_set = { animation = hydro_animation("angels-hydro-plant-2",{0.8, 0.8, 0.9}), - working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant-2"].graphics_set.working_visualisations, 0.725), + working_visualisations = scale_image(angelsLegacy.data["angels-hydro-plant-2"].graphics_set.working_visualisations, 0.725), }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-hydro-plant-2"].working_sound, + working_sound = angelsLegacy.data["angels-hydro-plant-2"].working_sound, fluid_boxes = { { production_type = "input", @@ -200,10 +200,10 @@ data:extend({ fast_replaceable_group = "hydro-plant", graphics_set = { animation = hydro_animation("angels-hydro-plant-3"), - working_visualisations = scale_image(data.raw["assembling-machine"]["angels-hydro-plant-3"].graphics_set.working_visualisations, 0.725), + working_visualisations = scale_image(angelsLegacy.data["angels-hydro-plant-3"].graphics_set.working_visualisations, 0.725), }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-hydro-plant-3"].working_sound, + working_sound = angelsLegacy.data["angels-hydro-plant-3"].working_sound, fluid_boxes = { { production_type = "input", @@ -290,7 +290,7 @@ data:extend({ next_upgrade = "nullius-mirror-hydro-plant-3", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, + working_sound = angelsLegacy.data["angels-hydro-plant"].working_sound, fluid_boxes = { { @@ -356,7 +356,7 @@ data:extend({ fast_replaceable_group = "hydro-plant", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-hydro-plant"].working_sound, + working_sound = angelsLegacy.data["angels-hydro-plant"].working_sound, fluid_boxes = { { @@ -913,7 +913,7 @@ data:extend({ } } }, - impact_category = data.raw["assembling-machine"]["angels-electrolyser"].impact_category, + impact_category = "metal", working_sound = { sound = { filename = "__angelspetrochemgraphics__/sound/electrolyser.ogg", volume = 0.15 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.4 }, diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 1609fa0..04bea13 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -1039,7 +1039,7 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 } }, impact_category = "metal", - working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, + working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1184,7 +1184,7 @@ data:extend({ energy_usage = "495kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, + working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, graphics_set = { @@ -1316,7 +1316,7 @@ data:extend({ energy_usage = "2925kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, + working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1461,7 +1461,7 @@ data:extend({ energy_usage = "1930kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-2"].resistances, impact_category = "metal", - working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, + working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-2"].fluid_boxes, graphics_set = { @@ -1557,7 +1557,7 @@ data:extend({ energy_usage = "7725kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, + working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1697,7 +1697,7 @@ data:extend({ energy_usage = "7650kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = data.raw["mining-drill"]["angels-thermal-extractor"].working_sound, + working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, fluid_boxes = { { production_type = "input", @@ -1798,8 +1798,8 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -1845,8 +1845,8 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -1892,8 +1892,8 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -1932,8 +1932,8 @@ data:extend({ { type = "impact", decrease = 50, percent = 80 } }, energy_source = {type = "void"}, - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -1990,8 +1990,8 @@ data:extend({ { type = "impact", decrease = 50, percent = 80 } }, energy_source = {type = "void"}, - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -2039,8 +2039,8 @@ data:extend({ { type = "impact", decrease = 50, percent = 80 } }, energy_source = {type = "void"}, - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, fast_replaceable_group = "geothermal-plant", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { @@ -2349,8 +2349,8 @@ data:extend({ render_no_network_icon = false }, consumption = "2kW", - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2439,8 +2439,8 @@ data:extend({ render_no_network_icon = false }, consumption = "5kW", - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2529,8 +2529,8 @@ data:extend({ render_no_network_icon = false }, consumption = "20kW", - working_sound = data.raw["assembling-machine"]["angels-chemical-furnace"].working_sound, - impact_category = data.raw["assembling-machine"]["angels-chemical-furnace"].impact_category, + working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index aac0579..2220e02 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -2,7 +2,7 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" -local floatpipepics = data.raw["assembling-machine"]["angels-ore-floatation-cell"].fluid_boxes[1].pipe_picture +local floatpipepics = angelsLegacy.data.floatationpipepictures() data:extend({ @@ -964,9 +964,9 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher"].graphics_set), + graphics_set = util.table.deepcopy(angelsLegacy.data["angels-ore-crusher"].graphics_set), impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-burner-ore-crusher"].working_sound, + working_sound = angelsLegacy.data["angels-burner-ore-crusher"].working_sound, }, { @@ -998,7 +998,7 @@ data:extend({ module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-crusher"].working_sound, + working_sound =angelsLegacy.data["angels-ore-crusher"].working_sound, fluid_boxes = { { production_type = "input", @@ -1014,7 +1014,7 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher-2"].graphics_set) + graphics_set = util.table.deepcopy(angelsLegacy.data["angels-ore-crusher-2"].graphics_set) }, { @@ -1045,7 +1045,7 @@ data:extend({ module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-crusher"].working_sound, + working_sound = angelsLegacy.data["angels-ore-crusher"].working_sound, fluid_boxes = { { production_type = "input", @@ -1061,7 +1061,7 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(data.raw["assembling-machine"]["angels-ore-crusher-3"].graphics_set) + graphics_set = util.table.deepcopy(angelsLegacy.data["angels-ore-crusher-3"].graphics_set) } }) @@ -1130,11 +1130,11 @@ data:extend({ } }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell"].graphics_set.working_visualisations, 0.81), + animation = scale_image(angelsLegacy.data["angels-floatation-cell"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(angelsLegacy.data["angels-floatation-cell"].graphics_set.working_visualisations, 0.81), }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, + working_sound = angelsLegacy.data["angels-floatation-cell"].working_sound, }, { @@ -1197,11 +1197,11 @@ data:extend({ } }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].graphics_set.working_visualisations, 0.81), + animation = scale_image(angelsLegacy.data["angels-floatation-cell-2"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(angelsLegacy.data["angels-floatation-cell-2"].graphics_set.working_visualisations, 0.81), }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell-2"].working_sound, + working_sound = angelsLegacy.data["angels-floatation-cell-2"].working_sound, pipe_covers = pipecoverspictures() }, @@ -1264,11 +1264,11 @@ data:extend({ } }, graphics_set = { - animation = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].graphics_set.working_visualisations, 0.81), + animation = scale_image(angelsLegacy.data["angels-floatation-cell-3"].graphics_set.animation.east, 0.81), + working_visualisations = scale_image(angelsLegacy.data["angels-floatation-cell-3"].graphics_set.working_visualisations, 0.81), }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell-3"].working_sound, + working_sound = angelsLegacy.data["angels-floatation-cell-3"].working_sound, pipe_covers = pipecoverspictures() } }) @@ -1334,7 +1334,7 @@ data:extend({ working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, + working_sound = angelsLegacy.data["angels-floatation-cell"].working_sound, fluid_boxes = { { @@ -1396,7 +1396,7 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["angels-ore-floatation-cell"].working_sound, + working_sound = angelsLegacy.data["angels-floatation-cell"].working_sound, fluid_boxes = { { diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index a799e8e..b2c7c6f 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1089,7 +1089,7 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, + working_sound = angelsLegacy.data["angels-air-filter"].working_sound, impact_category = "metal", fluid_boxes = { { @@ -1176,7 +1176,7 @@ data:extend({ }, module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, - working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, + working_sound = angelsLegacy.data["angels-air-filter"].working_sound, impact_category = "metal", fluid_boxes = { { @@ -1230,7 +1230,7 @@ data:extend({ }, module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, - working_sound = data.raw["assembling-machine"]["angels-air-filter"].working_sound, + working_sound = angelsLegacy.data["angels-air-filter"].working_sound, impact_category = "metal", fluid_boxes = { { @@ -1931,10 +1931,10 @@ data:extend({ } } }, - fluid_background = data.raw["storage-tank"]["angels-storage-tank-3"].pictures.fluid_background, - window_background = data.raw["storage-tank"]["angels-storage-tank-3"].pictures.window_background, - flow_sprite = data.raw["storage-tank"]["angels-storage-tank-3"].pictures.flow_sprite, - gas_flow = data.raw["storage-tank"]["angels-storage-tank-3"].pictures.gas_flow + fluid_background = angelsLegacy.data["angels-storage-tank-3"].pictures.fluid_background, + window_background = angelsLegacy.data["angels-storage-tank-3"].pictures.window_background, + flow_sprite = angelsLegacy.data["angels-storage-tank-3"].pictures.flow_sprite, + gas_flow = angelsLegacy.data["angels-storage-tank-3"].pictures.gas_flow }, flow_length_in_ticks = 360, impact_category = "metal", @@ -2020,11 +2020,11 @@ data:extend({ window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, impact_category = "metal", - working_sound = data.raw["storage-tank"]["angels-storage-tank-1"].working_sound, + working_sound = angelsLegacy.data["angels-storage-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - pictures = util.table.deepcopy(data.raw["storage-tank"]["angels-storage-tank-1"].pictures) + pictures = util.table.deepcopy(angelsLegacy.data["angels-storage-tank-1"].pictures) }, { @@ -2053,11 +2053,11 @@ data:extend({ window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, impact_category = "metal", - working_sound = data.raw["storage-tank"]["angels-storage-tank-1"].working_sound, + working_sound = angelsLegacy.data["angels-storage-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - pictures = util.table.deepcopy(data.raw["storage-tank"]["angels-storage-tank-1"].pictures) + pictures = util.table.deepcopy(angelsLegacy.data["angels-storage-tank-1"].pictures) }, { @@ -2085,11 +2085,11 @@ data:extend({ window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, impact_category = "metal", - working_sound = data.raw["storage-tank"]["angels-storage-tank-1"].working_sound, + working_sound = angelsLegacy.data["angels-storage-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - pictures = data.raw["storage-tank"]["angels-storage-tank-1"].pictures + pictures = angelsLegacy.data["angels-storage-tank-1"].pictures } }) diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index d7cce5c..f89d547 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -190,7 +190,106 @@ data:extend({ energy_source = {type = "void"}, energy_usage = "1kW", graphics_set = { - animation = data.raw["furnace"]["angels-flare-stack"].graphics_set.animation, + animation = { + north = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + frame_count = 1, + width = 142, + height = 429, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + width = 142, + height = 429, + x = 142, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 382, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + width = 142, + height = 429, + x = 284, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 764, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack.png", + priority = "extra-high", + width = 142, + height = 429, + x = 426, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 1146, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + }, working_visualisations = { { apply_recipe_tint = "primary", @@ -362,7 +461,14 @@ data:extend({ } } }, - placeable_position_visualization = data.raw["offshore-pump"]["angels-seafloor-pump"].placeable_position_visualization, + placeable_position_visualization = { + filename = "__core__/graphics/cursor-boxes-32x32.png", + priority = "extra-high-no-scale", + width = 64, + height = 64, + scale = 0.5, + x = 3 * 64, + }, impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, @@ -438,7 +544,14 @@ data:extend({ } } }, - placeable_position_visualization = data.raw["offshore-pump"]["angels-seafloor-pump"].placeable_position_visualization, + placeable_position_visualization = { + filename = "__core__/graphics/cursor-boxes-32x32.png", + priority = "extra-high-no-scale", + width = 64, + height = 64, + scale = 0.5, + x = 3 * 64, + }, impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index ae887bc..9d191cc 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -453,7 +453,7 @@ data:extend({ type = "recipe", name = "nullius-fatty-acid-pyrolysis", localised_name = {"recipe-name.nullius-pyrolysis", {"fluid-name.nullius-fatty-acids"}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, @@ -514,7 +514,7 @@ data:extend({ type = "recipe", name = "nullius-glycerol-reforming", localised_name = {"recipe-name.nullius-reforming", {"fluid-name.nullius-glycerol"}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["oxygen"]}, diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 435ea22..ec2ec2e 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -2,6 +2,8 @@ local ICONPATH = "__nullius__/graphics/icons/" local FLUIDPATH = ICONPATH .. "fluid/" local ENTITYPATH = "__nullius__/graphics/entity/" +--angelsLegacy = require("legacyAngels") + element_tint = { ["carbon"] = { 32, 32, 32 }, ["hydrogen"] = { 240, 240, 240 }, @@ -130,7 +132,7 @@ data:extend({ { type = "fluid", name = "nullius-heavy-water", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/semiheavy-water.png", 72 }, {element_tint["heavy"], element_tint["oxygen"], element_tint["hydrogen"]} ), @@ -172,7 +174,7 @@ data:extend({ { type = "fluid", name = "nullius-air", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["air"], element_tint["residual"], element_tint["air"]} ), subgroup = "air-filtration", @@ -187,7 +189,7 @@ data:extend({ { type = "fluid", name = "nullius-residual-gas", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["residual"], element_tint["trace"], element_tint["residual"]} ), subgroup = "air-filtration", @@ -202,7 +204,7 @@ data:extend({ { type = "fluid", name = "nullius-trace-gas", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["trace"], element_tint["volcanic"], element_tint["trace"]} ), subgroup = "air-filtration", @@ -217,7 +219,7 @@ data:extend({ { type = "fluid", name = "nullius-volcanic-gas", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["volcanic"], element_tint["air"], element_tint["volcanic"]} ), localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(20), @@ -234,7 +236,7 @@ data:extend({ { type = "fluid", name = "nullius-nitrogen", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["nitrogen"], element_tint["nitrogen"], element_tint["nitrogen"]} ), subgroup = "air-filtration", @@ -249,7 +251,7 @@ data:extend({ { type = "fluid", name = "nullius-argon", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["argon"], element_tint["argon"], element_tint["argon"]} ), subgroup = "air-filtration", @@ -264,7 +266,7 @@ data:extend({ { type = "fluid", name = "nullius-helium", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["helium"], element_tint["helium"], element_tint["helium"]} ), subgroup = "air-filtration", @@ -280,7 +282,7 @@ data:extend({ { type = "fluid", name = "nullius-carbon-dioxide", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), @@ -296,7 +298,7 @@ data:extend({ { type = "fluid", name = "nullius-carbon-monoxide", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), @@ -314,7 +316,7 @@ data:extend({ { type = "fluid", name = "nullius-methane", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), @@ -332,7 +334,7 @@ data:extend({ { type = "fluid", name = "nullius-ethylene", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]} ), @@ -348,7 +350,7 @@ data:extend({ { type = "fluid", name = "nullius-propene", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["carbon"]} ), @@ -364,7 +366,7 @@ data:extend({ { type = "fluid", name = "nullius-benzene", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), @@ -394,7 +396,7 @@ data:extend({ { type = "fluid", name = "nullius-methanol", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["hydrogen"]} ), @@ -409,7 +411,7 @@ data:extend({ { type = "fluid", name = "nullius-butadiene", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/butadiene.png", 75 }, {element_tint["hydrogen"], element_tint["carbon"], element_tint["carbon"]} ), @@ -425,7 +427,7 @@ data:extend({ { type = "fluid", name = "nullius-styrene", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/styrene.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["carbon"]} ), @@ -440,7 +442,7 @@ data:extend({ { type = "fluid", name = "nullius-acrylonitrile", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/methylamine.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["nitrogen"]} ), @@ -455,7 +457,7 @@ data:extend({ { type = "fluid", name = "nullius-ech", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/epichlorohydrin.png", 72 }, {element_tint["carbon"], element_tint["chlorine"], element_tint["oxygen"]} ), @@ -470,7 +472,7 @@ data:extend({ { type = "fluid", name = "nullius-glycerol", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["oxygen"]} ), @@ -526,7 +528,7 @@ data:extend({ { type = "fluid", name = "nullius-amino-acids", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["nitrogen"], element_tint["carbon"], element_tint["hydrogen"]} ), subgroup = "biochemistry", @@ -540,7 +542,7 @@ data:extend({ { type = "fluid", name = "nullius-nucleotides", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["carbon"], element_tint["oxygen"], element_tint["nitrogen"]} ), subgroup = "biochemistry", @@ -554,7 +556,7 @@ data:extend({ { type = "fluid", name = "nullius-fatty-acids", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]} ), subgroup = "biochemistry", @@ -631,7 +633,7 @@ data:extend({ { type = "fluid", name = "nullius-hydrogen", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), @@ -648,7 +650,7 @@ data:extend({ { type = "fluid", name = "nullius-deuterium", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["hydrogen"], element_tint["heavy"], element_tint["heavy"]} ), localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), @@ -665,7 +667,7 @@ data:extend({ { type = "fluid", name = "nullius-tritium", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["heavy"], element_tint["heavy"], element_tint["heavy"]} ), subgroup = "inorganic-chemistry", @@ -680,7 +682,7 @@ data:extend({ { type = "fluid", name = "nullius-oxygen", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), localised_description = {"fluid-description.nullius-oxygenation", tostring(100), @@ -697,7 +699,7 @@ data:extend({ { type = "fluid", name = "nullius-chlorine", - icons = angelsmods.functions.create_gas_fluid_icon(nil, + icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["chlorine"], element_tint["chlorine"], element_tint["chlorine"]} ), subgroup = "inorganic-chemistry", @@ -712,7 +714,7 @@ data:extend({ { type = "fluid", name = "nullius-caustic-solution", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {FLUIDPATH .. "sodium-hydroxide.png", 64, nil, 0.18}, {element_tint["sodium"], element_tint["oxygen"], element_tint["hydrogen"]} @@ -728,7 +730,7 @@ data:extend({ { type = "fluid", name = "nullius-calcium-chloride-solution", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {FLUIDPATH .. "calcium-chloride.png", 64, nil, 0.18 }, {element_tint["calcium"], element_tint["chlorine"], element_tint["chlorine"]} @@ -744,7 +746,7 @@ data:extend({ { type = "fluid", name = "nullius-titanium-tetrachloride", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["titanium"], element_tint["titanium"], element_tint["chlorine"]} ), subgroup = "inorganic-chemistry", @@ -758,7 +760,7 @@ data:extend({ { type = "fluid", name = "nullius-copper-solution", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["copper"], element_tint["copper"], element_tint["copper"]} ), subgroup = "inorganic-chemistry", @@ -773,7 +775,7 @@ data:extend({ { type = "fluid", name = "nullius-hydrogen-chloride", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", 72, nil, 0.15}, {element_tint["chlorine"], element_tint["chlorine"], element_tint["hydrogen"]} @@ -790,7 +792,7 @@ data:extend({ { type = "fluid", name = "nullius-acid-hydrochloric", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen-chloride.png", 72, nil, 0.15 }, {element_tint["chlorine"], element_tint["chlorine"], element_tint["hydrogen"]} @@ -806,7 +808,7 @@ data:extend({ { type = "fluid", name = "nullius-sulfur-dioxide", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72, nil, 0.17}, {element_tint["sulfur"], element_tint["oxygen"], element_tint["oxygen"]} @@ -823,7 +825,7 @@ data:extend({ { type = "fluid", name = "nullius-acid-sulfuric", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/sulfuric-acid.png", 72, nil, 0.18}, {element_tint["sulfur"], element_tint["oxygen"], element_tint["hydrogen"]} @@ -839,7 +841,7 @@ data:extend({ { type = "fluid", name = "nullius-ammonia", - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/ammonia.png", 72 }, {element_tint["nitrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), @@ -857,7 +859,7 @@ data:extend({ { type = "fluid", name = "nullius-acid-nitric", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/nitric-acid.png", 72, nil, 0.18}, {element_tint["nitrogen"], element_tint["oxygen"], element_tint["hydrogen"]} @@ -874,7 +876,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-air", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["air"], element_tint["residual"], element_tint["air"]} ), localised_description = {"fluid-description.nullius-recapture", tostring(85), @@ -891,7 +893,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-residual-gas", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["residual"], element_tint["trace"], element_tint["residual"]} ), localised_description = {"fluid-description.nullius-recapture", tostring(90), @@ -908,7 +910,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-trace-gas", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["trace"], element_tint["volcanic"], element_tint["trace"]} ), localised_description = {"fluid-description.nullius-recapture", tostring(90), @@ -925,7 +927,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-nitrogen", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["nitrogen"], element_tint["nitrogen"], element_tint["nitrogen"]} ), localised_description = {"fluid-description.nullius-recapture", tostring(90), @@ -942,7 +944,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-argon", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["argon"], element_tint["argon"], element_tint["argon"]} ), localised_description = {"fluid-description.nullius-recapture", tostring(96), @@ -959,7 +961,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-helium", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["helium"], element_tint["helium"], element_tint["helium"]} ), localised_description = {"fluid-description.nullius-recapture", tostring(99), @@ -976,7 +978,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-hydrogen", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), @@ -994,7 +996,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-oxygen", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), localised_description = {"fluid-description.nullius-oxygenation", tostring(400), @@ -1012,7 +1014,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-carbon-dioxide", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), @@ -1030,7 +1032,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-carbon-monoxide", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), @@ -1049,7 +1051,7 @@ data:extend({ { type = "fluid", name = "nullius-compressed-methane", - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), @@ -1314,7 +1316,7 @@ data:extend({ type = "recipe", name = "nullius-saline-caustic-solution", localised_name = {"", {"fluid-name.nullius-caustic-solution"}, " ", tostring(1)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "sodium-hydroxide.png", 64}}, {element_tint["sodium"], element_tint["oxygen"], element_tint["hydrogen"]}, {{FLUIDPATH .. "brine.png", 64 }} @@ -1339,7 +1341,7 @@ data:extend({ type = "recipe", name = "nullius-caustic-solution", localised_name = {"", {"fluid-name.nullius-caustic-solution"}, " ", tostring(2)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "sodium-hydroxide.png", 64}}, {element_tint["hydrogen"], element_tint["oxygen"], element_tint["sodium"]}, {{FLUIDPATH .. "purewater.png", 64 }} @@ -1418,7 +1420,7 @@ data:extend({ { type = "recipe", name = "nullius-hydrogen-chloride-electrolysis", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", 72}}, {element_tint["hydrogen"], element_tint["chlorine"], element_tint["chlorine"]}, @@ -1954,7 +1956,7 @@ data:extend({ type = "recipe", name = "nullius-wastewater-filtration", localised_name = {"recipe-name.nullius-wastewater-filtration"}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "sludge.png", 64}, {"__base__/graphics/icons/fluid/water.png", 64}}, {element_tint["waste"], element_tint["sludge"], element_tint["saline"]}, @@ -2029,7 +2031,7 @@ data:extend({ type = "recipe", name = "nullius-desalination", localised_name = {"", {"recipe-name.nullius-desalination"}, " ", tostring(1)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "brine.png", 64 }, {FLUIDPATH .. "purewater.png", 64 }}, {element_tint["saline"], element_tint["brine"], element_tint["water"]}, @@ -2053,7 +2055,7 @@ data:extend({ type = "recipe", name = "nullius-desalination-2", localised_name = {"", {"recipe-name.nullius-desalination"}, " ", tostring(2)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "brine.png", 64 }, {FLUIDPATH .. "purewater.png", 64 }, {FLUIDPATH .. "wastewater.png", 64 }}, @@ -2080,7 +2082,7 @@ data:extend({ type = "recipe", name = "nullius-desalination-3", localised_name = {"", {"recipe-name.nullius-desalination"}, " ", tostring(3)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "purewater.png", 64 }, {FLUIDPATH .. "brine.png", 64 }, {FLUIDPATH .. "wastewater.png", 64 }}, @@ -2107,7 +2109,7 @@ data:extend({ { type = "recipe", name = "nullius-saline-electrolysis", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}}, @@ -2132,7 +2134,7 @@ data:extend({ { type = "recipe", name = "nullius-water-electrolysis", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["water"], element_tint["oxygen"], element_tint["hydrogen"]}, @@ -2154,7 +2156,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-water-electrolysis", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], element_tint["water"]}, @@ -2177,7 +2179,7 @@ data:extend({ type = "recipe", name = "nullius-steam-electrolysis", localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {{ 56, 142, 147 }, element_tint["oxygen"], element_tint["hydrogen"]}, @@ -2201,7 +2203,7 @@ data:extend({ name = "nullius-pressure-steam-electrolysis", localised_name = {"recipe-name.nullius-pressure", {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], { 56, 142, 147 }}, @@ -2224,7 +2226,7 @@ data:extend({ type = "recipe", name = "nullius-high-pressure-steam-electrolysis", localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-pressure-steam"}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, {element_tint["oxygen"], element_tint["hydrogen"], { 129, 202, 210 }}, @@ -2246,7 +2248,7 @@ data:extend({ { type = "recipe", name = "nullius-brine-electrolysis", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/chlorine.png", 72}, {FLUIDPATH .. "sodium-hydroxide.png", 64, nil, 0.9}}, @@ -2698,7 +2700,7 @@ data:extend({ { type = "recipe", name = "nullius-air-separation-1", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", 64}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["air"], element_tint["nitrogen"], element_tint["carbon"]}, @@ -2722,7 +2724,7 @@ data:extend({ { type = "recipe", name = "nullius-air-separation-2", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", 64}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["air"], element_tint["carbon"], element_tint["residual"]}, @@ -2747,7 +2749,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-air-separation", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/nitrogen.png", 64}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["air"], element_tint["carbon"], element_tint["residual"]}, @@ -2772,7 +2774,7 @@ data:extend({ { type = "recipe", name = "nullius-oxygen-separation", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["oxygen"], element_tint["carbon"], element_tint["residual"]}, @@ -2797,7 +2799,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-oxygen-separation", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["oxygen"], element_tint["carbon"], element_tint["residual"]}, @@ -2823,7 +2825,7 @@ data:extend({ type = "recipe", name = "nullius-residual-gas", localised_name = {"fluid-name.nullius-residual-gas"}, - icons = angelsmods.functions.create_liquid_recipe_icon(nil, + icons = angelsLegacy.functions.create_liquid_recipe_icon(nil, {element_tint["residual"], element_tint["air"], element_tint["residual"]}, nil ), @@ -2848,7 +2850,7 @@ data:extend({ { type = "recipe", name = "nullius-residual-separation", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["argon"]}, {FLUIDPATH .. "purewater.png", 64}}, {element_tint["residual"], element_tint["argon"], element_tint["water"]}, @@ -2873,7 +2875,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-residual-separation", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["argon"]}, {FLUIDPATH .. "purewater.png", 64}}, {element_tint["residual"], element_tint["argon"], element_tint["water"]}, @@ -2898,7 +2900,7 @@ data:extend({ { type = "recipe", name = "nullius-trace-separation", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}, {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["trace"], element_tint["helium"], element_tint["methane"]}, @@ -2923,7 +2925,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-trace-separation", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}, {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["trace"], element_tint["helium"], element_tint["methane"]}, @@ -2949,7 +2951,7 @@ data:extend({ type = "recipe", name = "nullius-volcanic-separation-1", localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(1)}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["volcanic"], element_tint["sulfur"], element_tint["carbon"]}, @@ -2975,7 +2977,7 @@ data:extend({ type = "recipe", name = "nullius-volcanic-separation-2", localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(2)}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["sulfur"], element_tint["carbon"], element_tint["boron"]}, @@ -3025,7 +3027,7 @@ data:extend({ type = "recipe", name = "nullius-volcanic-separation-3", localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(3)}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, {FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}}, {element_tint["sulfur"], element_tint["helium"], element_tint["boron"]}, @@ -3095,7 +3097,7 @@ data:extend({ type = "recipe", name = "nullius-carbon-dioxide-to-monoxide", localised_name = {"recipe-name.nullius-carbon-dioxide-to-monoxide"}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} @@ -3122,7 +3124,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-carbon-monoxide", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} @@ -3149,7 +3151,7 @@ data:extend({ type = "recipe", name = "nullius-carbon-monoxide-to-dioxide", localised_name = {"recipe-name.nullius-carbon-monoxide-to-dioxide"}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}} @@ -3177,7 +3179,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-carbon-dioxide", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}} @@ -3273,7 +3275,7 @@ data:extend({ type = "recipe", name = "nullius-carbon-gasification-1", localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(1)}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__base__/graphics/icons/coal-dark-background.png", 64}} @@ -3301,7 +3303,7 @@ data:extend({ type = "recipe", name = "nullius-carbon-gasification-2", localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(2)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__base__/graphics/icons/coal-dark-background.png", 64}} @@ -3403,7 +3405,7 @@ data:extend({ { type = "recipe", name = "nullius-legacy-graphite-to-carbon-monoxide", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, {{"__base__/graphics/icons/coal-dark-background.png", 64}} @@ -3469,7 +3471,7 @@ data:extend({ type = "recipe", name = "nullius-carbon-dioxide-electrolysis", localised_name = {"recipe-name.nullius-carbon-dioxide-electrolysis"}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, @@ -3493,7 +3495,7 @@ data:extend({ type = "recipe", name = "nullius-carbon-monoxide-to-alkenes", localised_name = {"recipe-name.nullius-alkene-synthesis"}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, @@ -3520,7 +3522,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-alkene-synthesis", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, @@ -3547,7 +3549,7 @@ data:extend({ type = "recipe", name = "nullius-alkene-synthesis-light", localised_name = {"recipe-name.nullius-light", {"recipe-name.nullius-alkene-synthesis"}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, @@ -3574,7 +3576,7 @@ data:extend({ { type = "recipe", name = "nullius-carbon-dioxide-to-methane", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} @@ -3601,7 +3603,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-methane", - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}}, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} @@ -3627,7 +3629,7 @@ data:extend({ { type = "recipe", name = "nullius-methane-to-ethylene", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} @@ -3655,7 +3657,7 @@ data:extend({ type = "recipe", name = "nullius-pressure-ethylene", localised_name = {"recipe-name.nullius-pressure-ethylene"}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} @@ -3682,7 +3684,7 @@ data:extend({ { type = "recipe", name = "nullius-methanol", - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["hydrogen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} @@ -3710,7 +3712,7 @@ data:extend({ type = "recipe", name = "nullius-pressure-methanol", localised_name = {"recipe-name.nullius-pressure-methanol"}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", 72}}, {element_tint["carbon"], element_tint["oxygen"], element_tint["hydrogen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} @@ -3758,7 +3760,7 @@ data:extend({ type = "recipe", name = "nullius-pressure-butadiene", localised_name = {"recipe-name.nullius-pressure", {"fluid-name.nullius-butadiene"}}, - icons = angelsmods.functions.create_liquid_fluid_icon( + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/butadiene.png", 75 }, {element_tint["hydrogen"], element_tint["carbon"], element_tint["carbon"]} ), @@ -5075,7 +5077,7 @@ data:extend({ type = "recipe", name = "nullius-ethylene-pyrolysis", localised_name = {"recipe-name.nullius-ethylene-pyrolysis"}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, @@ -5102,7 +5104,7 @@ data:extend({ type = "recipe", name = "nullius-propene-pyrolysis", localised_name = {"recipe-name.nullius-propene-pyrolysis"}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}}, @@ -5129,7 +5131,7 @@ data:extend({ type = "recipe", name = "nullius-methane-reforming", localised_name = {"recipe-name.nullius-reforming", {"fluid-name.nullius-methane"}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["hydrogen"], element_tint["carbon"], element_tint["oxygen"]}, @@ -5155,7 +5157,7 @@ data:extend({ type = "recipe", name = "nullius-benzene-reforming", localised_name = {"recipe-name.nullius-reforming", {"fluid-name.nullius-benzene"}}, - icons = angelsmods.functions.create_gas_recipe_icon( + icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, @@ -5184,7 +5186,7 @@ data:extend({ name = "nullius-pressure-benzene-reforming", localised_name = {"recipe-name.nullius-pressure", {"recipe-name.nullius-reforming", {"fluid-name.nullius-benzene"}}}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, @@ -6098,7 +6100,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-air", localised_name = {"recipe-name.nullius-decompress-air"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["air"], element_tint["residual"], element_tint["air"]} ), @@ -6124,7 +6126,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-nitrogen", localised_name = {"recipe-name.nullius-decompress-nitrogen"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["nitrogen"], element_tint["nitrogen"], element_tint["nitrogen"]} ), @@ -6150,7 +6152,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-argon", localised_name = {"recipe-name.nullius-decompress-argon"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["argon"], element_tint["argon"], element_tint["argon"]} ), @@ -6176,7 +6178,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-helium", localised_name = {"recipe-name.nullius-decompress-helium"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["helium"], element_tint["helium"], element_tint["helium"]} ), @@ -6202,7 +6204,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-hydrogen", localised_name = {"recipe-name.nullius-decompress-hydrogen"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), @@ -6228,7 +6230,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-oxygen", localised_name = {"recipe-name.nullius-decompress-oxygen"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), @@ -6254,7 +6256,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-carbon-dioxide", localised_name = {"recipe-name.nullius-decompress-carbon-dioxide"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), @@ -6280,7 +6282,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-carbon-monoxide", localised_name = {"recipe-name.nullius-decompress-carbon-monoxide"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), @@ -6306,7 +6308,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-methane", localised_name = {"recipe-name.nullius-decompress-methane"}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), @@ -6333,7 +6335,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-residual-gas", localised_name = {"recipe-name.nullius-decompression", {"fluid-name.nullius-residual-gas"}}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["residual"], element_tint["trace"], element_tint["residual"]} ), @@ -6359,7 +6361,7 @@ data:extend({ type = "recipe", name = "nullius-decompress-trace-gas", localised_name = {"recipe-name.nullius-decompression", {"fluid-name.nullius-trace-gas"}}, - icons = angelsmods.functions.create_gas_fluid_icon( + icons = angelsLegacy.functions.create_gas_fluid_icon( {"__angelsrefininggraphics__/graphics/icons/barreling-pump.png", 32 }, {element_tint["trace"], element_tint["volcanic"], element_tint["trace"]} ), @@ -7037,7 +7039,7 @@ data:extend({ type = "recipe", name = "nullius-pressure-solvent", localised_name = {"recipe-name.nullius-pressure-solvent"}, - icons = angelsmods.functions.create_liquid_recipe_icon(nil, + icons = angelsLegacy.functions.create_liquid_recipe_icon(nil, {element_tint["solvent"], element_tint["solvent"], element_tint["solvent"]}, nil ), @@ -7290,7 +7292,7 @@ data:extend({ type = "recipe", name = "nullius-glycerol-to-ech", localised_name = {"", {"fluid-name.nullius-ech"}, " ", tostring(2)}, - icons = angelsmods.functions.create_liquid_recipe_icon( + icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/epichlorohydrin.png", 72}}, {element_tint["carbon"], element_tint["chlorine"], element_tint["oxygen"]}, {{"__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", 72}} diff --git a/nullius/prototypes/item/void.lua b/nullius/prototypes/item/void.lua index 23f40cc..e94fad6 100644 --- a/nullius/prototypes/item/void.lua +++ b/nullius/prototypes/item/void.lua @@ -139,7 +139,7 @@ data:extend({ icon_size = data.raw.fluid["nullius-saline"].icon_size, } }, - crafting_machine_tint = { primary = data.raw.fluid["angels-water-saline"].flow_color }, + crafting_machine_tint = { primary = angelsLegacy.functions.flow_color("Ws4NaCl")}, --{r = 0.9, g = 0.9, b = 1} category = "nullius-liquid-void", subgroup = "nullius-liquid-void", hide_from_player_crafting = true, diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index 5ab71fd..6295711 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -364,8 +364,3 @@ for _,character in pairs(data.raw["character"]) do character.subgroup = "armor" end -for _,tip in pairs(data.raw["tips-and-tricks-item"]) do - if (string.sub(tip.name, 1, 7) == "angels-") then - data.raw["tips-and-tricks-item"][tip.name] = nil - end -end diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index cac8a72..340f1ff 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -1,7 +1,5 @@ local BASEENTITY = "__base__/graphics/entity/" -angelsmods.refining.disable_ore_override = true - local resource_autoplace = require("resource-autoplace") resource_autoplace.initialize_patch_set("iron-ore", true) diff --git a/nullius/prototypes/resource_override.lua b/nullius/prototypes/resource_override.lua index 754e575..8e404af 100644 --- a/nullius/prototypes/resource_override.lua +++ b/nullius/prototypes/resource_override.lua @@ -1,16 +1,16 @@ local resource_autoplace = require("resource-autoplace") -for r, subdir in pairs(angelsmods.functions.store) do - for r, input in pairs(subdir) do - if (not input.inactive) then - if ((input.name == "coal") or (input.name == "crude-oil")) then - input.inactive = true - else - angelsmods.functions.remove_resource(input.name) - end - end - end -end +-- for r, subdir in pairs(angelsmods.functions.store) do -- TODO: remove that +-- for r, input in pairs(subdir) do +-- if (not input.inactive) then +-- if ((input.name == "coal") or (input.name == "crude-oil")) then +-- input.inactive = true +-- else +-- angelsmods.functions.remove_resource(input.name) +-- end +-- end +-- end +-- end function remove_autoplace(resource) @@ -33,8 +33,8 @@ remove_autoplace("uranium-ore") remove_autoplace("coal") remove_autoplace("crude-oil") -angelsmods.functions.remove_resource("stone") -angelsmods.functions.remove_resource("trees") +angelsLegacy.functions.remove_resource("stone") +angelsLegacy.functions.remove_resource("trees") data.raw["autoplace-control"]["iron-ore"].localised_name = nil diff --git a/nullius/prototypes/rock.lua b/nullius/prototypes/rock.lua index ddfacba..df23ca4 100644 --- a/nullius/prototypes/rock.lua +++ b/nullius/prototypes/rock.lua @@ -113,20 +113,20 @@ for _,rock in pairs(data.raw["simple-entity"]) do end -if (data.raw["simple-entity"]["angels-crystal-rock"] ~= nil) then - data.raw["simple-entity"]["angels-crystal-rock"].minable = { - mining_particle = "stone-particle", - mining_time = 8, - results = { - {type="item", name="nullius-silica", amount=16}, - {type="item", name="nullius-alumina", amount=8} - } - } - data.raw["simple-entity"]["angels-crystal-rock"].loot = { - {item = "nullius-silica", probability = 1, count_min = 4, count_max = 12}, - {item = "nullius-alumina", probability = 1, count_min = 2, count_max = 6} - } -end +-- if (data.raw["simple-entity"]["angels-crystal-rock"] ~= nil) then --TODO: decide if we include this kind of rock or if we remove it completely +-- data.raw["simple-entity"]["angels-crystal-rock"].minable = { +-- mining_particle = "stone-particle", +-- mining_time = 8, +-- results = { +-- {type="item", name="nullius-silica", amount=16}, +-- {type="item", name="nullius-alumina", amount=8} +-- } +-- } +-- data.raw["simple-entity"]["angels-crystal-rock"].loot = { +-- {item = "nullius-silica", probability = 1, count_min = 4, count_max = 12}, +-- {item = "nullius-alumina", probability = 1, count_min = 2, count_max = 6} +-- } +-- end if (data.raw["simple-entity"]["sand-rock-big-white"] ~= nil) then table.insert(data.raw["simple-entity"]["sand-rock-big-white"].minable.results, {type="item", name="nullius-soda-ash", probability=0.1, amount_min=1, amount_max=2} diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 26440cd..7ba4962 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -2898,7 +2898,7 @@ data:extend({ type = "technology", name = "nullius-nitrogen-chemistry-1", order = "nullius-dg", - icons = data.raw.technology["angels-nitrogen-processing-1"].icons, + icons = angelsLegacy.functions.create_gas_tech_icon("NNN"), effects = { { type = "unlock-recipe", @@ -3395,7 +3395,7 @@ data:extend({ type = "technology", name = "nullius-sulfur-processing-1", order = "nullius-dj", - icons = data.raw.technology["angels-sulfur-processing-1"].icons, + icons = angelsLegacy.functions.create_gas_tech_icon("SSS"), effects = { { type = "unlock-recipe", @@ -4172,7 +4172,7 @@ data:extend({ { type = "technology", name = "nullius-nitrogen-chemistry-2", - icons = data.raw.technology["angels-nitrogen-processing-1"].icons, + icons = angelsLegacy.functions.create_gas_tech_icon("NNN"), order = "nullius-ed", effects = { { @@ -4285,7 +4285,7 @@ data:extend({ type = "technology", name = "nullius-sulfur-processing-2", order = "nullius-ed", - icons = data.raw.technology["angels-sulfur-processing-1"].icons, + icons = angelsLegacy.functions.create_gas_tech_icon("SSS"), effects = { { type = "unlock-recipe", @@ -8555,7 +8555,7 @@ data:extend({ name = "nullius-high-pressure-chemistry", localised_name = {"", {"technology-name.nullius-high-pressure-chemistry"}, " ", tostring(1)}, order = "nullius-eo", - icons = angelsmods.functions.create_liquid_fluid_icon(nil, + icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), effects = { @@ -13714,7 +13714,7 @@ data:extend({ type = "technology", name = "nullius-nitrogen-chemistry-3", order = "nullius-gf", - icons = data.raw.technology["angels-nitrogen-processing-1"].icons, + icons = angelsLegacy.functions.create_gas_tech_icon("NNN"), effects = { { type = "unlock-recipe", diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index b2aa4cc..0e01832 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -208,7 +208,6 @@ end script.on_event(defines.events.on_player_created, function(event) local player = game.players[event.player_index] - player.remove_item{name = "angels-burner-ore-crusher", count = 1} local intro = {"nullius-intro"} if (not storage.init_landing) then diff --git a/nullius/settings-updates.lua b/nullius/settings-updates.lua index 42faa8b..9cf65c1 100644 --- a/nullius/settings-updates.lua +++ b/nullius/settings-updates.lua @@ -139,47 +139,6 @@ for _, setting in pairs(biome_grass_color) do end end - -if data.raw['string-setting']['angels-enable-auto-barreling'] then - data.raw['string-setting']['angels-enable-auto-barreling'].hidden = true - data.raw['string-setting']['angels-enable-auto-barreling'].default_value = "Disabled" - data.raw['string-setting']['angels-enable-auto-barreling'].allowed_values = {"Disabled"} -end - -if data.raw['bool-setting']['angels-enable-converter'] then - data.raw['bool-setting']['angels-enable-converter'].hidden = true - data.raw['bool-setting']['angels-enable-converter'].forced_value = true -end -if data.raw['bool-setting']['angels-hide-converter'] then - data.raw['bool-setting']['angels-hide-converter'].hidden = true - data.raw['bool-setting']['angels-hide-converter'].forced_value = true -end -if data.raw['bool-setting']['angels-enable-acids'] then - data.raw['bool-setting']['angels-enable-acids'].hidden = true - data.raw['bool-setting']['angels-enable-acids'].forced_value = true -end - -if data.raw['bool-setting']['angels-disable-bobs-electrolysers'] then - data.raw['bool-setting']['angels-disable-bobs-electrolysers'].hidden = true - data.raw['bool-setting']['angels-disable-bobs-electrolysers'].forced_value = true -end -if data.raw['bool-setting']['angels-disable-vanilla-chemical-plants'] then - data.raw['bool-setting']['angels-disable-vanilla-chemical-plants'].hidden = true - data.raw['bool-setting']['angels-disable-vanilla-chemical-plants'].forced_value = true -end -if data.raw['bool-setting']['angels-disable-bobs-chemical-plants'] then - data.raw['bool-setting']['angels-disable-bobs-chemical-plants'].hidden = true - data.raw['bool-setting']['angels-disable-bobs-chemical-plants'].forced_value = true -end -if data.raw['bool-setting']['angels-disable-bobs-distilleries'] then - data.raw['bool-setting']['angels-disable-bobs-distilleries'].hidden = true - data.raw['bool-setting']['angels-disable-bobs-distilleries'].forced_value = true -end -if data.raw['bool-setting']['angels-show-chemical-formula'] then - data.raw['bool-setting']['angels-show-chemical-formula'].hidden = true - data.raw['bool-setting']['angels-show-chemical-formula'].forced_value = true -end - if data.raw['bool-setting']['bobmods-plates-cheapersteel'] then data.raw['bool-setting']['bobmods-plates-cheapersteel'].hidden = true data.raw['bool-setting']['bobmods-plates-cheapersteel'].forced_value = true @@ -233,69 +192,6 @@ if data.raw['int-setting']['bobmods-plates-inventorysize'] then data.raw['int-setting']['bobmods-plates-inventorysize'].allowed_values = {80} end -if data.raw['bool-setting']['angels-enable-hide-void'] then - data.raw['bool-setting']['angels-enable-hide-void'].hidden = true - data.raw['bool-setting']['angels-enable-hide-void'].forced_value = true -end -if data.raw['bool-setting']['angels-enable-auto-barreling'] then - data.raw['bool-setting']['angels-enable-auto-barreling'].hidden = true - data.raw['bool-setting']['angels-enable-auto-barreling'].forced_value = false -end -if data.raw['bool-setting']['angels-tryptophobia-friendly-stiratite'] then - data.raw['bool-setting']['angels-tryptophobia-friendly-stiratite'].hidden = true - data.raw['bool-setting']['angels-tryptophobia-friendly-stiratite'].forced_value = false -end -if data.raw['bool-setting']['angels-starting-resource-ore1'] then - data.raw['bool-setting']['angels-starting-resource-ore1'].hidden = true - data.raw['bool-setting']['angels-starting-resource-ore1'].forced_value = true -end -if data.raw['bool-setting']['angels-starting-resource-ore3'] then - data.raw['bool-setting']['angels-starting-resource-ore3'].hidden = true - data.raw['bool-setting']['angels-starting-resource-ore3'].forced_value = true -end -if data.raw['bool-setting']['angels-starting-resource-ore5'] then - data.raw['bool-setting']['angels-starting-resource-ore5'].hidden = true - data.raw['bool-setting']['angels-starting-resource-ore5'].forced_value = true -end -if data.raw['bool-setting']['angels-starting-resource-ore6'] then - data.raw['bool-setting']['angels-starting-resource-ore6'].hidden = true - data.raw['bool-setting']['angels-starting-resource-ore6'].forced_value = true -end -if data.raw['bool-setting']['angels-starting-resource-ore2'] then - data.raw['bool-setting']['angels-starting-resource-ore2'].hidden = true - data.raw['bool-setting']['angels-starting-resource-ore2'].forced_value = false -end -if data.raw['bool-setting']['angels-starting-resource-ore4'] then - data.raw['bool-setting']['angels-starting-resource-ore4'].hidden = true - data.raw['bool-setting']['angels-starting-resource-ore4'].forced_value = false -end - -if data.raw['double-setting']['angels-marathon-buildingmulti'] then - data.raw['double-setting']['angels-marathon-buildingmulti'].hidden = true - data.raw['double-setting']['angels-marathon-buildingmulti'].allowed_values = {2} -end -if data.raw['double-setting']['angels-marathon-buildingtime'] then - data.raw['double-setting']['angels-marathon-buildingtime'].hidden = true - data.raw['double-setting']['angels-marathon-buildingtime'].allowed_values = {2} -end -if data.raw['double-setting']['angels-marathon-rawmulti'] then - data.raw['double-setting']['angels-marathon-rawmulti'].hidden = true - data.raw['double-setting']['angels-marathon-rawmulti'].allowed_values = {1} -end - -if data.raw['double-setting']['angels-marathon-intermediatemulti'] then - data.raw['double-setting']['angels-marathon-intermediatemulti'].hidden = true - data.raw['double-setting']['angels-marathon-intermediatemulti'].allowed_values = {1} -end -if data.raw['double-setting']['angels-starting-resource-base'] then - data.raw['double-setting']['angels-starting-resource-base'].hidden = true - data.raw['double-setting']['angels-starting-resource-base'].allowed_values = {40000} -end -if data.raw['int-setting']['angels-pavement-stack-size'] then - data.raw['int-setting']['angels-pavement-stack-size'].hidden = true - data.raw['int-setting']['angels-pavement-stack-size'].allowed_values = {200} -end - if data.raw['string-setting']['fuel-fluid'] then data.raw['string-setting']['fuel-fluid'].hidden = true data.raw['string-setting']['fuel-fluid'].default_value = "nullius-steam" From 0b6173e7fe83b0c951aacd90389adf1c9fac8ce2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 14 Aug 2025 13:59:02 +0200 Subject: [PATCH 034/236] Renamed angels-tile-clay-brick to nullius-tile-clay-brick --- nullius/legacyAngels.lua | 76 ---------------------- nullius/migrations/nullius_2.0.0.json | 5 +- nullius/prototypes/entity/environment.lua | 78 +++++++++++++++++++++++ nullius/prototypes/item/intermediate.lua | 2 +- nullius/prototypes/override.lua | 10 --- 5 files changed, 83 insertions(+), 88 deletions(-) diff --git a/nullius/legacyAngels.lua b/nullius/legacyAngels.lua index b93973c..a4d8a04 100644 --- a/nullius/legacyAngels.lua +++ b/nullius/legacyAngels.lua @@ -2722,79 +2722,3 @@ angelsLegacy.data["angels-storage-tank-3"] = { }, } } - - - -data:extend({ - { - type = "tile", - name = "angels-tile-clay-brick", - needs_correction = false, - minable = { mining_time = 0.5, result = "angels-clay-brick" }, - mined_sound = { filename = "__base__/sound/deconstruct-bricks.ogg" }, - collision_mask = {layers={ - ground_tile=true}}, - walking_speed_modifier = 1.25, - layer = 60, - decorative_removal_probability = 0.75, - variants = { - main = { - { - picture = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-small.png", - count = 16, - scale = 0.5, - size = 1, - }, - }, - transition = { - overlay_layout = { - inner_corner = { - spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-inner.png", - count = 8, - scale = 0.5, - }, - outer_corner = { - spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-outer.png", - count = 1, - scale = 0.5, - }, - side = { - spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-side.png", - count = 8, - scale = 0.5, - }, - -- u_transition = { - -- spritesheet = "__base__/graphics/terrain/stone-path/stone-path-u.png", - -- count = 10, - -- }, - -- o_transition = { - -- spritesheet = "__base__/graphics/terrain/stone-path/stone-path-o.png", - -- count = 10, - -- }, - }, - }, - }, - walking_sound = { - { - filename = "__base__/sound/walking/concrete-1.ogg", - volume = 1.2, - }, - { - filename = "__base__/sound/walking/concrete-2.ogg", - volume = 1.2, - }, - { - filename = "__base__/sound/walking/concrete-3.ogg", - volume = 1.2, - }, - { - filename = "__base__/sound/walking/concrete-4.ogg", - volume = 1.2, - }, - }, - map_color = { r = 50, g = 50, b = 50 }, - absorptions_per_second = {pollution = 0}, - --ageing=0, - vehicle_friction_modifier = 1.1, - }, -}) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index d489057..f46bbf6 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -1,6 +1,9 @@ { "recipe": [ - ["nullius-empty-canister", "nullius-canister"] + ["nullius-empty-canister", "nullius-canister"] + ], + "tile":[ + ["angels-tile-clay-brick", "nullius-tile-clay-brick"] ] } \ No newline at end of file diff --git a/nullius/prototypes/entity/environment.lua b/nullius/prototypes/entity/environment.lua index b4952ed..833e6c0 100644 --- a/nullius/prototypes/entity/environment.lua +++ b/nullius/prototypes/entity/environment.lua @@ -156,3 +156,81 @@ data:extend({ } } }) + +data:extend({ + { + type = "tile", + name = "nullius-tile-clay-brick", + localised_name = {"tile-name.nullius-refractory-brick"}, + needs_correction = false, + minable = { mining_time = 0.5, result = "nullius-refractory-brick" }, + mined_sound = { filename = "__base__/sound/deconstruct-bricks.ogg" }, + collision_mask = {layers={ + ground_tile=true}}, + walking_speed_modifier = 1.4, + layer = 60, + decorative_removal_probability = 0.75, + variants = { + main = { + { + picture = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-small.png", + count = 16, + scale = 0.5, + size = 1, + }, + }, + transition = { + overlay_layout = { + inner_corner = { + spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-inner.png", + count = 8, + scale = 0.5, + }, + outer_corner = { + spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-outer.png", + count = 1, + scale = 0.5, + }, + side = { + spritesheet = "__angelssmeltinggraphics__/graphics/entity/tiles/clay-bricks-side.png", + count = 8, + scale = 0.5, + }, + -- u_transition = { + -- spritesheet = "__base__/graphics/terrain/stone-path/stone-path-u.png", + -- count = 10, + -- }, + -- o_transition = { + -- spritesheet = "__base__/graphics/terrain/stone-path/stone-path-o.png", + -- count = 10, + -- }, + }, + }, + }, + walking_sound = { + { + filename = "__base__/sound/walking/concrete-1.ogg", + volume = 1.2, + }, + { + filename = "__base__/sound/walking/concrete-2.ogg", + volume = 1.2, + }, + { + filename = "__base__/sound/walking/concrete-3.ogg", + volume = 1.2, + }, + { + filename = "__base__/sound/walking/concrete-4.ogg", + volume = 1.2, + }, + }, + map_color = { r = 50, g = 50, b = 50 }, + absorptions_per_second = {pollution = 0}, + --ageing=0, + vehicle_friction_modifier = 0.7, + placeable_by = {item = "nullius-refractory-brick", count = 1}, + transitions = data.raw.tile["stone-path"].transitions, + transitions_between_transitions = data.raw.tile["stone-path"].transitions_between_transitions + }, +}) diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 4213b1f..10d32ba 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -4614,7 +4614,7 @@ data:extend({ order = "nullius-c", stack_size = 500, place_as_tile = { - result = "angels-tile-clay-brick", + result = "nullius-tile-clay-brick", condition_size = 1, condition = { layers = {water_tile=true} } } diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 8aab862..5a78bb7 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -136,16 +136,6 @@ data.raw.tile["landfill"].placeable_by = {item = "nullius-land-fill-gravel", cou data.raw.item["stone-brick"].stack_size = 500 data.raw.tile["stone-path"].walking_speed_modifier = 1.3 data.raw.tile["stone-path"].vehicle_friction_modifier = 0.8 -data.raw.tile["angels-tile-clay-brick"].minable.result = "nullius-refractory-brick" -data.raw.tile["angels-tile-clay-brick"].walking_speed_modifier = 1.4 -data.raw.tile["angels-tile-clay-brick"].vehicle_friction_modifier = 0.7 -data.raw.tile["angels-tile-clay-brick"].localised_name = {"tile-name.nullius-refractory-brick"} -data.raw.tile["angels-tile-clay-brick"].placeable_by = {item = "nullius-refractory-brick", count = 1} -if (data.raw.tile["angels-tile-clay-brick"].transitions == nil) then - data.raw.tile["angels-tile-clay-brick"].transitions = data.raw.tile["stone-path"].transitions - data.raw.tile["angels-tile-clay-brick"].transitions_between_transitions = - data.raw.tile["stone-path"].transitions_between_transitions -end data.raw.item["concrete"].stack_size = 500 data.raw.tile["concrete"].walking_speed_modifier = 1.5 data.raw.tile["concrete"].vehicle_friction_modifier = 0.6 From adb95da647a7340d1472f386d1d0f5655f5816b7 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 14 Aug 2025 14:16:38 +0200 Subject: [PATCH 035/236] Split angels legacy data and functions to different files --- nullius/data.lua | 1 + nullius/legacyAngels.lua | 1831 ----------------------- nullius/legacyAngelsData.lua | 1824 ++++++++++++++++++++++ nullius/prototypes/entity/assembler.lua | 2 +- nullius/prototypes/entity/energy.lua | 18 +- 5 files changed, 1835 insertions(+), 1841 deletions(-) create mode 100644 nullius/legacyAngelsData.lua diff --git a/nullius/data.lua b/nullius/data.lua index df995ee..39fc442 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -1,4 +1,5 @@ require("legacyAngels") +require("legacyAngelsData") require("prototypes.reskin") require("prototypes.category") diff --git a/nullius/legacyAngels.lua b/nullius/legacyAngels.lua index a4d8a04..e84b163 100644 --- a/nullius/legacyAngels.lua +++ b/nullius/legacyAngels.lua @@ -891,1834 +891,3 @@ function angelsLegacy.functions.create_gas_tech_icon(tints) }, } end - -function angelsLegacy.data.floatationpipepictures() - return { - north = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-north.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.01, 0.95 }, - }, - east = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-east.png", - priority = "extra-high", - width = 40, - height = 45, - shift = { -0.71875, 0.1 }, - }, - south = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-south.png", - priority = "extra-high", - width = 34, - height = 39, - shift = { 0, -0.75 }, - }, - west = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-west.png", - priority = "extra-high", - width = 40, - height = 45, - shift = { 0.78125, 0.01 }, - }, - } -end - -angelsLegacy.data["angels-floatation-cell"] = { - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - graphics_set = { - animation = { - north = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - east = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - south = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - west = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 32, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "primary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "secondary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - always_draw = true, - render_layer = "higher-object-under", - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - }, - }, - }, -} - -angelsLegacy.data["angels-floatation-cell-2"] = { -graphics_set = { - animation = { - north = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - east = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - south = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - west = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 32, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "primary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "secondary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - always_draw = true, - render_layer = "higher-object-under", - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - } - -angelsLegacy.data["angels-floatation-cell-3"] = { - graphics_set = { - animation = { - north = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - east = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - south = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - west = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 32, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "primary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "secondary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - always_draw = true, - render_layer = "higher-object-under", - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, -} - -angelsLegacy.data["angels-thermal-extractor"] = { - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/thermal-extractor.ogg" }, - max_sounds_per_prototype = 3, - fade_in_ticks = 4, - fade_out_ticks = 10 - } -} -angelsLegacy.data["angels-chemical-furnace"] = { - impact_category = "metal", - working_sound = { - sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-burner-ore-crusher"] = { - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-ore-crusher"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", - priority = "extra-high", - width = 189, - height = 214, - frame_count = 16, - line_length = 4, - shift = util.by_pixel(-0.5, -5), - animation_speed = 0.5, - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", - priority = "extra-high", - width = 282, - height = 140, - repeat_count = 16, - shift = util.by_pixel(24, 17.5), - draw_as_shadow = true, - animation_speed = 0.5, - scale = 0.5, - }, - }, - }, - }, - --impact_category = "metal", - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-ore-crusher-2"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", - priority = "extra-high", - width = 189, - height = 214, - frame_count = 16, - line_length = 4, - shift = util.by_pixel(-0.5, -5), - animation_speed = 0.5, - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", - priority = "extra-high", - width = 282, - height = 140, - repeat_count = 16, - shift = util.by_pixel(24, 17.5), - draw_as_shadow = true, - animation_speed = 0.5, - scale = 0.5, - }, - }, - }, - } -} -angelsLegacy.data["angels-ore-crusher-3"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", - priority = "extra-high", - width = 189, - height = 214, - frame_count = 16, - line_length = 4, - shift = util.by_pixel(-0.5, -5), - animation_speed = 0.5, - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", - priority = "extra-high", - width = 282, - height = 140, - repeat_count = 16, - shift = util.by_pixel(24, 17.5), - draw_as_shadow = true, - animation_speed = 0.5, - scale = 0.5, - }, - }, - }, - } -} -angelsLegacy.data["angels-crystallizer"] = { - graphics_set = { - animation = { - layers = { - -- Base - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - scale = 0.5, - }, - -- Shadow - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - impact_category = "metal", - working_sound = { - sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-crystallizer-2"] = { - graphics_set = { - animation = { - layers = { - -- Base - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - scale = 0.5, - }, - -- Shadow - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - } -} - -local function hydropipepictures() - return { - north = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { -0.08, 0.45 }, - }, - east = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", - priority = "extra-high", - width = 1, - height = 1, - shift = { 0, 0 }, - }, - south = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.06, -0.6 }, - }, - west = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.62, 0.05 }, - }, - } -end - -local function hydropipepictures2() - return { - north = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north2.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { -0.08, 0.45 }, - }, - east = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", - priority = "extra-high", - width = 1, - height = 1, - shift = { 0, 0 }, - }, - south = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.06, -0.6 }, - }, - west = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east2.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.62, 0.05 }, - }, - } -end - -angelsLegacy.data["angels-hydro-plant"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", - priority = "extra-high", - width = 459, - height = 491, - shift = util.by_pixel(0, 0), - scale = 0.5, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - north_position = util.by_pixel(-52.5, -43), - east_position = util.by_pixel(-52.5, -43), - south_position = util.by_pixel(-52.5, -43), - west_position = util.by_pixel(-52.5, -43), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_position = util.by_pixel(14.5, -21.5), - east_position = util.by_pixel(14.5, -21.5), - south_position = util.by_pixel(14.5, -21.5), - west_position = util.by_pixel(14.5, -21.5), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - shift = util.by_pixel(20, 10.5), - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 538, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - south_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - x = 1076, - y = 0, - height = 454, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - west_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 1614, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - frame_count = 1, - width = 459, - height = 491, - x = 459, - y = 0, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 918, - y = 0, - frame_count = 1, - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 1377, - y = 0, - frame_count = 1, - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - south_animation = { - layers = { - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { 2, -3 }, - }, - }, - }, - }, - }, - }, - --impact_category = "metal", - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - fluid_boxes = { - { - production_type = "input", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 1000, - pipe_connections = { - { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, - }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures2(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { - { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, - }, - }, - } -} - -angelsLegacy.data["angels-hydro-plant-2"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", - priority = "extra-high", - width = 459, - height = 491, - shift = util.by_pixel(0, 0), - scale = 0.5, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - north_position = util.by_pixel(-52.5, -43), - east_position = util.by_pixel(-52.5, -43), - south_position = util.by_pixel(-52.5, -43), - west_position = util.by_pixel(-52.5, -43), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_position = util.by_pixel(14.5, -21.5), - east_position = util.by_pixel(14.5, -21.5), - south_position = util.by_pixel(14.5, -21.5), - west_position = util.by_pixel(14.5, -21.5), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - shift = util.by_pixel(20, 10.5), - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 538, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - south_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - x = 1076, - y = 0, - height = 454, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - west_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 1614, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - frame_count = 1, - width = 459, - height = 491, - x = 459, - y = 0, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 918, - y = 0, - frame_count = 1, - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 1377, - y = 0, - frame_count = 1, - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - south_animation = { - layers = { - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { 2, -3 }, - }, - }, - }, - }, - }, - }, - --impact_category = "metal", - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - fluid_boxes = { - { - production_type = "input", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 1000, - pipe_connections = { - { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, - }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures2(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { - { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, - }, - }, - } -} - -angelsLegacy.data["angels-hydro-plant-3"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", - priority = "extra-high", - width = 459, - height = 491, - shift = util.by_pixel(0, 0), - scale = 0.5, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - north_position = util.by_pixel(-52.5, -43), - east_position = util.by_pixel(-52.5, -43), - south_position = util.by_pixel(-52.5, -43), - west_position = util.by_pixel(-52.5, -43), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_position = util.by_pixel(14.5, -21.5), - east_position = util.by_pixel(14.5, -21.5), - south_position = util.by_pixel(14.5, -21.5), - west_position = util.by_pixel(14.5, -21.5), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - shift = util.by_pixel(20, 10.5), - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 538, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - south_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - x = 1076, - y = 0, - height = 454, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - west_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 1614, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - frame_count = 1, - width = 459, - height = 491, - x = 459, - y = 0, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 918, - y = 0, - frame_count = 1, - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 1377, - y = 0, - frame_count = 1, - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - south_animation = { - layers = { - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { 2, -3 }, - }, - }, - }, - }, - }, - }, - --impact_category = "metal", - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} - -angelsLegacy.data["angels-air-filter"] = { - working_sound = { - sound = { filename = "__base__/sound/idle1.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-storage-tank-1"] = { - pictures = { - picture = { - sheets = { - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank.png", - priority = "extra-high", - frames = 1, - width = 334, - height = 387, - shift = util.by_pixel(-0.5, -6), - scale = 0.5, - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank-shadow.png", - priority = "extra-high", - frames = 1, - width = 437, - height = 237, - shift = util.by_pixel(26, 32), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - fluid_background = { - filename = "__base__/graphics/entity/storage-tank/fluid-background.png", - priority = "extra-high", - width = 32, - height = 15, - }, - window_background = { - filename = "__base__/graphics/entity/storage-tank/window-background.png", - priority = "extra-high", - width = 34, - height = 48, - scale = 0.5, - }, - flow_sprite = { - filename = "__base__/graphics/entity/pipe/fluid-flow-low-temperature.png", - priority = "extra-high", - width = 160, - height = 20, - }, - gas_flow = { - filename = "__base__/graphics/entity/pipe/steam.png", - priority = "extra-high", - line_length = 10, - width = 48, - height = 30, - frame_count = 60, - animation_speed = 0.25, - scale = 0.5, - }, - }, - working_sound = { - sound = { - filename = "__base__/sound/storage-tank.ogg", - volume = 0.6, - }, - match_volume_to_activity = true, - max_sounds_per_prototype = 3, - } -} - -angelsLegacy.data["angels-storage-tank-3"] = { - pictures = { - picture = { - sheets = { - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", - priority = "extra-high", - frames = 4, - width = 142, - height = 199, - shift = util.by_pixel(0, -7.5), - scale = 0.5, - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", - priority = "extra-high", - frames = 4, - width = 207, - height = 199, - shift = util.by_pixel(16.5, 9), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - fluid_background = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - }, - window_background = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - }, - flow_sprite = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - }, - gas_flow = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - frame_count = 1, - animation_speed = 0.25, - }, - } -} diff --git a/nullius/legacyAngelsData.lua b/nullius/legacyAngelsData.lua new file mode 100644 index 0000000..a3ca2a5 --- /dev/null +++ b/nullius/legacyAngelsData.lua @@ -0,0 +1,1824 @@ +function angelsLegacy.data.floatationpipepictures() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-north.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.01, 0.95 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-east.png", + priority = "extra-high", + width = 40, + height = 45, + shift = { -0.71875, 0.1 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-south.png", + priority = "extra-high", + width = 34, + height = 39, + shift = { 0, -0.75 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-west.png", + priority = "extra-high", + width = 40, + height = 45, + shift = { 0.78125, 0.01 }, + }, + } +end + +angelsLegacy.data["angels-floatation-cell"] = { + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, + }, +} + +angelsLegacy.data["angels-floatation-cell-2"] = { +graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + } + +angelsLegacy.data["angels-floatation-cell-3"] = { + graphics_set = { + animation = { + north = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, +} + +angelsLegacy.data["angels-thermal-extractor"] = { + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/thermal-extractor.ogg" }, + max_sounds_per_prototype = 3, + fade_in_ticks = 4, + fade_out_ticks = 10 + } +} +angelsLegacy.data["angels-chemical-furnace"] = { + working_sound = { + sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-burner-ore-crusher"] = { + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-ore-crusher"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-ore-crusher-2"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + } +} +angelsLegacy.data["angels-ore-crusher-3"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + } +} +angelsLegacy.data["angels-crystallizer"] = { + graphics_set = { + animation = { + layers = { + -- Base + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + scale = 0.5, + }, + -- Shadow + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-crystallizer-2"] = { + graphics_set = { + animation = { + layers = { + -- Base + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + scale = 0.5, + }, + -- Shadow + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + } +} + +local function hydropipepictures() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { -0.08, 0.45 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", + priority = "extra-high", + width = 1, + height = 1, + shift = { 0, 0 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.06, -0.6 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.62, 0.05 }, + }, + } +end + +local function hydropipepictures2() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north2.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { -0.08, 0.45 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", + priority = "extra-high", + width = 1, + height = 1, + shift = { 0, 0 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.06, -0.6 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east2.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.62, 0.05 }, + }, + } +end + +angelsLegacy.data["angels-hydro-plant"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + fluid_boxes = { + { + production_type = "input", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 1000, + pipe_connections = { + { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, + }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures2(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { + { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, + }, + }, + } +} + +angelsLegacy.data["angels-hydro-plant-2"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, + fluid_boxes = { + { + production_type = "input", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 1000, + pipe_connections = { + { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, + }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures2(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, + }, + { + production_type = "output", + pipe_picture = hydropipepictures(), + pipe_covers = pipecoverspictures(), + volume = 100, + pipe_connections = { + { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, + }, + }, + } +} + +angelsLegacy.data["angels-hydro-plant-3"] = { + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, + }, + }, + working_visualisations = { + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, + }, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} + +angelsLegacy.data["angels-air-filter"] = { + working_sound = { + sound = { filename = "__base__/sound/idle1.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } +} +angelsLegacy.data["angels-storage-tank-1"] = { + pictures = { + picture = { + sheets = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank.png", + priority = "extra-high", + frames = 1, + width = 334, + height = 387, + shift = util.by_pixel(-0.5, -6), + scale = 0.5, + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank-shadow.png", + priority = "extra-high", + frames = 1, + width = 437, + height = 237, + shift = util.by_pixel(26, 32), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + fluid_background = { + filename = "__base__/graphics/entity/storage-tank/fluid-background.png", + priority = "extra-high", + width = 32, + height = 15, + }, + window_background = { + filename = "__base__/graphics/entity/storage-tank/window-background.png", + priority = "extra-high", + width = 34, + height = 48, + scale = 0.5, + }, + flow_sprite = { + filename = "__base__/graphics/entity/pipe/fluid-flow-low-temperature.png", + priority = "extra-high", + width = 160, + height = 20, + }, + gas_flow = { + filename = "__base__/graphics/entity/pipe/steam.png", + priority = "extra-high", + line_length = 10, + width = 48, + height = 30, + frame_count = 60, + animation_speed = 0.25, + scale = 0.5, + }, + }, + working_sound = { + sound = { + filename = "__base__/sound/storage-tank.ogg", + volume = 0.6, + }, + match_volume_to_activity = true, + max_sounds_per_prototype = 3, + } +} + +angelsLegacy.data["angels-storage-tank-3"] = { + pictures = { + picture = { + sheets = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", + priority = "extra-high", + frames = 4, + width = 142, + height = 199, + shift = util.by_pixel(0, -7.5), + scale = 0.5, + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", + priority = "extra-high", + frames = 4, + width = 207, + height = 199, + shift = util.by_pixel(16.5, 9), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + fluid_background = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + window_background = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + flow_sprite = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + gas_flow = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + frame_count = 1, + animation_speed = 0.25, + }, + } +} diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 4144a39..b1b0732 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -633,7 +633,7 @@ data:extend({ graphics_set = { animation = scale_image(angelsLegacy.data["angels-crystallizer"].graphics_set.animation, 0.775), }, - impact_category = angelsLegacy.data["angels-crystallizer"].impact_category, + impact_category = "metal", working_sound = angelsLegacy.data["angels-crystallizer"].working_sound, fluid_boxes = { { diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 04bea13..e32854c 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -1798,7 +1798,7 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { @@ -1845,7 +1845,7 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { @@ -1892,7 +1892,7 @@ data:extend({ mining_speed = 1, resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { @@ -1933,7 +1933,7 @@ data:extend({ }, energy_source = {type = "void"}, working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -1991,7 +1991,7 @@ data:extend({ }, energy_source = {type = "void"}, working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -2040,7 +2040,7 @@ data:extend({ }, energy_source = {type = "void"}, working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", fast_replaceable_group = "geothermal-plant", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { @@ -2350,7 +2350,7 @@ data:extend({ }, consumption = "2kW", working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2440,7 +2440,7 @@ data:extend({ }, consumption = "5kW", working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { @@ -2530,7 +2530,7 @@ data:extend({ }, consumption = "20kW", working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, - impact_category = angelsLegacy.data["angels-chemical-furnace"].impact_category, + impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { layers = { From 1c3dee6fe192d716f5eb319ca03bcc1c6127734a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 14 Aug 2025 15:06:51 +0200 Subject: [PATCH 036/236] Removed refs to legacyAngelsData in assembler.lua and chemistry.lua --- nullius/legacyAngelsData.lua | 906 +------------------- nullius/prototypes/entity/assembler.lua | 54 +- nullius/prototypes/entity/chemistry.lua | 710 ++++++++++++++- nullius/prototypes/entity/pipe_graphics.lua | 66 ++ 4 files changed, 810 insertions(+), 926 deletions(-) diff --git a/nullius/legacyAngelsData.lua b/nullius/legacyAngelsData.lua index a3ca2a5..e8d247e 100644 --- a/nullius/legacyAngelsData.lua +++ b/nullius/legacyAngelsData.lua @@ -793,910 +793,6 @@ angelsLegacy.data["angels-ore-crusher-3"] = { }, } } -angelsLegacy.data["angels-crystallizer"] = { - graphics_set = { - animation = { - layers = { - -- Base - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - scale = 0.5, - }, - -- Shadow - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-crystallizer-2"] = { - graphics_set = { - animation = { - layers = { - -- Base - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - scale = 0.5, - }, - -- Shadow - { - filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel(16, 0), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - } -} - -local function hydropipepictures() - return { - north = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { -0.08, 0.45 }, - }, - east = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", - priority = "extra-high", - width = 1, - height = 1, - shift = { 0, 0 }, - }, - south = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.06, -0.6 }, - }, - west = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.62, 0.05 }, - }, - } -end - -local function hydropipepictures2() - return { - north = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north2.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { -0.08, 0.45 }, - }, - east = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", - priority = "extra-high", - width = 1, - height = 1, - shift = { 0, 0 }, - }, - south = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.06, -0.6 }, - }, - west = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east2.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.62, 0.05 }, - }, - } -end - -angelsLegacy.data["angels-hydro-plant"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", - priority = "extra-high", - width = 459, - height = 491, - shift = util.by_pixel(0, 0), - scale = 0.5, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - north_position = util.by_pixel(-52.5, -43), - east_position = util.by_pixel(-52.5, -43), - south_position = util.by_pixel(-52.5, -43), - west_position = util.by_pixel(-52.5, -43), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_position = util.by_pixel(14.5, -21.5), - east_position = util.by_pixel(14.5, -21.5), - south_position = util.by_pixel(14.5, -21.5), - west_position = util.by_pixel(14.5, -21.5), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - shift = util.by_pixel(20, 10.5), - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 538, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - south_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - x = 1076, - y = 0, - height = 454, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - west_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 1614, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - frame_count = 1, - width = 459, - height = 491, - x = 459, - y = 0, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 918, - y = 0, - frame_count = 1, - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 1377, - y = 0, - frame_count = 1, - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - south_animation = { - layers = { - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { 2, -3 }, - }, - }, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - fluid_boxes = { - { - production_type = "input", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 1000, - pipe_connections = { - { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, - }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures2(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { - { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, - }, - }, - } -} - -angelsLegacy.data["angels-hydro-plant-2"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", - priority = "extra-high", - width = 459, - height = 491, - shift = util.by_pixel(0, 0), - scale = 0.5, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - north_position = util.by_pixel(-52.5, -43), - east_position = util.by_pixel(-52.5, -43), - south_position = util.by_pixel(-52.5, -43), - west_position = util.by_pixel(-52.5, -43), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_position = util.by_pixel(14.5, -21.5), - east_position = util.by_pixel(14.5, -21.5), - south_position = util.by_pixel(14.5, -21.5), - west_position = util.by_pixel(14.5, -21.5), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - shift = util.by_pixel(20, 10.5), - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 538, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - south_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - x = 1076, - y = 0, - height = 454, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - west_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 1614, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - frame_count = 1, - width = 459, - height = 491, - x = 459, - y = 0, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 918, - y = 0, - frame_count = 1, - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 1377, - y = 0, - frame_count = 1, - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - south_animation = { - layers = { - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { 2, -3 }, - }, - }, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - fluid_boxes = { - { - production_type = "input", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 1000, - pipe_connections = { - { flow_direction = "input", position = { -2, -3 }, direction = defines.direction.north }, - }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures2(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { { flow_direction = "output", position = { 2, 3 }, direction = defines.direction.south } }, - }, - { - production_type = "output", - pipe_picture = hydropipepictures(), - pipe_covers = pipecoverspictures(), - volume = 100, - pipe_connections = { - { flow_direction = "output", position = { -2, 3 }, direction = defines.direction.south }, - }, - }, - } -} - -angelsLegacy.data["angels-hydro-plant-3"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", - priority = "extra-high", - width = 459, - height = 491, - shift = util.by_pixel(0, 0), - scale = 0.5, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - north_position = util.by_pixel(-52.5, -43), - east_position = util.by_pixel(-52.5, -43), - south_position = util.by_pixel(-52.5, -43), - west_position = util.by_pixel(-52.5, -43), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", - priority = "extra-high", - width = 107, - height = 77, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_position = util.by_pixel(14.5, -21.5), - east_position = util.by_pixel(14.5, -21.5), - south_position = util.by_pixel(14.5, -21.5), - west_position = util.by_pixel(14.5, -21.5), - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, -47.75), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 0.125), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", - priority = "extra-high", - width = 40, - height = 36, - frame_count = 24, - line_length = 6, - animation_speed = 0.5, - shift = util.by_pixel(0, 48), - scale = 0.5, - }, - }, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - shift = util.by_pixel(20, 10.5), - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 538, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - south_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - x = 1076, - y = 0, - height = 454, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - west_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", - priority = "extra-high", - width = 538, - height = 454, - x = 1614, - y = 0, - frame_count = 1, - shift = util.by_pixel(20, 10.5), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 0, - y = 0, - frame_count = 1, - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - frame_count = 1, - width = 459, - height = 491, - x = 459, - y = 0, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 918, - y = 0, - frame_count = 1, - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", - priority = "extra-high", - width = 459, - height = 491, - x = 1377, - y = 0, - frame_count = 1, - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - south_animation = { - layers = { - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { -2, -3 }, - }, - { - draw_as_shadow = true, - filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - scale = 0.5, - shift = { 2, -3 }, - }, - }, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} angelsLegacy.data["angels-air-filter"] = { working_sound = { @@ -1821,4 +917,4 @@ angelsLegacy.data["angels-storage-tank-3"] = { animation_speed = 0.25, }, } -} +} \ No newline at end of file diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index b1b0732..dbf97e4 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -564,7 +564,6 @@ data:extend({ } }) ---local nanofab_pipes = util.table.deepcopy(data.raw["assembling-machine"]["angels-crystallizer"].fluid_boxes[1].pipe_picture) --TODO: check those pipes local nanofab_pipes = { north = { filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-pipe-connection.png", @@ -631,10 +630,35 @@ data:extend({ }, energy_usage = "470kW", graphics_set = { - animation = scale_image(angelsLegacy.data["angels-crystallizer"].graphics_set.animation, 0.775), + animation = scale_image({ + layers = { + -- Base + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + scale = 0.5, + }, + -- Shadow + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, 0.775), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-crystallizer"].working_sound, + working_sound = { + sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fluid_boxes = { { production_type = "input", @@ -714,7 +738,29 @@ data:extend({ }, energy_usage = "940kW", graphics_set = { - animation = scale_image(angelsLegacy.data["angels-crystallizer-2"].graphics_set.animation, 0.775), + animation = scale_image({ + layers = { + -- Base + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + scale = 0.5, + }, + -- Shadow + { + filename = "__angelsrefininggraphics__/graphics/entity/crystallizer/crystallizer-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + shift = util.by_pixel(16, 0), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, 0.775), }, impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 28cde5c..b02acb0 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -3,9 +3,16 @@ local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" -local function hydro_animation(basename, newtint) +local function hydro_animation(newtint) local baselayer = scale_image( - angelsLegacy.data[basename].graphics_set.animation.layers[1], 0.725) + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-base.png", + priority = "extra-high", + width = 459, + height = 491, + shift = util.by_pixel(0, 0), + scale = 0.5, + }, 0.725) baselayer.tint = newtint local vertical = { layers = { @@ -70,36 +77,259 @@ data:extend({ module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, graphics_set = { - animation = hydro_animation("angels-hydro-plant",{0.77, 0.77, 0.68}), - working_visualisations = scale_image(angelsLegacy.data["angels-hydro-plant"].graphics_set.working_visualisations, 0.725), + animation = hydro_animation({0.77, 0.77, 0.68}), + working_visualisations = scale_image({ + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + } + } + }, 0.725), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-hydro-plant"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fluid_boxes = { { production_type = "input", - pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[1].pipe_picture, + pipe_picture = hydropipepictures(), pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} }, { production_type = "input", - pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[1].pipe_picture, + pipe_picture = hydropipepictures(), pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} }, { production_type = "output", - pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[2].pipe_picture, + pipe_picture = hydropipepictures2(), pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, { production_type = "output", - pipe_picture = angelsLegacy.data["angels-hydro-plant"].fluid_boxes[3].pipe_picture, + pipe_picture = hydropipepictures(), pipe_covers = pipecoverspictures(), volume = 500, pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} @@ -136,11 +366,234 @@ data:extend({ fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-hydro-plant-3", graphics_set = { - animation = hydro_animation("angels-hydro-plant-2",{0.8, 0.8, 0.9}), - working_visualisations = scale_image(angelsLegacy.data["angels-hydro-plant-2"].graphics_set.working_visualisations, 0.725), + animation = hydro_animation({0.8, 0.8, 0.9}), + working_visualisations = scale_image({ + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + } + }, 0.725), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-hydro-plant-2"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fluid_boxes = { { production_type = "input", @@ -199,11 +652,234 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", graphics_set = { - animation = hydro_animation("angels-hydro-plant-3"), - working_visualisations = scale_image(angelsLegacy.data["angels-hydro-plant-3"].graphics_set.working_visualisations, 0.725), + animation = hydro_animation(), + working_visualisations = scale_image({ + { + always_draw = true, + north_position = util.by_pixel(-52.5, -43), + east_position = util.by_pixel(-52.5, -43), + south_position = util.by_pixel(-52.5, -43), + west_position = util.by_pixel(-52.5, -43), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-fan.png", + priority = "extra-high", + width = 107, + height = 77, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_position = util.by_pixel(14.5, -21.5), + east_position = util.by_pixel(14.5, -21.5), + south_position = util.by_pixel(14.5, -21.5), + west_position = util.by_pixel(14.5, -21.5), + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, -47.75), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 0.125), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-dynamo.png", + priority = "extra-high", + width = 40, + height = 36, + frame_count = 24, + line_length = 6, + animation_speed = 0.5, + shift = util.by_pixel(0, 48), + scale = 0.5, + }, + }, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + shift = util.by_pixel(20, 10.5), + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 538, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + south_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + x = 1076, + y = 0, + height = 454, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + west_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-shadow.png", + priority = "extra-high", + width = 538, + height = 454, + x = 1614, + y = 0, + frame_count = 1, + shift = util.by_pixel(20, 10.5), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 0, + y = 0, + frame_count = 1, + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + frame_count = 1, + width = 459, + height = 491, + x = 459, + y = 0, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 918, + y = 0, + frame_count = 1, + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/hydro-plant-pipe-connections.png", + priority = "extra-high", + width = 459, + height = 491, + x = 1377, + y = 0, + frame_count = 1, + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + south_animation = { + layers = { + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { -2, -3 }, + }, + { + draw_as_shadow = true, + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + scale = 0.5, + shift = { 2, -3 }, + }, + }, + }, + }, + }, 0.725), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-hydro-plant-3"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-leaching-plant.ogg", volume = 0.65 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fluid_boxes = { { production_type = "input", @@ -290,7 +966,7 @@ data:extend({ next_upgrade = "nullius-mirror-hydro-plant-3", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, impact_category = "metal", - working_sound = angelsLegacy.data["angels-hydro-plant"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_sound, fluid_boxes = { { @@ -356,7 +1032,7 @@ data:extend({ fast_replaceable_group = "hydro-plant", graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, impact_category = "metal", - working_sound = angelsLegacy.data["angels-hydro-plant"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_sound, fluid_boxes = { { diff --git a/nullius/prototypes/entity/pipe_graphics.lua b/nullius/prototypes/entity/pipe_graphics.lua index e266d2a..6306b25 100644 --- a/nullius/prototypes/entity/pipe_graphics.lua +++ b/nullius/prototypes/entity/pipe_graphics.lua @@ -298,4 +298,70 @@ function pipecoverspics(dir) } } } +end + +function hydropipepictures() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { -0.08, 0.45 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", + priority = "extra-high", + width = 1, + height = 1, + shift = { 0, 0 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.06, -0.6 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.62, 0.05 }, + }, + } +end + +function hydropipepictures2() + return { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-north2.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { -0.08, 0.45 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/blank.png", + priority = "extra-high", + width = 1, + height = 1, + shift = { 0, 0 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-south1.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.06, -0.6 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/hydro-plant/pipe-east2.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.62, 0.05 }, + }, + } end \ No newline at end of file From 85d2b5eb4b71a7437229c0f585c2d1ed469f5c05 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 14 Aug 2025 15:46:28 +0200 Subject: [PATCH 037/236] Removed refs to legacyAngelsData in energy.lua --- nullius/TODO_list.txt | 5 +++- nullius/legacyAngelsData.lua | 14 ---------- nullius/prototypes/entity/energy.lua | 42 +++++++++++++++++----------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index a0e38ac..6778b1b 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -12,4 +12,7 @@ do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions update changelog and info.json(min version of dependencies) before publishing -drones ammo category locale broken \ No newline at end of file +drones ammo category locale broken +coal spawn in rocks +mentions of petroleum in factoriopedia/what the extractor can mine +missing geothermal plant graphics \ No newline at end of file diff --git a/nullius/legacyAngelsData.lua b/nullius/legacyAngelsData.lua index e8d247e..6169d6c 100644 --- a/nullius/legacyAngelsData.lua +++ b/nullius/legacyAngelsData.lua @@ -679,20 +679,6 @@ angelsLegacy.data["angels-floatation-cell-3"] = { }, } -angelsLegacy.data["angels-thermal-extractor"] = { - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/thermal-extractor.ogg" }, - max_sounds_per_prototype = 3, - fade_in_ticks = 4, - fade_out_ticks = 10 - } -} -angelsLegacy.data["angels-chemical-furnace"] = { - working_sound = { - sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} angelsLegacy.data["angels-burner-ore-crusher"] = { working_sound = { sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index e32854c..ab759d0 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -1039,7 +1039,12 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 } }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/thermal-extractor.ogg" }, + max_sounds_per_prototype = 3, + fade_in_ticks = 4, + fade_out_ticks = 10 + }, fluid_boxes = { { production_type = "input", @@ -1184,7 +1189,7 @@ data:extend({ energy_usage = "495kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, graphics_set = { @@ -1316,7 +1321,7 @@ data:extend({ energy_usage = "2925kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = { { production_type = "input", @@ -1461,7 +1466,7 @@ data:extend({ energy_usage = "1930kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-2"].resistances, impact_category = "metal", - working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-2"].fluid_boxes, graphics_set = { @@ -1557,7 +1562,7 @@ data:extend({ energy_usage = "7725kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = { { production_type = "input", @@ -1697,7 +1702,7 @@ data:extend({ energy_usage = "7650kW", resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", - working_sound = angelsLegacy.data["angels-thermal-extractor"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = { { production_type = "input", @@ -1799,7 +1804,10 @@ data:extend({ resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, impact_category = "metal", - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = { + sound = { filename = "__base__/sound/oil-refinery.ogg", volume = 0.45 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -1820,8 +1828,10 @@ data:extend({ scale = 0.5 } } - }, + } +}) +data:extend({ { type = "mining-drill", name = "nullius-geothermal-build-2", @@ -1846,7 +1856,7 @@ data:extend({ resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, impact_category = "metal", - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -1893,7 +1903,7 @@ data:extend({ resource_searching_radius = 0.49, vector_to_place_result = {0, 0}, impact_category = "metal", - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, fast_replaceable_group = "geothermal-plant", radius_visualisation_picture = { filename = BASEENTITY .. "pumpjack/pumpjack-radius-visualization.png", @@ -1932,7 +1942,7 @@ data:extend({ { type = "impact", decrease = 50, percent = 80 } }, energy_source = {type = "void"}, - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", @@ -1990,7 +2000,7 @@ data:extend({ { type = "impact", decrease = 50, percent = 80 } }, energy_source = {type = "void"}, - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", @@ -2039,7 +2049,7 @@ data:extend({ { type = "impact", decrease = 50, percent = 80 } }, energy_source = {type = "void"}, - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", fast_replaceable_group = "geothermal-plant", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, @@ -2349,7 +2359,7 @@ data:extend({ render_no_network_icon = false }, consumption = "2kW", - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { @@ -2439,7 +2449,7 @@ data:extend({ render_no_network_icon = false }, consumption = "5kW", - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { @@ -2529,7 +2539,7 @@ data:extend({ render_no_network_icon = false }, consumption = "20kW", - working_sound = angelsLegacy.data["angels-chemical-furnace"].working_sound, + working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, picture = { From db21cc31bb4b592d164fbb82093f15be7010039c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 14 Aug 2025 19:46:16 +0200 Subject: [PATCH 038/236] Removed refs to legacyAngelsData in furnace.lua and plumbing.lua --- nullius/data.lua | 1 - nullius/legacyAngelsData.lua | 906 ------------------------- nullius/prototypes/entity/furnace.lua | 578 +++++++++++++++- nullius/prototypes/entity/plumbing.lua | 119 +++- 4 files changed, 664 insertions(+), 940 deletions(-) delete mode 100644 nullius/legacyAngelsData.lua diff --git a/nullius/data.lua b/nullius/data.lua index 39fc442..df995ee 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -1,5 +1,4 @@ require("legacyAngels") -require("legacyAngelsData") require("prototypes.reskin") require("prototypes.category") diff --git a/nullius/legacyAngelsData.lua b/nullius/legacyAngelsData.lua deleted file mode 100644 index 6169d6c..0000000 --- a/nullius/legacyAngelsData.lua +++ /dev/null @@ -1,906 +0,0 @@ -function angelsLegacy.data.floatationpipepictures() - return { - north = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-north.png", - priority = "extra-high", - width = 48, - height = 48, - shift = { 0.01, 0.95 }, - }, - east = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-east.png", - priority = "extra-high", - width = 40, - height = 45, - shift = { -0.71875, 0.1 }, - }, - south = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-south.png", - priority = "extra-high", - width = 34, - height = 39, - shift = { 0, -0.75 }, - }, - west = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-west.png", - priority = "extra-high", - width = 40, - height = 45, - shift = { 0.78125, 0.01 }, - }, - } -end - -angelsLegacy.data["angels-floatation-cell"] = { - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - graphics_set = { - animation = { - north = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - east = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - south = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - west = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 32, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "primary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "secondary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - always_draw = true, - render_layer = "higher-object-under", - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - }, - }, - }, -} - -angelsLegacy.data["angels-floatation-cell-2"] = { -graphics_set = { - animation = { - north = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - east = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - south = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - west = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 32, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "primary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "secondary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - always_draw = true, - render_layer = "higher-object-under", - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - } - -angelsLegacy.data["angels-floatation-cell-3"] = { - graphics_set = { - animation = { - north = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - east = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - south = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - west = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", - priority = "extra-high", - width = 390, - height = 326, - x = 390, - shift = util.by_pixel_hr(29, 18), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - }, - working_visualisations = { - { - always_draw = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 32, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "primary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - fadeout = true, - apply_recipe_tint = "secondary", - animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", - priority = "extra-high", - width = 166, - height = 117, - frame_count = 64, - line_length = 8, - shift = util.by_pixel_hr(62, 5), - scale = 0.5, - }, - }, - { - always_draw = true, - render_layer = "higher-object-under", - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - east_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - west_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", - priority = "extra-high", - width = 333, - height = 363, - x = 333, - shift = util.by_pixel_hr(-1, -1), - scale = 0.5, - }, - }, - { - always_draw = true, - north_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - south_animation = { - filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", - priority = "high", - width = 128, - height = 128, - repeat_count = 36, - draw_as_shadow = true, - shift = { 0, -2 }, - scale = 0.5, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, -} - -angelsLegacy.data["angels-burner-ore-crusher"] = { - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-ore-crusher"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", - priority = "extra-high", - width = 189, - height = 214, - frame_count = 16, - line_length = 4, - shift = util.by_pixel(-0.5, -5), - animation_speed = 0.5, - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", - priority = "extra-high", - width = 282, - height = 140, - repeat_count = 16, - shift = util.by_pixel(24, 17.5), - draw_as_shadow = true, - animation_speed = 0.5, - scale = 0.5, - }, - }, - }, - }, - working_sound = { - sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-ore-crusher-2"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", - priority = "extra-high", - width = 189, - height = 214, - frame_count = 16, - line_length = 4, - shift = util.by_pixel(-0.5, -5), - animation_speed = 0.5, - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", - priority = "extra-high", - width = 282, - height = 140, - repeat_count = 16, - shift = util.by_pixel(24, 17.5), - draw_as_shadow = true, - animation_speed = 0.5, - scale = 0.5, - }, - }, - }, - } -} -angelsLegacy.data["angels-ore-crusher-3"] = { - graphics_set = { - animation = { - layers = { - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", - priority = "extra-high", - width = 189, - height = 214, - frame_count = 16, - line_length = 4, - shift = util.by_pixel(-0.5, -5), - animation_speed = 0.5, - scale = 0.5, - }, - { - filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", - priority = "extra-high", - width = 282, - height = 140, - repeat_count = 16, - shift = util.by_pixel(24, 17.5), - draw_as_shadow = true, - animation_speed = 0.5, - scale = 0.5, - }, - }, - }, - } -} - -angelsLegacy.data["angels-air-filter"] = { - working_sound = { - sound = { filename = "__base__/sound/idle1.ogg", volume = 1 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - } -} -angelsLegacy.data["angels-storage-tank-1"] = { - pictures = { - picture = { - sheets = { - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank.png", - priority = "extra-high", - frames = 1, - width = 334, - height = 387, - shift = util.by_pixel(-0.5, -6), - scale = 0.5, - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank-shadow.png", - priority = "extra-high", - frames = 1, - width = 437, - height = 237, - shift = util.by_pixel(26, 32), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - fluid_background = { - filename = "__base__/graphics/entity/storage-tank/fluid-background.png", - priority = "extra-high", - width = 32, - height = 15, - }, - window_background = { - filename = "__base__/graphics/entity/storage-tank/window-background.png", - priority = "extra-high", - width = 34, - height = 48, - scale = 0.5, - }, - flow_sprite = { - filename = "__base__/graphics/entity/pipe/fluid-flow-low-temperature.png", - priority = "extra-high", - width = 160, - height = 20, - }, - gas_flow = { - filename = "__base__/graphics/entity/pipe/steam.png", - priority = "extra-high", - line_length = 10, - width = 48, - height = 30, - frame_count = 60, - animation_speed = 0.25, - scale = 0.5, - }, - }, - working_sound = { - sound = { - filename = "__base__/sound/storage-tank.ogg", - volume = 0.6, - }, - match_volume_to_activity = true, - max_sounds_per_prototype = 3, - } -} - -angelsLegacy.data["angels-storage-tank-3"] = { - pictures = { - picture = { - sheets = { - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank.png", - priority = "extra-high", - frames = 4, - width = 142, - height = 199, - shift = util.by_pixel(0, -7.5), - scale = 0.5, - }, - { - filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-inline-tank/petrochem-inline-tank-shadow.png", - priority = "extra-high", - frames = 4, - width = 207, - height = 199, - shift = util.by_pixel(16.5, 9), - draw_as_shadow = true, - scale = 0.5, - }, - }, - }, - fluid_background = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - }, - window_background = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - }, - flow_sprite = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - }, - gas_flow = { - filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", - priority = "extra-high", - width = 1, - height = 1, - frame_count = 1, - animation_speed = 0.25, - }, - } -} \ No newline at end of file diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 2220e02..5d08eb2 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -2,7 +2,36 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" -local floatpipepics = angelsLegacy.data.floatationpipepictures() +local floatpipepics = { + north = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-north.png", + priority = "extra-high", + width = 48, + height = 48, + shift = { 0.01, 0.95 }, + }, + east = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-east.png", + priority = "extra-high", + width = 40, + height = 45, + shift = { -0.71875, 0.1 }, + }, + south = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-south.png", + priority = "extra-high", + width = 34, + height = 39, + shift = { 0, -0.75 }, + }, + west = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-west.png", + priority = "extra-high", + width = 40, + height = 45, + shift = { 0.78125, 0.01 }, + }, + } data:extend({ @@ -964,9 +993,39 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(angelsLegacy.data["angels-ore-crusher"].graphics_set), + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-burner-ore-crusher"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + } }, { @@ -998,7 +1057,10 @@ data:extend({ module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, impact_category = "metal", - working_sound =angelsLegacy.data["angels-ore-crusher"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fluid_boxes = { { production_type = "input", @@ -1014,7 +1076,34 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(angelsLegacy.data["angels-ore-crusher-2"].graphics_set) + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + } }, { @@ -1045,7 +1134,10 @@ data:extend({ module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, impact_category = "metal", - working_sound = angelsLegacy.data["angels-ore-crusher"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, fluid_boxes = { { production_type = "input", @@ -1061,7 +1153,34 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - graphics_set = util.table.deepcopy(angelsLegacy.data["angels-ore-crusher-3"].graphics_set) + graphics_set = { + animation = { + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-base.png", + priority = "extra-high", + width = 189, + height = 214, + frame_count = 16, + line_length = 4, + shift = util.by_pixel(-0.5, -5), + animation_speed = 0.5, + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-crusher/ore-crusher-shadow.png", + priority = "extra-high", + width = 282, + height = 140, + repeat_count = 16, + shift = util.by_pixel(24, 17.5), + draw_as_shadow = true, + animation_speed = 0.5, + scale = 0.5, + }, + }, + }, + } } }) @@ -1130,11 +1249,152 @@ data:extend({ } }, graphics_set = { - animation = scale_image(angelsLegacy.data["angels-floatation-cell"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(angelsLegacy.data["angels-floatation-cell"].graphics_set.working_visualisations, 0.81), + animation = scale_image({ + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, 0.81), + working_visualisations = scale_image({ + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, 0.81), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-floatation-cell"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, }, { @@ -1197,11 +1457,152 @@ data:extend({ } }, graphics_set = { - animation = scale_image(angelsLegacy.data["angels-floatation-cell-2"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(angelsLegacy.data["angels-floatation-cell-2"].graphics_set.working_visualisations, 0.81), + animation = scale_image({ + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, 0.81), + working_visualisations = scale_image({ + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, 0.81), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-floatation-cell-2"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, pipe_covers = pipecoverspictures() }, @@ -1264,11 +1665,152 @@ data:extend({ } }, graphics_set = { - animation = scale_image(angelsLegacy.data["angels-floatation-cell-3"].graphics_set.animation.east, 0.81), - working_visualisations = scale_image(angelsLegacy.data["angels-floatation-cell-3"].graphics_set.working_visualisations, 0.81), + animation = scale_image({ + layers = { + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-base.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-shadow.png", + priority = "extra-high", + width = 390, + height = 326, + x = 390, + shift = util.by_pixel_hr(29, 18), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, 0.81), + working_visualisations = scale_image({ + { + always_draw = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-idle.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 32, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-base.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "primary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-water-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + fadeout = true, + apply_recipe_tint = "secondary", + animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-animation-froth-tintable.png", + priority = "extra-high", + width = 166, + height = 117, + frame_count = 64, + line_length = 8, + shift = util.by_pixel_hr(62, 5), + scale = 0.5, + }, + }, + { + always_draw = true, + render_layer = "higher-object-under", + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + east_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + west_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/ore-flotation-cell-pipe-cover-overlays.png", + priority = "extra-high", + width = 333, + height = 363, + x = 333, + shift = util.by_pixel_hr(-1, -1), + scale = 0.5, + }, + }, + { + always_draw = true, + north_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + south_animation = { + filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/vertical-pipe-shadow-patch.png", + priority = "high", + width = 128, + height = 128, + repeat_count = 36, + draw_as_shadow = true, + shift = { 0, -2 }, + scale = 0.5, + }, + }, + }, 0.81), }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-floatation-cell-3"].working_sound, + working_sound = { + sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, pipe_covers = pipecoverspictures() } }) @@ -1334,7 +1876,7 @@ data:extend({ working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, }, impact_category = "metal", - working_sound = angelsLegacy.data["angels-floatation-cell"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-flotation-cell-1"].working_sound, fluid_boxes = { { @@ -1396,7 +1938,7 @@ data:extend({ energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, impact_category = "metal", - working_sound = angelsLegacy.data["angels-floatation-cell"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-flotation-cell-1"].working_sound, fluid_boxes = { { diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index b2c7c6f..4208cf8 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1089,7 +1089,10 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, - working_sound = angelsLegacy.data["angels-air-filter"].working_sound, + working_sound = { + sound = { filename = "__base__/sound/idle1.ogg", volume = 1 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, + }, impact_category = "metal", fluid_boxes = { { @@ -1100,8 +1103,10 @@ data:extend({ }, }, pipe_covers = pipecoverspictures() - }, + } +}) +data:extend({ { type = "assembling-machine", name = "nullius-air-filter-2", @@ -1176,7 +1181,7 @@ data:extend({ }, module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, - working_sound = angelsLegacy.data["angels-air-filter"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-air-filter-1"].working_sound, impact_category = "metal", fluid_boxes = { { @@ -1230,7 +1235,7 @@ data:extend({ }, module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, - working_sound = angelsLegacy.data["angels-air-filter"].working_sound, + working_sound = data.raw["assembling-machine"]["nullius-air-filter-1"].working_sound, impact_category = "metal", fluid_boxes = { { @@ -1931,10 +1936,32 @@ data:extend({ } } }, - fluid_background = angelsLegacy.data["angels-storage-tank-3"].pictures.fluid_background, - window_background = angelsLegacy.data["angels-storage-tank-3"].pictures.window_background, - flow_sprite = angelsLegacy.data["angels-storage-tank-3"].pictures.flow_sprite, - gas_flow = angelsLegacy.data["angels-storage-tank-3"].pictures.gas_flow + fluid_background = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + window_background = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + flow_sprite = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + }, + gas_flow = { + filename = "__angelspetrochemgraphics__/graphics/entity/electrolyser/blank.png", + priority = "extra-high", + width = 1, + height = 1, + frame_count = 1, + animation_speed = 0.25, + } }, flow_length_in_ticks = 360, impact_category = "metal", @@ -2020,13 +2047,75 @@ data:extend({ window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, impact_category = "metal", - working_sound = angelsLegacy.data["angels-storage-tank-1"].working_sound, + working_sound = { + sound = { + filename = "__base__/sound/storage-tank.ogg", + volume = 0.6, + }, + match_volume_to_activity = true, + max_sounds_per_prototype = 3, + }, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - pictures = util.table.deepcopy(angelsLegacy.data["angels-storage-tank-1"].pictures) - }, + pictures = { + picture = { + sheets = { + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank.png", + priority = "extra-high", + frames = 1, + width = 334, + height = 387, + shift = util.by_pixel(-0.5, -6), + scale = 0.5, + }, + { + filename = "__angelspetrochemgraphics__/graphics/entity/petrochem-gas-tank/petrochem-gas-tank-shadow.png", + priority = "extra-high", + frames = 1, + width = 437, + height = 237, + shift = util.by_pixel(26, 32), + draw_as_shadow = true, + scale = 0.5, + }, + }, + }, + fluid_background = { + filename = "__base__/graphics/entity/storage-tank/fluid-background.png", + priority = "extra-high", + width = 32, + height = 15, + }, + window_background = { + filename = "__base__/graphics/entity/storage-tank/window-background.png", + priority = "extra-high", + width = 34, + height = 48, + scale = 0.5, + }, + flow_sprite = { + filename = "__base__/graphics/entity/pipe/fluid-flow-low-temperature.png", + priority = "extra-high", + width = 160, + height = 20, + }, + gas_flow = { + filename = "__base__/graphics/entity/pipe/steam.png", + priority = "extra-high", + line_length = 10, + width = 48, + height = 30, + frame_count = 60, + animation_speed = 0.25, + scale = 0.5, + }, + } + } +}) +data:extend({ { type = "storage-tank", name = "nullius-large-tank-2", @@ -2053,11 +2142,11 @@ data:extend({ window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, impact_category = "metal", - working_sound = angelsLegacy.data["angels-storage-tank-1"].working_sound, + working_sound = data.raw["storage-tank"]["nullius-large-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - pictures = util.table.deepcopy(angelsLegacy.data["angels-storage-tank-1"].pictures) + pictures = table.deepcopy(data.raw["storage-tank"]["nullius-large-tank-1"].pictures) }, { @@ -2085,11 +2174,11 @@ data:extend({ window_bounding_box = {{-0.125, 0.6875}, {0.1875, 1.1875}}, flow_length_in_ticks = 360, impact_category = "metal", - working_sound = angelsLegacy.data["angels-storage-tank-1"].working_sound, + working_sound = data.raw["storage-tank"]["nullius-large-tank-1"].working_sound, circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, circuit_wire_max_distance = default_circuit_wire_max_distance, - pictures = angelsLegacy.data["angels-storage-tank-1"].pictures + pictures = table.deepcopy(data.raw["storage-tank"]["nullius-large-tank-1"].pictures) } }) From f51c165211e32159255b6e3c6b7babf54f5e061b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 14 Aug 2025 20:16:06 +0200 Subject: [PATCH 039/236] =?UTF-8?q?Fixed=20distillery=20fluid=20boxes=20an?= =?UTF-8?q?d=20valves=20orientations=20(180=C2=B0=20flipped)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nullius/prototypes/entity/chemistry.lua | 8 +-- nullius/prototypes/entity/plumbing.lua | 80 ++++++++++++------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index b02acb0..ba0aa8e 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -1113,7 +1113,7 @@ data:extend({ production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1, -2}, direction = defines.direction.north }} + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} }, { production_type = "output", @@ -1125,7 +1125,7 @@ data:extend({ production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, -2}, direction = defines.direction.north }} + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} } }, impact_category = "metal", @@ -1249,7 +1249,7 @@ data:extend({ production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1, -2}, direction = defines.direction.north }} + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} }, { production_type = "output", @@ -1261,7 +1261,7 @@ data:extend({ production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, -2}, direction = defines.direction.north }} + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} } }, diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 4208cf8..8e985d9 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1268,8 +1268,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1294,16 +1294,18 @@ data:extend({ scale = 0.5, shift = {0, -0.5} }, - { + { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", + x = 128, frame_count = 1, width = 64, - height = 64 - } + height = 64, + shift = {0, -0.05} + } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 64, @@ -1325,15 +1327,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", - x = 128, frame_count = 1, width = 64, - height = 64, - shift = {0, -0.05} - } + height = 64 + } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 192, @@ -1364,8 +1364,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1389,16 +1389,18 @@ data:extend({ scale = 0.5, shift = {0, -0.5} }, - { + { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", + x = 128, frame_count = 1, width = 64, - height = 64 + height = 64, + shift = {0, -0.05} } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 64, @@ -1420,15 +1422,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", - x = 128, frame_count = 1, width = 64, - height = 64, - shift = {0, -0.05} + height = 64 } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 192, @@ -1459,8 +1459,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1485,16 +1485,18 @@ data:extend({ scale = 0.5, shift = {0, -0.5} }, - { + { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", - frames = 1, + x = 128, + frame_count = 1, width = 64, - height = 64 + height = 64, + shift = {0, -0.05} } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 64, @@ -1516,15 +1518,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", - x = 128, - frame_count = 1, + frames = 1, width = 64, - height = 64, - shift = {0, -0.05} + height = 64 } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 192, @@ -1555,8 +1555,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1581,16 +1581,18 @@ data:extend({ scale = 0.5, shift = {0, -0.5} }, - { + { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", + x = 128, frame_count = 1, width = 64, - height = 64 + height = 64, + shift = {0, -0.05} } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 64, @@ -1612,15 +1614,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", - x = 128, frame_count = 1, width = 64, - height = 64, - shift = {0, -0.05} + height = 64 } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 192, From 55434f1a9c04d25889d3a03ccee1763068ebdf47 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 00:59:29 +0200 Subject: [PATCH 040/236] Fixed mining drill graphics --- nullius/TODO_list.txt | 6 +- nullius/prototypes/entity/miner.lua | 785 +++++++++++++--------------- 2 files changed, 363 insertions(+), 428 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 6778b1b..81cd205 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -13,6 +13,8 @@ why does grass drone take this long to spawn grass ?? -> it also takes very long decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions update changelog and info.json(min version of dependencies) before publishing drones ammo category locale broken -coal spawn in rocks +coal spawn in rocks -> crystal rock with silica and alumina: okay it's from 1.1 +there are other kinds of rocks: rock, sandstone rock, bauxite rock, ironstone rock -> spawns sandstone, bauxite, iron ore, regular stone, soda ash, calcite mentions of petroleum in factoriopedia/what the extractor can mine -missing geothermal plant graphics \ No newline at end of file +missing geothermal plant graphics +some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index 09ae6de..6dc517f 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -43,6 +43,194 @@ local drill_animation_shadow_sequence = { 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1 } +function electric_mining_drill_smoke() + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-smoke.png", + line_length = 6, + width = 48, + height = 72, + frame_count = 30, + animation_speed = 0.4, + shift = util.by_pixel(0, 3*0.6666), + scale = 0.5*0.6666 + } +end + +function electric_mining_drill_smoke_front() + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-smoke-front.png", + line_length = 6, + width = 148, + height = 132, + frame_count = 30, + animation_speed = 0.4, + shift = util.by_pixel(-3*0.6666, 9*0.6666), + scale = 0.5*0.6666 + } +end + +function electric_mining_drill_animation(tint) + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill.png", + line_length = 6, + width = 162, + height = 156, + frame_count = 30, + animation_speed = 0.4, + frame_sequence = drill_animation_sequence, + shift = util.by_pixel(1*0.6666, -11*0.6666), + scale = 0.5*0.6666, + tint = tint + } +end + +function electric_mining_drill_shadow_animation() + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-shadow.png", + line_length = 7, + width = 218, + height = 56, + frame_count = 21, + animation_speed = 0.4, + frame_sequence = drill_animation_shadow_sequence, + draw_as_shadow = true, + shift = util.by_pixel(21*0.6666, 5*0.6666), + scale = 0.5*0.6666, + } +end + +function electric_mining_drill_horizontal_animation(tint) + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-horizontal.png", + line_length = 6, + width = 80, + height = 160, + frame_count = 30, + animation_speed = 0.4, + frame_sequence = drill_animation_sequence, + shift = util.by_pixel(2*0.6666, -12*0.6666), + scale = 0.5*0.6666, + tint = tint + } +end + +function electric_mining_drill_horizontal_front_animation(tint) + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-horizontal-front.png", + line_length = 6, + width = 66, + height = 154, + frame_count = 30, + animation_speed = 0.4, + frame_sequence = drill_animation_sequence, + shift = util.by_pixel(-3*0.6666, 3*0.6666), + scale = 0.5*0.6666, + tint = tint + } +end + +function electric_mining_drill_horizontal_shadow_animation() + return + { + priority = "high", + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-horizontal-shadow.png", + line_length = 7, + width = 180, + height = 164, + frame_count = 21, + animation_speed = 0.4, + frame_sequence = drill_animation_shadow_sequence, + draw_as_shadow = true, + shift = util.by_pixel(33, 1), + scale = 0.5 + } +end + +function electric_mining_drill_status_leds_working_visualisation(tint) + local led_blend_mode = nil -- "additive" + local led_tint = tint or {1, 1, 1} + return + { + apply_tint = "status", + always_draw = true, + north_animation = + { + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-N-light.png", + width = 32, + height = 32, + blend_mode = led_blend_mode, + tint = led_tint, + draw_as_glow = true, + shift = util.by_pixel(26*0.6666, -48*0.6666), + scale = 0.5*0.6666 + }, + east_animation = + { + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-E-light.png", + width = 32, + height = 34, + blend_mode = led_blend_mode, + tint = led_tint, + draw_as_glow = true, + shift = util.by_pixel(38*0.6666, -32*0.6666), + scale = 0.5*0.6666 + }, + south_animation = + { + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-S-light.png", + width = 38, + height = 46, + blend_mode = led_blend_mode, + tint = led_tint, + draw_as_glow = true, + shift = util.by_pixel(26*0.6666, 26*0.6666), + scale = 0.5*0.6666 + }, + west_animation = + { + filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-W-light.png", + width = 32, + height = 34, + blend_mode = led_blend_mode, + tint = led_tint, + draw_as_glow = true, + shift = util.by_pixel(-39*0.6666, -32*0.6666), + scale = 0.5*0.6666 + } + } +end + +function electric_mining_drill_add_light_offsets(t) + t.north_position = {0.8*0.6666, -1.5*0.6666} + t.east_position = {1.2*0.6666, -1*0.6666} + t.south_position = {0.8*0.6666, 0.8*0.6666} + t.west_position = {-1.2*0.6666, -1*0.6666} + return t +end + +local function scale_animation_waypoints(waypoints, scale) + local scaled_waypoints = {} + for dir, dirPoints in pairs(waypoints) do + scaled_waypoints[dir] = {} + for _, points in pairs(dirPoints) do + table.insert(scaled_waypoints[dir], {points[1] * scale, points[2] * scale}) + end + end + return scaled_waypoints +end + data:extend({ { type = "mining-drill", @@ -120,7 +308,7 @@ data:extend({ } }, graphics_set = { - animations = { + animation = { north = { layers = { { @@ -305,40 +493,40 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N.png", line_length = 1, - width = 96, - height = 104, + width = 190, + height = 208, frame_count = 1, animation_speed = 0.4, direction_count = 1, shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, - scale = 0.6666, + scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-output.png", line_length = 5, - width = 32, - height = 34, + width = 60, + height = 66, frame_count = 5, animation_speed = 0.4, direction_count = 1, - shift = util.by_pixel(-4*0.6666, -44*0.6666), - scale = 0.6666 + shift = util.by_pixel(-3*0.6666, -44*0.6666), + scale = 0.6666*0.5 }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-shadow.png", line_length = 1, - width = 106, - height = 104, + width = 212, + height = 204, frame_count = 1, animation_speed = 0.4, draw_as_shadow = true, - shift = util.by_pixel(6*0.6666, -4*0.6666), + shift = util.by_pixel(6*0.6666, -3*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 } } }, @@ -348,40 +536,40 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E.png", line_length = 1, - width = 94, - height = 94, + width = 192, + height = 188, frame_count = 1, animation_speed = 0.4, direction_count = 1, shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, - scale = 0.6666, + scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-output.png", line_length = 5, - width = 26, - height = 38, + width = 50, + height = 74, frame_count = 5, animation_speed = 0.4, direction_count = 1, shift = util.by_pixel(30*0.6666, -8*0.6666), - scale = 0.6666 + scale = 0.6666*0.5 }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-shadow.png", line_length = 1, - width = 112, - height = 92, + width = 222, + height = 182, frame_count = 1, animation_speed = 0.4, draw_as_shadow = true, shift = util.by_pixel(10*0.6666, 2*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 } } }, @@ -391,28 +579,28 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S.png", line_length = 1, - width = 92, - height = 98, + width = 184, + height = 192, frame_count = 1, animation_speed = 0.4, direction_count = 1, - shift = util.by_pixel(0, -2*0.6666), + shift = util.by_pixel(0, -1*0.6666), repeat_count = 5, - scale = 0.6666, + scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-shadow.png", line_length = 1, - width = 106, - height = 102, + width = 212, + height = 204, frame_count = 1, animation_speed = 0.4, draw_as_shadow = true, shift = util.by_pixel(6*0.6666, 2*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 } } }, @@ -422,46 +610,46 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W.png", line_length = 1, - width = 96, - height = 94, + width = 192, + height = 188, frame_count = 1, animation_speed = 0.4, direction_count = 1, shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, - scale = 0.6666, + scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-output.png", line_length = 5, - width = 24, - height = 28, + width = 50, + height = 60, frame_count = 5, animation_speed = 0.4, direction_count = 1, - shift = util.by_pixel(-30*0.6666, -12*0.6666), - scale = 0.6666 + shift = util.by_pixel(-31*0.6666, -13*0.6666), + scale = 0.6666*0.5 }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-shadow.png", line_length = 1, - width = 102, - height = 92, + width = 200, + height = 182, frame_count = 1, animation_speed = 0.4, draw_as_shadow = true, - shift = util.by_pixel(-6*0.6666, 2*0.6666), + shift = util.by_pixel(-5*0.6666, 2*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 } } }, }, - shift_animation_waypoints = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.shift_animation_waypoints, + shift_animation_waypoints = scale_animation_waypoints(data.raw["mining-drill"]["electric-mining-drill"].graphics_set.shift_animation_waypoints, 0.6666), shift_animation_waypoint_stop_duration = 195 / 0.4, shift_animation_transition_duration = 30 / 0.4, @@ -471,18 +659,8 @@ data:extend({ synced_fadeout = true, align_to_waypoint = true, apply_tint = "resource-color", - animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-smoke.png", - line_length = 6, - width = 24, - height = 38, - frame_count = 30, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(0, 2*0.6666), - scale = 0.6666 - }, + animation = electric_mining_drill_smoke(), + north_position = { 0, 0.25*0.6666 }, east_position = { 0, 0 }, south_position = { 0, 0.25*0.6666 }, @@ -499,13 +677,12 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-smoke.png", line_length = 5, - width = 24, - height = 30, + width = 42, + height = 58, frame_count = 10, animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(-2*0.6666, -44*0.6666), - scale = 0.6666 + shift = util.by_pixel(-1*0.6666, -44*0.6666), + scale = 0.6666*0.5 } } }, @@ -518,128 +695,36 @@ data:extend({ { animated_shift = true, always_draw = true, - north_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12*0.6666), - scale = 0.6666, - tint = {0.6, 0.7, 0.8} - }, - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-shadow.png", - line_length = 7, - width = 112, - height = 26, - frame_count = 21, - animation_speed = 0.4, - frame_sequence = drill_animation_shadow_sequence, - draw_as_shadow = true, - shift = util.by_pixel(20*0.6666, 6*0.6666), - scale = 0.6666 - } + north_animation = + { + layers = + { + electric_mining_drill_animation({0.6, 0.7, 0.8}), + electric_mining_drill_shadow_animation() } }, - east_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2*0.6666, -12*0.6666), - scale = 0.6666, - tint = {0.6, 0.7, 0.8} - }, - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-shadow.png", - line_length = 7, - width = 92, - height = 80, - frame_count = 21, - animation_speed = 0.4, - frame_sequence = drill_animation_shadow_sequence, - draw_as_shadow = true, - shift = util.by_pixel(32*0.6666, 2*0.6666), - scale = 0.6666 - } + east_animation = + { + layers = + { + electric_mining_drill_horizontal_animation({0.6, 0.7, 0.8}), + electric_mining_drill_horizontal_shadow_animation() } }, - south_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12*0.6666), - scale = 0.6666, - tint = {0.6, 0.7, 0.8} - }, - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-shadow.png", - line_length = 7, - width = 112, - height = 26, - frame_count = 21, - animation_speed = 0.4, - frame_sequence = drill_animation_shadow_sequence, - draw_as_shadow = true, - shift = util.by_pixel(20*0.6666, 6*0.6666), - scale = 0.6666 - } + south_animation = + { + layers = + { + electric_mining_drill_animation({0.6, 0.7, 0.8}), + electric_mining_drill_shadow_animation() } }, - west_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2*0.6666, -12*0.6666), - scale = 0.6666, - tint = {0.6, 0.7, 0.8} - }, - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-shadow.png", - line_length = 7, - width = 92, - height = 80, - frame_count = 21, - animation_speed = 0.4, - frame_sequence = drill_animation_shadow_sequence, - draw_as_shadow = true, - shift = util.by_pixel(32*0.6666, 2*0.6666), - scale = 0.6666 - } + west_animation = + { + layers = + { + electric_mining_drill_horizontal_animation({0.6, 0.7, 0.8}), + electric_mining_drill_horizontal_shadow_animation() } }, }, @@ -650,18 +735,8 @@ data:extend({ synced_fadeout = true, align_to_waypoint = true, apply_tint = "resource-color", - animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-smoke-front.png", - line_length = 6, - width = 76, - height = 68, - frame_count = 30, - animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(-4*0.6666, 8*0.6666), - scale = 0.6666 - }, + animation = electric_mining_drill_smoke_front(), + north_position = { 0, 0.25*0.6666 }, east_position = { 0, 0 }, south_position = { 0, 0.25*0.6666 }, @@ -680,13 +755,12 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-smoke.png", line_length = 5, - width = 24, - height = 28, + width = 46, + height = 56, frame_count = 10, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(24*0.6666, -12*0.6666), - scale = 0.6666 + scale = 0.6666*0.5 } } }, @@ -696,13 +770,12 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-smoke.png", line_length = 5, - width = 24, - height = 18, + width = 48, + height = 36, frame_count = 10, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(-2*0.6666, 20*0.6666), - scale = 0.6666 + scale = 0.6666*0.5 } } }, @@ -712,13 +785,12 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-smoke.png", line_length = 5, - width = 26, - height = 30, + width = 46, + height = 54, frame_count = 10, animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(-26*0.6666, -12*0.6666), - scale = 0.6666 + shift = util.by_pixel(-25*0.6666, -11*0.6666), + scale = 0.6666*0.5 } } } @@ -728,34 +800,8 @@ data:extend({ { animated_shift = true, always_draw = true, - east_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2*0.6666, 4*0.6666), - scale = 0.6666, - tint = {0.6, 0.7, 0.8} - }, - west_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2*0.6666, 4*0.6666), - scale = 0.6666, - tint = {0.6, 0.7, 0.8} - } + east_animation = electric_mining_drill_horizontal_front_animation({0.6, 0.7, 0.8}), + west_animation = electric_mining_drill_horizontal_front_animation({0.6, 0.7, 0.8}), }, -- front frame @@ -766,13 +812,13 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-front.png", line_length = 1, - width = 66, - height = 74, + width = 136, + height = 148, frame_count = 1, animation_speed = 0.4, direction_count = 1, - shift = util.by_pixel(22*0.6666, 10*0.6666), - scale = 0.6666, + shift = util.by_pixel(21*0.6666, 10*0.6666), + scale = 0.5*0.6666, tint = {0.6, 0.7, 0.8} }, south_animation = { @@ -781,24 +827,24 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-output.png", line_length = 5, - width = 44, - height = 28, + width = 84, + height = 56, frame_count = 5, animation_speed = 0.4, - shift = util.by_pixel(-2*0.6666, 34*0.6666), - scale = 0.6666 + shift = util.by_pixel(-1*0.6666, 34*0.6666), + scale = 0.6666*0.5 }, { priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-front.png", line_length = 1, - width = 96, - height = 54, + width = 190, + height = 104, frame_count = 1, animation_speed = 0.4, repeat_count = 5, - shift = util.by_pixel(0, 26*0.6666), - scale = 0.6666, + shift = util.by_pixel(0, 27*0.6666), + scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} } } @@ -807,81 +853,38 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-front.png", line_length = 1, - width = 68, - height = 70, + width = 134, + height = 140, frame_count = 1, animation_speed = 0.4, direction_count = 1, shift = util.by_pixel(-22*0.6666, 12*0.6666), - scale = 0.6666, + scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} } }, -- LEDs - { - apply_tint = "status", - always_draw = true, - draw_as_sprite = true, - north_animation = { - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-light.png", - draw_as_light = true, - width = 16, - height = 16, - blend_mode = nil, - tint = {1,1,1,0.5}, - shift = util.by_pixel(26*0.6666, -48*0.6666), - scale = 0.6666 - }, - east_animation = { - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-light.png", - draw_as_light = true, - width = 16, - height = 18, - blend_mode = nil, - tint = {1,1,1,0.5}, - shift = util.by_pixel(38*0.6666, -32*0.6666), - scale = 0.6666 - }, - south_animation = { - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-light.png", - draw_as_light = true, - width = 20, - height = 24, - blend_mode = nil, - tint = {1,1,1,0.5}, - shift = util.by_pixel(26*0.6666, 26*0.6666), - scale = 0.6666 - }, - west_animation = { - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-light.png", - draw_as_light = true, - width = 18, - height = 18, - blend_mode = nil, - tint = {1,1,1,0.5}, - shift = util.by_pixel(-40*0.6666, -32*0.6666), - scale = 0.6666 - } - }, - - -- light - { - light = {intensity = 1, size = 3, color={r=1, g=1, b=1}, minimum_darkness = 0.1}, - north_position = {0.8*0.6666, -1.5*0.6666}, - east_position = {1.2*0.6666, -1*0.6666}, - south_position = {0.8*0.6666, 0.8*0.6666}, - west_position = {-1.2*0.6666, -1*0.6666} - }, - { - always_draw = true, - apply_tint = "status", - light = { intensity = 0.8, size = 1.5, color={r=1, g=1, b=1}, minimum_darkness = 0.1 }, - north_position = {0.8*0.6666, -1.5*0.6666}, - east_position = {1.2*0.6666, -1*0.6666}, - south_position = {0.8*0.6666, 0.8*0.6666}, - west_position = {-1.2*0.6666, -1*0.6666} - } + electric_mining_drill_status_leds_working_visualisation({1,1,1,0.5}), + + -- -- light + -- electric_mining_drill_add_light_offsets( + -- { + -- always_draw = true, + -- apply_tint = "status", + -- light = {intensity = 0.2, size = 2, color={1, 1, 1}, minimum_darkness = 0.1} + -- }) + --TODO: Below are the original lights in nullius code, above is a new one from the base game code in 2.0, if those two below don't work well, use the one above + electric_mining_drill_add_light_offsets( + { + light = {intensity = 1, size = 3, color={r=1, g=1, b=1}, minimum_darkness = 0.1}, + }), + electric_mining_drill_add_light_offsets( + { + always_draw = true, + apply_tint = "status", + light = { intensity = 0.8, size = 1.5, color={r=1, g=1, b=1}, minimum_darkness = 0.1 }, + }) } } } @@ -944,14 +947,13 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N.png", line_length = 1, - width = 96, - height = 104, + width = 190, + height = 208, frame_count = 1, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 }, data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.north.layers[2], data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.north.layers[3] @@ -963,14 +965,13 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E.png", line_length = 1, - width = 94, - height = 94, + width = 192, + height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 }, data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.east.layers[2], data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.east.layers[3] @@ -982,16 +983,15 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S.png", line_length = 1, - width = 92, - height = 98, + width = 184, + height = 192, frame_count = 1, animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(0, -2*0.6666), + shift = util.by_pixel(0, -1*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 }, - data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.west.layers[2] + data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.south.layers[2] } }, west = { @@ -1000,14 +1000,13 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W.png", line_length = 1, - width = 96, - height = 94, + width = 192, + height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, - scale = 0.6666 + scale = 0.6666*0.5 }, data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.west.layers[2], data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.animation.west.layers[3] @@ -1015,7 +1014,7 @@ data:extend({ }, }, - shift_animation_waypoints = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.shift_animation_waypoints, + shift_animation_waypoints = scale_animation_waypoints(data.raw["mining-drill"]["electric-mining-drill"].graphics_set.shift_animation_waypoints,0.6666), shift_animation_waypoint_stop_duration = 195 / 0.4, shift_animation_transition_duration = 30 / 0.4, @@ -1027,76 +1026,36 @@ data:extend({ { animated_shift = true, always_draw = true, - north_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12*0.6666), - scale = 0.6666 - }, - data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.working_visualisations[3].north_animation.layers[2] + north_animation = + { + layers = + { + electric_mining_drill_animation(), + electric_mining_drill_shadow_animation() } }, - east_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2*0.6666, -12*0.6666), - scale = 0.6666 - }, - data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.working_visualisations[3].east_animation.layers[2] + east_animation = + { + layers = + { + electric_mining_drill_horizontal_animation(), + electric_mining_drill_horizontal_shadow_animation() } }, - south_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill.png", - line_length = 6, - width = 84, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(0, -12*0.6666), - scale = 0.6666 - }, - data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.working_visualisations[3].south_animation.layers[2] + south_animation = + { + layers = + { + electric_mining_drill_animation(), + electric_mining_drill_shadow_animation() } }, - west_animation = { - layers = { - { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal.png", - line_length = 6, - width = 40, - height = 80, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(2*0.6666, -12*0.6666), - scale = 0.6666 - }, - data.raw["mining-drill"]["nullius-small-miner-2"].graphics_set.working_visualisations[3].west_animation.layers[2] + west_animation = + { + layers = + { + electric_mining_drill_horizontal_animation(), + electric_mining_drill_horizontal_shadow_animation() } }, }, @@ -1108,32 +1067,8 @@ data:extend({ { animated_shift = true, always_draw = true, - east_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2*0.6666, 4*0.6666), - scale = 0.6666 - }, - west_animation = { - priority = "high", - filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-horizontal-front.png", - line_length = 6, - width = 32, - height = 76, - frame_count = 30, - animation_speed = 0.4, - frame_sequence = drill_animation_sequence, - direction_count = 1, - shift = util.by_pixel(-2*0.6666, 4*0.6666), - scale = 0.6666 - } + east_animation = electric_mining_drill_horizontal_front_animation(), + west_animation = electric_mining_drill_horizontal_front_animation() }, -- front frame @@ -1144,13 +1079,12 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-E-front.png", line_length = 1, - width = 66, - height = 74, + width = 136, + height = 148, frame_count = 1, animation_speed = 0.4, - direction_count = 1, - shift = util.by_pixel(22*0.6666, 10*0.6666), - scale = 0.6666 + shift = util.by_pixel(21*0.6666, 10*0.6666), + scale = 0.6666*0.5 }, south_animation = { layers = { @@ -1159,13 +1093,13 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-S-front.png", line_length = 1, - width = 96, - height = 54, + width = 190, + height = 104, frame_count = 1, animation_speed = 0.4, repeat_count = 5, - shift = util.by_pixel(0, 26*0.6666), - scale = 0.6666 + shift = util.by_pixel(0, 27*0.6666), + scale = 0.6666*0.5 } } }, @@ -1173,13 +1107,12 @@ data:extend({ priority = "high", filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-W-front.png", line_length = 1, - width = 68, - height = 70, + width = 134, + height = 140, frame_count = 1, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(-22*0.6666, 12*0.6666), - scale = 0.6666 + scale = 0.6666*0.5 } }, From 89004fcbc4c6a087320f8d3a946f5e86191a63f2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 01:08:18 +0200 Subject: [PATCH 041/236] Updated recipe ingredients to new format for underground pipes mod --- nullius/prototypes/mods.lua | 102 ++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index d08e3b5..6e7671c 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -936,8 +936,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"one-to-one-forward-t2-pipe", 1}, - {"nullius-underground-pipe-2", 1} + {type = "item", name = "one-to-one-forward-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-2", amount = 1} }, results = { {type = "item", name = "one-to-two-perpendicular-t2-pipe", amount = 1} @@ -952,8 +952,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"one-to-two-perpendicular-t2-pipe", 1}, - {"nullius-underground-pipe-2", 1} + {type = "item", name = "one-to-two-perpendicular-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-2", amount = 1} }, results = { {type = "item", name = "one-to-three-forward-t2-pipe", amount = 1} @@ -968,9 +968,9 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"one-to-one-forward-t2-pipe", 1}, - {"nullius-underground-pipe-2", 1}, - {"nullius-glass", 1} + {type = "item", name = "one-to-one-forward-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-2", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1} }, results = { {type = "item", name = "underground-i-t2-pipe", amount = 1} @@ -985,8 +985,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"underground-i-t2-pipe", 1}, - {"nullius-pipe-2", 2} + {type = "item", name = "underground-i-t2-pipe", amount = 1}, + {type = "item", name = "nullius-pipe-2", amount = 2} }, results = { {type = "item", name = "underground-L-t2-pipe", amount = 1} @@ -1000,8 +1000,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"underground-L-t2-pipe", 1}, - {"nullius-underground-pipe-2", 1} + {type = "item", name = "underground-L-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-2", amount = 1} }, results = { {type = "item", name = "underground-t-t2-pipe", amount = 1} @@ -1016,8 +1016,8 @@ data:extend({ category = "tiny-crafting", energy_required = 3, ingredients = { - {"nullius-relief-valve", 2}, - {"nullius-red-wire", 1} + {type = "item", name = "nullius-relief-valve", amount = 2}, + {type = "item", name = "nullius-red-wire", amount = 1} }, results = { {type = "item", name = "80-overflow-valve", amount = 1} @@ -1032,9 +1032,9 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"one-to-one-forward-t2-pipe", 1}, - {"nullius-bearing", 1}, - {"nullius-underground-pipe-3", 1} + {type = "item", name = "one-to-one-forward-t2-pipe", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 1} }, results = { {type = "item", name = "one-to-one-forward-t3-pipe", amount = 1} @@ -1048,9 +1048,9 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"one-to-two-perpendicular-t2-pipe", 1}, - {"nullius-bearing", 1}, - {"nullius-underground-pipe-3", 2} + {type = "item", name = "one-to-two-perpendicular-t2-pipe", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 2} }, results = { {type = "item", name = "one-to-two-perpendicular-t3-pipe", amount = 1} @@ -1064,9 +1064,9 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"one-to-three-forward-t2-pipe", 1}, - {"nullius-bearing", 1}, - {"nullius-underground-pipe-3", 3} + {type = "item", name = "one-to-three-forward-t2-pipe", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 3} }, results = { {type = "item", name = "one-to-three-forward-t3-pipe", amount = 1} @@ -1080,8 +1080,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"underground-i-t2-pipe", 1}, - {"nullius-underground-pipe-3", 2} + {type = "item", name = "underground-i-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 2} }, results = { {type = "item", name = "underground-i-t3-pipe", amount = 1} @@ -1095,8 +1095,8 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"underground-L-t2-pipe", 1}, - {"nullius-underground-pipe-3", 3} + {type = "item", name = "underground-L-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 3} }, results = { {type = "item", name = "underground-L-t3-pipe", amount = 1} @@ -1110,8 +1110,8 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"underground-t-t2-pipe", 1}, - {"nullius-underground-pipe-3", 4} + {type = "item", name = "underground-t-t2-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 4} }, results = { {type = "item", name = "underground-t-t3-pipe", amount = 1} @@ -1126,8 +1126,8 @@ data:extend({ category = "tiny-crafting", energy_required = 3, ingredients = { - {"nullius-top-up-valve", 2}, - {"nullius-red-wire", 1} + {type = "item", name = "nullius-top-up-valve", amount = 2}, + {type = "item", name = "nullius-red-wire", amount = 1} }, results = { {type = "item", name = "80-top-up-valve", amount = 1} @@ -1142,8 +1142,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"one-to-one-forward-t3-pipe", 1}, - {"nullius-underground-pipe-4", 1} + {type = "item", name = "one-to-one-forward-t3-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-4", amount = 1} }, results = { {type = "item", name = "one-to-one-forward-pipe", amount = 1} @@ -1157,8 +1157,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"one-to-two-perpendicular-t3-pipe", 1}, - {"nullius-underground-pipe-4", 2} + {type = "item", name = "one-to-two-perpendicular-t3-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-4", amount = 2} }, results = { {type = "item", name = "one-to-two-perpendicular-pipe", amount = 1} @@ -1172,8 +1172,8 @@ data:extend({ category = "medium-crafting", energy_required = 4, ingredients = { - {"one-to-three-forward-t3-pipe", 1}, - {"nullius-underground-pipe-4", 3} + {type = "item", name = "one-to-three-forward-t3-pipe", amount = 1}, + {type = "item", name = "nullius-underground-pipe-4", amount = 3} }, results = { {type = "item", name = "one-to-three-forward-pipe", amount = 1} @@ -1187,8 +1187,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"one-to-two-perpendicular-pipe", 1}, - {"one-to-one-forward-pipe", 1} + {type = "item", name = "one-to-two-perpendicular-pipe", amount = 1}, + {type = "item", name = "one-to-one-forward-pipe", amount = 1} }, results = { {type = "item", name = "one-to-four-pipe", amount = 1} @@ -1202,9 +1202,9 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"underground-i-t3-pipe", 1}, - {"nullius-hard-glass", 1}, - {"nullius-underground-pipe-4", 2} + {type = "item", name = "underground-i-t3-pipe", amount = 1}, + {type = "item", name = "nullius-hard-glass", amount = 1}, + {type = "item", name = "nullius-underground-pipe-4", amount = 2} }, results = { {type = "item", name = "underground-i-pipe", amount = 1} @@ -1218,9 +1218,9 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"underground-L-t3-pipe", 1}, - {"nullius-hard-glass", 1}, - {"nullius-underground-pipe-4", 2} + {type = "item", name = "underground-L-t3-pipe", amount = 1}, + {type = "item", name = "nullius-hard-glass", amount = 1}, + {type = "item", name = "nullius-underground-pipe-4", amount = 2} }, results = { {type = "item", name = "underground-L-pipe", amount = 1} @@ -1234,9 +1234,9 @@ data:extend({ category = "medium-crafting", energy_required = 10, ingredients = { - {"underground-t-t3-pipe", 1}, - {"nullius-hard-glass", 1}, - {"nullius-underground-pipe-4", 3} + {type = "item", name = "underground-t-t3-pipe", amount = 1}, + {type = "item", name = "nullius-hard-glass", amount = 1}, + {type = "item", name = "nullius-underground-pipe-4", amount = 3} }, results = { {type = "item", name = "underground-t-pipe", amount = 1} @@ -1250,8 +1250,8 @@ data:extend({ category = "medium-crafting", energy_required = 8, ingredients = { - {"underground-L-pipe", 2}, - {"nullius-underground-pipe-4", 1} + {type = "item", name = "underground-L-pipe", amount = 2}, + {type = "item", name = "nullius-underground-pipe-4", amount = 1} }, results = { {type = "item", name = "underground-cross-pipe", amount = 1} @@ -1266,8 +1266,8 @@ data:extend({ category = "small-crafting", energy_required = 12, ingredients = { - {"nullius-small-pump-2", 3}, - {"underground-i-pipe", 2} + {type = "item", name = "nullius-small-pump-2", amount = 3}, + {type = "item", name = "underground-i-pipe", amount = 2} }, results = { {type = "item", name = "underground-mini-pump", amount = 1} From f2a4d6b2ad0ddff7d6dee22d2d99939d0e12c380 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 12:01:20 +0200 Subject: [PATCH 042/236] Fixed coal spawning in rocks and missing loot from most other rocks --- nullius/TODO_list.txt | 2 - nullius/prototypes/rock.lua | 92 +++++++++++++++++++++---------------- 2 files changed, 52 insertions(+), 42 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 81cd205..435d664 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -13,8 +13,6 @@ why does grass drone take this long to spawn grass ?? -> it also takes very long decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions update changelog and info.json(min version of dependencies) before publishing drones ammo category locale broken -coal spawn in rocks -> crystal rock with silica and alumina: okay it's from 1.1 -there are other kinds of rocks: rock, sandstone rock, bauxite rock, ironstone rock -> spawns sandstone, bauxite, iron ore, regular stone, soda ash, calcite mentions of petroleum in factoriopedia/what the extractor can mine missing geothermal plant graphics some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file diff --git a/nullius/prototypes/rock.lua b/nullius/prototypes/rock.lua index df23ca4..3ec8ae2 100644 --- a/nullius/prototypes/rock.lua +++ b/nullius/prototypes/rock.lua @@ -1,52 +1,62 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" +-- stolen from https://stackoverflow.com/questions/1426954/split-string-in-lua +local function split(inputstr, sep) + if sep == nil then + sep = "%s" + end + local t = {} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t +end + for _,rock in pairs(data.raw["simple-entity"]) do local primary = nil local secondary = "stone" local tertiary = "nullius-mineral-dust" local locale_name = nil - if (string.sub(rock.name, 1, 5) == "rock-") then - if (string.sub(rock.name, -6, -1) == "-brown") or - (string.sub(rock.name, -4, -1) == "-red") or - (string.sub(rock.name, -10, -1) == "-dustyrose") then + + local tmp = split(rock.name, "-") + if #tmp == 3 then -- regular rock + rockColor = tmp[3] + if rockColor ~= "rock" then + if (rockColor == "brown") or (rockColor == "red") or (rockColor == "dustyrose") then primary = "nullius-bauxite" tertiary = "nullius-sand" - locale_name = "bauxite" - elseif (string.sub(rock.name, -6, -1) == "-white") then + locale_name = "bauxite" + elseif (rockColor == "white") then primary = "nullius-limestone" - locale_name = "limestone" - elseif (string.sub(rock.name, -6, -1) == "-cream") or - (string.sub(rock.name, -6, -1) == "-beige") then + locale_name = "limestone" + elseif (rockColor == "cream") or (rockColor == "beige") then primary = "nullius-limestone" secondary = "nullius-gypsum" - locale_name = "limestone" - elseif (string.sub(rock.name, -4, -1) == "-tan") then + locale_name = "limestone" + elseif (rockColor == "tan") then primary = "nullius-gypsum" secondary = "nullius-limestone" - elseif (string.sub(rock.name, -5, -1) == "-grey") then + elseif (rockColor == "grey") then primary = "stone" secondary = "nullius-sandstone" tertiary = "nullius-gravel" else primary = "iron-ore" tertiary = "nullius-gravel" - locale_name = "ironstone" + locale_name = "ironstone" end - elseif (string.sub(rock.name, 1, 10) == "sand-rock-") then + end + elseif #tmp == 4 then -- sand rock + rockColor = tmp[4] primary = "nullius-sandstone" tertiary = "nullius-sand" - locale_name = "sandstone" - if (string.sub(rock.name, -4, -1) == "-tan") or - (string.sub(rock.name, -6, -1) == "-brown") or - (string.sub(rock.name, -10, -1) == "-dustyrose") or - (string.sub(rock.name, -4, -1) == "-red") then + locale_name = "sandstone" + if (rockColor == "tan") or (rockColor == "brown") or (rockColor == "dustyrose") or (rockColor == "red") then secondary = "nullius-bauxite" - elseif (string.sub(rock.name, -5, -1) == "-grey") or - (string.sub(rock.name, -6, -1) == "-white") or - (string.sub(rock.name, -6, -1) == "-beige") then + elseif (rockColor == "grey") or (rockColor == "white") or (rockColor == "beige") then secondary = "nullius-limestone" - elseif (string.sub(rock.name, -6, -1) == "-cream") then + elseif (rockColor == "cream") then secondary = "nullius-bauxite" else secondary = "iron-ore" @@ -81,7 +91,7 @@ for _,rock in pairs(data.raw["simple-entity"]) do end end if ((amount > 2) and not foundcoal) then - table.insert(rock.minable.results, {name=secondary, amount_min=1, amount_max=amount-1}) + table.insert(rock.minable.results, {type = "item", name=secondary, amount_min=1, amount_max=amount-1}) end rock.loot = {} for _,minres in pairs(rock.minable.results) do @@ -113,22 +123,24 @@ for _,rock in pairs(data.raw["simple-entity"]) do end --- if (data.raw["simple-entity"]["angels-crystal-rock"] ~= nil) then --TODO: decide if we include this kind of rock or if we remove it completely --- data.raw["simple-entity"]["angels-crystal-rock"].minable = { --- mining_particle = "stone-particle", --- mining_time = 8, --- results = { --- {type="item", name="nullius-silica", amount=16}, --- {type="item", name="nullius-alumina", amount=8} --- } --- } --- data.raw["simple-entity"]["angels-crystal-rock"].loot = { --- {item = "nullius-silica", probability = 1, count_min = 4, count_max = 12}, --- {item = "nullius-alumina", probability = 1, count_min = 2, count_max = 6} --- } --- end -if (data.raw["simple-entity"]["sand-rock-big-white"] ~= nil) then - table.insert(data.raw["simple-entity"]["sand-rock-big-white"].minable.results, +if (data.raw["simple-entity"]["angels-crystal-rock"] ~= nil) then --TODO: re introduce angels crystal rock + data.raw["simple-entity"]["angels-crystal-rock"].minable = { + mining_particle = "stone-particle", + mining_time = 8, + results = { + {type="item", name="nullius-silica", amount=16}, + {type="item", name="nullius-alumina", amount=8} + } + } + data.raw["simple-entity"]["angels-crystal-rock"].loot = { + {item = "nullius-silica", probability = 1, count_min = 4, count_max = 12}, + {item = "nullius-alumina", probability = 1, count_min = 2, count_max = 6} + } +end + +-- From Alien Biomes +if (data.raw["simple-entity"]["sand-big-rock-white"] ~= nil) then + table.insert(data.raw["simple-entity"]["sand-big-rock-white"].minable.results, {type="item", name="nullius-soda-ash", probability=0.1, amount_min=1, amount_max=2} ) end From 918d3fed2f82a961a2c9bdeef87a782626861401 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 12:21:23 +0200 Subject: [PATCH 043/236] Fixed underground pipes fluid-box and visualizations --- nullius/prototypes/entity/plumbing.lua | 33 ++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 8e985d9..09ea04c 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -3298,17 +3298,20 @@ data:extend({ volume = 400, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -0.1}, direction = defines.direction.north }, + { position = {0, 0}, direction = defines.direction.north }, { connection_type = "underground", - position = {0, 0.1}, + position = {0, 0}, max_underground_distance = 15, direction = defines.direction.south } - } + }, + hide_connection_info = true }, impact_category = data.raw["pipe-to-ground"]["pipe-to-ground"].impact_category, - pictures = undergroundpipepics("__boblogistics__/graphics/entity/pipe/copper-tungsten/") + pictures = undergroundpipepics("__boblogistics__/graphics/entity/pipe/copper-tungsten/"), + visualization = data.raw["pipe-to-ground"]["pipe-to-ground"].visualization, + disabled_visualization = data.raw["pipe-to-ground"]["pipe-to-ground"].disabled_visualization, }, { @@ -3334,17 +3337,20 @@ data:extend({ volume = 400, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -0.1}, direction = defines.direction.north }, + { position = {0, 0}, direction = defines.direction.north }, { connection_type = "underground", - position = {0, 0.1}, + position = {0, 0}, max_underground_distance = 19, direction = defines.direction.south } - } + }, + hide_connection_info = true }, impact_category = data.raw["pipe-to-ground"]["pipe-to-ground"].impact_category, - pictures = data.raw["pipe-to-ground"]["bob-plastic-pipe-to-ground"].pictures + pictures = data.raw["pipe-to-ground"]["bob-plastic-pipe-to-ground"].pictures, + visualization = data.raw["pipe-to-ground"]["pipe-to-ground"].visualization, + disabled_visualization = data.raw["pipe-to-ground"]["pipe-to-ground"].disabled_visualization, }, { @@ -3369,16 +3375,19 @@ data:extend({ volume = 400, pipe_covers = pipecoverspictures(), pipe_connections = { - { position = {0, -0.1}, direction = defines.direction.north }, + { position = {0, 0}, direction = defines.direction.north }, { - position = {0, 0.1}, + position = {0, 0}, connection_type = "underground", max_underground_distance = 23, direction = defines.direction.south } - } + }, + hide_connection_info = true }, impact_category = data.raw["pipe-to-ground"]["pipe-to-ground"].impact_category, - pictures = undergroundpipepics("__boblogistics__/graphics/entity/pipe/tungsten/") + pictures = undergroundpipepics("__boblogistics__/graphics/entity/pipe/tungsten/"), + visualization = data.raw["pipe-to-ground"]["pipe-to-ground"].visualization, + disabled_visualization = data.raw["pipe-to-ground"]["pipe-to-ground"].disabled_visualization, } }) From 95b6683afbc6ceb2974bcb160de956c18fc5c479 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 14:51:22 +0200 Subject: [PATCH 044/236] Fixed Fluid Must Flow compatibility --- nullius/migrations/nullius_2.0.0.json | 4 +- nullius/prototypes/mods.lua | 124 +++++++++++++++++--------- nullius/prototypes/override_mod.lua | 22 ++--- nullius/prototypes/recipe_book.lua | 4 +- 4 files changed, 97 insertions(+), 57 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index f46bbf6..85d02b8 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -1,7 +1,9 @@ { "recipe": [ - ["nullius-empty-canister", "nullius-canister"] + ["nullius-empty-canister", "nullius-canister"], + ["nullius-duct-end-point-outtake", "nullius-duct-exhaust"], + ["nullius-duct-end-point-intake", "nullius-duct-intake"] ], "tile":[ ["angels-tile-clay-brick", "nullius-tile-clay-brick"] diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 6e7671c..509de39 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -2144,88 +2144,106 @@ data:extend({ { type = "recipe", name = "nullius-duct-small", + localised_name = {"entity-name.duct-small"}, enabled = false, always_show_made_in = true, category = "hand-casting", energy_required = 2, ingredients = { - {"nullius-box-steel-plate", 1}, - {"nullius-underground-pipe-3", 1} + {type = "item", name = "nullius-box-steel-plate", amount = 1}, + {type = "item", name = "nullius-underground-pipe-3", amount = 1} }, - result = "duct-small" + results = { + {type = "item", name = "duct-small", amount = 1}, + } }, { type = "recipe", name = "nullius-duct-curve", + localised_name = {"entity-name.duct-curve"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 2, ingredients = { - {"duct-small", 2}, - {"nullius-steel-rod", 1} + {type = "item", name = "duct-small", amount = 2}, + {type = "item", name = "nullius-steel-rod", amount = 1} }, - result = "duct-curve" + results = { + {type = "item", name = "duct-curve", amount = 1}, + } }, { type = "recipe", name = "nullius-duct-t-junction", + localised_name = {"entity-name.duct-t-junction"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 3, ingredients = { - {"duct-small", 3}, - {"nullius-steel-rod", 2} + {type = "item", name = "duct-small", amount = 3}, + {type = "item", name = "nullius-steel-rod", amount = 2} }, - result = "duct-t-junction" + results = { + {type = "item", name = "duct-t-junction", amount = 1}, + } }, { type = "recipe", name = "nullius-duct-cross", + localised_name = {"entity-name.duct-cross"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 4, ingredients = { - {"duct-small", 4}, - {"nullius-steel-rod", 3} + {type = "item", name = "duct-small", amount = 4}, + {type = "item", name = "nullius-steel-rod", amount = 3} }, - result = "duct-cross" + results = { + {type = "item", name = "duct-cross", amount = 1}, + } }, { type = "recipe", - name = "nullius-duct-end-point-outtake", + name = "nullius-duct-exhaust", + localised_name = {"entity-name.duct-exhaust"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 5, ingredients = { - {"duct-cross", 1}, - {"nullius-outfall-2", 1} + {type = "item", name = "duct-cross", amount = 1}, + {type = "item", name = "nullius-outfall-2", amount = 1} }, - result = "duct-end-point-outtake" + results = { + {type = "item", name = "duct-exhaust", amount = 1}, + } }, { type = "recipe", - name = "nullius-duct-end-point-intake", + name = "nullius-duct-intake", + localised_name = {"entity-name.duct-intake"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 5, ingredients = { - {"duct-end-point-outtake", 1}, - {"nullius-box-pump-2", 1} + {type = "item", name = "duct-exhaust", amount = 1}, + {type = "item", name = "nullius-box-pump-2", amount = 1} }, - result = "duct-end-point-intake" + results = { + {type = "item", name = "duct-intake", amount = 1}, + } }, { type = "technology", name = "nullius-ducts", - localised_name = {"technology-name.Ducts"}, - localised_description = {"technology-description.Ducts"}, - icon = "__FluidMustFlow__/graphics/icon/technologies/iron_duct_tecnology.png", - icon_size = 128, + localised_name = {"technology-name.ducts"}, + localised_description = {"technology-description.ducts"}, + icon = "__FluidMustFlow__/graphics/icons/technologies/ducts.png", + icon_size = 256, order = "nullius-df", effects = { { @@ -2250,11 +2268,11 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-duct-end-point-outtake", + recipe = "nullius-duct-exhaust", }, { type = "unlock-recipe", - recipe = "nullius-duct-end-point-intake", + recipe = "nullius-duct-intake", }, { type = "unlock-recipe", @@ -2284,54 +2302,66 @@ data:extend({ { type = "recipe", name = "nullius-duct", + localised_name = {"entity-name.duct"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 2, ingredients = { - {"duct-small", 2}, - {"nullius-steel-rod", 1} + {type = "item", name = "duct-small", amount = 2}, + {type = "item", name = "nullius-steel-rod", amount = 1} }, - result = "duct" + results = { + {type = "item", name = "duct", amount = 1}, + } }, { type = "recipe", name = "nullius-duct-long", + localised_name = {"entity-name.duct-long"}, enabled = false, always_show_made_in = true, category = "huge-crafting", energy_required = 2, ingredients = { - {"duct", 2}, - {"nullius-steel-rod", 1} + {type = "item", name = "duct", amount = 2}, + {type = "item", name = "nullius-steel-rod", amount = 1} }, - result = "duct-long" + results = { + {type = "item", name = "duct-long", amount = 1}, + } }, { type = "recipe", name = "nullius-duct-underground", + localised_name = {"entity-name.duct-underground"}, enabled = false, always_show_made_in = true, category = "huge-crafting", energy_required = 6, ingredients = { - {"duct-long", 3}, - {"nullius-box-reinforced-concrete", 4} + {type = "item", name = "duct-long", amount = 3}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 4} }, - result = "duct-underground" + results = { + {type = "item", name = "duct-underground", amount = 1}, + } }, { type = "recipe", name = "nullius-non-return-duct", + localised_name = {"entity-name.non-return-duct"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 3, ingredients = { - {"duct", 1}, - {"nullius-box-one-way-valve", 1} + {type = "item", name = "duct", amount = 1}, + {type = "item", name = "nullius-box-one-way-valve", amount = 1} }, - result = "non-return-duct" + results = { + {type = "item", name = "non-return-duct", amount = 1}, + } } }) else @@ -2339,28 +2369,34 @@ data:extend({ { type = "recipe", name = "nullius-duct-underground", + localised_name = {"entity-name.duct-underground"}, enabled = false, always_show_made_in = true, category = "huge-crafting", energy_required = 6, ingredients = { - {"duct-small", 12}, - {"nullius-box-reinforced-concrete", 4} + {type = "item", name = "duct-small", amount = 12}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 4} }, - result = "duct-underground" + results = { + {type = "item", name = "duct-underground", amount = 1}, + } }, { type = "recipe", name = "nullius-non-return-duct", + localised_name = {"entity-name.non-return-duct"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 3, ingredients = { - {"duct-small", 2}, - {"nullius-box-one-way-valve", 1} + {type = "item", name = "duct-small", amount = 2}, + {type = "item", name = "nullius-box-one-way-valve", amount = 1} }, - result = "non-return-duct" + results = { + {type = "item", name = "non-return-duct", amount = 1}, + } } }) end diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index df89db6..a3945f9 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -1700,26 +1700,28 @@ end if mods["FluidMustFlow"] then + if not settings.startup["fmf-enable-duct-auto-join"].value then + data.raw.item["duct"].subgroup = "nullius-ducts" + data.raw.item["duct"].order = "nullius-c" + data.raw.item["duct-long"].subgroup = "nullius-ducts" + data.raw.item["duct-long"].order = "nullius-d" + end data.raw.item["duct-small"].subgroup = "nullius-ducts" - data.raw.item["duct"].subgroup = "nullius-ducts" - data.raw.item["duct-long"].subgroup = "nullius-ducts" data.raw.item["duct-underground"].subgroup = "nullius-ducts" data.raw.item["duct-curve"].subgroup = "nullius-ducts" data.raw.item["duct-t-junction"].subgroup = "nullius-ducts" data.raw.item["duct-cross"].subgroup = "nullius-ducts" - data.raw.item["duct-end-point-outtake"].subgroup = "nullius-ducts" - data.raw.item["duct-end-point-intake"].subgroup = "nullius-ducts" + data.raw.item["duct-exhaust"].subgroup = "nullius-ducts" + data.raw.item["duct-intake"].subgroup = "nullius-ducts" data.raw.item["non-return-duct"].subgroup = "nullius-ducts" data.raw.item["duct-small"].order = "nullius-b" - data.raw.item["duct"].order = "nullius-c" - data.raw.item["duct-long"].order = "nullius-d" data.raw.item["duct-underground"].order = "nullius-e" data.raw.item["duct-curve"].order = "nullius-f" data.raw.item["duct-t-junction"].order = "nullius-g" data.raw.item["duct-cross"].order = "nullius-h" - data.raw.item["duct-end-point-outtake"].order = "nullius-i" - data.raw.item["duct-end-point-intake"].order = "nullius-j" + data.raw.item["duct-exhaust"].order = "nullius-i" + data.raw.item["duct-intake"].order = "nullius-j" data.raw.item["non-return-duct"].order = "nullius-k" data.raw["storage-tank"]["duct-small"].minable.mining_time = 0.8 @@ -1730,8 +1732,8 @@ if mods["FluidMustFlow"] then data.raw["storage-tank"]["duct-cross"].minable.mining_time = 2.5 data.raw["pipe-to-ground"]["duct-underground"].minable.mining_time = 2.5 data.raw["pump"]["non-return-duct"].minable.mining_time = 2 - data.raw["pump"]["duct-end-point-intake"].minable.mining_time = 3 - data.raw["pump"]["duct-end-point-outtake"].minable.mining_time = 3 + data.raw["pump"]["duct-intake"].minable.mining_time = 3 + data.raw["pump"]["duct-exhaust"].minable.mining_time = 3 local duct_box = data.raw["pipe-to-ground"]["duct-underground"].fluid_box duct_box.pipe_connections[2].max_underground_distance = duct_box.pipe_connections[2].max_underground_distance - 2 diff --git a/nullius/prototypes/recipe_book.lua b/nullius/prototypes/recipe_book.lua index d23c253..0769d95 100644 --- a/nullius/prototypes/recipe_book.lua +++ b/nullius/prototypes/recipe_book.lua @@ -270,8 +270,8 @@ group_with(data.raw.item["duct-small"], data.raw.recipe["nullius-duct-small"]) group_with(data.raw.item["duct-curve"], data.raw.recipe["nullius-duct-curve"]) group_with(data.raw.item["duct-t-junction"], data.raw.recipe["nullius-duct-t-junction"]) group_with(data.raw.item["duct-cross"], data.raw.recipe["nullius-duct-cross"]) -group_with(data.raw.item["duct-end-point-outtake"], data.raw.recipe["nullius-duct-end-point-outtake"]) -group_with(data.raw.item["duct-end-point-intake"], data.raw.recipe["nullius-duct-end-point-intake"]) +group_with(data.raw.item["duct-exhaust"], data.raw.recipe["nullius-duct-exhaust"]) +group_with(data.raw.item["duct-intake"], data.raw.recipe["nullius-duct-intake"]) group_with(data.raw.item["duct"], data.raw.recipe["nullius-duct"]) group_with(data.raw.item["duct-long"], data.raw.recipe["nullius-duct-long"]) group_with(data.raw.item["duct-underground"], data.raw.recipe["nullius-duct-underground"]) From 4664f395a65cbf567bbba79fd02e52625ef1f952 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 15:37:32 +0200 Subject: [PATCH 045/236] Fixed graphics for geothermal plant --- nullius/TODO_list.txt | 2 +- nullius/prototypes/entity/energy.lua | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 435d664..1266b6e 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -14,5 +14,5 @@ decide what to do with angels stuff : depend only on the graphics ? then we'll h update changelog and info.json(min version of dependencies) before publishing drones ammo category locale broken mentions of petroleum in factoriopedia/what the extractor can mine -missing geothermal plant graphics +wrong graphics for extractor ?? some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index ab759d0..711071e 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -1818,7 +1818,7 @@ data:extend({ base_render_layer = "lower-object-above-shadow", graphics_set = { - animations = { + animation = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_01.png", width = 332, height = 374, @@ -1867,7 +1867,7 @@ data:extend({ base_render_layer = "lower-object-above-shadow", graphics_set = { - animations = { + animation = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_01.png", width = 332, height = 374, @@ -1913,7 +1913,7 @@ data:extend({ monitor_visualization_tint = {r=78, g=173, b=255}, base_render_layer = "lower-object-above-shadow", graphics_set = { - animations = { + animation = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_01.png", width = 332, height = 374, @@ -1932,6 +1932,7 @@ data:extend({ minable = { mining_time = 1.8, result = "nullius-geothermal-plant-1" }, placeable_by = {item = "nullius-geothermal-plant-1", count = 1}, max_health = 500, + hidden_in_factoriopedia = true, corpse = "big-remnants", dying_explosion = "medium-explosion", collision_box = {{-2.4, -2.4}, {2.4, 2.4}}, @@ -1956,12 +1957,16 @@ data:extend({ tint = {0.5, 0.7, 1} }, picture = { - filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-shadow_01.png", - width = 448, - height = 280, - shift = util.by_pixel(28, 12.5), - scale = 0.5, - draw_as_shadow = true + layers = { + { + filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-shadow_01.png", + width = 448, + height = 280, + shift = util.by_pixel(28, 12.5), + scale = 0.5, + draw_as_shadow = true + } + } }, consumption = "10MW", neighbour_bonus = 0, @@ -1990,6 +1995,7 @@ data:extend({ minable = { mining_time = 2.4, result = "nullius-geothermal-plant-2" }, placeable_by = {item = "nullius-geothermal-plant-2", count = 1}, max_health = 600, + hidden_in_factoriopedia = true, corpse = "big-remnants", dying_explosion = "medium-explosion", collision_box = {{-2.4, -2.4}, {2.4, 2.4}}, @@ -2039,6 +2045,7 @@ data:extend({ minable = { mining_time = 3, result = "nullius-geothermal-plant-3" }, placeable_by = {item = "nullius-geothermal-plant-3", count = 1}, max_health = 750, + hidden_in_factoriopedia = true, corpse = "big-remnants", dying_explosion = "medium-explosion", collision_box = {{-2.4, -2.4}, {2.4, 2.4}}, @@ -2053,7 +2060,7 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, - working_light_picture = { + working_light_picture = { -- TODO: integrate the graphics with the heat pipes correctly filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", width = 332, height = 374, From a4f34f435ec1c246daaf1e1cc3852161912c1270 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 15:58:51 +0200 Subject: [PATCH 046/236] Fixed extractor graphics --- nullius/TODO_list.txt | 3 +- nullius/prototypes/entity/plumbing.lua | 110 +++++++++++++------------ 2 files changed, 59 insertions(+), 54 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 1266b6e..aba9273 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -13,6 +13,5 @@ why does grass drone take this long to spawn grass ?? -> it also takes very long decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions update changelog and info.json(min version of dependencies) before publishing drones ammo category locale broken -mentions of petroleum in factoriopedia/what the extractor can mine -wrong graphics for extractor ?? +geothermal plant can mine petroleum ?? some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 09ea04c..6285653 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -2198,6 +2198,7 @@ data:extend({ fast_replaceable_group = "extractor", next_upgrade = "nullius-extractor-2", resource_categories = {"basic-fluid"}, + drawing_box_vertical_extension = 1, max_health = 300, corpse = "pumpjack-remnants", dying_explosion = "pumpjack-explosion", @@ -2263,32 +2264,34 @@ data:extend({ } } }, - animations = { - north = { - layers = { - { - priority = "high", - filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", - animation_speed = 0.4, - scale = 0.66667, - tint = {0.98, 0.58, 0.24}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-6.66667, -40) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", - animation_speed = 0.66667, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.4, - shift = util.by_pixel(29.5833, 24.1666) + graphics_set = { + animation = { + north = { + layers = { + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.4, + scale = 0.66667, + tint = {0.98, 0.58, 0.24}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-6.66667, -40) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.66667, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.4, + shift = util.by_pixel(29.5833, 24.1666) + } } } } @@ -2303,6 +2306,7 @@ data:extend({ minable = { mining_time = 2, result = "nullius-extractor-2" }, fast_replaceable_group = "extractor", resource_categories = {"basic-fluid"}, + drawing_box_vertical_extension = 1, max_health = 400, corpse = "pumpjack-remnants", dying_explosion = "pumpjack-explosion", @@ -2368,32 +2372,34 @@ data:extend({ } } }, - animations = { - north = { - layers = { - { - priority = "high", - filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", - animation_speed = 0.6, - scale = 0.66667, - tint = {0.99,0.25,0.39}, - line_length = 8, - width = 206, - height = 202, - frame_count = 40, - shift = util.by_pixel(-6.66667, -40) - }, - { - priority = "high", - filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", - animation_speed = 0.66667, - draw_as_shadow = true, - line_length = 8, - width = 309, - height = 82, - frame_count = 40, - scale = 0.6, - shift = util.by_pixel(29.5833, 24.1666) + graphics_set = { + animation = { + north = { + layers = { + { + priority = "high", + filename = ENTITYPATH .. "wells/pumpjack-decolorized.png", + animation_speed = 0.6, + scale = 0.66667, + tint = {0.99,0.25,0.39}, + line_length = 8, + width = 206, + height = 202, + frame_count = 40, + shift = util.by_pixel(-6.66667, -40) + }, + { + priority = "high", + filename = BASEENTITY .. "pumpjack/pumpjack-horsehead-shadow.png", + animation_speed = 0.66667, + draw_as_shadow = true, + line_length = 8, + width = 309, + height = 82, + frame_count = 40, + scale = 0.6, + shift = util.by_pixel(29.5833, 24.1666) + } } } } From 7a487861260cc03c6efd00e5a25934449050e3a6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 17:48:32 +0200 Subject: [PATCH 047/236] Tweaked description text of landing entities to make them less ambiguous --- nullius/locale/en/entity.cfg | 4 ++-- nullius/prototypes/entity/landing.lua | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index 6a968fb..b131ea7 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -492,8 +492,8 @@ nullius-reactor=Converts nuclear fuel into heat energy.\nHeat capacity: 10MJ per nullius-silo=Launches rockets into space. nullius-turret=Trains mobile organic lifeforms to remain in their designated habitat. nullius-minable=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] __1__ -nullius-landing-pod-1=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] [item=nullius-large-chest-1] -nullius-landing-pod-2=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] [item=nullius-large-chest-1] +nullius-landing-pod-1=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] 1x[item=nullius-large-chest-1] +nullius-landing-pod-2=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] 1x[item=nullius-large-chest-1] nullius-landing-main=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] 2x[item=nullius-large-chest-1] 40x[item=nullius-steel-ingot] 15x[item=copper-cable] nullius-android=__CONTROL__nullius-upload-mind__ to take control of this body.\n__CONTROL__nullius-previous-body__ to return to previous body.\n__CONTROL__nullius-next-body__ to cycle to next body in queue. nullius-boxer=Compact unit that quickly boxes or unboxes. diff --git a/nullius/prototypes/entity/landing.lua b/nullius/prototypes/entity/landing.lua index 8316104..adf69ce 100644 --- a/nullius/prototypes/entity/landing.lua +++ b/nullius/prototypes/entity/landing.lua @@ -150,7 +150,7 @@ data:extend({ alert_when_damaged = false, allow_copy_paste = false, localised_description = {"entity-description.nullius-minable", - "[item=nullius-small-furnace-2] 2x[item=nullius-chimney-1] " + "1x[item=nullius-small-furnace-2] 2x[item=nullius-chimney-1] " .. "2x[item=nullius-outfall-1] 2x[item=storage-tank]"}, minable = { mining_time = 1.5, @@ -498,7 +498,7 @@ data:extend({ alert_when_damaged = false, allow_copy_paste = false, localised_description = {"entity-description.nullius-minable", - "[item=nullius-lab-1] 20x[item=nullius-red-wire] 2x[item=nullius-broken-sensor-node]"}, + "1x[item=nullius-lab-1] 20x[item=nullius-red-wire] 2x[item=nullius-broken-sensor-node]"}, minable = { mining_time = 1, results = { @@ -787,7 +787,7 @@ data:extend({ alert_when_damaged = false, allow_copy_paste = false, localised_description = {"entity-description.nullius-minable", - "[item=nullius-medium-assembler-1] 3x[item=nullius-broken-assembler] " + "1x[item=nullius-medium-assembler-1] 3x[item=nullius-broken-assembler] " .. "6x[item=nullius-grid-battery-1]"}, minable = { mining_time = 0.5, From 03299dd740de802f0f1f780b777d7a97aa1b5352 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 19:00:48 +0200 Subject: [PATCH 048/236] Re added angels crystal rock as part of nullius --- nullius/TODO_list.txt | 3 +- nullius/locale/en/entity.cfg | 1 + nullius/migrations/nullius_2.0.0.json | 3 + nullius/prototypes/entity/environment.lua | 92 +++++++++++++++++++++++ nullius/prototypes/rock.lua | 16 ---- 5 files changed, 97 insertions(+), 18 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index aba9273..5c9891f 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -10,8 +10,7 @@ fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to g mods compatibility do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 -decide what to do with angels stuff : depend only on the graphics ? then we'll have to recreate some of their entities and re implement some of angels functions update changelog and info.json(min version of dependencies) before publishing drones ammo category locale broken -geothermal plant can mine petroleum ?? +geothermal plant can mine petroleum in nullius 1.1 is it a bug ? some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index b131ea7..1803e8e 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -12,6 +12,7 @@ nullius-small=Small __1__ nullius-sandstone=Sandstone nullius-limestone=Calcite nullius-bauxite=Bauxite +nullius-crystal-rock=Crystal rock nullius-fumarole=Fumarole nullius-air-filter-1=Air filter 1 nullius-air-filter-2=Air filter 2 diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 85d02b8..1dc4e38 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -7,5 +7,8 @@ ], "tile":[ ["angels-tile-clay-brick", "nullius-tile-clay-brick"] + ], + "entity": [ + ["angels-crystal-rock", "nullius-crystal-rock"] ] } \ No newline at end of file diff --git a/nullius/prototypes/entity/environment.lua b/nullius/prototypes/entity/environment.lua index 833e6c0..21a6d88 100644 --- a/nullius/prototypes/entity/environment.lua +++ b/nullius/prototypes/entity/environment.lua @@ -234,3 +234,95 @@ data:extend({ transitions_between_transitions = data.raw.tile["stone-path"].transitions_between_transitions }, }) + +data:extend({ + { + type = "noise-function", + name = "nullius_value_optimal_with_range", + parameters = {"value", "optimal", "range", "max_range"}, + expression = "if((left_range <= value) * (value <= right_range),\z + 1,\z + clamp(if(value <= optimal,\z + 2 * (value - left_max) / (left_range - left_max) - 1,\z + 2 * (right_max - value) / 2 * (right_max - right_range) - 1), 0, 1))", + local_expressions = + { + left_max = "optimal - max_range", + left_range = "optimal - range", + right_max = "optimal + max_range", + right_range = "optimal + range", + }, + }, +}) +data:extend({ + { + type = "noise-function", + name = "nullius_elevation_level", + parameters = {"optimal", "range", "max_range"}, + expression = "nullius_value_optimal_with_range(elevation, optimal, range, max_range)", + }, + { + type = "simple-entity", + name = "nullius-crystal-rock", + flags = { "placeable-neutral", "placeable-off-grid", "not-on-map" }, + icon = "__base__/graphics/icons/huge-rock.png", + icon_size = 64, + subgroup = "grass", + order = "b[decorative]-k[stone-rock]-c[crystal]", + collision_box = { { -1.1, -1.1 }, { 1.1, 1.1 } }, + selection_box = { { -1.3, -1.3 }, { 1.3, 1.3 } }, + minable = { + mining_particle = "stone-particle", + mining_time = 8, + results = { + {type="item", name="nullius-silica", amount=16}, + {type="item", name="nullius-alumina", amount=8} + } + }, + loot = { + {item = "nullius-silica", probability = 1, count_min = 4, count_max = 12}, + {item = "nullius-alumina", probability = 1, count_min = 2, count_max = 6} + }, + count_as_rock_for_filtered_deconstruction = true, + mined_sound = { filename = "__base__/sound/deconstruct-bricks.ogg" }, + render_layer = "object", + max_health = 200, + resistances = { + { + type = "fire", + percent = 100, + }, + }, + autoplace = { + order = "a[doodad]-c[nullius-crystal-rock]", + control = "rocks", + probability_expression = "0.0002 + 0.002 * nullius_elevation_level(45000, 37000, 45000)", + }, + pictures = { + { + filename = "__angelsrefininggraphics__/graphics/entity/rock/crystal-rock-1.png", + width = 192, + height = 160, + shift = { 0.5, 0 }, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/rock/crystal-rock-2.png", + width = 192, + height = 160, + shift = { 0.5, 0 }, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/rock/crystal-rock-3.png", + width = 192, + height = 160, + shift = { 0.5, 0 }, + }, + { + filename = "__angelsrefininggraphics__/graphics/entity/rock/crystal-rock-4.png", + width = 192, + height = 160, + shift = { 0.5, 0 }, + }, + }, + }, +}) \ No newline at end of file diff --git a/nullius/prototypes/rock.lua b/nullius/prototypes/rock.lua index 3ec8ae2..5cc9183 100644 --- a/nullius/prototypes/rock.lua +++ b/nullius/prototypes/rock.lua @@ -122,22 +122,6 @@ for _,rock in pairs(data.raw["simple-entity"]) do end end - -if (data.raw["simple-entity"]["angels-crystal-rock"] ~= nil) then --TODO: re introduce angels crystal rock - data.raw["simple-entity"]["angels-crystal-rock"].minable = { - mining_particle = "stone-particle", - mining_time = 8, - results = { - {type="item", name="nullius-silica", amount=16}, - {type="item", name="nullius-alumina", amount=8} - } - } - data.raw["simple-entity"]["angels-crystal-rock"].loot = { - {item = "nullius-silica", probability = 1, count_min = 4, count_max = 12}, - {item = "nullius-alumina", probability = 1, count_min = 2, count_max = 6} - } -end - -- From Alien Biomes if (data.raw["simple-entity"]["sand-big-rock-white"] ~= nil) then table.insert(data.raw["simple-entity"]["sand-big-rock-white"].minable.results, From fedde6ab69032eb443c14b077fbdf37efcacb9cb Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 15 Aug 2025 20:09:28 +0200 Subject: [PATCH 049/236] Added back angels compatibility just in case some other optional mod depends on angels Not compatible with angelssmelting due to a bug in this one's migrations that can trigger when we add angelssmelting in an existing save --- nullius/info.json | 3 +- nullius/legacyAngels.lua | 8 -- nullius/prototypes/override_final.lua | 7 ++ nullius/prototypes/resource.lua | 3 + nullius/prototypes/resource_override.lua | 32 ++++--- nullius/settings-updates.lua | 104 +++++++++++++++++++++++ 6 files changed, 135 insertions(+), 22 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index b60fa85..32a51b2 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -25,6 +25,7 @@ "! angelsbioprocessing", "! angelsinfiniteores", "! bobores", - "! stack-size-tooltip" + "! stack-size-tooltip", + "! angelssmelting" ] } diff --git a/nullius/legacyAngels.lua b/nullius/legacyAngels.lua index e84b163..e899e5c 100644 --- a/nullius/legacyAngels.lua +++ b/nullius/legacyAngels.lua @@ -59,14 +59,6 @@ function angelsLegacy.functions.remove_resource(resource) planet.map_gen_settings.autoplace_settings.entity.settings[infinite_resource] = nil end end - - -- for r, subdir in pairs(angelsmods.functions.store) do --TODO: remove that - -- for r, input in pairs(subdir) do - -- if input == resource then - -- input.inactive = true - -- end - -- end - -- end end local function clean_table(t) diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index 6295711..44b2106 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -364,3 +364,10 @@ for _,character in pairs(data.raw["character"]) do character.subgroup = "armor" end +if mods["angelsrefining"] then + for _,tip in pairs(data.raw["tips-and-tricks-item"]) do + if (string.sub(tip.name, 1, 7) == "angels-") then + data.raw["tips-and-tricks-item"][tip.name] = nil + end + end +end \ No newline at end of file diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index 340f1ff..8b1b971 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -1,5 +1,8 @@ local BASEENTITY = "__base__/graphics/entity/" +if mods["angelsrefining"] then + angelsmods.refining.disable_ore_override = true +end local resource_autoplace = require("resource-autoplace") resource_autoplace.initialize_patch_set("iron-ore", true) diff --git a/nullius/prototypes/resource_override.lua b/nullius/prototypes/resource_override.lua index 8e404af..5b3e84f 100644 --- a/nullius/prototypes/resource_override.lua +++ b/nullius/prototypes/resource_override.lua @@ -1,18 +1,5 @@ local resource_autoplace = require("resource-autoplace") --- for r, subdir in pairs(angelsmods.functions.store) do -- TODO: remove that --- for r, input in pairs(subdir) do --- if (not input.inactive) then --- if ((input.name == "coal") or (input.name == "crude-oil")) then --- input.inactive = true --- else --- angelsmods.functions.remove_resource(input.name) --- end --- end --- end --- end - - function remove_autoplace(resource) if data.raw.resource[resource] then data.raw["autoplace-control"][resource] = nil @@ -28,6 +15,25 @@ function remove_autoplace(resource) data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"][resource] = nil end + +if mods["angelsrefining"] then + for r, subdir in pairs(angelsmods.functions.store) do + for r, input in pairs(subdir) do + if (not input.inactive) then + if ((input.name == "coal") or (input.name == "crude-oil")) then + input.inactive = true + else + angelsmods.functions.remove_resource(input.name) + end + end + end + end + + if data.raw["simple-entity"]["angels-crystal-rock"] then + data.raw["simple-entity"]["angels-crystal-rock"].autoplace = nil + end +end + remove_autoplace("copper-ore") remove_autoplace("uranium-ore") remove_autoplace("coal") diff --git a/nullius/settings-updates.lua b/nullius/settings-updates.lua index 9cf65c1..6478b4a 100644 --- a/nullius/settings-updates.lua +++ b/nullius/settings-updates.lua @@ -310,3 +310,107 @@ if data.raw['bool-setting']['aai-loaders-fit-assemblers'] then data.raw['bool-setting']['aai-loaders-fit-assemblers'].hidden = true data.raw['bool-setting']['aai-loaders-fit-assemblers'].forced_value = false end + + +------- angels compatibility settings ------------------ +if data.raw['string-setting']['angels-enable-auto-barreling'] then + data.raw['string-setting']['angels-enable-auto-barreling'].hidden = true + data.raw['string-setting']['angels-enable-auto-barreling'].default_value = "Disabled" + data.raw['string-setting']['angels-enable-auto-barreling'].allowed_values = {"Disabled"} +end + +if data.raw['bool-setting']['angels-enable-converter'] then + data.raw['bool-setting']['angels-enable-converter'].hidden = true + data.raw['bool-setting']['angels-enable-converter'].forced_value = true +end +if data.raw['bool-setting']['angels-hide-converter'] then + data.raw['bool-setting']['angels-hide-converter'].hidden = true + data.raw['bool-setting']['angels-hide-converter'].forced_value = true +end +if data.raw['bool-setting']['angels-enable-acids'] then + data.raw['bool-setting']['angels-enable-acids'].hidden = true + data.raw['bool-setting']['angels-enable-acids'].forced_value = true +end + +if data.raw['bool-setting']['angels-disable-bobs-electrolysers'] then + data.raw['bool-setting']['angels-disable-bobs-electrolysers'].hidden = true + data.raw['bool-setting']['angels-disable-bobs-electrolysers'].forced_value = true +end +if data.raw['bool-setting']['angels-disable-vanilla-chemical-plants'] then + data.raw['bool-setting']['angels-disable-vanilla-chemical-plants'].hidden = true + data.raw['bool-setting']['angels-disable-vanilla-chemical-plants'].forced_value = true +end +if data.raw['bool-setting']['angels-disable-bobs-chemical-plants'] then + data.raw['bool-setting']['angels-disable-bobs-chemical-plants'].hidden = true + data.raw['bool-setting']['angels-disable-bobs-chemical-plants'].forced_value = true +end +if data.raw['bool-setting']['angels-disable-bobs-distilleries'] then + data.raw['bool-setting']['angels-disable-bobs-distilleries'].hidden = true + data.raw['bool-setting']['angels-disable-bobs-distilleries'].forced_value = true +end +if data.raw['bool-setting']['angels-show-chemical-formula'] then + data.raw['bool-setting']['angels-show-chemical-formula'].hidden = true + data.raw['bool-setting']['angels-show-chemical-formula'].forced_value = true +end +if data.raw['bool-setting']['angels-enable-hide-void'] then + data.raw['bool-setting']['angels-enable-hide-void'].hidden = true + data.raw['bool-setting']['angels-enable-hide-void'].forced_value = true +end +if data.raw['bool-setting']['angels-enable-auto-barreling'] then + data.raw['bool-setting']['angels-enable-auto-barreling'].hidden = true + data.raw['bool-setting']['angels-enable-auto-barreling'].forced_value = false +end +if data.raw['bool-setting']['angels-tryptophobia-friendly-stiratite'] then + data.raw['bool-setting']['angels-tryptophobia-friendly-stiratite'].hidden = true + data.raw['bool-setting']['angels-tryptophobia-friendly-stiratite'].forced_value = false +end +if data.raw['bool-setting']['angels-starting-resource-ore1'] then + data.raw['bool-setting']['angels-starting-resource-ore1'].hidden = true + data.raw['bool-setting']['angels-starting-resource-ore1'].forced_value = true +end +if data.raw['bool-setting']['angels-starting-resource-ore3'] then + data.raw['bool-setting']['angels-starting-resource-ore3'].hidden = true + data.raw['bool-setting']['angels-starting-resource-ore3'].forced_value = true +end +if data.raw['bool-setting']['angels-starting-resource-ore5'] then + data.raw['bool-setting']['angels-starting-resource-ore5'].hidden = true + data.raw['bool-setting']['angels-starting-resource-ore5'].forced_value = true +end +if data.raw['bool-setting']['angels-starting-resource-ore6'] then + data.raw['bool-setting']['angels-starting-resource-ore6'].hidden = true + data.raw['bool-setting']['angels-starting-resource-ore6'].forced_value = true +end +if data.raw['bool-setting']['angels-starting-resource-ore2'] then + data.raw['bool-setting']['angels-starting-resource-ore2'].hidden = true + data.raw['bool-setting']['angels-starting-resource-ore2'].forced_value = false +end +if data.raw['bool-setting']['angels-starting-resource-ore4'] then + data.raw['bool-setting']['angels-starting-resource-ore4'].hidden = true + data.raw['bool-setting']['angels-starting-resource-ore4'].forced_value = false +end + +if data.raw['double-setting']['angels-marathon-buildingmulti'] then + data.raw['double-setting']['angels-marathon-buildingmulti'].hidden = true + data.raw['double-setting']['angels-marathon-buildingmulti'].allowed_values = {2} +end +if data.raw['double-setting']['angels-marathon-buildingtime'] then + data.raw['double-setting']['angels-marathon-buildingtime'].hidden = true + data.raw['double-setting']['angels-marathon-buildingtime'].allowed_values = {2} +end +if data.raw['double-setting']['angels-marathon-rawmulti'] then + data.raw['double-setting']['angels-marathon-rawmulti'].hidden = true + data.raw['double-setting']['angels-marathon-rawmulti'].allowed_values = {1} +end + +if data.raw['double-setting']['angels-marathon-intermediatemulti'] then + data.raw['double-setting']['angels-marathon-intermediatemulti'].hidden = true + data.raw['double-setting']['angels-marathon-intermediatemulti'].allowed_values = {1} +end +if data.raw['double-setting']['angels-starting-resource-base'] then + data.raw['double-setting']['angels-starting-resource-base'].hidden = true + data.raw['double-setting']['angels-starting-resource-base'].allowed_values = {40000} +end +if data.raw['int-setting']['angels-pavement-stack-size'] then + data.raw['int-setting']['angels-pavement-stack-size'].hidden = true + data.raw['int-setting']['angels-pavement-stack-size'].allowed_values = {200} +end From beda1409e6ae2f3edfc0489d3cb79cf4e5f585b2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 10:48:17 +0200 Subject: [PATCH 050/236] Fixed assemblers graphics --- nullius/prototypes/entity/assembler.lua | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index dbf97e4..cbea097 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -7,7 +7,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-small-assembler-1", - order = "nullius-mbb", + order = "nullius-mbb", icon_size = 64, icons = data.raw.item["nullius-small-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -29,24 +29,24 @@ data:extend({ { filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1.png", priority="high", - width = 108, - height = 114, + width = 214, + height = 226, frame_count = 32, line_length = 8, shift = util.by_pixel(0, 2), - scale = 0.666 + scale = 0.666*0.5 }, { filename = BASEENTITY .. "assembling-machine-1/assembling-machine-1-shadow.png", priority="high", - width = 95, - height = 83, + width = 190, + height = 165, frame_count = 1, line_length = 1, repeat_count = 32, draw_as_shadow = true, - shift = util.by_pixel(8.5, 5.5), - scale = 0.666 + shift = util.by_pixel(8.5, 5), + scale = 0.666*0.5 } } } @@ -280,12 +280,12 @@ data:extend({ { filename = BASEENTITY .. "assembling-machine-2/assembling-machine-2.png", priority = "high", - width = 108, - height = 110, + width = 214, + height = 218, frame_count = 32, line_length = 8, shift = util.by_pixel(0, 4), - scale = 0.666, + scale = 0.666*0.5, animation_speed = 0.8 }, data.raw["assembling-machine"]["nullius-small-assembler-1"].graphics_set.animation.layers[2] @@ -332,24 +332,24 @@ data:extend({ { filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3.png", priority = "high", - width = 108, - height = 119, + width = 214, + height = 237, frame_count = 32, line_length = 8, - shift = util.by_pixel(0, -0.3333), - scale = 0.666, + shift = util.by_pixel(0, -0.3333), + scale = 0.666*0.5, animation_speed = 0.6 }, { filename = BASEENTITY .. "assembling-machine-3/assembling-machine-3-shadow.png", priority = "high", - width = 130, - height = 82, + width = 260, + height = 162, frame_count = 32, line_length = 8, draw_as_shadow = true, shift = util.by_pixel(18.667, 2.6667), - scale = 0.666, + scale = 0.666*0.5, animation_speed = 0.6 } } From 77163099fb23be127f6d5cf1e490174147184550 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 11:33:27 +0200 Subject: [PATCH 051/236] Added salvage-lab-wreckage trigger tech --- nullius/graphics/technology/lab-wreckage.png | Bin 0 -> 84629 bytes nullius/locale/en/tech.cfg | 2 ++ nullius/prototypes/technology.lua | 21 +++++++++++++++++++ nullius/scripts/migrate.lua | 5 +++++ 4 files changed, 28 insertions(+) create mode 100644 nullius/graphics/technology/lab-wreckage.png diff --git a/nullius/graphics/technology/lab-wreckage.png b/nullius/graphics/technology/lab-wreckage.png new file mode 100644 index 0000000000000000000000000000000000000000..ecb1f8c9a38b13df765a174037a5f1ef51256e1b GIT binary patch literal 84629 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 literal 0 HcmV?d00001 diff --git a/nullius/locale/en/tech.cfg b/nullius/locale/en/tech.cfg index 1a42c87..3b095f2 100644 --- a/nullius/locale/en/tech.cfg +++ b/nullius/locale/en/tech.cfg @@ -1,4 +1,5 @@ [technology-name] +nullius-salvage-lab-wreckage=Salvage lab wreckage nullius-geology=Geology nullius-climatology=Climatology nullius-mechanical-engineering=Mechanical engineering @@ -171,6 +172,7 @@ nullius-ecology=Ecology nullius-light-rail=Light rail [technology-description] +nullius-salvage-lab-wreckage=Salvage the lab from the wreckage nullius-geology=Analysis of local mineral composition and soil conditions. nullius-climatology=Study of local atmosphere, weather, and bodies of water. nullius-mechanical-engineering=Construction of complex mechanical devices. diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 7ba4962..a1b7bb8 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -5,6 +5,26 @@ local TECHPATH = "__nullius__/graphics/technology/" local EQUIPPATH = "__nullius__/graphics/equipment/" data:extend({ + { + type = "technology", + name = "nullius-salvage-lab-wreckage", + order = "nullius-bb", + icons = { + { + icon = TECHPATH.."lab-wreckage.png", + icon_size = 252, + + }, + }, + + research_trigger = { + type = "mine-entity", + entity = "nullius-landing-lab" + }, + + ignore_tech_cost_multiplier = true, + essential = true + }, { type = "technology", name = "nullius-geology-1", @@ -35,6 +55,7 @@ data:extend({ ingredients = {}, time = 3 }, + prerequisites = {"nullius-salvage-lab-wreckage"}, ignore_tech_cost_multiplier = true, essential = true }, diff --git a/nullius/scripts/migrate.lua b/nullius/scripts/migrate.lua index 9ea7527..52c5f84 100644 --- a/nullius/scripts/migrate.lua +++ b/nullius/scripts/migrate.lua @@ -160,6 +160,11 @@ function migrate_version(event) end end end + for _,force in pairs(game.forces) do + if force.technologies["nullius-geology-1"].researched then + force.technologies["nullius-salvage-lab-wreckage"].researched = true + end + end if (version >= 10901) then return end legacy_recipe_all("nullius-lithium-production", "lithium-chloride") From 3a60567dd17159770cb3a840191372d802dbf6e0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 12:43:45 +0200 Subject: [PATCH 052/236] Fixed compatibility for factorissimo 3 --- nullius/prototypes/mods.lua | 93 +++++++++++++++++++---------- nullius/prototypes/override_mod.lua | 24 ++------ 2 files changed, 64 insertions(+), 53 deletions(-) diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 509de39..e5f881d 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -132,49 +132,58 @@ data:extend({ { type = "recipe", name = "nullius-factory-1", + localised_name = {"entity-name.factory-1"}, category = "huge-crafting", always_show_made_in = true, energy_required = 40, ingredients = { - {"stone-brick", 200}, - {"nullius-mortar", 60}, - {"nullius-glass", 40}, - {"substation", 4}, - {"small-lamp", 4} + {type = "item", name = "stone-brick", amount = 200}, + {type = "item", name = "nullius-mortar", amount = 60}, + {type = "item", name = "nullius-glass", amount = 40}, + {type = "item", name = "substation", amount = 4}, + {type = "item", name = "small-lamp", amount = 4} + }, + results = { + {type = "item", name = "factory-1", amount = 1} }, - result = "factory-1", enabled = false }, { type = "recipe", name = "nullius-factory-2", + localised_name = {"entity-name.factory-2"}, category = "huge-crafting", always_show_made_in = true, energy_required = 60, ingredients = { - {"factory-1", 3}, - {"concrete", 800}, - {"nullius-refractory-brick", 500}, - {"nullius-steel-beam", 200}, - {"nullius-red-wire", 40} + {type = "item", name = "factory-1", amount = 3}, + {type = "item", name = "concrete", amount = 800}, + {type = "item", name = "nullius-refractory-brick", amount = 500}, + {type = "item", name = "nullius-steel-beam", amount = 200}, + {type = "item", name = "nullius-red-wire", amount = 40} + }, + results = { + {type = "item", name = "factory-2", amount = 1} }, - result = "factory-2", enabled = false }, { type = "recipe", name = "nullius-factory-3", + localised_name = {"entity-name.factory-3"}, category = "huge-crafting", always_show_made_in = true, energy_required = 90, ingredients = { - {"factory-2", 3}, - {"stone-wall", 150}, - {"gate", 15}, - {"nullius-grid-battery-1", 8}, - {"radar", 1} + {type = "item", name = "factory-2", amount = 3}, + {type = "item", name = "stone-wall", amount = 150}, + {type = "item", name = "gate", amount = 15}, + {type = "item", name = "nullius-grid-battery-1", amount = 8}, + {type = "item", name = "radar", amount = 1} + }, + results = { + {type = "item", name = "factory-3", amount = 1} }, - result = "factory-3", enabled = false } }) @@ -184,14 +193,17 @@ data:extend({ { type = "recipe", name = "nullius-factory-circuit-connector", + localised_name = {"entity-name.factory-circuit-connector"}, category = "small-crafting", always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-green-wire", 3}, - {"arithmetic-combinator", 1} + {type = "item", name = "nullius-green-wire", amount = 3}, + {type = "item", name = "arithmetic-combinator", amount = 1} + }, + results = { + {type = "item", name = "factory-circuit-connector", amount = 1} }, - result = "factory-circuit-connector", enabled = false } }) @@ -200,65 +212,80 @@ data:extend({ { type = "recipe", name = "nullius-factory-requester-chest", + localised_name = {"entity-name.factory-requester-chest"}, category = "medium-crafting", always_show_made_in = true, energy_required = 10, ingredients = { - {"nullius-small-demand-chest-1", 4} + {type = "item", name = "nullius-small-demand-chest-1", amount = 4} + }, + results = { + {type = "item", name = "factory-requester-chest", amount = 1} }, - result = "factory-requester-chest", enabled = false }, { type = "recipe", name = "nullius-factory-input-pipe", + localised_name = {"entity-name.factory-input-pipe"}, category = "medium-crafting", always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-underground-pipe-2", 1}, - {"nullius-pipe-2", 4} + {type = "item", name = "nullius-underground-pipe-2", amount = 1}, + {type = "item", name = "nullius-pipe-2", amount = 4} + }, + results = { + {type = "item", name = "factory-input-pipe", amount = 1} }, - result = "factory-input-pipe", enabled = false }, { type = "recipe", name = "nullius-factory-output-pipe", + localised_name = {"entity-name.factory-output-pipe"}, category = "medium-crafting", always_show_made_in = true, energy_required = 0.5, no_productivity = true, ingredients = { - {"factory-input-pipe", 1} + {type = "item", name = "factory-input-pipe", amount = 1} + }, + results = { + {type = "item", name = "factory-output-pipe", amount = 1} }, - result = "factory-output-pipe", enabled = false }, { type = "recipe", name = "nullius-factory-circuit-input", + localised_name = {"entity-name.factory-circuit-input"}, category = "small-crafting", always_show_made_in = true, energy_required = 2, ingredients = { - {"nullius-green-wire", 3}, - {"arithmetic-combinator", 1} + {type = "item", name = "nullius-green-wire", amount = 3}, + {type = "item", name = "arithmetic-combinator", amount = 1} + }, + results = { + {type = "item", name = "factory-circuit-input", amount = 1} }, - result = "factory-circuit-input", enabled = false }, { type = "recipe", name = "nullius-factory-circuit-output", + localised_name = {"entity-name.factory-circuit-output"}, category = "small-crafting", always_show_made_in = true, no_productivity = true, energy_required = 0.5, ingredients = { - {"factory-circuit-input", 1} + {type = "item", name = "factory-circuit-input", amount = 1} + }, + results = { + {type = "item", name = "factory-circuit-output", amount = 1} }, - result = "factory-circuit-output", enabled = false } }) diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index a3945f9..13dc8be 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -156,17 +156,6 @@ data.raw.technology["factory-interior-upgrade-display"].unit = { } table.insert(data.raw.technology["nullius-packaging-5"].prerequisites,"factory-interior-upgrade-display") -data.raw.technology["factory-preview"].order = "nullius-e" -data.raw.technology["factory-preview"].prerequisites = { - "factory-interior-upgrade-display", "nullius-checkpoint-large-beacon"} -data.raw.technology["factory-preview"].unit = { - count = 8*factory_mult, time = 35, - ingredients = { - {"nullius-geology-pack", 1}, {"nullius-climatology-pack", 1}, - {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}, - {"nullius-chemical-pack", 1}} -} - if mods["factorissimo-2-notnotmelon"] then data.raw.technology["factory-recursion-t1"].prerequisites = { "factory-architecture-t2", "nullius-packaging-4"} @@ -208,19 +197,14 @@ data.raw.technology["factory-recursion-t2"].unit = { } table.insert(data.raw.technology["nullius-logistics-4"].prerequisites,"factory-recursion-t2") -data.raw.pipe["factory-fluid-dummy-connector-"..defines.direction.south].fluid_box.height = 5 -data.raw.pipe["factory-fluid-dummy-connector-"..defines.direction.north].fluid_box.height = 5 -data.raw.pipe["factory-fluid-dummy-connector-"..defines.direction.east].fluid_box.height = 5 -data.raw.pipe["factory-fluid-dummy-connector-"..defines.direction.west].fluid_box.height = 5 - data.raw["storage-tank"]["factory-1"].minable.mining_time = 4 data.raw["storage-tank"]["factory-2"].minable.mining_time = 6 data.raw["storage-tank"]["factory-3"].minable.mining_time = 8 -data.raw.technology["factory-architecture-t1"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", 1} -data.raw.technology["factory-architecture-t2"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", 2} -data.raw.technology["nullius-architecture-1"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", 3} -data.raw.technology["factory-architecture-t3"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", 4} +data.raw.technology["factory-architecture-t1"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(1)} +data.raw.technology["factory-architecture-t2"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(2)} +data.raw.technology["nullius-architecture-1"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(3)} +data.raw.technology["factory-architecture-t3"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(4)} end From d87dd204a4c4a6a609185a1540d5d6fbd7344384 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 13:50:17 +0200 Subject: [PATCH 053/236] Fixed bug when pasting recipe to ghost entity --- nullius/TODO_list.txt | 6 +++--- nullius/data.lua | 2 +- nullius/scripts/mirror.lua | 28 ++++++++++++++-------------- nullius/scripts/turbine.lua | 14 +++++++------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 5c9891f..70fed88 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -5,12 +5,12 @@ Valves, pipes and tanks: fix mentions of pressure in locales Rework the entity mirroring system Rework the checkpoint system (maybe) fix the others warnings in the log -landfill transitions things -> i have no clue how this thing works and if i even have to do anything -fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) +landfill variants are not the same as on 1.1 mods compatibility +drones ammo category locale broken +fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 update changelog and info.json(min version of dependencies) before publishing -drones ammo category locale broken geothermal plant can mine petroleum in nullius 1.1 is it a bug ? some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file diff --git a/nullius/data.lua b/nullius/data.lua index df995ee..790b813 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -16,7 +16,7 @@ require("prototypes.item.recipe") require("prototypes.item.alignment") require("prototypes.item.broken") require("prototypes.item.void") -require("prototypes.item.landfill") -- TODO: remove empty_transitions = true, and implement variants.transitions maybe +require("prototypes.item.landfill") require("prototypes.item.boxing") -- TODO: set the appropriate volume for fluid_boxes diff --git a/nullius/scripts/mirror.lua b/nullius/scripts/mirror.lua index 407a473..c0fabb4 100644 --- a/nullius/scripts/mirror.lua +++ b/nullius/scripts/mirror.lua @@ -35,31 +35,31 @@ function replace_fluid_entity(entity, newname, force, dir) if (dir == nil) then dir = entity.direction end if (entity.type == "entity-ghost") then local pos = entity.position - local surface = entity.surface - local requests = entity.item_requests - local recipe = nil - if (entity.ghost_type == "assembling-machine") then - recipe = entity.get_recipe() - end - entity.destroy() + local surface = entity.surface + local requests = entity.insert_plan + local recipe = nil + if (entity.ghost_type == "assembling-machine") then + recipe = entity.get_recipe() + end + entity.destroy() entity = surface.create_entity{ name = "entity-ghost", force = force, direction = dir, - position = pos, inner_name = newname, - fast_replace = true, create_build_effect_smoke = false} + position = pos, inner_name = newname, + fast_replace = true, create_build_effect_smoke = false} if ((entity ~= nil) and entity.valid) then - entity.item_requests = requests - if (recipe ~= nil) then entity.set_recipe(recipe) end - end + entity.insert_plan = requests + if (recipe ~= nil) then entity.set_recipe(recipe) end + end else local contents = save_fluid_contents(entity) update_build_statistics(entity, force, true) entity = entity.surface.create_entity{ - name = newname, force = force, direction = dir, + name = newname, force = force, direction = dir, position = entity.position, spill = false, raise_built = true, fast_replace = true, create_build_effect_smoke = false} if ((entity ~= nil) and entity.valid) then restore_fluid_contents(entity, contents) - update_build_statistics(entity, force, false) + update_build_statistics(entity, force, false) end end if ((entity ~= nil) and entity.valid and (dir ~= entity.direction)) then diff --git a/nullius/scripts/turbine.lua b/nullius/scripts/turbine.lua index 93d856c..4caa29b 100644 --- a/nullius/scripts/turbine.lua +++ b/nullius/scripts/turbine.lua @@ -252,10 +252,10 @@ function entity_paste_event(event) if (string.sub(tname, 9, 16) == "turbine-") then if (string.sub(sname, 9, 16) ~= "turbine-") then return end - local ttyp = turbine_type(tname) + local ttyp = turbine_type(tname) local tpri = turbine_priority(tname) if ((ttyp == nil) or (tpri == nil)) then return end - local spri = turbine_priority(sname) + local spri = turbine_priority(sname) if ((spri == nil) or (spri == tpri)) then return end local newname = "nullius-turbine-" .. ttyp .. "-" .. @@ -267,15 +267,15 @@ function entity_paste_event(event) end elseif (is_surge_entity(tname) and is_surge_entity(sname)) then local tsurge = scan_surge_priority(tname) - local ssurge = scan_surge_priority(sname) + local ssurge = scan_surge_priority(sname) if ((tsurge == nil) or (ssurge == nil)) then return end - if (tsurge.priority == ssurge.priority) then return end + if (tsurge.priority == ssurge.priority) then return end toggle_surge(target, tname, force) elseif (is_hangar_entity(tname) and is_hangar_entity(sname)) then local thang = scan_hangar_name(tname) - local shang = scan_hangar_name(sname) - if (thang.iscon == shang.iscon) then return end - toggle_hangar(target, tname, force) + local shang = scan_hangar_name(sname) + if (thang.iscon == shang.iscon) then return end + toggle_hangar(target, tname, force) end end From a7a3148b8e66252197857fbae457761bc3efdd56 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 17:50:21 +0200 Subject: [PATCH 054/236] Fixed pipe connections and graphics for furnaces --- nullius/prototypes/entity/furnace.lua | 167 +++++++++++++++----------- 1 file changed, 99 insertions(+), 68 deletions(-) diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 5d08eb2..9fef347 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -145,25 +145,25 @@ data:extend({ animation = { layers = { { - filename = BASEENTITY .. "electric-furnace/electric-furnace.png", - priority = "high", - width = 129, - height = 100, - frame_count = 1, - shift = {0.2813, 0}, - scale = 0.6666, - tint = {0.7, 0.7, 0.85} + filename = BASEENTITY .. "electric-furnace/electric-furnace.png", + priority = "high", + width = 239, + height = 219, + frame_count = 1, + shift = util.by_pixel(0.75, 5.75), + scale = 0.5*0.6666, + tint = {0.7, 0.7, 0.85} }, { - filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", - priority = "high", - width = 129, - height = 100, - frame_count = 1, - shift = {0.2813, 0}, - draw_as_shadow = true, - scale = 0.6666 - } + filename = BASEENTITY .. "electric-furnace/electric-furnace-shadow.png", + priority = "high", + width = 227, + height = 171, + frame_count = 1, + draw_as_shadow = true, + shift = util.by_pixel(11.25, 7.75), + scale = 0.5*0.6666 + }, } }, @@ -171,26 +171,27 @@ data:extend({ { fadeout = true, animation = { - draw_as_light = true, layers = { { filename = BASEENTITY .. "electric-furnace/electric-furnace-heater.png", priority = "high", - width = 25, - height = 15, + width = 60, + height = 56, frame_count = 12, animation_speed = 0.5, - shift = {0.01042, 0.5938}, - scale = 0.6666 + draw_as_glow = true, + shift = util.by_pixel(1.75*0.6666, 35*0.6666), + scale = 0.6666*0.5 }, { filename = BASEENTITY .. "electric-furnace/electric-furnace-light.png", blend_mode = "additive", - width = 104, - height = 102, + width = 202, + height = 202, repeat_count = 12, - shift = util.by_pixel(0, 0), - scale = 0.6666 + draw_as_glow = true, + util.by_pixel(1*0.6666, 0), + scale = 0.6666*0.5 } } } @@ -201,33 +202,34 @@ data:extend({ draw_as_light = true, filename = BASEENTITY .. "electric-furnace/electric-furnace-ground-light.png", blend_mode = "additive", - width = 82, - height = 64, - shift = util.by_pixel(4*0.6666, 68*0.6666) + width = 166, + height = 124, + shift = util.by_pixel(3, 69), + scale = 0.5*0.6666, } }, { animation = { filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-1.png", priority = "high", - width = 19, - height = 13, + width = 37, + height = 25, frame_count = 4, animation_speed = 0.5, - shift = {-0.4479, -0.4271}, - scale = 0.6666 + shift = util.by_pixel(-20.5*0.6666, -16.5*0.6666), + scale = 0.6666*0.5 } }, { animation = { filename = BASEENTITY .. "electric-furnace/electric-furnace-propeller-2.png", priority = "high", - width = 12, - height = 9, + width = 23, + height = 15, frame_count = 4, animation_speed = 0.5, - shift = {0.041666, -0.8229}, - scale = 0.6666 + shift = util.by_pixel(4*0.6666, -34*0.6666), + scale = 0.6666*0.5 } } } @@ -320,7 +322,7 @@ data:extend({ fadeout = true, effect = "flicker", animation = { - draw_as_light = true, + draw_as_glow = true, filename = BASEENTITY .. "steel-furnace/steel-furnace-fire.png", priority = "high", line_length = 8, @@ -337,7 +339,7 @@ data:extend({ effect = "flicker", animation = { filename = BASEENTITY .. "steel-furnace/steel-furnace-glow.png", - draw_as_light = true, + draw_as_glow = true, priority = "high", width = 60, height = 43, @@ -352,7 +354,7 @@ data:extend({ effect = "flicker", animation = { filename = BASEENTITY .. "steel-furnace/steel-furnace-working.png", - draw_as_light = true, + draw_as_glow = true, priority = "high", line_length = 1, width = 128, @@ -363,7 +365,38 @@ data:extend({ blend_mode = "additive", scale = 0.75 } - } + }, + { + fadeout = true, + effect = "flicker", + animation = + { + filename = BASEENTITY .. "steel-furnace/steel-furnace-ground-light.png", + priority = "high", + line_length = 1, + width = 152, + height = 126, + draw_as_light = true, + shift = util.by_pixel(1, 48), + blend_mode = "additive", + scale = 0.75, + }, + }, + }, + water_reflection = + { + pictures = + { + filename = BASEENTITY .. "steel-furnace/steel-furnace-reflection.png", + priority = "extra-high", + width = 20, + height = 24, + shift = util.by_pixel(0, 45), + variation_count = 1, + scale = 75 + }, + rotate = false, + orientation_to_variation = false } } }, @@ -411,9 +444,7 @@ data:extend({ emissions_per_minute = {pollution = 1}, drain = "60kW" }, - working_visualisations = data.raw["furnace"]["electric-furnace"].working_visualisations, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, - water_reflection = data.raw["furnace"]["electric-furnace"].water_reflection, impact_category = "metal", module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -442,7 +473,9 @@ data:extend({ scale = 0.5 } } - } + }, + working_visualisations = data.raw["furnace"]["electric-furnace"].graphics_set.working_visualisations, + water_reflection = data.raw["furnace"]["electric-furnace"].graphics_set.water_reflection, } }, @@ -470,13 +503,13 @@ data:extend({ production_type = "input", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="input", position = {0.5, 1}, direction = defines.direction.south }} + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.4}, direction = defines.direction.south }} }, { production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-0.5, -1}, direction = defines.direction.north }} + pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.4}, direction = defines.direction.north }} }, }, fluid_boxes_off_when_no_fluid_recipe = true, @@ -527,7 +560,7 @@ data:extend({ layers = { { filename = BASEENTITY .. "electric-furnace/electric-furnace-heater.png", - draw_as_light = true, + draw_as_glow = true, priority = "high", width = 60, height = 56, @@ -543,21 +576,21 @@ data:extend({ height = 202, repeat_count = 12, shift = util.by_pixel(1.333, 0), - scale = 0.6666 + scale = 0.6666, + draw_as_glow = true, } } } }, { - draw_as_sprite = false, fadeout = true, animation = { filename = BASEENTITY .. "electric-furnace/electric-furnace-ground-light.png", - draw_as_light = true, blend_mode = "additive", width = 166, height = 124, shift = util.by_pixel(4, 92), + draw_as_light = true, scale = 0.6666 }, }, @@ -585,22 +618,21 @@ data:extend({ scale = 0.6666 } } + }, + water_reflection = { + pictures = { + filename = BASEENTITY .. "electric-furnace/electric-furnace-reflection.png", + priority = "extra-high", + width = 24, + height = 24, + shift = util.by_pixel(6.666, 53.333), + variation_count = 1, + scale = 6.6666, + }, + rotate = false, + orientation_to_variation = false } }, - - water_reflection = { - pictures = { - filename = BASEENTITY .. "electric-furnace/electric-furnace-reflection.png", - priority = "extra-high", - width = 24, - height = 24, - shift = util.by_pixel(6.666, 53.333), - variation_count = 1, - scale = 6.6666, - }, - rotate = false, - orientation_to_variation = false - } } }) @@ -637,7 +669,6 @@ data:extend({ allowed_effects = {"consumption", "speed", "productivity", "pollution"}, graphics_set = data.raw["furnace"]["electric-furnace"].graphics_set, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, - water_reflection = data.raw["furnace"]["electric-furnace"].water_reflection, impact_category = "metal", }, @@ -671,8 +702,6 @@ data:extend({ }, impact_category = "metal", working_sound = data.raw["furnace"]["electric-furnace"].working_sound, - working_visualisations = data.raw["assembling-machine"]["nullius-large-furnace-1"].working_visualisations, - water_reflection = data.raw["assembling-machine"]["nullius-large-furnace-1"].water_reflection, module_slots = 3, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -699,7 +728,9 @@ data:extend({ scale = 0.6666 } } - } + }, + working_visualisations = data.raw["assembling-machine"]["nullius-large-furnace-1"].graphics_set.working_visualisations, + water_reflection = data.raw["assembling-machine"]["nullius-large-furnace-1"].graphics_set.water_reflection, } }, From 7eef484f232648fbb07edbaee76c117ad3960998 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 18:29:40 +0200 Subject: [PATCH 055/236] Fixed compatibility for bobinserters --- nullius/prototypes/override_mod.lua | 38 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 13dc8be..192f1fc 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -327,7 +327,7 @@ end data.raw.technology["nullius-mass-production-1"].prerequisites = { "nullius-miniloader-1", "nullius-checkpoint-mineral-dust"} if mods["bobinserters"] and (settings.startup["bobmods-inserters-long2"].value == true) then -table.insert(data.raw.technology["long-inserters-2"].prerequisites,"nullius-miniloader-2") +table.insert(data.raw.technology["bob-long-inserters-2"].prerequisites,"nullius-miniloader-2") else table.insert(data.raw.technology["nullius-mineral-processing-2"].prerequisites,"nullius-miniloader-2") end @@ -445,7 +445,7 @@ end table.insert(data.raw.technology["nullius-mechanical-separation"].prerequisites,"nullius-loader-1") table.insert(data.raw.technology["nullius-checkpoint-mass-production"].prerequisites,"nullius-loader-2") if mods["bobinserters"] and (settings.startup["bobmods-inserters-long2"].value == true) then -table.insert(data.raw.technology["long-inserters-2"].prerequisites,"nullius-loader-3") +table.insert(data.raw.technology["bob-long-inserters-2"].prerequisites,"nullius-loader-3") else table.insert(data.raw.technology["nullius-mineral-processing-2"].prerequisites,"nullius-loader-3") end @@ -456,44 +456,44 @@ end if mods["bobinserters"] then if (settings.startup["bobmods-inserters-long2"].value == true) then -data.raw.technology["near-inserters"].prerequisites = {"long-inserters-1", "nullius-checkpoint-steel-ingot"} -data.raw.technology["near-inserters"].order = "nullius-cf" -data.raw.technology["near-inserters"].ignore_tech_cost_multiplier = true -data.raw.technology["near-inserters"].unit = { count = 3, +data.raw.technology["bob-near-inserters"].prerequisites = {"bob-long-inserters-1", "nullius-checkpoint-steel-ingot"} +data.raw.technology["bob-near-inserters"].order = "nullius-cf" +data.raw.technology["bob-near-inserters"].ignore_tech_cost_multiplier = true +data.raw.technology["bob-near-inserters"].unit = { count = 3, ingredients = {{"nullius-mechanical-pack", 1}}, time = 8 } -table.insert(data.raw.technology["nullius-toolmaking-2"].prerequisites,"near-inserters") +table.insert(data.raw.technology["nullius-toolmaking-2"].prerequisites,"bob-near-inserters") else -data.raw.technology["near-inserters"].prerequisites = {"nullius-maintenance"} -data.raw.technology["near-inserters"].order = "nullius-dg" -data.raw.technology["near-inserters"].unit = { count = 20, +data.raw.technology["bob-near-inserters"].prerequisites = {"nullius-maintenance"} +data.raw.technology["bob-near-inserters"].order = "nullius-dg" +data.raw.technology["bob-near-inserters"].unit = { count = 20, ingredients = {{"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}}, time = 25 } -table.insert(data.raw.technology["nullius-aesthetics-1"].prerequisites,"near-inserters") +table.insert(data.raw.technology["nullius-aesthetics-1"].prerequisites,"bob-near-inserters") end -data.raw.technology["more-inserters-1"].order = "nullius-df" -data.raw.technology["more-inserters-1"].unit = { count = 70, +data.raw.technology["bob-more-inserters-1"].order = "nullius-df" +data.raw.technology["bob-more-inserters-1"].unit = { count = 70, ingredients = {{"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}}, time = 30 } -data.raw.technology["more-inserters-1"].prerequisites = { +data.raw.technology["bob-more-inserters-1"].prerequisites = { "nullius-metalworking-2", "nullius-locomotion-1"} -table.insert(data.raw.technology["nullius-cybernetics-2"].prerequisites,"more-inserters-1") +table.insert(data.raw.technology["nullius-cybernetics-2"].prerequisites,"bob-more-inserters-1") if settings.startup["bobmods-inserters-more2"].value == true then -data.raw.technology["more-inserters-2"].order = "nullius-ek" -data.raw.technology["more-inserters-2"].unit = { count = 300, +data.raw.technology["bob-more-inserters-2"].order = "nullius-ek" +data.raw.technology["bob-more-inserters-2"].unit = { count = 300, ingredients = { {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}, {"nullius-chemical-pack", 1} }, time = 35 } -data.raw.technology["more-inserters-2"].prerequisites = {"nullius-logistics-3"} -table.insert(data.raw.technology["nullius-inserter-capacity-1"].prerequisites,"more-inserters-2") +data.raw.technology["bob-more-inserters-2"].prerequisites = {"nullius-logistics-3"} +table.insert(data.raw.technology["nullius-inserter-capacity-1"].prerequisites,"bob-more-inserters-2") end end From be91d0e531df5264a25c5bd56cb741fd42ad699b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 19:03:29 +0200 Subject: [PATCH 056/236] Cleaned the ammo categories for the drones, hid junk in factoriopedia --- nullius/TODO_list.txt | 1 - nullius/data.lua | 1 - nullius/locale/en/misc.cfg | 3 + nullius/prototypes/category.lua | 274 ++++++++++++++-------------- nullius/prototypes/entity/drone.lua | 13 +- nullius/prototypes/item/drone.lua | 26 +-- nullius/prototypes/item/weapon.lua | 67 +++---- 7 files changed, 200 insertions(+), 185 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 70fed88..b0152d6 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -7,7 +7,6 @@ Rework the checkpoint system (maybe) fix the others warnings in the log landfill variants are not the same as on 1.1 mods compatibility -drones ammo category locale broken fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 diff --git a/nullius/data.lua b/nullius/data.lua index 790b813..f53556f 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -19,7 +19,6 @@ require("prototypes.item.void") require("prototypes.item.landfill") require("prototypes.item.boxing") --- TODO: set the appropriate volume for fluid_boxes require("prototypes.entity.furnace") require("prototypes.entity.assembler") require("prototypes.entity.miner") diff --git a/nullius/locale/en/misc.cfg b/nullius/locale/en/misc.cfg index a4b4143..8fcc14d 100644 --- a/nullius/locale/en/misc.cfg +++ b/nullius/locale/en/misc.cfg @@ -159,3 +159,6 @@ faction-absorbed=__1__ has been absorbed into __2__. [gui-game-finished] victory=Nauvis has been successfully terraformed! + +[ammo-category] +nullius-drone=Drone \ No newline at end of file diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index f7eed6d..355b395 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -1903,139 +1903,6 @@ data:extend({ type = "ammo-category", name = "nullius-conscription" }, - { - type = "ammo-category", - name = "nullius-scout-drone" - }, - { - type = "ammo-category", - name = "nullius-demolition-drone" - }, - { - type = "ammo-category", - name = "nullius-excavation-drone" - }, - { - type = "ammo-category", - name = "nullius-shallow-excavation-drone" - }, - { - type = "ammo-category", - name = "nullius-terraforming-drone-grey" - }, - { - type = "ammo-category", - name = "nullius-terraforming-drone-tan" - }, - { - type = "ammo-category", - name = "nullius-terraforming-drone-brown" - }, - { - type = "ammo-category", - name = "nullius-terraforming-drone-red" - }, - { - type = "ammo-category", - name = "nullius-terraforming-drone-beige" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-grey" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-white" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-red" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-blue" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-yellow" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-green" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-purple" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-brown" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-black" - }, - { - type = "ammo-category", - name = "nullius-paving-drone-hazard" - }, - { - type = "ammo-category", - name = "nullius-guide-drone-iron" - }, - { - type = "ammo-category", - name = "nullius-guide-drone-bauxite" - }, - { - type = "ammo-category", - name = "nullius-guide-drone-sandstone" - }, - { - type = "ammo-category", - name = "nullius-guide-drone-limestone" - }, - { - type = "ammo-category", - name = "nullius-guide-drone-copper" - }, - { - type = "ammo-category", - name = "nullius-guide-drone-uranium" - }, - { - type = "ammo-category", - name = "nullius-algaculture-drone" - }, - { - type = "ammo-category", - name = "nullius-horticulture-drone" - }, - { - type = "ammo-category", - name = "nullius-entomology-drone" - }, - { - type = "ammo-category", - name = "nullius-arboriculture-drone" - }, - { - type = "ammo-category", - name = "nullius-aquaculture-drone" - }, - { - type = "ammo-category", - name = "nullius-husbandry-drone" - }, - { - type = "ammo-category", - name = "nullius-sequestration-coal-drone" - }, - { - type = "ammo-category", - name = "nullius-sequestration-petroleum-drone" - }, - { type = "fuel-category", name = "vehicle" @@ -2043,5 +1910,144 @@ data:extend({ { type = "fuel-category", name = "nullius-nuclear" - } + }, + { + type = "ammo-category", + name = "nullius-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + }, + -- Old categories + -- { + -- type = "ammo-category", + -- name = "nullius-scout-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-demolition-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-excavation-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-shallow-excavation-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-terraforming-drone-grey" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-terraforming-drone-tan" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-terraforming-drone-brown" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-terraforming-drone-red" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-terraforming-drone-beige" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-grey" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-white" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-red" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-blue" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-yellow" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-green" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-purple" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-brown" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-black" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-paving-drone-hazard" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-guide-drone-iron" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-guide-drone-bauxite" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-guide-drone-sandstone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-guide-drone-limestone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-guide-drone-copper" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-guide-drone-uranium" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-algaculture-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-horticulture-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-entomology-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-arboriculture-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-aquaculture-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-husbandry-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-sequestration-coal-drone" + -- }, + -- { + -- type = "ammo-category", + -- name = "nullius-sequestration-petroleum-drone" + -- }, }) diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index be3f679..2f197d3 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -14,7 +14,7 @@ data:extend({ automated_ammo_count = 10, alert_when_attacking = false, minable = {mining_time = 1.5, result = "nullius-drone-launcher-1"}, - fast_replaceable_group = "drone-launcher", + fast_replaceable_group = "drone-launcher", next_upgrade = "nullius-drone-launcher-2", open_sound = data.raw["artillery-turret"]["artillery-turret"].open_sound, close_sound = data.raw["artillery-turret"]["artillery-turret"].close_sound, @@ -90,7 +90,7 @@ data:extend({ automated_ammo_count = 10, alert_when_attacking = false, minable = {mining_time = 2, result = "nullius-drone-launcher-2"}, - fast_replaceable_group = "drone-launcher", + fast_replaceable_group = "drone-launcher", open_sound = data.raw["artillery-turret"]["artillery-turret"].open_sound, close_sound = data.raw["artillery-turret"]["artillery-turret"].close_sound, mined_sound = {filename = "__core__/sound/deconstruct-large.ogg",volume = 0.8}, @@ -158,6 +158,7 @@ data:extend({ type = "artillery-projectile", name = "nullius-scout-drone-projectile-1", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, reveal_map = true, map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, @@ -195,6 +196,7 @@ data:extend({ type = "artillery-projectile", name = "nullius-scout-drone-projectile-2", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, reveal_map = true, map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, @@ -220,6 +222,7 @@ data:extend({ type = "artillery-projectile", name = "nullius-demolition-drone-projectile", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, reveal_map = true, map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, @@ -290,6 +293,7 @@ data:extend({ type = "artillery-projectile", name = "nullius-excavation-drone-projectile", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, reveal_map = true, map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, @@ -343,7 +347,8 @@ local function create_flare(base_name, suffix) type = "artillery-flare", name = prefix.."-flare"..suffix, icons = data.raw.capsule[prefix.."-remote"..suffix].icons, - shot_category = prefix.."-drone"..suffix, + hidden_in_factoriopedia = true, + shot_category = "nullius-drone", -- prefix.."-drone"..suffix, flags = {"placeable-off-grid", "not-on-map"}, map_color = {r=1, g=0.5, b=0}, life_time = 60 * 60, @@ -384,6 +389,7 @@ local function create_projectile(base_name, suffix, drone_picture, drone_shadow) type = "artillery-projectile", name = prefix.."-drone-projectile-"..suffix, flags = {"not-on-map"}, + hidden_in_factoriopedia = true, reveal_map = true, map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, @@ -479,6 +485,7 @@ local function create_farmer(base_name) type = "artillery-projectile", name = prefix.."-drone-projectile", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, reveal_map = true, map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, diff --git a/nullius/prototypes/item/drone.lua b/nullius/prototypes/item/drone.lua index 2f9a9a3..98d0907 100644 --- a/nullius/prototypes/item/drone.lua +++ b/nullius/prototypes/item/drone.lua @@ -61,7 +61,7 @@ local function create_drone(base_name, group, suborder, base_suffix, stack, flar subgroup = group, order = "nullius-"..suborder, stack_size = stack, - ammo_category = flare, + ammo_category = "nullius-drone", --flare, ammo_type = { target_type = "position", action = { @@ -764,12 +764,12 @@ data:extend({ order = "nullius-eb", stack_size = 1, rocket_launch_products = { - {name="nullius-guide-drone-iron-1", amount=1, probability=0.3}, - {name="nullius-guide-drone-sandstone-1", amount=1, probability=0.2}, - {name="nullius-guide-drone-bauxite-1", amount=1, probability=0.2}, - {name="nullius-guide-drone-limestone-1", amount=1, probability=0.1}, - {name="nullius-guide-drone-copper-1", amount=1, probability=0.1}, - {name="nullius-guide-drone-uranium-1", amount=1, probability=0.1} + {type = "item", name="nullius-guide-drone-iron-1", amount=1, probability=0.3}, -- todo: check that this works + {type = "item", name="nullius-guide-drone-sandstone-1", amount=1, probability=0.2}, + {type = "item", name="nullius-guide-drone-bauxite-1", amount=1, probability=0.2}, + {type = "item", name="nullius-guide-drone-limestone-1", amount=1, probability=0.1}, + {type = "item", name="nullius-guide-drone-copper-1", amount=1, probability=0.1}, + {type = "item", name="nullius-guide-drone-uranium-1", amount=1, probability=0.1} } }, { @@ -805,12 +805,12 @@ data:extend({ order = "nullius-ec", stack_size = 1, rocket_launch_products = { - {name="nullius-guide-drone-iron-1", amount=1, probability=0.9}, - {name="nullius-guide-drone-sandstone-1", amount=1, probability=0.8}, - {name="nullius-guide-drone-bauxite-1", amount=1, probability=0.7}, - {name="nullius-guide-drone-limestone-1", amount=1, probability=0.5}, - {name="nullius-guide-drone-copper-1", amount=1, probability=0.4}, - {name="nullius-guide-drone-uranium-1", amount=1, probability=0.3} + {type = "item", name="nullius-guide-drone-iron-1", amount=1, probability=0.9}, -- todo : check that this works + {type = "item", name="nullius-guide-drone-sandstone-1", amount=1, probability=0.8}, + {type = "item", name="nullius-guide-drone-bauxite-1", amount=1, probability=0.7}, + {type = "item", name="nullius-guide-drone-limestone-1", amount=1, probability=0.5}, + {type = "item", name="nullius-guide-drone-copper-1", amount=1, probability=0.4}, + {type = "item", name="nullius-guide-drone-uranium-1", amount=1, probability=0.3} } }, { diff --git a/nullius/prototypes/item/weapon.lua b/nullius/prototypes/item/weapon.lua index c77df2c..d5441c8 100644 --- a/nullius/prototypes/item/weapon.lua +++ b/nullius/prototypes/item/weapon.lua @@ -15,39 +15,40 @@ data:extend({ attack_parameters = { type = "projectile", ammo_categories = { - "nullius-scout-drone", - "nullius-demolition-drone", - "nullius-excavation-drone", - "nullius-shallow-excavation-drone", - "nullius-terraforming-drone-grey", - "nullius-terraforming-drone-tan", - "nullius-terraforming-drone-brown", - "nullius-terraforming-drone-red", - "nullius-terraforming-drone-beige", - "nullius-paving-drone-grey", - "nullius-paving-drone-red", - "nullius-paving-drone-blue", - "nullius-paving-drone-yellow", - "nullius-paving-drone-green", - "nullius-paving-drone-white", - "nullius-paving-drone-purple", - "nullius-paving-drone-brown", - "nullius-paving-drone-black", - "nullius-paving-drone-hazard", - "nullius-guide-drone-iron", - "nullius-guide-drone-bauxite", - "nullius-guide-drone-sandstone", - "nullius-guide-drone-limestone", - "nullius-guide-drone-copper", - "nullius-guide-drone-uranium", - "nullius-algaculture-drone", - "nullius-horticulture-drone", - "nullius-entomology-drone", - "nullius-arboriculture-drone", - "nullius-aquaculture-drone", - "nullius-husbandry-drone", - "nullius-sequestration-coal-drone", - "nullius-sequestration-petroleum-drone" + "nullius-drone", + -- "nullius-scout-drone", + -- "nullius-demolition-drone", + -- "nullius-excavation-drone", + -- "nullius-shallow-excavation-drone", + -- "nullius-terraforming-drone-grey", + -- "nullius-terraforming-drone-tan", + -- "nullius-terraforming-drone-brown", + -- "nullius-terraforming-drone-red", + -- "nullius-terraforming-drone-beige", + -- "nullius-paving-drone-grey", + -- "nullius-paving-drone-red", + -- "nullius-paving-drone-blue", + -- "nullius-paving-drone-yellow", + -- "nullius-paving-drone-green", + -- "nullius-paving-drone-white", + -- "nullius-paving-drone-purple", + -- "nullius-paving-drone-brown", + -- "nullius-paving-drone-black", + -- "nullius-paving-drone-hazard", + -- "nullius-guide-drone-iron", + -- "nullius-guide-drone-bauxite", + -- "nullius-guide-drone-sandstone", + -- "nullius-guide-drone-limestone", + -- "nullius-guide-drone-copper", + -- "nullius-guide-drone-uranium", + -- "nullius-algaculture-drone", + -- "nullius-horticulture-drone", + -- "nullius-entomology-drone", + -- "nullius-arboriculture-drone", + -- "nullius-aquaculture-drone", + -- "nullius-husbandry-drone", + -- "nullius-sequestration-coal-drone", + -- "nullius-sequestration-petroleum-drone" }, cooldown = 200, movement_slow_down_factor = 0, From 05e0243a2842e91aec29118959b0d88ebe238739 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 19:26:59 +0200 Subject: [PATCH 057/236] Updated mod ingredients to new format --- nullius/prototypes/mods.lua | 604 +++++++++++----------- nullius/prototypes/override_mod.lua | 76 +-- nullius/prototypes/override_mod_final.lua | 38 +- 3 files changed, 359 insertions(+), 359 deletions(-) diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index e5f881d..b13bfe1 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -36,9 +36,9 @@ data:extend({ always_show_made_in = true, energy_required = 3, ingredients = { - {"train-stop", 1}, - {"arithmetic-combinator", 2}, - {"nullius-green-wire", 4} + {type = "item", name = "train-stop", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 2}, + {type = "item", name = "nullius-green-wire", amount = 4} }, result = "logistic-train-stop" } @@ -56,8 +56,8 @@ if mods["LTN_Combinator_Modernized"] then category = "tiny-crafting", energy_required = 2, ingredients = { - {"constant-combinator", 1}, - {"decider-combinator", 1} + {type = "item", name = "constant-combinator", amount = 1}, + {type = "item", name = "decider-combinator", amount = 1} }, result = "ltn-combinator" } @@ -81,8 +81,8 @@ data:extend({ always_show_made_in = true, energy_required = 12, ingredients = { - {"nullius-beacon-1", 1}, - {"nullius-relay-1", 2} + {type = "item", name = "nullius-beacon-1", amount = 1}, + {type = "item", name = "nullius-relay-1", amount = 2} }, result = "aai-signal-sender", enabled = false @@ -94,8 +94,8 @@ data:extend({ always_show_made_in = true, energy_required = 15, ingredients = { - {"radar", 1}, - {"programmable-speaker", 2} + {type = "item", name = "radar", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 2} }, result = "aai-signal-receiver", enabled = false @@ -691,8 +691,8 @@ data:extend({ category = "small-crafting", energy_required = 3, ingredients = { - {"small-lamp", 1}, - {"train-config", 2} + {type = "item", name = "small-lamp", amount = 1}, + {type = "item", name = "train-config", amount = 2} }, result = "train-publisher" }, @@ -704,9 +704,9 @@ data:extend({ category = "large-crafting", energy_required = 4, ingredients = { - {"train-stop", 1}, - {"train-publisher", 1}, - {"nullius-small-supply-chest-1", 1} + {type = "item", name = "train-stop", amount = 1}, + {type = "item", name = "train-publisher", amount = 1}, + {type = "item", name = "nullius-small-supply-chest-1", amount = 1} }, result = "subscriber-train-stop" }, @@ -718,9 +718,9 @@ data:extend({ category = "large-crafting", energy_required = 4, ingredients = { - {"train-stop", 1}, - {"train-publisher", 1}, - {"nullius-small-demand-chest-1", 1} + {type = "item", name = "train-stop", amount = 1}, + {type = "item", name = "train-publisher", amount = 1}, + {type = "item", name = "nullius-small-demand-chest-1", amount = 1} }, result = "publisher-train-stop" }, @@ -732,8 +732,8 @@ data:extend({ category = "tiny-crafting", energy_required = 2, ingredients = { - {"constant-combinator", 1}, - {"arithmetic-combinator", 1} + {type = "item", name = "constant-combinator", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 1} }, result = "train-config" } @@ -750,12 +750,12 @@ data:extend({ category = "nanotechnology", energy_required = 60, ingredients = { - {"nullius-productivity-module-2", 4}, - {"nullius-reactor", 1}, - {"nullius-box-gate", 3}, - {"nullius-sensor-node-3", 2}, - {"nullius-box-underground-pipe-4", 5}, - {"nullius-grid-battery-2", 6} + {type = "item", name = "nullius-productivity-module-2", amount = 4}, + {type = "item", name = "nullius-reactor", amount = 1}, + {type = "item", name = "nullius-box-gate", amount = 3}, + {type = "item", name = "nullius-sensor-node-3", amount = 2}, + {type = "item", name = "nullius-box-underground-pipe-4", amount = 5}, + {type = "item", name = "nullius-grid-battery-2", amount = 6} }, result = "teleporter" } @@ -874,11 +874,11 @@ data:extend({ category = "medium-crafting", energy_required = 10, ingredients = { - {"nullius-robot-frame-1", 1}, - {"nullius-haste-module-1", 1}, - {"nullius-combustion-chamber-1", 1}, - {"nullius-turbine-open-1", 2}, - {"nullius-aluminum-plate", 6} + {type = "item", name = "nullius-robot-frame-1", amount = 1}, + {type = "item", name = "nullius-haste-module-1", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-1", amount = 1}, + {type = "item", name = "nullius-turbine-open-1", amount = 2}, + {type = "item", name = "nullius-aluminum-plate", amount = 6} }, result = "jetpack-1" }, @@ -890,12 +890,12 @@ data:extend({ category = "medium-crafting", energy_required = 15, ingredients = { - {"jetpack-1", 1}, - {"nullius-robot-frame-2", 1}, - {"nullius-haste-module-2", 1}, - {"nullius-combustion-chamber-2", 2}, - {"nullius-turbine-open-2", 2}, - {"nullius-ceramic-powder", 8} + {type = "item", name = "jetpack-1", amount = 1}, + {type = "item", name = "nullius-robot-frame-2", amount = 1}, + {type = "item", name = "nullius-haste-module-2", amount = 1}, + {type = "item", name = "nullius-combustion-chamber-2", amount = 2}, + {type = "item", name = "nullius-turbine-open-2", amount = 2}, + {type = "item", name = "nullius-ceramic-powder", amount = 8} }, result = "jetpack-2" }, @@ -907,12 +907,12 @@ data:extend({ category = "medium-crafting", energy_required = 20, ingredients = { - {"jetpack-2", 1}, - {"nullius-robot-frame-3", 1}, - {"nullius-haste-module-3", 2}, - {"nullius-combustion-chamber-3", 1}, - {"nullius-turbine-open-3", 2}, - {"nullius-titanium-plate", 10} + {type = "item", name = "jetpack-2", amount = 1}, + {type = "item", name = "nullius-robot-frame-3", amount = 1}, + {type = "item", name = "nullius-haste-module-3", amount = 2}, + {type = "item", name = "nullius-combustion-chamber-3", amount = 1}, + {type = "item", name = "nullius-turbine-open-3", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 10} }, result = "jetpack-3" }, @@ -924,10 +924,10 @@ data:extend({ category = "medium-crafting", energy_required = 30, ingredients = { - {"jetpack-3", 2}, - {"nullius-robot-frame-4", 1}, - {"nullius-haste-module-4", 2}, - {"nullius-missile-launcher", 4} + {type = "item", name = "jetpack-3", amount = 2}, + {type = "item", name = "nullius-robot-frame-4", amount = 1}, + {type = "item", name = "nullius-haste-module-4", amount = 2}, + {type = "item", name = "nullius-missile-launcher", amount = 4} }, result = "jetpack-4" } @@ -1443,9 +1443,9 @@ data:extend({ category = "large-crafting", energy_required = 6, ingredients = { - {"nullius-large-chest-1", 3}, - {"nullius-steel-beam", 6}, - {"nullius-glass", 4} + {type = "item", name = "nullius-large-chest-1", amount = 3}, + {type = "item", name = "nullius-steel-beam", amount = 6}, + {type = "item", name = "nullius-glass", amount = 4} }, result = "storehouse-basic" }, @@ -1457,10 +1457,10 @@ data:extend({ category = "huge-crafting", energy_required = 10, ingredients = { - {"storehouse-basic", 4}, - {"stone-brick", 40}, - {"nullius-mortar", 10}, - {"concrete", 20} + {type = "item", name = "storehouse-basic", amount = 4}, + {type = "item", name = "stone-brick", amount = 40}, + {type = "item", name = "nullius-mortar", amount = 10}, + {type = "item", name = "concrete", amount = 20} }, result = "warehouse-basic" }, @@ -1472,8 +1472,8 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {"storehouse-basic", 1}, - {"nullius-large-storage-chest-1", 1} + {type = "item", name = "storehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-storage-chest-1", amount = 1} }, result = "storehouse-storage" }, @@ -1485,8 +1485,8 @@ data:extend({ category = "huge-crafting", energy_required = 5, ingredients = { - {"warehouse-basic", 1}, - {"nullius-large-storage-chest-1", 2} + {type = "item", name = "warehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-storage-chest-1", amount = 2} }, result = "warehouse-storage" }, @@ -1498,8 +1498,8 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {"storehouse-basic", 1}, - {"nullius-large-supply-chest-1", 1} + {type = "item", name = "storehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-supply-chest-1", amount = 1} }, result = "storehouse-passive-provider" }, @@ -1511,8 +1511,8 @@ data:extend({ category = "huge-crafting", energy_required = 5, ingredients = { - {"warehouse-basic", 1}, - {"nullius-large-supply-chest-1", 2} + {type = "item", name = "warehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-supply-chest-1", amount = 2} }, result = "warehouse-passive-provider" }, @@ -1524,8 +1524,8 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {"storehouse-basic", 1}, - {"nullius-large-demand-chest-1", 1} + {type = "item", name = "storehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-demand-chest-1", amount = 1} }, result = "storehouse-requester" }, @@ -1537,8 +1537,8 @@ data:extend({ category = "huge-crafting", energy_required = 5, ingredients = { - {"warehouse-basic", 1}, - {"nullius-large-demand-chest-1", 2} + {type = "item", name = "warehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-demand-chest-1", amount = 2} }, result = "warehouse-requester" }, @@ -1550,8 +1550,8 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {"storehouse-basic", 1}, - {"nullius-large-buffer-chest-1", 1} + {type = "item", name = "storehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-buffer-chest-1", amount = 1} }, result = "storehouse-buffer" }, @@ -1563,8 +1563,8 @@ data:extend({ category = "huge-crafting", energy_required = 5, ingredients = { - {"warehouse-basic", 1}, - {"nullius-large-buffer-chest-1", 2} + {type = "item", name = "warehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-buffer-chest-1", amount = 2} }, result = "warehouse-buffer" }, @@ -1576,8 +1576,8 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {"storehouse-basic", 1}, - {"nullius-large-dispatch-chest-1", 1} + {type = "item", name = "storehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-dispatch-chest-1", amount = 1} }, result = "storehouse-active-provider" }, @@ -1589,8 +1589,8 @@ data:extend({ category = "huge-crafting", energy_required = 5, ingredients = { - {"warehouse-basic", 1}, - {"nullius-large-dispatch-chest-1", 2} + {type = "item", name = "warehouse-basic", amount = 1}, + {type = "item", name = "nullius-large-dispatch-chest-1", amount = 2} }, result = "warehouse-active-provider" } @@ -1757,8 +1757,8 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"nullius-small-demand-chest-1", 1}, - {"nullius-relay-2", 1} + {type = "item", name = "nullius-small-demand-chest-1", amount = 1}, + {type = "item", name = "nullius-relay-2", amount = 1} }, result = "logistic-chest-botUpgrader" } @@ -1777,8 +1777,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"train-stop", 1}, - {"rail-chain-signal", 1} + {type = "item", name = "train-stop", amount = 1}, + {type = "item", name = "rail-chain-signal", amount = 1} }, result = "fuel-train-stop" } @@ -1835,8 +1835,8 @@ data:extend({ category = "medium-crafting", energy_required = 90, ingredients = { - {"nullius-android-2", 1}, - {"nullius-asteroid-miner-2", 1} + {type = "item", name = "nullius-android-2", amount = 1}, + {type = "item", name = "nullius-asteroid-miner-2", amount = 1} }, result = "companion" }, @@ -1848,9 +1848,9 @@ data:extend({ category = "medium-crafting", energy_required = 30, ingredients = { - {"nullius-reactor", 1}, - {"nullius-battery-2", 6}, - {"nullius-antimatter", 12} + {type = "item", name = "nullius-reactor", amount = 1}, + {type = "item", name = "nullius-battery-2", amount = 6}, + {type = "item", name = "nullius-antimatter", amount = 12} }, result = "companion-reactor-equipment" }, @@ -1862,8 +1862,8 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"nullius-shield", 1}, - {"nullius-efficiency-module-3", 1} + {type = "item", name = "nullius-shield", amount = 1}, + {type = "item", name = "nullius-efficiency-module-3", amount = 1} }, result = "companion-shield-equipment" }, @@ -1875,9 +1875,9 @@ data:extend({ category = "medium-crafting", energy_required = 40, ingredients = { - {"nullius-drone-carrier-2", 1}, - {"nullius-hangar-3", 1}, - {"nullius-construction-bot-4", 6} + {type = "item", name = "nullius-drone-carrier-2", amount = 1}, + {type = "item", name = "nullius-hangar-3", amount = 1}, + {type = "item", name = "nullius-construction-bot-4", amount = 6} }, result = "companion-roboport-equipment" }, @@ -1889,8 +1889,8 @@ data:extend({ category = "medium-crafting", energy_required = 10, ingredients = { - {"nullius-turret", 5}, - {"nullius-demolition-drone", 1} + {type = "item", name = "nullius-turret", amount = 5}, + {type = "item", name = "nullius-demolition-drone", amount = 1} }, result = "companion-defense-equipment" }, @@ -1902,8 +1902,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"nullius-hydrogen-canister", 3}, - {"processed-fuel", 1} + {type = "item", name = "nullius-hydrogen-canister", amount = 3}, + {type = "item", name = "processed-fuel", amount = 1} }, results = { {type="item", name="rocket-booster", amount=3}, @@ -1925,9 +1925,9 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {"nullius-locomotive-1", 1}, - {"nullius-large-chest-1", 1}, - {"nullius-small-assembler-1", 1} + {type = "item", name = "nullius-locomotive-1", amount = 1}, + {type = "item", name = "nullius-large-chest-1", amount = 1}, + {type = "item", name = "nullius-small-assembler-1", amount = 1} }, result = "railway-motor-car-base" }, @@ -1939,9 +1939,9 @@ data:extend({ category = "large-crafting", energy_required = 25, ingredients = { - {"railway-motor-car-base", 1}, - {"nullius-solar-locomotive", 1}, - {"nullius-small-assembler-3", 1} + {type = "item", name = "railway-motor-car-base", amount = 1}, + {type = "item", name = "nullius-solar-locomotive", amount = 1}, + {type = "item", name = "nullius-small-assembler-3", amount = 1} }, result = "railway-motor-car-nuclear" } @@ -1959,8 +1959,8 @@ data:extend({ category = "small-crafting", energy_required = 5, ingredients = { - {"nullius-sensor-1", 1}, - {"nullius-green-wire", 3} + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "nullius-green-wire", amount = 3} }, result = "item-sensor" } @@ -1978,8 +1978,8 @@ if (mods["crafting_combinator"] or mods["crafting_combinator_xeraph"]) then category = "small-crafting", energy_required = 2, ingredients = { - {"constant-combinator", 1}, - {"nullius-red-wire", 1} + {type = "item", name = "constant-combinator", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 1} }, result = "crafting_combinator:crafting-combinator" }, @@ -1991,8 +1991,8 @@ if (mods["crafting_combinator"] or mods["crafting_combinator_xeraph"]) then category = "small-crafting", energy_required = 2, ingredients = { - {"arithmetic-combinator", 1}, - {"nullius-red-wire", 2} + {type = "item", name = "arithmetic-combinator", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 2} }, result = "crafting_combinator:recipe-combinator" } @@ -2010,10 +2010,10 @@ if mods["UPSFriendlyNixieTubeDisplay"] then category = "small-crafting", energy_required = 4, ingredients = { - {"constant-combinator", 2}, - {"small-lamp", 3}, - {"nullius-aluminum-wire", 3}, - {"nullius-glass", 4} + {type = "item", name = "constant-combinator", amount = 2}, + {type = "item", name = "small-lamp", amount = 3}, + {type = "item", name = "nullius-aluminum-wire", amount = 3}, + {type = "item", name = "nullius-glass", amount = 4} }, result = "SNTD-old-nixie-tube" }, @@ -2025,8 +2025,8 @@ if mods["UPSFriendlyNixieTubeDisplay"] then category = "medium-crafting", energy_required = 5, ingredients = { - {"SNTD-old-nixie-tube", 1}, - {"nullius-large-chest-1", 1} + {type = "item", name = "SNTD-old-nixie-tube", amount = 1}, + {type = "item", name = "nullius-large-chest-1", amount = 1} }, result = "SNTD-nixie-tube" }, @@ -2038,9 +2038,9 @@ if mods["UPSFriendlyNixieTubeDisplay"] then category = "small-crafting", energy_required = 3, ingredients = { - {"SNTD-old-nixie-tube", 1}, - {"nullius-green-wire", 2}, - {"iron-chest", 1} + {type = "item", name = "SNTD-old-nixie-tube", amount = 1}, + {type = "item", name = "nullius-green-wire", amount = 2}, + {type = "item", name = "iron-chest", amount = 1} }, result = "SNTD-nixie-tube-small" }, @@ -2108,10 +2108,10 @@ data:extend({ category = "small-crafting", energy_required = 3, ingredients = { - {"constant-combinator", 2}, - {"small-lamp", 3}, - {"nullius-aluminum-plate", 1}, - {"nullius-glass", 2} + {type = "item", name = "constant-combinator", amount = 2}, + {type = "item", name = "small-lamp", amount = 3}, + {type = "item", name = "nullius-aluminum-plate", amount = 1}, + {type = "item", name = "nullius-glass", amount = 2} }, result = "hs_holo_sign" }, @@ -2151,8 +2151,8 @@ data:extend({ category = "large-crafting", energy_required = 8, ingredients = { - {"radar", 1}, - {"nullius-robot-frame-1", 1} + {type = "item", name = "radar", amount = 1}, + {type = "item", name = "nullius-robot-frame-1", amount = 1} }, result = "shuttle-lite" } @@ -2450,12 +2450,12 @@ data:extend({ category = "huge-crafting", energy_required = 8, ingredients = { - {"rail", 3}, - {"gate", 8}, - {"stone-wall", 12}, - {"nullius-large-chest-2", 2}, - {"express-underground-belt", 6}, - {"nullius-steel-beam", 16} + {type = "item", name = "rail", amount = 3}, + {type = "item", name = "gate", amount = 8}, + {type = "item", name = "stone-wall", amount = 12}, + {type = "item", name = "nullius-large-chest-2", amount = 2}, + {type = "item", name = "express-underground-belt", amount = 6}, + {type = "item", name = "nullius-steel-beam", amount = 16} }, result = "railloader" }, @@ -2467,12 +2467,12 @@ data:extend({ category = "huge-crafting", energy_required = 8, ingredients = { - {"rail", 3}, - {"gate", 8}, - {"stone-wall", 12}, - {"nullius-large-chest-2", 2}, - {"express-underground-belt", 6}, - {"concrete", 36} + {type = "item", name = "rail", amount = 3}, + {type = "item", name = "gate", amount = 8}, + {type = "item", name = "stone-wall", amount = 12}, + {type = "item", name = "nullius-large-chest-2", amount = 2}, + {type = "item", name = "express-underground-belt", amount = 6}, + {type = "item", name = "concrete", amount = 36} }, result = "railunloader" }, @@ -2532,8 +2532,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"inserter", 2}, - {"nullius-motor-1", 1} + {type = "item", name = "inserter", amount = 2}, + {type = "item", name = "nullius-motor-1", amount = 1} }, result = "inserter" }, @@ -2546,9 +2546,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"RTThrower-inserter-Item", 1}, - {"turbo-inserter", 1}, - {"nullius-motor-2", 1} + {type = "item", name = "RTThrower-inserter-Item", amount = 1}, + {type = "item", name = "turbo-inserter", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1} }, result = "turbo-inserter" }, @@ -2561,9 +2561,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"RTThrower-inserter-Item", 1}, - {"turbo-filter-inserter", 1}, - {"nullius-motor-2", 1} + {type = "item", name = "RTThrower-inserter-Item", amount = 1}, + {type = "item", name = "turbo-filter-inserter", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1} }, result = "turbo-filter-inserter" }, @@ -2576,8 +2576,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"RTThrower-turbo-inserter-Item", 1}, - {"stack-inserter", 2} + {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, + {type = "item", name = "stack-inserter", amount = 2} }, result = "stack-inserter" }, @@ -2590,8 +2590,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"RTThrower-turbo-filter-inserter-Item", 1}, - {"stack-filter-inserter", 2} + {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, + {type = "item", name = "stack-filter-inserter", amount = 2} }, result = "stack-filter-inserter" }, @@ -2604,8 +2604,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"RTThrower-stack-inserter-Item", 1}, - {"express-stack-inserter", 2} + {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1}, + {type = "item", name = "express-stack-inserter", amount = 2} }, result = "express-stack-inserter" }, @@ -2618,8 +2618,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"RTThrower-stack-filter-inserter-Item", 1}, - {"express-stack-filter-inserter", 2} + {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, + {type = "item", name = "express-stack-filter-inserter", amount = 2} }, result = "express-stack-filter-inserter" }, @@ -2632,7 +2632,7 @@ data:extend({ category = "medium-crafting", energy_required = 0.5, ingredients = { - {"wooden-chest", 1} + {type = "item", name = "wooden-chest", amount = 1} }, result = "OpenContainerItem" }, @@ -2648,7 +2648,7 @@ data:extend({ order = "nullius-dc", energy_required = 0.5, ingredients = { - {"OpenContainerItem", 1} + {type = "item", name = "OpenContainerItem", amount = 1} }, result = "wooden-chest" }, @@ -2660,9 +2660,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"nullius-underground-pipe-2", 1}, - {"nullius-priority-valve", 1}, - {"nullius-steel-rod", 1} + {type = "item", name = "nullius-underground-pipe-2", amount = 1}, + {type = "item", name = "nullius-priority-valve", amount = 1}, + {type = "item", name = "nullius-steel-rod", amount = 1} }, result = "HatchRTItem" }, @@ -2674,9 +2674,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"HatchRTItem", 1}, - {"RTThrower-turbo-inserter-Item", 1}, - {"fast-underground-belt", 1} + {type = "item", name = "HatchRTItem", amount = 1}, + {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, + {type = "item", name = "fast-underground-belt", amount = 1} }, result = "RTThrower-EjectorHatchRTItem" }, @@ -2701,9 +2701,9 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"nullius-rubber", 4}, - {"nullius-iron-wire", 3}, - {"nullius-steel-rod", 2} + {type = "item", name = "nullius-rubber", amount = 4}, + {type = "item", name = "nullius-iron-wire", amount = 3}, + {type = "item", name = "nullius-steel-rod", amount = 2} }, result = "BouncePlateItem" }, @@ -2715,8 +2715,8 @@ data:extend({ category = "medium-crafting", energy_required = 1, ingredients = { - {"BouncePlateItem", 1}, - {"stone-brick", 6} + {type = "item", name = "BouncePlateItem", amount = 1}, + {type = "item", name = "stone-brick", amount = 6} }, result = "DirectedBouncePlateItem" }, @@ -2728,8 +2728,8 @@ data:extend({ category = "small-crafting", energy_required = 1, ingredients = { - {"BouncePlateItem", 1}, - {"constant-combinator", 1} + {type = "item", name = "BouncePlateItem", amount = 1}, + {type = "item", name = "constant-combinator", amount = 1} }, result = "SignalBouncePlateItem" }, @@ -2741,10 +2741,10 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"DirectedBouncePlateItem", 1}, - {"nullius-motor-2", 1}, - {"nullius-iron-gear", 3}, - {"nullius-sensor-1", 1} + {type = "item", name = "DirectedBouncePlateItem", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-iron-gear", amount = 3}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, result = "DirectorBouncePlateItem" } @@ -2767,8 +2767,8 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {"nullius-locomotive-1", 1}, - {"nullius-iron-wire", 2} + {type = "item", name = "nullius-locomotive-1", amount = 1}, + {type = "item", name = "nullius-iron-wire", amount = 2} }, result = "RTZiplineItem" }, @@ -2780,9 +2780,9 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {"RTZiplineItem", 2}, - {"nullius-motor-2", 3}, - {"nullius-steel-cable", 10} + {type = "item", name = "RTZiplineItem", amount = 2}, + {type = "item", name = "nullius-motor-2", amount = 3}, + {type = "item", name = "nullius-steel-cable", amount = 10} }, result = "RTZiplineItem2" }, @@ -2794,10 +2794,10 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {"RTZiplineItem2", 1}, - {"nullius-locomotive-2", 1}, - {"nullius-textile", 8}, - {"nullius-speed-module-2", 1} + {type = "item", name = "RTZiplineItem2", amount = 1}, + {type = "item", name = "nullius-locomotive-2", amount = 1}, + {type = "item", name = "nullius-textile", amount = 8}, + {type = "item", name = "nullius-speed-module-2", amount = 1} }, result = "RTZiplineItem3" }, @@ -2809,11 +2809,11 @@ data:extend({ category = "medium-crafting", energy_required = 25, ingredients = { - {"RTZiplineItem3", 1}, - {"nullius-motor-3", 4}, - {"nullius-carbon-composite", 12}, - {"nullius-bearing", 12}, - {"nullius-levitation-field-1", 2} + {type = "item", name = "RTZiplineItem3", amount = 1}, + {type = "item", name = "nullius-motor-3", amount = 4}, + {type = "item", name = "nullius-carbon-composite", amount = 12}, + {type = "item", name = "nullius-bearing", amount = 12}, + {type = "item", name = "nullius-levitation-field-1", amount = 2} }, result = "RTZiplineItem4" }, @@ -2825,11 +2825,11 @@ data:extend({ category = "medium-crafting", energy_required = 50, ingredients = { - {"RTZiplineItem4", 2}, - {"nullius-locomotive-3", 1}, - {"nullius-titanium-rod", 6}, - {"nullius-speed-module-3", 3}, - {"nullius-stabilizer-1", 2} + {type = "item", name = "RTZiplineItem4", amount = 2}, + {type = "item", name = "nullius-locomotive-3", amount = 1}, + {type = "item", name = "nullius-titanium-rod", amount = 6}, + {type = "item", name = "nullius-speed-module-3", amount = 3}, + {type = "item", name = "nullius-stabilizer-1", amount = 2} }, result = "RTZiplineItem5" }, @@ -2841,8 +2841,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"power-switch", 1}, - {"decider-combinator", 1} + {type = "item", name = "power-switch", amount = 1}, + {type = "item", name = "decider-combinator", amount = 1} }, result = "RTZiplineControlsItem" }, @@ -2854,9 +2854,9 @@ data:extend({ category = "medium-crafting", energy_required = 1, ingredients = { - {"RTZiplineControlsItem", 1}, - {"nullius-steel-rod", 1}, - {"nullius-steel-gear", 2} + {type = "item", name = "RTZiplineControlsItem", amount = 1}, + {type = "item", name = "nullius-steel-rod", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 2} }, result = "RTZiplineCrankControlsItem" }, @@ -2868,10 +2868,10 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {"RTZiplineControlsItem", 1}, - {"nullius-speed-module-1", 1}, - {"programmable-speaker", 1}, - {"nullius-sensor-1", 1} + {type = "item", name = "RTZiplineControlsItem", amount = 1}, + {type = "item", name = "nullius-speed-module-1", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, result = "RTProgrammableZiplineControlsItem" }, @@ -2883,10 +2883,10 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {"RTProgrammableZiplineControlsItem", 1}, - {"train-stop", 1}, - {"nullius-steel-cable", 12}, - {"big-electric-pole", 1} + {type = "item", name = "RTProgrammableZiplineControlsItem", amount = 1}, + {type = "item", name = "train-stop", amount = 1}, + {type = "item", name = "nullius-steel-cable", amount = 12}, + {type = "item", name = "big-electric-pole", amount = 1} }, result = "RTZiplineTerminalItem" } @@ -2909,9 +2909,9 @@ data:extend({ category = "large-crafting", energy_required = 4, ingredients = { - {"rail", 2}, - {"concrete", 25}, - {"nullius-steel-beam", 4} + {type = "item", name = "rail", amount = 2}, + {type = "item", name = "concrete", amount = 25}, + {type = "item", name = "nullius-steel-beam", amount = 4} }, result = "RTTrainRampItem" }, @@ -2923,10 +2923,10 @@ data:extend({ category = "large-crafting", energy_required = 6, ingredients = { - {"RTTrainRampItem", 1}, - {"nullius-grid-battery-1", 1}, - {"nullius-beacon-2", 1}, - {"nullius-levitation-field-1", 4} + {type = "item", name = "RTTrainRampItem", amount = 1}, + {type = "item", name = "nullius-grid-battery-1", amount = 1}, + {type = "item", name = "nullius-beacon-2", amount = 1}, + {type = "item", name = "nullius-levitation-field-1", amount = 4} }, result = "RTMagnetTrainRampItem" }, @@ -2938,10 +2938,10 @@ data:extend({ category = "large-crafting", energy_required = 5, ingredients = { - {"stone-wall", 6}, - {"refined-concrete", 30}, - {"nullius-steel-plate", 12}, - {"RTTrainDirectedBouncePlateItem", 1} + {type = "item", name = "stone-wall", amount = 6}, + {type = "item", name = "refined-concrete", amount = 30}, + {type = "item", name = "nullius-steel-plate", amount = 12}, + {type = "item", name = "RTTrainDirectedBouncePlateItem", amount = 1} }, result = "RTImpactUnloaderItem" }, @@ -2953,10 +2953,10 @@ data:extend({ category = "large-crafting", energy_required = 4, ingredients = { - {"nullius-cargo-wagon-2", 1}, - {"HatchRTItem", 5}, - {"nullius-steel-gear", 4}, - {"nullius-steel-plate", 10} + {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, + {type = "item", name = "HatchRTItem", amount = 5}, + {type = "item", name = "nullius-steel-gear", amount = 4}, + {type = "item", name = "nullius-steel-plate", amount = 10} }, result = "RTImpactWagonItem" } @@ -2971,9 +2971,9 @@ data:extend({ category = "large-crafting", energy_required = 5, ingredients = { - {"BouncePlateItem", 6}, - {"nullius-textile", 12}, - {"nullius-steel-beam", 4} + {type = "item", name = "BouncePlateItem", amount = 6}, + {type = "item", name = "nullius-textile", amount = 12}, + {type = "item", name = "nullius-steel-beam", amount = 4} }, result = "RTTrainBouncePlateItem" }, @@ -2985,17 +2985,17 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {"RTTrainBouncePlateItem", 1}, - {"RTTrainRampItem", 1} + {type = "item", name = "RTTrainBouncePlateItem", amount = 1}, + {type = "item", name = "RTTrainRampItem", amount = 1} }, result = "RTTrainDirectedBouncePlateItem" } }) else data.raw.recipe["nullius-impact-unloader"].ingredients[4] = - {"nullius-rubber", 30} + {type = "item", name = "nullius-rubber", amount = 30} data.raw.recipe["nullius-impact-wagon"].ingredients[2] = - {"nullius-priority-valve", 8} + {type = "item", name = "nullius-priority-valve", amount = 8} end end @@ -3483,9 +3483,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"nullius-rubber", 1}, - {"nullius-glass", 1}, - {"nullius-steel-sheet", 2} + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "nullius-steel-sheet", amount = 2} }, result = "iron-display-small" }, @@ -3497,8 +3497,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"iron-display-small", 4}, - {"small-lamp", 1} + {type = "item", name = "iron-display-small", amount = 4}, + {type = "item", name = "small-lamp", amount = 1} }, result = "iron-display-medium" }, @@ -3510,8 +3510,8 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"iron-display-small", 9}, - {"small-lamp", 4} + {type = "item", name = "iron-display-small", amount = 9}, + {type = "item", name = "small-lamp", amount = 4} }, result = "iron-display" }, @@ -3523,9 +3523,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"nullius-rubber", 1}, - {"nullius-glass", 1}, - {"nullius-aluminum-sheet", 3} + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "nullius-aluminum-sheet", amount = 3} }, result = "steel-display-small" }, @@ -3537,8 +3537,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"steel-display-small", 4}, - {"small-lamp", 1} + {type = "item", name = "steel-display-small", amount = 4}, + {type = "item", name = "small-lamp", amount = 1} }, result = "steel-display-medium" }, @@ -3550,8 +3550,8 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"steel-display-small", 9}, - {"small-lamp", 4} + {type = "item", name = "steel-display-small", amount = 9}, + {type = "item", name = "small-lamp", amount = 4} }, result = "steel-display" }, @@ -3563,9 +3563,9 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"nullius-rubber", 1}, - {"nullius-glass", 1}, - {"nullius-plastic", 4} + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-glass", amount = 1}, + {type = "item", name = "nullius-plastic", amount = 4} }, result = "copper-display-small" }, @@ -3577,8 +3577,8 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {"copper-display-small", 4}, - {"small-lamp", 1} + {type = "item", name = "copper-display-small", amount = 4}, + {type = "item", name = "small-lamp", amount = 1} }, result = "copper-display-medium" }, @@ -3590,8 +3590,8 @@ data:extend({ category = "medium-crafting", energy_required = 5, ingredients = { - {"copper-display-small", 9}, - {"small-lamp", 4} + {type = "item", name = "copper-display-small", amount = 9}, + {type = "item", name = "small-lamp", amount = 4} }, result = "copper-display" }, @@ -3667,9 +3667,9 @@ if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then category = "small-crafting", energy_required = 12, ingredients = { - {"nullius-small-storage-chest-1", 1}, - {"nullius-relay-1", 1}, - {"decider-combinator", 6} + {type = "item", name = "nullius-small-storage-chest-1", amount = 1}, + {type = "item", name = "nullius-relay-1", amount = 1}, + {type = "item", name = "decider-combinator", amount = 6} }, result = "blueprint-deployer" }, @@ -3681,9 +3681,9 @@ if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then category = "large-crafting", energy_required = 20, ingredients = { - {"radar", 1}, - {"nullius-small-miner-2", 1}, - {"nullius-sensor-1", 4} + {type = "item", name = "radar", amount = 1}, + {type = "item", name = "nullius-small-miner-2", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 4} }, result = "recursive-blueprints-scanner" } @@ -3701,11 +3701,11 @@ if mods["ch-concentrated-solar"] then category = "hand-casting", energy_required = 10, ingredients = { - {"nullius-aluminum-sheet", 8}, - {"nullius-steel-rod", 6}, - {"nullius-hard-glass", 10}, - {"nullius-motor-2", 1}, - {"nullius-bearing", 1} + {type = "item", name = "nullius-aluminum-sheet", amount = 8}, + {type = "item", name = "nullius-steel-rod", amount = 6}, + {type = "item", name = "nullius-hard-glass", amount = 10}, + {type = "item", name = "nullius-motor-2", amount = 1}, + {type = "item", name = "nullius-bearing", amount = 1} }, result = "chcs-heliostat-mirror" }, @@ -3718,11 +3718,11 @@ if mods["ch-concentrated-solar"] then subgroup = "boxed-heat-energy", energy_required = 50, ingredients = { - {"nullius-box-aluminum-sheet", 8}, - {"nullius-box-steel-rod", 6}, - {"nullius-box-hard-glass", 10}, - {"nullius-box-motor-2", 1}, - {"nullius-box-bearing", 1} + {type = "item", name = "nullius-box-aluminum-sheet", amount = 8}, + {type = "item", name = "nullius-box-steel-rod", amount = 6}, + {type = "item", name = "nullius-box-hard-glass", amount = 10}, + {type = "item", name = "nullius-box-motor-2", amount = 1}, + {type = "item", name = "nullius-box-bearing", amount = 1} }, result = "nullius-box-heliostat-mirror" }, @@ -3734,12 +3734,12 @@ if mods["ch-concentrated-solar"] then category = "huge-crafting", energy_required = 60, ingredients = { - {"nullius-thermal-tank-2", 3}, - {"nullius-box-heat-pipe-2", 10}, - {"nullius-box-steel-beam", 24}, - {"nullius-box-reinforced-concrete", 8}, - {"nullius-pump-2", 8}, - {"nullius-large-beacon-1", 1} + {type = "item", name = "nullius-thermal-tank-2", amount = 3}, + {type = "item", name = "nullius-box-heat-pipe-2", amount = 10}, + {type = "item", name = "nullius-box-steel-beam", amount = 24}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 8}, + {type = "item", name = "nullius-pump-2", amount = 8}, + {type = "item", name = "nullius-large-beacon-1", amount = 1} }, result = "chcs-solar-power-tower", requester_paste_multiplier = 2 @@ -3800,10 +3800,10 @@ if (mods["beautiful_bridge_railway"] or category = "huge-crafting", energy_required = 6, ingredients = { - {"rail", 2}, - {"nullius-steel-beam", 8}, - {"concrete", 6}, - {"nullius-land-fill-gravel", 1} + {type = "item", name = "rail", amount = 2}, + {type = "item", name = "nullius-steel-beam", amount = 8}, + {type = "item", name = "concrete", amount = 6}, + {type = "item", name = "nullius-land-fill-gravel", amount = 1} }, result = "bbr-rail-iron" }, @@ -3815,11 +3815,11 @@ if (mods["beautiful_bridge_railway"] or category = "huge-crafting", energy_required = 8, ingredients = { - {"rail", 2}, - {"nullius-refractory-brick", 4}, - {"nullius-mortar", 1}, - {"concrete", 1}, - {"nullius-land-fill-gravel", 2} + {type = "item", name = "rail", amount = 2}, + {type = "item", name = "nullius-refractory-brick", amount = 4}, + {type = "item", name = "nullius-mortar", amount = 1}, + {type = "item", name = "concrete", amount = 1}, + {type = "item", name = "nullius-land-fill-gravel", amount = 2} }, result = "bbr-rail-brick" }, @@ -3831,11 +3831,11 @@ if (mods["beautiful_bridge_railway"] or category = "huge-crafting", energy_required = 5, ingredients = { - {"rail", 2}, - {"nullius-wood", 6}, - {"nullius-steel-rod", 1}, - {"concrete", 2}, - {"nullius-land-fill-gravel", 1} + {type = "item", name = "rail", amount = 2}, + {type = "item", name = "nullius-wood", amount = 6}, + {type = "item", name = "nullius-steel-rod", amount = 1}, + {type = "item", name = "concrete", amount = 2}, + {type = "item", name = "nullius-land-fill-gravel", amount = 1} }, result = "bbr-rail-wood" }, @@ -4014,8 +4014,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 8, ingredients = { - {"nullius-locomotive-1", 1}, - {"nullius-aluminum-plate", 4} + {type = "item", name = "nullius-locomotive-1", amount = 1}, + {type = "item", name = "nullius-aluminum-plate", amount = 4} }, result = "nullius-small-locomotive-1", result_count = 2 @@ -4030,9 +4030,9 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 15, ingredients = { - {"nullius-locomotive-2", 1}, - {"nullius-small-locomotive-1", 2}, - {"nullius-titanium-plate", 4} + {type = "item", name = "nullius-locomotive-2", amount = 1}, + {type = "item", name = "nullius-small-locomotive-1", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 4} }, result = "nullius-small-locomotive-2", result_count = 2 @@ -4047,8 +4047,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 30, ingredients = { - {"nullius-locomotive-3", 1}, - {"nullius-small-locomotive-2", 2} + {type = "item", name = "nullius-locomotive-3", amount = 1}, + {type = "item", name = "nullius-small-locomotive-2", amount = 2} }, result = "nullius-small-locomotive-3", result_count = 2 @@ -4063,8 +4063,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 30, ingredients = { - {"nullius-solar-locomotive", 1}, - {"nullius-small-locomotive-2", 2} + {type = "item", name = "nullius-solar-locomotive", amount = 1}, + {type = "item", name = "nullius-small-locomotive-2", amount = 2} }, result = "nullius-small-solar-locomotive", result_count = 2 @@ -4079,8 +4079,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 5, ingredients = { - {"nullius-cargo-wagon-1", 1}, - {"nullius-aluminum-plate", 4} + {type = "item", name = "nullius-cargo-wagon-1", amount = 1}, + {type = "item", name = "nullius-aluminum-plate", amount = 4} }, result = "nullius-small-cargo-wagon-1", result_count = 2 @@ -4095,9 +4095,9 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 10, ingredients = { - {"nullius-cargo-wagon-2", 1}, - {"nullius-small-cargo-wagon-1", 2}, - {"nullius-titanium-plate", 4} + {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, + {type = "item", name = "nullius-small-cargo-wagon-1", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 4} }, result = "nullius-small-cargo-wagon-2", result_count = 2 @@ -4112,8 +4112,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 20, ingredients = { - {"nullius-cargo-wagon-3", 1}, - {"nullius-small-cargo-wagon-2", 2} + {type = "item", name = "nullius-cargo-wagon-3", amount = 1}, + {type = "item", name = "nullius-small-cargo-wagon-2", amount = 2} }, result = "nullius-small-cargo-wagon-3", result_count = 2 @@ -4128,8 +4128,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 6, ingredients = { - {"nullius-fluid-wagon-1", 1}, - {"nullius-aluminum-sheet", 6} + {type = "item", name = "nullius-fluid-wagon-1", amount = 1}, + {type = "item", name = "nullius-aluminum-sheet", amount = 6} }, result = "nullius-small-fluid-wagon-1", result_count = 2 @@ -4144,9 +4144,9 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 12, ingredients = { - {"nullius-fluid-wagon-2", 1}, - {"nullius-small-fluid-wagon-1", 2}, - {"nullius-titanium-sheet", 6} + {type = "item", name = "nullius-fluid-wagon-2", amount = 1}, + {type = "item", name = "nullius-small-fluid-wagon-1", amount = 2}, + {type = "item", name = "nullius-titanium-sheet", amount = 6} }, result = "nullius-small-fluid-wagon-2", result_count = 2 @@ -4161,8 +4161,8 @@ if mods["Mini_Trains"] then category = "large-crafting", energy_required = 25, ingredients = { - {"nullius-fluid-wagon-3", 1}, - {"nullius-small-fluid-wagon-2", 2} + {type = "item", name = "nullius-fluid-wagon-3", amount = 1}, + {type = "item", name = "nullius-small-fluid-wagon-2", amount = 2} }, result = "nullius-small-fluid-wagon-3", result_count = 2 @@ -4201,9 +4201,9 @@ if mods["fcpu"] then category = "tiny-crafting", energy_required = 2, ingredients = { - {"decider-combinator", 10}, - {"arithmetic-combinator", 10}, - {"nullius-processor-2", 1} + {type = "item", name = "decider-combinator", amount = 10}, + {type = "item", name = "arithmetic-combinator", amount = 10}, + {type = "item", name = "nullius-processor-2", amount = 1} }, result = "fcpu" }, diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 192f1fc..77281cb 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -353,7 +353,7 @@ AAILoaders.make_tier{ ingredients = {{"automation-science-pack", 1}} } }, - recipe = { ingredients = {{"transport-belt", 1}}, energy_required = 2 } + recipe = { ingredients = {{type = "item", name = "transport-belt", amount = 1}}, energy_required = 2 } } AAILoaders.make_tier{ @@ -371,7 +371,7 @@ AAILoaders.make_tier{ {"logistic-science-pack", 1}, {"chemical-science-pack", 1}} } }, - recipe = { ingredients = {{"transport-belt", 1}}, energy_required = 2 } + recipe = { ingredients = {{type = "item", name ="transport-belt", amount = 1}}, energy_required = 2 } } data.raw["loader-1x1"]["aai-basic-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", 1} @@ -1102,10 +1102,10 @@ data.raw.recipe["induction-coil"].energy_required = 5 data.raw.recipe["induction-coil"].categories = nil data.raw.recipe["induction-coil"].category = "small-crafting" data.raw.recipe["induction-coil"].ingredients = { - {"nullius-capacitor", 5}, - {"decider-combinator", 3}, - {"copper-cable", 12}, - {"nullius-aluminum-rod", 8} + {type = "item", name = "nullius-capacitor", amount = 5}, + {type = "item", name = "decider-combinator", amount = 3}, + {type = "item", name = "copper-cable", amount = 12}, + {type = "item", name = "nullius-aluminum-rod", amount = 8} } data.raw.technology["induction-technology1"].order = "nullius-cm" @@ -1324,9 +1324,9 @@ data.raw.recipe["road"].category = "hand-casting" data.raw.recipe["road"].energy_required = 3 data.raw.recipe["road"].result_count = 4 data.raw.recipe["road"].ingredients = { - {"nullius-rubber", 1}, - {"nullius-land-fill-sand", 1}, - {"nullius-gravel", 3} + {type = "item", name = "nullius-rubber", amount = 1}, + {type = "item", name = "nullius-land-fill-sand", amount = 1}, + {type = "item", name = "nullius-gravel", amount = 3} } data.raw.item["transport-drone"].order = "nullius-c" data.raw.item["transport-drone"].stack_size = 20 @@ -1338,10 +1338,10 @@ data.raw.recipe["transport-drone"].category = "medium-crafting" data.raw.recipe["transport-drone"].energy_required = 10 data.raw.recipe["transport-drone"].result_count = 3 data.raw.recipe["transport-drone"].ingredients = { - {"nullius-car-1", 1}, - {"arithmetic-combinator", 5}, - {"programmable-speaker", 2}, - {"turbo-filter-inserter", 3} + {type = "item", name = "nullius-car-1", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 5}, + {type = "item", name = "programmable-speaker", amount = 2}, + {type = "item", name = "turbo-filter-inserter", amount = 3} } data.raw.item["supply-depot"].order = "nullius-d" @@ -1351,10 +1351,10 @@ data.raw.recipe["supply-depot"].always_show_made_in = true data.raw.recipe["supply-depot"].category = "large-crafting" data.raw.recipe["supply-depot"].energy_required = 12 data.raw.recipe["supply-depot"].ingredients = { - {"nullius-large-chest-1", 1}, - {"nullius-steel-beam", 4}, - {"nullius-glass", 2}, - {"train-stop", 1} + {type = "item", name = "nullius-large-chest-1", amount = 1}, + {type = "item", name = "nullius-steel-beam", amount = 4}, + {type = "item", name = "nullius-glass", amount = 2}, + {type = "item", name = "train-stop", amount = 1} } data.raw.item["request-depot"].order = "nullius-e" data.raw.item["request-depot"].stack_size = 20 @@ -1363,8 +1363,8 @@ data.raw.recipe["request-depot"].always_show_made_in = true data.raw.recipe["request-depot"].category = "large-crafting" data.raw.recipe["request-depot"].energy_required = 6 data.raw.recipe["request-depot"].ingredients = { - {"fluid-depot", 1}, - {"nullius-hangar-1", 1} + {type = "item", name = "fluid-depot", amount = 1}, + {type = "item", name = "nullius-hangar-1", amount = 1} } data.raw.item["buffer-depot"].order = "nullius-f" data.raw.item["buffer-depot"].stack_size = 20 @@ -1374,8 +1374,8 @@ data.raw.recipe["buffer-depot"].no_productivity = true data.raw.recipe["buffer-depot"].category = "large-crafting" data.raw.recipe["buffer-depot"].energy_required = 4 data.raw.recipe["buffer-depot"].ingredients = { - {"request-depot", 1}, - {"train-stop", 1} + {type = "item", name = "request-depot", amount = 1}, + {type = "item", name = "train-stop", amount = 1} } data.raw.item["fluid-depot"].order = "nullius-g" data.raw.item["fluid-depot"].stack_size = 20 @@ -1384,9 +1384,9 @@ data.raw.recipe["fluid-depot"].always_show_made_in = true data.raw.recipe["fluid-depot"].category = "large-crafting" data.raw.recipe["fluid-depot"].energy_required = 4 data.raw.recipe["fluid-depot"].ingredients = { - {"supply-depot", 1}, - {"nullius-medium-tank-2", 1}, - {"nullius-barrel-pump-1", 1} + {type = "item", name = "supply-depot", amount = 1}, + {type = "item", name = "nullius-medium-tank-2", amount = 1}, + {type = "item", name = "nullius-barrel-pump-1", amount = 1} } data.raw.item["fuel-depot"].order = "nullius-h" data.raw.item["fuel-depot"].stack_size = 20 @@ -1395,8 +1395,8 @@ data.raw.recipe["fuel-depot"].always_show_made_in = true data.raw.recipe["fuel-depot"].category = "large-crafting" data.raw.recipe["fuel-depot"].energy_required = 4 data.raw.recipe["fuel-depot"].ingredients = { - {"buffer-depot", 1}, - {"nullius-pump-2", 2} + {type = "item", name = "buffer-depot", amount = 1}, + {type = "item", name = "nullius-pump-2", amount = 2} } data.raw.item["road-network-reader"].order = "nullius-i" @@ -1406,9 +1406,9 @@ data.raw.recipe["road-network-reader"].always_show_made_in = true data.raw.recipe["road-network-reader"].category = "small-crafting" data.raw.recipe["road-network-reader"].energy_required = 5 data.raw.recipe["road-network-reader"].ingredients = { - {"rail-chain-signal", 1}, - {"nullius-sensor-1", 1}, - {"programmable-speaker", 1} + {type = "item", name = "rail-chain-signal", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 1} } data.raw.item["transport-depot-reader"].order = "nullius-j" data.raw.item["transport-depot-reader"].stack_size = 50 @@ -1417,8 +1417,8 @@ data.raw.recipe["transport-depot-reader"].always_show_made_in = true data.raw.recipe["transport-depot-reader"].category = "small-crafting" data.raw.recipe["transport-depot-reader"].energy_required = 2 data.raw.recipe["transport-depot-reader"].ingredients = { - {"road-network-reader", 1}, - {"nullius-red-wire", 2} + {type = "item", name = "road-network-reader", amount = 1}, + {type = "item", name = "nullius-red-wire", amount = 2} } data.raw.item["transport-depot-writer"].order = "nullius-k" data.raw.item["transport-depot-writer"].stack_size = 50 @@ -1427,8 +1427,8 @@ data.raw.recipe["transport-depot-writer"].always_show_made_in = true data.raw.recipe["transport-depot-writer"].category = "small-crafting" data.raw.recipe["transport-depot-writer"].energy_required = 3 data.raw.recipe["transport-depot-writer"].ingredients = { - {"road-network-reader", 1}, - {"nullius-green-wire", 3} + {type = "item", name = "road-network-reader", amount = 1}, + {type = "item", name = "nullius-green-wire", amount = 3} } data.raw["assembling-machine"]["request-depot"].fluid_boxes[2].base_level = 6 @@ -1459,9 +1459,9 @@ data.raw.recipe["fast-road"].category = "large-crafting" data.raw.recipe["fast-road"].energy_required = 30 data.raw.recipe["fast-road"].result_count = 8 data.raw.recipe["fast-road"].ingredients = { - {"road", 50}, - {"nullius-box-black-concrete", 6}, - {"road-network-reader", 1} + {type = "item", name = "road", amount = 50}, + {type = "item", name = "nullius-box-black-concrete", amount = 6}, + {type = "item", name = "road-network-reader", amount = 1} } end @@ -1629,8 +1629,8 @@ if (mods["GCKI"] and (data.raw.item["car-key"] ~= nil)) then category = "small-crafting", energy_required = 3, ingredients = { - {"programmable-speaker", 1}, - {"arithmetic-combinator", 1} + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "arithmetic-combinator", amount = 1} }, result = "car-key" } diff --git a/nullius/prototypes/override_mod_final.lua b/nullius/prototypes/override_mod_final.lua index efb3e1d..2293e13 100644 --- a/nullius/prototypes/override_mod_final.lua +++ b/nullius/prototypes/override_mod_final.lua @@ -138,39 +138,39 @@ end if (mods["RenaiTransportation"] and settings.startup["RTThrowersSetting"].value) then data.raw.recipe["nullius-thrower-2"].ingredients = { - {"RTThrower-inserter-Item", 1}, - {"turbo-inserter", 1}, - {"nullius-motor-2", 1} + {type = "item", name = "RTThrower-inserter-Item", amount = 1}, + {type = "item", name = "turbo-inserter", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1} } data.raw.recipe["nullius-filter-thrower-2"].ingredients = { - {"RTThrower-inserter-Item", 1}, - {"turbo-filter-inserter", 1}, - {"nullius-motor-2", 1} + {type = "item", name = "RTThrower-inserter-Item", amount = 1}, + {type = "item", name = "turbo-filter-inserter", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1} } data.raw.recipe["nullius-thrower-3"].ingredients = { - {"RTThrower-turbo-inserter-Item", 1}, - {"stack-inserter", 2} + {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, + {type = "item", name = "stack-inserter", amount = 2} } data.raw.recipe["nullius-filter-thrower-3"].ingredients = { - {"RTThrower-turbo-filter-inserter-Item", 1}, - {"stack-filter-inserter", 2} + {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, + {type = "item", name = "stack-filter-inserter", amount = 2} } data.raw.recipe["nullius-thrower-4"].ingredients = { - {"RTThrower-stack-inserter-Item", 1}, - {"express-stack-inserter", 2} + {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1}, + {type = "item", name = "express-stack-inserter", amount = 2} } data.raw.recipe["nullius-filter-thrower-4"].ingredients = { - {"RTThrower-stack-filter-inserter-Item", 1}, - {"express-stack-filter-inserter", 2} + {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, + {type = "item", name = "express-stack-filter-inserter", amount = 2} } data.raw.recipe["nullius-ejector-hatch"].ingredients = { - {"HatchRTItem", 1}, - {"RTThrower-turbo-inserter-Item", 1}, - {"fast-underground-belt", 1} + {type = "item", name = "HatchRTItem", amount = 1}, + {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, + {type = "item", name = "fast-underground-belt", amount = 1} } data.raw.recipe["nullius-player-thrower"].ingredients = { - {"RTThrower-inserter-Item", 1}, - {"nullius-steel-plate", 2} + {type = "item", name = "RTThrower-inserter-Item", amount = 1}, + {type = "item", name = "nullius-steel-plate", amount = 2} } data.raw.recipe["RTThrower-burner-inserter-Recipe"].enabled = false From 51af97501f47519a8e5cb3f619abd682776473eb Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 19:59:33 +0200 Subject: [PATCH 058/236] Updated mod recipe's results to new format --- nullius/prototypes/mods.lua | 520 +++++++++++++++------- nullius/prototypes/override_mod.lua | 10 +- nullius/prototypes/override_mod_final.lua | 28 +- 3 files changed, 398 insertions(+), 160 deletions(-) diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index b13bfe1..8814225 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -40,7 +40,9 @@ data:extend({ {type = "item", name = "arithmetic-combinator", amount = 2}, {type = "item", name = "nullius-green-wire", amount = 4} }, - result = "logistic-train-stop" + results = { + {type = "item", name = "logistic-train-stop", amount = 1} + } } }) end @@ -59,7 +61,9 @@ if mods["LTN_Combinator_Modernized"] then {type = "item", name = "constant-combinator", amount = 1}, {type = "item", name = "decider-combinator", amount = 1} }, - result = "ltn-combinator" + results = { + {type = "item", name = "ltn-combinator", amount = 1} + } } }) if mods["LogisticTrainNetwork"] then @@ -84,7 +88,9 @@ data:extend({ {type = "item", name = "nullius-beacon-1", amount = 1}, {type = "item", name = "nullius-relay-1", amount = 2} }, - result = "aai-signal-sender", + results = { + {type = "item", name = "aai-signal-sender", amount = 1} + }, enabled = false }, { @@ -97,7 +103,9 @@ data:extend({ {type = "item", name = "radar", amount = 1}, {type = "item", name = "programmable-speaker", amount = 2} }, - result = "aai-signal-receiver", + results = { + {type = "item", name = "aai-signal-receiver", amount = 1} + }, enabled = false }, @@ -382,7 +390,9 @@ data:extend({ {type="item", name="wooden-chest", amount=1}, {type="item", name="underground-belt", amount=1} }, - result = "chute-miniloader" + results = { + {type = "item", name = "chute-miniloader", amount = 1} + } } }) end @@ -408,7 +418,9 @@ data:extend({ {type="item", name="underground-belt", amount=1}, {type="item", name="inserter", amount=4} }, - result = "miniloader" + results = { + {type = "item", name = "miniloader", amount = 1} + } }, { type = "recipe", @@ -423,7 +435,9 @@ data:extend({ {type="item", name="fast-underground-belt", amount=2}, {type="item", name="turbo-inserter", amount=3} }, - result = "fast-miniloader" + results = { + {type = "item", name = "fast-miniloader", amount = 1} + } }, { type = "recipe", @@ -438,7 +452,9 @@ data:extend({ {type="item", name="express-underground-belt", amount=1}, {type="item", name="stack-inserter", amount=2} }, - result = "express-miniloader" + results = { + {type = "item", name = "express-miniloader", amount = 1} + } }, { type = "recipe", @@ -453,7 +469,9 @@ data:extend({ {type="item", name="ultimate-underground-belt", amount=1}, {type="item", name="express-stack-inserter", amount=2} }, - result = "ultimate-miniloader" + results = { + {type = "item", name = "ultimate-miniloader", amount = 1} + } } }) end @@ -478,7 +496,9 @@ data:extend({ {type="item", name="fast-underground-belt", amount=2}, {type="item", name="turbo-filter-inserter", amount=3} }, - result = "fast-filter-miniloader" + results = { + {type = "item", name = "fast-filter-miniloader", amount = 1} + } }, { type = "recipe", @@ -493,7 +513,9 @@ data:extend({ {type="item", name="express-underground-belt", amount=1}, {type="item", name="stack-filter-inserter", amount=2} }, - result = "express-filter-miniloader" + results = { + {type = "item", name = "express-filter-miniloader", amount = 1} + } }, { type = "recipe", @@ -508,7 +530,9 @@ data:extend({ {type="item", name="ultimate-underground-belt", amount=1}, {type="item", name="express-stack-filter-inserter", amount=2} }, - result = "ultimate-filter-miniloader" + results = { + {type = "item", name = "ultimate-filter-miniloader", amount = 1} + } } }) end @@ -615,7 +639,9 @@ data:extend({ {type="item", name="wooden-chest", amount=1}, {type="item", name="underground-belt", amount=1} }, - result = "aai-basic-loader" + results = { + {type = "item", name = "aai-basic-loader", amount = 1} + } }, { type = "recipe", @@ -630,7 +656,9 @@ data:extend({ {type="item", name="inserter", amount=4}, {type="fluid", name="nullius-lubricant", amount=30}, }, - result = "aai-loader" + results = { + {type = "item", name = "aai-loader", amount = 1} + } }, { type = "recipe", @@ -645,7 +673,9 @@ data:extend({ {type="item", name="fast-underground-belt", amount=2}, {type="item", name="turbo-inserter", amount=3} }, - result = "aai-fast-loader" + results = { + {type = "item", name = "aai-fast-loader", amount = 1} + } }, { type = "recipe", @@ -660,7 +690,9 @@ data:extend({ {type="item", name="express-underground-belt", amount=1}, {type="item", name="stack-inserter", amount=2} }, - result = "aai-express-loader" + results = { + {type = "item", name = "aai-express-loader", amount = 1} + } }, { type = "recipe", @@ -675,7 +707,9 @@ data:extend({ {type="item", name="ultimate-underground-belt", amount=1}, {type="item", name="express-stack-inserter", amount=2} }, - result = "aai-ultimate-loader" + results = { + {type = "item", name = "aai-ultimate-loader", amount = 1} + } } }) end @@ -694,7 +728,9 @@ data:extend({ {type = "item", name = "small-lamp", amount = 1}, {type = "item", name = "train-config", amount = 2} }, - result = "train-publisher" + results = { + {type = "item", name = "train-publisher", amount = 1} + } }, { type = "recipe", @@ -708,7 +744,9 @@ data:extend({ {type = "item", name = "train-publisher", amount = 1}, {type = "item", name = "nullius-small-supply-chest-1", amount = 1} }, - result = "subscriber-train-stop" + results = { + {type = "item", name = "subscriber-train-stop", amount = 1} + } }, { type = "recipe", @@ -722,7 +760,9 @@ data:extend({ {type = "item", name = "train-publisher", amount = 1}, {type = "item", name = "nullius-small-demand-chest-1", amount = 1} }, - result = "publisher-train-stop" + results = { + {type = "item", name = "publisher-train-stop", amount = 1} + } }, { type = "recipe", @@ -735,7 +775,9 @@ data:extend({ {type = "item", name = "constant-combinator", amount = 1}, {type = "item", name = "arithmetic-combinator", amount = 1} }, - result = "train-config" + results = { + {type = "item", name = "train-config", amount = 1} + } } }) end @@ -757,7 +799,9 @@ data:extend({ {type = "item", name = "nullius-box-underground-pipe-4", amount = 5}, {type = "item", name = "nullius-grid-battery-2", amount = 6} }, - result = "teleporter" + results = { + {type = "item", name = "teleporter", amount = 1} + } } }) end @@ -880,7 +924,9 @@ data:extend({ {type = "item", name = "nullius-turbine-open-1", amount = 2}, {type = "item", name = "nullius-aluminum-plate", amount = 6} }, - result = "jetpack-1" + results = { + {type = "item", name = "jetpack-1", amount = 1} + } }, { type = "recipe", @@ -897,7 +943,9 @@ data:extend({ {type = "item", name = "nullius-turbine-open-2", amount = 2}, {type = "item", name = "nullius-ceramic-powder", amount = 8} }, - result = "jetpack-2" + results = { + {type = "item", name = "jetpack-2", amount = 1} + } }, { type = "recipe", @@ -914,7 +962,9 @@ data:extend({ {type = "item", name = "nullius-turbine-open-3", amount = 2}, {type = "item", name = "nullius-titanium-plate", amount = 10} }, - result = "jetpack-3" + results = { + {type = "item", name = "jetpack-3", amount = 1} + } }, { type = "recipe", @@ -929,7 +979,9 @@ data:extend({ {type = "item", name = "nullius-haste-module-4", amount = 2}, {type = "item", name = "nullius-missile-launcher", amount = 4} }, - result = "jetpack-4" + results = { + {type = "item", name = "jetpack-4", amount = 1} + } } }) end @@ -1447,7 +1499,9 @@ data:extend({ {type = "item", name = "nullius-steel-beam", amount = 6}, {type = "item", name = "nullius-glass", amount = 4} }, - result = "storehouse-basic" + results = { + {type = "item", name = "storehouse-basic", amount = 1} + } }, { type = "recipe", @@ -1462,7 +1516,9 @@ data:extend({ {type = "item", name = "nullius-mortar", amount = 10}, {type = "item", name = "concrete", amount = 20} }, - result = "warehouse-basic" + results = { + {type = "item", name = "warehouse-basic", amount = 1} + } }, { type = "recipe", @@ -1475,7 +1531,9 @@ data:extend({ {type = "item", name = "storehouse-basic", amount = 1}, {type = "item", name = "nullius-large-storage-chest-1", amount = 1} }, - result = "storehouse-storage" + results = { + {type = "item", name = "storehouse-storage", amount = 1} + } }, { type = "recipe", @@ -1488,7 +1546,9 @@ data:extend({ {type = "item", name = "warehouse-basic", amount = 1}, {type = "item", name = "nullius-large-storage-chest-1", amount = 2} }, - result = "warehouse-storage" + results = { + {type = "item", name = "warehouse-storage", amount = 1} + } }, { type = "recipe", @@ -1501,7 +1561,9 @@ data:extend({ {type = "item", name = "storehouse-basic", amount = 1}, {type = "item", name = "nullius-large-supply-chest-1", amount = 1} }, - result = "storehouse-passive-provider" + results = { + {type = "item", name = "storehouse-passive-provider", amount = 1} + } }, { type = "recipe", @@ -1514,7 +1576,9 @@ data:extend({ {type = "item", name = "warehouse-basic", amount = 1}, {type = "item", name = "nullius-large-supply-chest-1", amount = 2} }, - result = "warehouse-passive-provider" + results = { + {type = "item", name = "warehouse-passive-provider", amount = 1} + } }, { type = "recipe", @@ -1527,7 +1591,9 @@ data:extend({ {type = "item", name = "storehouse-basic", amount = 1}, {type = "item", name = "nullius-large-demand-chest-1", amount = 1} }, - result = "storehouse-requester" + results = { + {type = "item", name = "storehouse-requester", amount = 1} + } }, { type = "recipe", @@ -1540,7 +1606,9 @@ data:extend({ {type = "item", name = "warehouse-basic", amount = 1}, {type = "item", name = "nullius-large-demand-chest-1", amount = 2} }, - result = "warehouse-requester" + results = { + {type = "item", name = "warehouse-requester", amount = 1} + } }, { type = "recipe", @@ -1553,7 +1621,9 @@ data:extend({ {type = "item", name = "storehouse-basic", amount = 1}, {type = "item", name = "nullius-large-buffer-chest-1", amount = 1} }, - result = "storehouse-buffer" + results = { + {type = "item", name = "storehouse-buffer", amount = 1} + } }, { type = "recipe", @@ -1566,7 +1636,9 @@ data:extend({ {type = "item", name = "warehouse-basic", amount = 1}, {type = "item", name = "nullius-large-buffer-chest-1", amount = 2} }, - result = "warehouse-buffer" + results = { + {type = "item", name = "warehouse-buffer", amount = 1} + } }, { type = "recipe", @@ -1579,7 +1651,9 @@ data:extend({ {type = "item", name = "storehouse-basic", amount = 1}, {type = "item", name = "nullius-large-dispatch-chest-1", amount = 1} }, - result = "storehouse-active-provider" + results = { + {type = "item", name = "storehouse-active-provider", amount = 1} + } }, { type = "recipe", @@ -1592,7 +1666,9 @@ data:extend({ {type = "item", name = "warehouse-basic", amount = 1}, {type = "item", name = "nullius-large-dispatch-chest-1", amount = 2} }, - result = "warehouse-active-provider" + results = { + {type = "item", name = "warehouse-active-provider", amount = 1} + } } }) end @@ -1760,7 +1836,9 @@ data:extend({ {type = "item", name = "nullius-small-demand-chest-1", amount = 1}, {type = "item", name = "nullius-relay-2", amount = 1} }, - result = "logistic-chest-botUpgrader" + results = { + {type = "item", name = "logistic-chest-botUpgrader", amount = 1} + } } }) end @@ -1780,7 +1858,9 @@ data:extend({ {type = "item", name = "train-stop", amount = 1}, {type = "item", name = "rail-chain-signal", amount = 1} }, - result = "fuel-train-stop" + results = { + {type = "item", name = "fuel-train-stop", amount = 1} + } } }) end @@ -1838,7 +1918,9 @@ data:extend({ {type = "item", name = "nullius-android-2", amount = 1}, {type = "item", name = "nullius-asteroid-miner-2", amount = 1} }, - result = "companion" + results = { + {type = "item", name = "companion", amount = 1} + } }, { type = "recipe", @@ -1852,7 +1934,9 @@ data:extend({ {type = "item", name = "nullius-battery-2", amount = 6}, {type = "item", name = "nullius-antimatter", amount = 12} }, - result = "companion-reactor-equipment" + results = { + {type = "item", name = "companion-reactor-equipment", amount = 1} + } }, { type = "recipe", @@ -1865,7 +1949,9 @@ data:extend({ {type = "item", name = "nullius-shield", amount = 1}, {type = "item", name = "nullius-efficiency-module-3", amount = 1} }, - result = "companion-shield-equipment" + results = { + {type = "item", name = "companion-shield-equipment", amount = 1} + } }, { type = "recipe", @@ -1879,7 +1965,9 @@ data:extend({ {type = "item", name = "nullius-hangar-3", amount = 1}, {type = "item", name = "nullius-construction-bot-4", amount = 6} }, - result = "companion-roboport-equipment" + results = { + {type = "item", name = "companion-roboport-equipment", amount = 1} + } }, { type = "recipe", @@ -1892,7 +1980,9 @@ data:extend({ {type = "item", name = "nullius-turret", amount = 5}, {type = "item", name = "nullius-demolition-drone", amount = 1} }, - result = "companion-defense-equipment" + results = { + {type = "item", name = "companion-defense-equipment", amount = 1} + } }, { type = "recipe", @@ -1929,7 +2019,9 @@ data:extend({ {type = "item", name = "nullius-large-chest-1", amount = 1}, {type = "item", name = "nullius-small-assembler-1", amount = 1} }, - result = "railway-motor-car-base" + results = { + {type = "item", name = "railway-motor-car-base", amount = 1} + } }, { type = "recipe", @@ -1943,7 +2035,9 @@ data:extend({ {type = "item", name = "nullius-solar-locomotive", amount = 1}, {type = "item", name = "nullius-small-assembler-3", amount = 1} }, - result = "railway-motor-car-nuclear" + results = { + {type = "item", name = "railway-motor-car-nuclear", amount = 1} + } } }) end @@ -1962,7 +2056,9 @@ data:extend({ {type = "item", name = "nullius-sensor-1", amount = 1}, {type = "item", name = "nullius-green-wire", amount = 3} }, - result = "item-sensor" + results = { + {type = "item", name = "item-sensor", amount = 1} + } } }) end @@ -1981,7 +2077,9 @@ if (mods["crafting_combinator"] or mods["crafting_combinator_xeraph"]) then {type = "item", name = "constant-combinator", amount = 1}, {type = "item", name = "nullius-red-wire", amount = 1} }, - result = "crafting_combinator:crafting-combinator" + results = { + {type = "item", name = "crafting_combinator:crafting-combinator", amount = 1} + } }, { type = "recipe", @@ -1994,7 +2092,9 @@ if (mods["crafting_combinator"] or mods["crafting_combinator_xeraph"]) then {type = "item", name = "arithmetic-combinator", amount = 1}, {type = "item", name = "nullius-red-wire", amount = 2} }, - result = "crafting_combinator:recipe-combinator" + results = { + {type = "item", name = "crafting_combinator:recipe-combinator", amount = 1} + } } }) end @@ -2015,7 +2115,9 @@ if mods["UPSFriendlyNixieTubeDisplay"] then {type = "item", name = "nullius-aluminum-wire", amount = 3}, {type = "item", name = "nullius-glass", amount = 4} }, - result = "SNTD-old-nixie-tube" + results = { + {type = "item", name = "SNTD-old-nixie-tube", amount = 1} + } }, { type = "recipe", @@ -2028,7 +2130,9 @@ if mods["UPSFriendlyNixieTubeDisplay"] then {type = "item", name = "SNTD-old-nixie-tube", amount = 1}, {type = "item", name = "nullius-large-chest-1", amount = 1} }, - result = "SNTD-nixie-tube" + results = { + {type = "item", name = "SNTD-nixie-tube", amount = 1} + } }, { type = "recipe", @@ -2042,7 +2146,9 @@ if mods["UPSFriendlyNixieTubeDisplay"] then {type = "item", name = "nullius-green-wire", amount = 2}, {type = "item", name = "iron-chest", amount = 1} }, - result = "SNTD-nixie-tube-small" + results = { + {type = "item", name = "SNTD-nixie-tube-small", amount = 1} + } }, { type = "technology", @@ -2113,7 +2219,9 @@ data:extend({ {type = "item", name = "nullius-aluminum-plate", amount = 1}, {type = "item", name = "nullius-glass", amount = 2} }, - result = "hs_holo_sign" + results = { + {type = "item", name = "hs_holo_sign", amount = 1} + } }, { type = "technology", @@ -2154,7 +2262,9 @@ data:extend({ {type = "item", name = "radar", amount = 1}, {type = "item", name = "nullius-robot-frame-1", amount = 1} }, - result = "shuttle-lite" + results = { + {type = "item", name = "shuttle-lite", amount = 1} + } } }) end @@ -2457,7 +2567,9 @@ data:extend({ {type = "item", name = "express-underground-belt", amount = 6}, {type = "item", name = "nullius-steel-beam", amount = 16} }, - result = "railloader" + results = { + {type = "item", name = "railloader", amount = 1} + } }, { type = "recipe", @@ -2474,7 +2586,9 @@ data:extend({ {type = "item", name = "express-underground-belt", amount = 6}, {type = "item", name = "concrete", amount = 36} }, - result = "railunloader" + results = { + {type = "item", name = "railunloader", amount = 1} + } }, { type = "technology", @@ -2535,7 +2649,9 @@ data:extend({ {type = "item", name = "inserter", amount = 2}, {type = "item", name = "nullius-motor-1", amount = 1} }, - result = "inserter" + results = { + {type = "item", name = "inserter", amount = 1} + } }, { type = "recipe", @@ -2550,7 +2666,9 @@ data:extend({ {type = "item", name = "turbo-inserter", amount = 1}, {type = "item", name = "nullius-motor-2", amount = 1} }, - result = "turbo-inserter" + results = { + {type = "item", name = "turbo-inserter", amount = 1} + } }, { type = "recipe", @@ -2565,7 +2683,9 @@ data:extend({ {type = "item", name = "turbo-filter-inserter", amount = 1}, {type = "item", name = "nullius-motor-2", amount = 1} }, - result = "turbo-filter-inserter" + results = { + {type = "item", name = "turbo-filter-inserter", amount = 1} + } }, { type = "recipe", @@ -2579,7 +2699,9 @@ data:extend({ {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, {type = "item", name = "stack-inserter", amount = 2} }, - result = "stack-inserter" + results = { + {type = "item", name = "stack-inserter", amount = 1} + } }, { type = "recipe", @@ -2593,7 +2715,9 @@ data:extend({ {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, {type = "item", name = "stack-filter-inserter", amount = 2} }, - result = "stack-filter-inserter" + results = { + {type = "item", name = "stack-filter-inserter", amount = 1} + } }, { type = "recipe", @@ -2607,7 +2731,9 @@ data:extend({ {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1}, {type = "item", name = "express-stack-inserter", amount = 2} }, - result = "express-stack-inserter" + results = { + {type = "item", name = "express-stack-inserter", amount = 1} + } }, { type = "recipe", @@ -2621,7 +2747,9 @@ data:extend({ {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, {type = "item", name = "express-stack-filter-inserter", amount = 2} }, - result = "express-stack-filter-inserter" + results = { + {type = "item", name = "express-stack-filter-inserter", amount = 1} + } }, { type = "recipe", @@ -2634,7 +2762,9 @@ data:extend({ ingredients = { {type = "item", name = "wooden-chest", amount = 1} }, - result = "OpenContainerItem" + results = { + {type = "item", name = "OpenContainerItem", amount = 1} + } }, { type = "recipe", @@ -2650,7 +2780,9 @@ data:extend({ ingredients = { {type = "item", name = "OpenContainerItem", amount = 1} }, - result = "wooden-chest" + results = { + {type = "item", name = "wooden-chest", amount = 1} + } }, { type = "recipe", @@ -2664,7 +2796,9 @@ data:extend({ {type = "item", name = "nullius-priority-valve", amount = 1}, {type = "item", name = "nullius-steel-rod", amount = 1} }, - result = "HatchRTItem" + results = { + {type = "item", name = "HatchRTItem", amount = 1} + } }, { type = "recipe", @@ -2678,7 +2812,9 @@ data:extend({ {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, {type = "item", name = "fast-underground-belt", amount = 1} }, - result = "RTThrower-EjectorHatchRTItem" + results = { + {type = "item", name = "RTThrower-EjectorHatchRTItem", amount = 1} + } }, { type = "recipe", @@ -2691,7 +2827,9 @@ data:extend({ {type="item", name="RTThrower-inserter-Item", amount=1}, {type="item", name="nullius-steel-plate", amount=2} }, - result = "PlayerLauncherItem" + results = { + {type = "item", name = "PlayerLauncherItem", amount = 1} + } }, { type = "recipe", @@ -2705,7 +2843,9 @@ data:extend({ {type = "item", name = "nullius-iron-wire", amount = 3}, {type = "item", name = "nullius-steel-rod", amount = 2} }, - result = "BouncePlateItem" + results = { + {type = "item", name = "BouncePlateItem", amount = 1} + } }, { type = "recipe", @@ -2718,7 +2858,9 @@ data:extend({ {type = "item", name = "BouncePlateItem", amount = 1}, {type = "item", name = "stone-brick", amount = 6} }, - result = "DirectedBouncePlateItem" + results = { + {type = "item", name = "DirectedBouncePlateItem", amount = 1} + } }, { type = "recipe", @@ -2731,7 +2873,9 @@ data:extend({ {type = "item", name = "BouncePlateItem", amount = 1}, {type = "item", name = "constant-combinator", amount = 1} }, - result = "SignalBouncePlateItem" + results = { + {type = "item", name = "SignalBouncePlateItem", amount = 1} + } }, { type = "recipe", @@ -2746,7 +2890,9 @@ data:extend({ {type = "item", name = "nullius-iron-gear", amount = 3}, {type = "item", name = "nullius-sensor-1", amount = 1} }, - result = "DirectorBouncePlateItem" + results = { + {type = "item", name = "DirectorBouncePlateItem", amount = 1} + } } }) end @@ -2770,7 +2916,9 @@ data:extend({ {type = "item", name = "nullius-locomotive-1", amount = 1}, {type = "item", name = "nullius-iron-wire", amount = 2} }, - result = "RTZiplineItem" + results = { + {type = "item", name = "RTZiplineItem", amount = 1} + } }, { type = "recipe", @@ -2784,7 +2932,9 @@ data:extend({ {type = "item", name = "nullius-motor-2", amount = 3}, {type = "item", name = "nullius-steel-cable", amount = 10} }, - result = "RTZiplineItem2" + results = { + {type = "item", name = "RTZiplineItem2", amount = 1} + } }, { type = "recipe", @@ -2799,7 +2949,9 @@ data:extend({ {type = "item", name = "nullius-textile", amount = 8}, {type = "item", name = "nullius-speed-module-2", amount = 1} }, - result = "RTZiplineItem3" + results = { + {type = "item", name = "RTZiplineItem3", amount = 1} + } }, { type = "recipe", @@ -2815,7 +2967,9 @@ data:extend({ {type = "item", name = "nullius-bearing", amount = 12}, {type = "item", name = "nullius-levitation-field-1", amount = 2} }, - result = "RTZiplineItem4" + results = { + {type = "item", name = "RTZiplineItem4", amount = 1} + } }, { type = "recipe", @@ -2831,7 +2985,9 @@ data:extend({ {type = "item", name = "nullius-speed-module-3", amount = 3}, {type = "item", name = "nullius-stabilizer-1", amount = 2} }, - result = "RTZiplineItem5" + results = { + {type = "item", name = "RTZiplineItem5", amount = 1} + } }, { type = "recipe", @@ -2844,7 +3000,9 @@ data:extend({ {type = "item", name = "power-switch", amount = 1}, {type = "item", name = "decider-combinator", amount = 1} }, - result = "RTZiplineControlsItem" + results = { + {type = "item", name = "RTZiplineControlsItem", amount = 1} + } }, { type = "recipe", @@ -2858,7 +3016,9 @@ data:extend({ {type = "item", name = "nullius-steel-rod", amount = 1}, {type = "item", name = "nullius-steel-gear", amount = 2} }, - result = "RTZiplineCrankControlsItem" + results = { + {type = "item", name = "RTZiplineCrankControlsItem", amount = 1} + } }, { type = "recipe", @@ -2873,7 +3033,9 @@ data:extend({ {type = "item", name = "programmable-speaker", amount = 1}, {type = "item", name = "nullius-sensor-1", amount = 1} }, - result = "RTProgrammableZiplineControlsItem" + results = { + {type = "item", name = "RTProgrammableZiplineControlsItem", amount = 1} + } }, { type = "recipe", @@ -2888,7 +3050,9 @@ data:extend({ {type = "item", name = "nullius-steel-cable", amount = 12}, {type = "item", name = "big-electric-pole", amount = 1} }, - result = "RTZiplineTerminalItem" + results = { + {type = "item", name = "RTZiplineTerminalItem", amount = 1} + } } }) end @@ -2913,7 +3077,9 @@ data:extend({ {type = "item", name = "concrete", amount = 25}, {type = "item", name = "nullius-steel-beam", amount = 4} }, - result = "RTTrainRampItem" + results = { + {type = "item", name = "RTTrainRampItem", amount = 1} + } }, { type = "recipe", @@ -2928,7 +3094,9 @@ data:extend({ {type = "item", name = "nullius-beacon-2", amount = 1}, {type = "item", name = "nullius-levitation-field-1", amount = 4} }, - result = "RTMagnetTrainRampItem" + results = { + {type = "item", name = "RTMagnetTrainRampItem", amount = 1} + } }, { type = "recipe", @@ -2943,7 +3111,9 @@ data:extend({ {type = "item", name = "nullius-steel-plate", amount = 12}, {type = "item", name = "RTTrainDirectedBouncePlateItem", amount = 1} }, - result = "RTImpactUnloaderItem" + results = { + {type = "item", name = "RTImpactUnloaderItem", amount = 1} + } }, { type = "recipe", @@ -2958,7 +3128,9 @@ data:extend({ {type = "item", name = "nullius-steel-gear", amount = 4}, {type = "item", name = "nullius-steel-plate", amount = 10} }, - result = "RTImpactWagonItem" + results = { + {type = "item", name = "RTImpactWagonItem", amount = 1} + } } }) if settings.startup["RTThrowersSetting"].value then @@ -2975,7 +3147,9 @@ data:extend({ {type = "item", name = "nullius-textile", amount = 12}, {type = "item", name = "nullius-steel-beam", amount = 4} }, - result = "RTTrainBouncePlateItem" + results = { + {type = "item", name = "RTTrainBouncePlateItem", amount = 1} + } }, { type = "recipe", @@ -2988,7 +3162,9 @@ data:extend({ {type = "item", name = "RTTrainBouncePlateItem", amount = 1}, {type = "item", name = "RTTrainRampItem", amount = 1} }, - result = "RTTrainDirectedBouncePlateItem" + results = { + {type = "item", name = "RTTrainDirectedBouncePlateItem", amount = 1} + } } }) else @@ -3487,7 +3663,9 @@ data:extend({ {type = "item", name = "nullius-glass", amount = 1}, {type = "item", name = "nullius-steel-sheet", amount = 2} }, - result = "iron-display-small" + results = { + {type = "item", name = "iron-display-small", amount = 1} + } }, { type = "recipe", @@ -3500,7 +3678,9 @@ data:extend({ {type = "item", name = "iron-display-small", amount = 4}, {type = "item", name = "small-lamp", amount = 1} }, - result = "iron-display-medium" + results = { + {type = "item", name = "iron-display-medium", amount = 1} + } }, { type = "recipe", @@ -3513,7 +3693,9 @@ data:extend({ {type = "item", name = "iron-display-small", amount = 9}, {type = "item", name = "small-lamp", amount = 4} }, - result = "iron-display" + results = { + {type = "item", name = "iron-display", amount = 1} + } }, { type = "recipe", @@ -3527,7 +3709,9 @@ data:extend({ {type = "item", name = "nullius-glass", amount = 1}, {type = "item", name = "nullius-aluminum-sheet", amount = 3} }, - result = "steel-display-small" + results = { + {type = "item", name = "steel-display-small", amount = 1} + } }, { type = "recipe", @@ -3540,7 +3724,9 @@ data:extend({ {type = "item", name = "steel-display-small", amount = 4}, {type = "item", name = "small-lamp", amount = 1} }, - result = "steel-display-medium" + results = { + {type = "item", name = "steel-display-medium", amount = 1} + } }, { type = "recipe", @@ -3553,7 +3739,9 @@ data:extend({ {type = "item", name = "steel-display-small", amount = 9}, {type = "item", name = "small-lamp", amount = 4} }, - result = "steel-display" + results = { + {type = "item", name = "steel-display", amount = 1} + } }, { type = "recipe", @@ -3567,7 +3755,9 @@ data:extend({ {type = "item", name = "nullius-glass", amount = 1}, {type = "item", name = "nullius-plastic", amount = 4} }, - result = "copper-display-small" + results = { + {type = "item", name = "copper-display-small", amount = 1} + } }, { type = "recipe", @@ -3580,7 +3770,9 @@ data:extend({ {type = "item", name = "copper-display-small", amount = 4}, {type = "item", name = "small-lamp", amount = 1} }, - result = "copper-display-medium" + results = { + {type = "item", name = "copper-display-medium", amount = 1} + } }, { type = "recipe", @@ -3593,7 +3785,9 @@ data:extend({ {type = "item", name = "copper-display-small", amount = 9}, {type = "item", name = "small-lamp", amount = 4} }, - result = "copper-display" + results = { + {type = "item", name = "copper-display", amount = 1} + } }, { type = "technology", @@ -3671,7 +3865,9 @@ if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then {type = "item", name = "nullius-relay-1", amount = 1}, {type = "item", name = "decider-combinator", amount = 6} }, - result = "blueprint-deployer" + results = { + {type = "item", name = "blueprint-deployer", amount = 1} + } }, { type = "recipe", @@ -3685,7 +3881,9 @@ if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then {type = "item", name = "nullius-small-miner-2", amount = 1}, {type = "item", name = "nullius-sensor-1", amount = 4} }, - result = "recursive-blueprints-scanner" + results = { + {type = "item", name = "recursive-blueprints-scanner", amount = 1} + } } }) end @@ -3707,7 +3905,9 @@ if mods["ch-concentrated-solar"] then {type = "item", name = "nullius-motor-2", amount = 1}, {type = "item", name = "nullius-bearing", amount = 1} }, - result = "chcs-heliostat-mirror" + results = { + {type = "item", name = "chcs-heliostat-mirror", amount = 1} + } }, { type = "recipe", @@ -3724,7 +3924,9 @@ if mods["ch-concentrated-solar"] then {type = "item", name = "nullius-box-motor-2", amount = 1}, {type = "item", name = "nullius-box-bearing", amount = 1} }, - result = "nullius-box-heliostat-mirror" + results = { + {type = "item", name = "nullius-box-heliostat-mirror", amount = 1} + } }, { type = "recipe", @@ -3741,7 +3943,9 @@ if mods["ch-concentrated-solar"] then {type = "item", name = "nullius-pump-2", amount = 8}, {type = "item", name = "nullius-large-beacon-1", amount = 1} }, - result = "chcs-solar-power-tower", + results = { + {type = "item", name = "chcs-solar-power-tower", amount = 1} + }, requester_paste_multiplier = 2 }, { @@ -3805,7 +4009,9 @@ if (mods["beautiful_bridge_railway"] or {type = "item", name = "concrete", amount = 6}, {type = "item", name = "nullius-land-fill-gravel", amount = 1} }, - result = "bbr-rail-iron" + results = { + {type = "item", name = "bbr-rail-iron", amount = 1} + } }, { type = "recipe", @@ -3821,7 +4027,9 @@ if (mods["beautiful_bridge_railway"] or {type = "item", name = "concrete", amount = 1}, {type = "item", name = "nullius-land-fill-gravel", amount = 2} }, - result = "bbr-rail-brick" + results = { + {type = "item", name = "bbr-rail-brick", amount = 1} + } }, { type = "recipe", @@ -3837,7 +4045,9 @@ if (mods["beautiful_bridge_railway"] or {type = "item", name = "concrete", amount = 2}, {type = "item", name = "nullius-land-fill-gravel", amount = 1} }, - result = "bbr-rail-wood" + results = { + {type = "item", name = "bbr-rail-wood", amount = 1} + } }, { type = "technology", @@ -4010,15 +4220,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 8, ingredients = { {type = "item", name = "nullius-locomotive-1", amount = 1}, - {type = "item", name = "nullius-aluminum-plate", amount = 4} + {type = "item", name = "nullius-aluminum-plate", amount = 4} }, - result = "nullius-small-locomotive-1", - result_count = 2 + results = { + {type = "item", name = "nullius-small-locomotive-1", amount = 2} + }, }, { type = "recipe", @@ -4026,16 +4237,17 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 15, ingredients = { {type = "item", name = "nullius-locomotive-2", amount = 1}, - {type = "item", name = "nullius-small-locomotive-1", amount = 2}, - {type = "item", name = "nullius-titanium-plate", amount = 4} + {type = "item", name = "nullius-small-locomotive-1", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 4} }, - result = "nullius-small-locomotive-2", - result_count = 2 + results = { + {type = "item", name = "nullius-small-locomotive-2", amount = 2} + }, }, { type = "recipe", @@ -4043,15 +4255,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 30, ingredients = { {type = "item", name = "nullius-locomotive-3", amount = 1}, - {type = "item", name = "nullius-small-locomotive-2", amount = 2} + {type = "item", name = "nullius-small-locomotive-2", amount = 2} }, - result = "nullius-small-locomotive-3", - result_count = 2 + results = { + {type = "item", name = "nullius-small-locomotive-3", amount = 2} + }, }, { type = "recipe", @@ -4059,15 +4272,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 30, ingredients = { {type = "item", name = "nullius-solar-locomotive", amount = 1}, - {type = "item", name = "nullius-small-locomotive-2", amount = 2} + {type = "item", name = "nullius-small-locomotive-2", amount = 2} }, - result = "nullius-small-solar-locomotive", - result_count = 2 + results = { + {type = "item", name = "nullius-small-solar-locomotive", amount = 2} + }, }, { type = "recipe", @@ -4075,15 +4289,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 5, ingredients = { {type = "item", name = "nullius-cargo-wagon-1", amount = 1}, - {type = "item", name = "nullius-aluminum-plate", amount = 4} + {type = "item", name = "nullius-aluminum-plate", amount = 4} }, - result = "nullius-small-cargo-wagon-1", - result_count = 2 + results = { + {type = "item", name = "nullius-small-cargo-wagon-1", amount = 2} + }, }, { type = "recipe", @@ -4091,16 +4306,17 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 10, ingredients = { {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, - {type = "item", name = "nullius-small-cargo-wagon-1", amount = 2}, - {type = "item", name = "nullius-titanium-plate", amount = 4} + {type = "item", name = "nullius-small-cargo-wagon-1", amount = 2}, + {type = "item", name = "nullius-titanium-plate", amount = 4} }, - result = "nullius-small-cargo-wagon-2", - result_count = 2 + results = { + {type = "item", name = "nullius-small-cargo-wagon-2", amount = 2} + }, }, { type = "recipe", @@ -4108,15 +4324,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 20, ingredients = { {type = "item", name = "nullius-cargo-wagon-3", amount = 1}, - {type = "item", name = "nullius-small-cargo-wagon-2", amount = 2} + {type = "item", name = "nullius-small-cargo-wagon-2", amount = 2} }, - result = "nullius-small-cargo-wagon-3", - result_count = 2 + results = { + {type = "item", name = "nullius-small-cargo-wagon-3", amount = 2} + }, }, { type = "recipe", @@ -4124,15 +4341,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 6, ingredients = { {type = "item", name = "nullius-fluid-wagon-1", amount = 1}, - {type = "item", name = "nullius-aluminum-sheet", amount = 6} + {type = "item", name = "nullius-aluminum-sheet", amount = 6} }, - result = "nullius-small-fluid-wagon-1", - result_count = 2 + results = { + {type = "item", name = "nullius-small-fluid-wagon-1", amount = 2} + }, }, { type = "recipe", @@ -4140,16 +4358,17 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 12, ingredients = { {type = "item", name = "nullius-fluid-wagon-2", amount = 1}, - {type = "item", name = "nullius-small-fluid-wagon-1", amount = 2}, - {type = "item", name = "nullius-titanium-sheet", amount = 6} + {type = "item", name = "nullius-small-fluid-wagon-1", amount = 2}, + {type = "item", name = "nullius-titanium-sheet", amount = 6} }, - result = "nullius-small-fluid-wagon-2", - result_count = 2 + results = { + {type = "item", name = "nullius-small-fluid-wagon-2", amount = 2} + }, }, { type = "recipe", @@ -4157,15 +4376,16 @@ if mods["Mini_Trains"] then enabled = false, show_amount_in_title = false, always_show_products = true, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 25, ingredients = { {type = "item", name = "nullius-fluid-wagon-3", amount = 1}, - {type = "item", name = "nullius-small-fluid-wagon-2", amount = 2} + {type = "item", name = "nullius-small-fluid-wagon-2", amount = 2} }, - result = "nullius-small-fluid-wagon-3", - result_count = 2 + results = { + {type = "item", name = "nullius-small-fluid-wagon-3", amount = 2} + }, }, { type = "technology", @@ -4205,7 +4425,9 @@ if mods["fcpu"] then {type = "item", name = "arithmetic-combinator", amount = 10}, {type = "item", name = "nullius-processor-2", amount = 1} }, - result = "fcpu" + results = { + {type = "item", name = "fcpu", amount = 1} + } }, { type = "technology", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 77281cb..7a574fd 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -1322,7 +1322,7 @@ data.raw.recipe["road"].show_amount_in_title = false data.raw.recipe["road"].always_show_products = true data.raw.recipe["road"].category = "hand-casting" data.raw.recipe["road"].energy_required = 3 -data.raw.recipe["road"].result_count = 4 +data.raw.recipe["road"].results[1].amount = 4 data.raw.recipe["road"].ingredients = { {type = "item", name = "nullius-rubber", amount = 1}, {type = "item", name = "nullius-land-fill-sand", amount = 1}, @@ -1336,7 +1336,7 @@ data.raw.recipe["transport-drone"].show_amount_in_title = false data.raw.recipe["transport-drone"].always_show_products = true data.raw.recipe["transport-drone"].category = "medium-crafting" data.raw.recipe["transport-drone"].energy_required = 10 -data.raw.recipe["transport-drone"].result_count = 3 +data.raw.recipe["transport-drone"].results[1].amount = 3 data.raw.recipe["transport-drone"].ingredients = { {type = "item", name = "nullius-car-1", amount = 1}, {type = "item", name = "arithmetic-combinator", amount = 5}, @@ -1457,7 +1457,7 @@ data.raw.recipe["fast-road"].show_amount_in_title = false data.raw.recipe["fast-road"].always_show_products = true data.raw.recipe["fast-road"].category = "large-crafting" data.raw.recipe["fast-road"].energy_required = 30 -data.raw.recipe["fast-road"].result_count = 8 +data.raw.recipe["fast-road"].results[1].amount = 8 data.raw.recipe["fast-road"].ingredients = { {type = "item", name = "road", amount = 50}, {type = "item", name = "nullius-box-black-concrete", amount = 6}, @@ -1632,7 +1632,9 @@ if (mods["GCKI"] and (data.raw.item["car-key"] ~= nil)) then {type = "item", name = "programmable-speaker", amount = 1}, {type = "item", name = "arithmetic-combinator", amount = 1} }, - result = "car-key" + results = { + {type = "item", name = "car-key", amount = 1} + } } }) data.raw.item["car-key"].subgroup = "vehicle" diff --git a/nullius/prototypes/override_mod_final.lua b/nullius/prototypes/override_mod_final.lua index 2293e13..dfdc785 100644 --- a/nullius/prototypes/override_mod_final.lua +++ b/nullius/prototypes/override_mod_final.lua @@ -261,13 +261,27 @@ if (mods["RenaiTransportation"] and data.raw["constant-combinator"]["SignalBouncePlate"].minable.mining_time = 1.5 data.raw["constant-combinator"]["DirectorBouncePlate"].minable.mining_time = 2 - data.raw.recipe["nullius-thrower-1"].result = "RTThrower-inserter-Item" - data.raw.recipe["nullius-thrower-2"].result = "RTThrower-turbo-inserter-Item" - data.raw.recipe["nullius-filter-thrower-2"].result = "RTThrower-turbo-filter-inserter-Item" - data.raw.recipe["nullius-thrower-3"].result = "RTThrower-stack-inserter-Item" - data.raw.recipe["nullius-filter-thrower-3"].result = "RTThrower-stack-filter-inserter-Item" - data.raw.recipe["nullius-thrower-4"].result = "RTThrower-express-stack-inserter-Item" - data.raw.recipe["nullius-filter-thrower-4"].result = "RTThrower-express-stack-filter-inserter-Item" + data.raw.recipe["nullius-thrower-1"].results = { + {type = "item", name = "RTThrower-inserter-Item", amount = 1} + } + data.raw.recipe["nullius-thrower-2"].results = { + {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1} + } + data.raw.recipe["nullius-filter-thrower-2"].results = { + {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1} + } + data.raw.recipe["nullius-thrower-3"].results = { + {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1} + } + data.raw.recipe["nullius-filter-thrower-3"].results = { + {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1} + } + data.raw.recipe["nullius-thrower-4"].results = { + {type = "item", name = "RTThrower-express-stack-inserter-Item", amount = 1} + } + data.raw.recipe["nullius-filter-thrower-4"].results = { + {type = "item", name = "RTThrower-express-stack-filter-inserter-Item", amount = 1} + } end From bbeb542dbf9189ef767746bcd5ec39c097a46ba8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 20:49:20 +0200 Subject: [PATCH 059/236] Updated to 2.0 --- safefill/control.lua | 12 ++++++------ safefill/data.lua | 36 +++++++++++++++++++++++------------- safefill/info.json | 4 ++-- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/safefill/control.lua b/safefill/control.lua index 1fa9f30..c765cf7 100644 --- a/safefill/control.lua +++ b/safefill/control.lua @@ -4,7 +4,7 @@ function entity_built_tile(event, entity) return end local tilename = string.sub(event.tile.order, 18) - local tile = game.tile_prototypes[tilename] + local tile = prototypes.tile[tilename] if (tile == nil) then return end @@ -27,8 +27,8 @@ function entity_built_tile(event, entity) if (t.old_tile.mineable_properties.minable) then newtilename = "dirt-1" if (curt.hidden_tile ~= nil) then - local ht = game.tile_prototypes[curt.hidden_tile] - if ((ht ~= nil) and (not ht.collision_mask["water-tile"])) then + local ht = prototypes.tile[curt.hidden_tile] + if ((ht ~= nil) and (not ht.collision_mask["water_tile"])) then newtilename = ht.name end end @@ -42,7 +42,7 @@ function entity_built_tile(event, entity) end s.set_tiles(newtiles2, true, false) - local item = game.item_prototypes[event.tile.name] + local item = prototypes.item[event.tile.name] if (item == nil) then return end @@ -76,11 +76,11 @@ function script_built_tile(event) local new_count = 0 for _,t in pairs(event.tiles) do if (string.sub(t.name, 1, 9) == "safefill-") then - local tile = game.tile_prototypes[t.name] + local tile = prototypes.tile[t.name] if ((tile ~= nil) and (string.sub(tile.order, 1, 17) == "c[watersafefill]-")) then local tilename = string.sub(tile.order, 18) - if (game.tile_prototypes[tilename] ~= nil) then + if (prototypes.tile[tilename] ~= nil) then new_count = new_count + 1 newtiles1[new_count] = {name = tilename, position = t.position} end diff --git a/safefill/data.lua b/safefill/data.lua index b6d719b..98dfdda 100644 --- a/safefill/data.lua +++ b/safefill/data.lua @@ -32,6 +32,13 @@ if settings.startup["safefill-green-water"].value then end +for i = 1,4 do + data:extend({{ + type = "collision-layer", + name = "water_layer_"..tostring(i) + }}) +end + local recipe_count = 0 local recipes = { } @@ -54,7 +61,9 @@ function create_waterfill(suffix, tilename, suborder, active, layer) show_amount_in_title = false, always_show_products = true, always_show_made_in = true, - result = safename + results = { + {type = "item", name = safename, amount = 1} + } } if (settings.startup["safefill-cost"].value == "expensive") then @@ -79,11 +88,10 @@ function create_waterfill(suffix, tilename, suborder, active, layer) localised = tile.localised_name end - local cond = "water-tile" + local cond = "water_tile" if settings.startup["safefill-water-on-water"].value and (layer > 0) then - local lnum = (layer + 43) - cond = "layer-"..lnum - table.insert(tile.collision_mask, cond) + cond = "water_layer_"..layer + tile.collision_mask.layers[cond] = true end data:extend({ @@ -98,7 +106,9 @@ function create_waterfill(suffix, tilename, suborder, active, layer) place_as_tile = { result = safename, condition_size = 1, - condition = {cond} + condition = {layers = { + [cond] = true + }} } }, { @@ -106,7 +116,7 @@ function create_waterfill(suffix, tilename, suborder, active, layer) name = safename, localised_name = localised, order = "c[watersafefill]-"..tilename, - collision_mask = {"ground-tile"}, + collision_mask = {layers = {ground_tile = true}}, layer = data.raw.tile[tilename].layer, variants = { main = data.raw.tile[tilename].variants.main, @@ -214,7 +224,7 @@ elseif (settings.startup["safefill-cost"].value == "cheap") then {type="fluid", name="water", amount=500}} end else - data.raw.recipe["safefill-shallow"].result_count = 4 + data.raw.recipe["safefill-shallow"].results[1].amount = 4 data.raw.recipe["safefill-shallow"].energy_required = 10 data.raw.recipe["safefill-medium"].energy_required = 3 data.raw.recipe["safefill-deep"].energy_required = 2 @@ -225,7 +235,7 @@ else data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",1}, {type="fluid", name="nullius-saline", amount=1000}} else - data.raw.recipe["safefill-medium"].result_count = 4 + data.raw.recipe["safefill-medium"].results[1].amount = 4 data.raw.recipe["safefill-medium"].energy_required = 12 data.raw.recipe["safefill-medium"].ingredients = {{"concrete",4}, {"cliff-explosives",1}, {type="fluid", name="nullius-saline", amount=5000}} @@ -238,7 +248,7 @@ else if do_shallow then data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",2}} else - data.raw.recipe["safefill-medium"].result_count = 2 + data.raw.recipe["safefill-medium"].results[1].amount = 2 data.raw.recipe["safefill-medium"].energy_required = 12 data.raw.recipe["safefill-medium"].ingredients = {{"concrete",4}, {"cliff-explosives",1}, {type="fluid", name="water", amount=2500}} @@ -349,7 +359,7 @@ if settings.startup["safefill-green-water"].value then {type="fluid", name="water", amount=500}} end else - data.raw.recipe["safefill-mud"].result_count = 4 + data.raw.recipe["safefill-mud"].results[1].amount = 4 data.raw.recipe["safefill-mud"].energy_required = 8 data.raw.recipe["safefill-green"].energy_required = 3 data.raw.recipe["safefill-deepgreen"].energy_required = 2 @@ -363,7 +373,7 @@ if settings.startup["safefill-green-water"].value then {type="fluid", name="nullius-wastewater", amount=1000}} else data.raw.recipe["safefill-green"].energy_required = 10 - data.raw.recipe["safefill-green"].result_count = 4 + data.raw.recipe["safefill-green"].results[1].amount = 4 data.raw.recipe["safefill-green"].ingredients = { {"nullius-land-fill-gravel",1}, {"cliff-explosives",1}, {type="fluid", name="nullius-sludge", amount=200}, @@ -378,7 +388,7 @@ if settings.startup["safefill-green-water"].value then data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",2}} else data.raw.recipe["safefill-green"].energy_required = 10 - data.raw.recipe["safefill-green"].result_count = 2 + data.raw.recipe["safefill-green"].results[1].amount = 2 data.raw.recipe["safefill-green"].ingredients = {{"landfill",1}, {"cliff-explosives",1}, {type="fluid", name="water", amount=2500}} end diff --git a/safefill/info.json b/safefill/info.json index 7ea8f0e..218f1ac 100644 --- a/safefill/info.json +++ b/safefill/info.json @@ -1,7 +1,7 @@ { "name": "safefill", - "version": "1.0.11", - "factorio_version": "1.1", + "version": "2.0.0", + "factorio_version": "2.0", "title": "Safe Waterfill", "author": "Anachrony", "description": "Create water like landfill, without destroying things on land. \n\nUnlike most waterfill mods, this will not destroy any land-based entities, like structures, vehicles, resources, trees, or yourself. Only land with nothing on it will be replaced. Offers a choice of 6 different types of water.", From dbefd351df235b9490cfc6b3be16eb3f101496db Mon Sep 17 00:00:00 2001 From: Henrique Gemignani Passos Lima Date: Sat, 16 Aug 2025 22:03:14 +0300 Subject: [PATCH 060/236] Experimental mod porting --- nullius/locale/en/tech.cfg | 4 +- nullius/locale/ru/tech.cfg | 4 +- nullius/locale/zh-CN/nullius.cfg | 4 +- nullius/prototypes/mods.lua | 356 +++++++++++----------- nullius/prototypes/override_mod.lua | 144 ++++----- nullius/prototypes/override_mod_final.lua | 12 +- nullius/prototypes/recipe_book.lua | 8 +- train-upgrader/prototypes/recipe.lua | 4 +- 8 files changed, 268 insertions(+), 268 deletions(-) diff --git a/nullius/locale/en/tech.cfg b/nullius/locale/en/tech.cfg index 3b095f2..cb8c7c3 100644 --- a/nullius/locale/en/tech.cfg +++ b/nullius/locale/en/tech.cfg @@ -142,8 +142,8 @@ nullius-miniloader=Miniloaders nullius-loader=Loaders nullius-typesetting=Typesetting nullius-companionship=Companionship -nullius-SNTD-nixie-tubes-basic=Basic Nixie Tubes -nullius-SNTD-nixie-tubes-reinforced=Reinforced Nixie Tubes +nullius-reinforced-nixie-tubes-basic=Basic Nixie Tubes +nullius-reinforced-nixie-tubes-reinforced=Reinforced Nixie Tubes nullius-holographics=Holographics nullius-logistic-ballistics=Logistic Ballistics nullius-precision-ballistics=Precision Ballistics diff --git a/nullius/locale/ru/tech.cfg b/nullius/locale/ru/tech.cfg index a5d32af..9a8e7a8 100644 --- a/nullius/locale/ru/tech.cfg +++ b/nullius/locale/ru/tech.cfg @@ -141,8 +141,8 @@ nullius-miniloader=Мини-погрузчики nullius-loader=Погрузчики nullius-typesetting=Набор текста nullius-companionship=Компаньоны -nullius-SNTD-nixie-tubes-basic=Основные трубы Nixie -nullius-SNTD-nixie-tubes-reinforced=Усиленные трубы Nixie +nullius-reinforced-nixie-tubes-basic=Основные трубы Nixie +nullius-reinforced-nixie-tubes-reinforced=Усиленные трубы Nixie nullius-holographics=Голография nullius-logistic-ballistics=Логистическая баллистика nullius-precision-ballistics=Точная баллистика diff --git a/nullius/locale/zh-CN/nullius.cfg b/nullius/locale/zh-CN/nullius.cfg index be01ad4..8d20758 100644 --- a/nullius/locale/zh-CN/nullius.cfg +++ b/nullius/locale/zh-CN/nullius.cfg @@ -996,8 +996,8 @@ nullius-miniloader=迷你装卸机 nullius-loader=装卸机 nullius-typesetting=排版 nullius-companionship=僚机 -nullius-SNTD-nixie-tubes-basic=基础辉光管 -nullius-SNTD-nixie-tubes-reinforced=强化辉光管 +nullius-reinforced-nixie-tubes-basic=基础辉光管 +nullius-reinforced-nixie-tubes-reinforced=强化辉光管 nullius-holographics=全息科技 nullius-logistic-ballistics=物流弹道学 nullius-precision-ballistics=精确弹道学 diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 8814225..a58f309 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -433,7 +433,7 @@ data:extend({ {type="item", name="miniloader", amount=1}, {type="item", name="iron-chest", amount=1}, {type="item", name="fast-underground-belt", amount=2}, - {type="item", name="turbo-inserter", amount=3} + {type="item", name="bob-turbo-inserter", amount=3} }, results = { {type = "item", name = "fast-miniloader", amount = 1} @@ -450,7 +450,7 @@ data:extend({ {type="item", name="fast-miniloader", amount=1}, {type="item", name="steel-chest", amount=1}, {type="item", name="express-underground-belt", amount=1}, - {type="item", name="stack-inserter", amount=2} + {type="item", name="bulk-inserter", amount=2} }, results = { {type = "item", name = "express-miniloader", amount = 1} @@ -465,9 +465,9 @@ data:extend({ energy_required = 8, ingredients = { {type="item", name="express-miniloader", amount=1}, - {type="item", name="logistic-chest-storage", amount=1}, - {type="item", name="ultimate-underground-belt", amount=1}, - {type="item", name="express-stack-inserter", amount=2} + {type="item", name="storage-chest", amount=1}, + {type="item", name="bob-ultimate-underground-belt", amount=1}, + {type="item", name="bob-express-bulk-inserter", amount=2} }, results = { {type = "item", name = "ultimate-miniloader", amount = 1} @@ -494,7 +494,7 @@ data:extend({ {type="item", name="miniloader", amount=1}, {type="item", name="iron-chest", amount=1}, {type="item", name="fast-underground-belt", amount=2}, - {type="item", name="turbo-filter-inserter", amount=3} + {type="item", name="bob-turbo-filter-inserter", amount=3} }, results = { {type = "item", name = "fast-filter-miniloader", amount = 1} @@ -526,8 +526,8 @@ data:extend({ energy_required = 8, ingredients = { {type="item", name="express-filter-miniloader", amount=1}, - {type="item", name="logistic-chest-storage", amount=1}, - {type="item", name="ultimate-underground-belt", amount=1}, + {type="item", name="storage-chest", amount=1}, + {type="item", name="bob-ultimate-underground-belt", amount=1}, {type="item", name="express-stack-filter-inserter", amount=2} }, results = { @@ -671,7 +671,7 @@ data:extend({ {type="item", name="aai-loader", amount=2}, {type="item", name="iron-chest", amount=1}, {type="item", name="fast-underground-belt", amount=2}, - {type="item", name="turbo-inserter", amount=3} + {type="item", name="bob-turbo-inserter", amount=3} }, results = { {type = "item", name = "aai-fast-loader", amount = 1} @@ -688,7 +688,7 @@ data:extend({ {type="item", name="aai-fast-loader", amount=1}, {type="item", name="steel-chest", amount=1}, {type="item", name="express-underground-belt", amount=1}, - {type="item", name="stack-inserter", amount=2} + {type="item", name="bulk-inserter", amount=2} }, results = { {type = "item", name = "aai-express-loader", amount = 1} @@ -703,9 +703,9 @@ data:extend({ energy_required = 20, ingredients = { {type="item", name="aai-express-loader", amount=2}, - {type="item", name="logistic-chest-storage", amount=1}, - {type="item", name="ultimate-underground-belt", amount=1}, - {type="item", name="express-stack-inserter", amount=2} + {type="item", name="storage-chest", amount=1}, + {type="item", name="bob-ultimate-underground-belt", amount=1}, + {type="item", name="bob-express-bulk-inserter", amount=2} }, results = { {type = "item", name = "aai-ultimate-loader", amount = 1} @@ -1361,7 +1361,7 @@ data:extend({ { type = "technology", name = "nullius-warehousing-1", - localised_name = { "", {"technology-name.warehouse-research"}, " ", 1 }, + localised_name = { "", {"technology-name.warehouse-research"}, " ", "1" }, localised_description = { "technology-description.nullius-storage" }, order = "nullius-cl", icon = "__Warehousing__/graphics/research/warehouse-research.png", @@ -1384,7 +1384,7 @@ data:extend({ { type = "technology", name = "nullius-warehousing-2", - localised_name = { "", {"technology-name.warehouse-research"}, " ", 2 }, + localised_name = { "", {"technology-name.warehouse-research"}, " ", "2" }, localised_description = { "technology-description.nullius-storage" }, order = "nullius-di", icon = "__Warehousing__/graphics/research/warehouse-research.png", @@ -1408,7 +1408,7 @@ data:extend({ { type = "technology", name = "nullius-warehousing-3", - localised_name = { "", {"technology-name.warehouse-research"}, " ", 3 }, + localised_name = { "", {"technology-name.warehouse-research"}, " ", "3" }, localised_description = { "technology-description.nullius-storage" }, order = "nullius-dk", icon = "__Warehousing__/graphics/research/warehouse-logistics-research-1.png", @@ -1452,7 +1452,7 @@ data:extend({ { type = "technology", name = "nullius-warehousing-4", - localised_name = { "", {"technology-name.warehouse-research"}, " ", 4 }, + localised_name = { "", {"technology-name.warehouse-research"}, " ", "4" }, localised_description = { "technology-description.nullius-storage" }, order = "nullius-eo", icon = "__Warehousing__/graphics/research/warehouse-logistics-research-2.png", @@ -2104,7 +2104,7 @@ if mods["UPSFriendlyNixieTubeDisplay"] then data:extend({ { type = "recipe", - name = "nullius-SNTD-old-nixie-tube", + name = "nullius-classic-nixie-tube", enabled = false, always_show_made_in = true, category = "small-crafting", @@ -2116,44 +2116,44 @@ if mods["UPSFriendlyNixieTubeDisplay"] then {type = "item", name = "nullius-glass", amount = 4} }, results = { - {type = "item", name = "SNTD-old-nixie-tube", amount = 1} + {type = "item", name = "classic-nixie-tube", amount = 1} } }, { type = "recipe", - name = "nullius-SNTD-nixie-tube", + name = "nullius-reinforced-nixie-tube", enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 5, ingredients = { - {type = "item", name = "SNTD-old-nixie-tube", amount = 1}, + {type = "item", name = "classic-nixie-tube", amount = 1}, {type = "item", name = "nullius-large-chest-1", amount = 1} }, results = { - {type = "item", name = "SNTD-nixie-tube", amount = 1} + {type = "item", name = "reinforced-nixie-tube", amount = 1} } }, { type = "recipe", - name = "nullius-SNTD-nixie-tube-small", + name = "nullius-small-reinforced-nixie-tube", enabled = false, always_show_made_in = true, category = "small-crafting", energy_required = 3, ingredients = { - {type = "item", name = "SNTD-old-nixie-tube", amount = 1}, + {type = "item", name = "classic-nixie-tube", amount = 1}, {type = "item", name = "nullius-green-wire", amount = 2}, {type = "item", name = "iron-chest", amount = 1} }, results = { - {type = "item", name = "SNTD-nixie-tube-small", amount = 1} + {type = "item", name = "small-reinforced-nixie-tube", amount = 1} } }, { type = "technology", - name = "nullius-SNTD-nixie-tubes-basic", - icon = "__UPSFriendlyNixieTubeDisplay__/graphics/old-nixie-technology-icon.png", + name = "nullius-reinforced-nixie-tubes-basic", + icon = "__UPSFriendlyNixieTubeDisplay__/graphics/classic-nixie-tube-technology-icon.png", icon_size = 32, unit = { count = 25, @@ -2168,14 +2168,14 @@ if mods["UPSFriendlyNixieTubeDisplay"] then effects = { { type = "unlock-recipe", - recipe = "nullius-SNTD-old-nixie-tube" + recipe = "nullius-classic-nixie-tube" } } }, { type = "technology", - name = "nullius-SNTD-nixie-tubes-reinforced", - icon = "__UPSFriendlyNixieTubeDisplay__/graphics/nixie-technology-icon.png", + name = "nullius-reinforced-nixie-tubes-reinforced", + icon = "__UPSFriendlyNixieTubeDisplay__/graphics/reinforced-nixie-tube-technology-icon.png", icon_size = 32, unit = { count = 40, @@ -2186,17 +2186,17 @@ if mods["UPSFriendlyNixieTubeDisplay"] then time = 25 }, prerequisites = { - "nullius-SNTD-nixie-tubes-basic" + "nullius-reinforced-nixie-tubes-basic" }, order = "nullius-df", effects = { { type = "unlock-recipe", - recipe = "nullius-SNTD-nixie-tube" + recipe = "nullius-reinforced-nixie-tube" }, { type = "unlock-recipe", - recipe = "nullius-SNTD-nixie-tube-small" + recipe = "nullius-small-reinforced-nixie-tube" } }, } @@ -2663,30 +2663,30 @@ data:extend({ energy_required = 2, ingredients = { {type = "item", name = "RTThrower-inserter-Item", amount = 1}, - {type = "item", name = "turbo-inserter", amount = 1}, + {type = "item", name = "bob-turbo-inserter", amount = 1}, {type = "item", name = "nullius-motor-2", amount = 1} }, results = { - {type = "item", name = "turbo-inserter", amount = 1} - } - }, - { - type = "recipe", - name = "nullius-filter-thrower-2", - enabled = false, - always_show_made_in = true, - GCKI_ignore = true, - category = "medium-crafting", - energy_required = 2, - ingredients = { - {type = "item", name = "RTThrower-inserter-Item", amount = 1}, - {type = "item", name = "turbo-filter-inserter", amount = 1}, - {type = "item", name = "nullius-motor-2", amount = 1} - }, - results = { - {type = "item", name = "turbo-filter-inserter", amount = 1} + {type = "item", name = "bob-turbo-inserter", amount = 1} } }, + -- { + -- type = "recipe", + -- name = "nullius-filter-thrower-2", + -- enabled = false, + -- always_show_made_in = true, + -- GCKI_ignore = true, + -- category = "medium-crafting", + -- energy_required = 2, + -- ingredients = { + -- {type = "item", name = "RTThrower-inserter-Item", amount = 1}, + -- {type = "item", name = "bob-turbo-filter-inserter", amount = 1}, + -- {type = "item", name = "nullius-motor-2", amount = 1} + -- }, + -- results = { + -- {type = "item", name = "bob-turbo-filter-inserter", amount = 1} + -- } + -- }, { type = "recipe", name = "nullius-thrower-3", @@ -2696,29 +2696,29 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, - {type = "item", name = "stack-inserter", amount = 2} + {type = "item", name = "RTThrower-bob-turbo-inserter-Item", amount = 1}, + {type = "item", name = "bulk-inserter", amount = 2} }, results = { - {type = "item", name = "stack-inserter", amount = 1} - } - }, - { - type = "recipe", - name = "nullius-filter-thrower-3", - enabled = false, - always_show_made_in = true, - GCKI_ignore = true, - category = "medium-crafting", - energy_required = 2, - ingredients = { - {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, - {type = "item", name = "stack-filter-inserter", amount = 2} - }, - results = { - {type = "item", name = "stack-filter-inserter", amount = 1} + {type = "item", name = "bulk-inserter", amount = 1} } }, + -- { + -- type = "recipe", + -- name = "nullius-filter-thrower-3", + -- enabled = false, + -- always_show_made_in = true, + -- GCKI_ignore = true, + -- category = "medium-crafting", + -- energy_required = 2, + -- ingredients = { + -- {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, + -- {type = "item", name = "stack-filter-inserter", amount = 2} + -- }, + -- results = { + -- {type = "item", name = "stack-filter-inserter", amount = 1} + -- } + -- }, { type = "recipe", name = "nullius-thrower-4", @@ -2728,29 +2728,29 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1}, - {type = "item", name = "express-stack-inserter", amount = 2} + {type = "item", name = "RTThrower-bulk-inserter-Item", amount = 1}, + {type = "item", name = "bob-express-bulk-inserter", amount = 2} }, results = { - {type = "item", name = "express-stack-inserter", amount = 1} - } - }, - { - type = "recipe", - name = "nullius-filter-thrower-4", - enabled = false, - always_show_made_in = true, - GCKI_ignore = true, - category = "medium-crafting", - energy_required = 3, - ingredients = { - {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, - {type = "item", name = "express-stack-filter-inserter", amount = 2} - }, - results = { - {type = "item", name = "express-stack-filter-inserter", amount = 1} + {type = "item", name = "bob-express-bulk-inserter", amount = 1} } }, + -- { + -- type = "recipe", + -- name = "nullius-filter-thrower-4", + -- enabled = false, + -- always_show_made_in = true, + -- GCKI_ignore = true, + -- category = "medium-crafting", + -- energy_required = 3, + -- ingredients = { + -- {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, + -- {type = "item", name = "express-stack-filter-inserter", amount = 2} + -- }, + -- results = { + -- {type = "item", name = "express-stack-filter-inserter", amount = 1} + -- } + -- }, { type = "recipe", name = "nullius-open-chest", @@ -2763,7 +2763,7 @@ data:extend({ {type = "item", name = "wooden-chest", amount = 1} }, results = { - {type = "item", name = "OpenContainerItem", amount = 1} + {type = "item", name = "OpenContainer", amount = 1} } }, { @@ -2778,7 +2778,7 @@ data:extend({ order = "nullius-dc", energy_required = 0.5, ingredients = { - {type = "item", name = "OpenContainerItem", amount = 1} + {type = "item", name = "OpenContainer", amount = 1} }, results = { {type = "item", name = "wooden-chest", amount = 1} @@ -2797,7 +2797,7 @@ data:extend({ {type = "item", name = "nullius-steel-rod", amount = 1} }, results = { - {type = "item", name = "HatchRTItem", amount = 1} + {type = "item", name = "HatchRT", amount = 1} } }, { @@ -2808,12 +2808,12 @@ data:extend({ category = "medium-crafting", energy_required = 2, ingredients = { - {type = "item", name = "HatchRTItem", amount = 1}, - {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, + {type = "item", name = "HatchRT", amount = 1}, + {type = "item", name = "RTThrower-bob-turbo-inserter-Item", amount = 1}, {type = "item", name = "fast-underground-belt", amount = 1} }, results = { - {type = "item", name = "RTThrower-EjectorHatchRTItem", amount = 1} + {type = "item", name = "RTThrower-EjectorHatchRT", amount = 1} } }, { @@ -2828,7 +2828,7 @@ data:extend({ {type="item", name="nullius-steel-plate", amount=2} }, results = { - {type = "item", name = "PlayerLauncherItem", amount = 1} + {type = "item", name = "PlayerLauncher", amount = 1} } }, { @@ -2844,7 +2844,7 @@ data:extend({ {type = "item", name = "nullius-steel-rod", amount = 2} }, results = { - {type = "item", name = "BouncePlateItem", amount = 1} + {type = "item", name = "RTBouncePlate", amount = 1} } }, { @@ -2855,28 +2855,28 @@ data:extend({ category = "medium-crafting", energy_required = 1, ingredients = { - {type = "item", name = "BouncePlateItem", amount = 1}, + {type = "item", name = "RTBouncePlate", amount = 1}, {type = "item", name = "stone-brick", amount = 6} }, results = { - {type = "item", name = "DirectedBouncePlateItem", amount = 1} - } - }, - { - type = "recipe", - name = "nullius-signal-bounce-plate", - enabled = false, - always_show_made_in = true, - category = "small-crafting", - energy_required = 1, - ingredients = { - {type = "item", name = "BouncePlateItem", amount = 1}, - {type = "item", name = "constant-combinator", amount = 1} - }, - results = { - {type = "item", name = "SignalBouncePlateItem", amount = 1} + {type = "item", name = "DirectedBouncePlate", amount = 1} } }, + -- { + -- type = "recipe", + -- name = "nullius-signal-bounce-plate", + -- enabled = false, + -- always_show_made_in = true, + -- category = "small-crafting", + -- energy_required = 1, + -- ingredients = { + -- {type = "item", name = "RTBouncePlate", amount = 1}, + -- {type = "item", name = "constant-combinator", amount = 1} + -- }, + -- results = { + -- {type = "item", name = "SignalBouncePlate", amount = 1} + -- } + -- }, { type = "recipe", name = "nullius-director-bounce-plate", @@ -2885,13 +2885,13 @@ data:extend({ category = "medium-crafting", energy_required = 3, ingredients = { - {type = "item", name = "DirectedBouncePlateItem", amount = 1}, + {type = "item", name = "DirectedBouncePlate", amount = 1}, {type = "item", name = "nullius-motor-2", amount = 1}, {type = "item", name = "nullius-iron-gear", amount = 3}, {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { - {type = "item", name = "DirectorBouncePlateItem", amount = 1} + {type = "item", name = "DirectorBouncePlate", amount = 1} } } }) @@ -2917,7 +2917,7 @@ data:extend({ {type = "item", name = "nullius-iron-wire", amount = 2} }, results = { - {type = "item", name = "RTZiplineItem", amount = 1} + {type = "item", name = "RTZiplineTrolley", amount = 1} } }, { @@ -2928,12 +2928,12 @@ data:extend({ category = "medium-crafting", energy_required = 6, ingredients = { - {type = "item", name = "RTZiplineItem", amount = 2}, + {type = "item", name = "RTZiplineTrolley", amount = 2}, {type = "item", name = "nullius-motor-2", amount = 3}, {type = "item", name = "nullius-steel-cable", amount = 10} }, results = { - {type = "item", name = "RTZiplineItem2", amount = 1} + {type = "item", name = "RTZiplineTrolley2", amount = 1} } }, { @@ -2944,13 +2944,13 @@ data:extend({ category = "medium-crafting", energy_required = 12, ingredients = { - {type = "item", name = "RTZiplineItem2", amount = 1}, + {type = "item", name = "RTZiplineTrolley2", amount = 1}, {type = "item", name = "nullius-locomotive-2", amount = 1}, {type = "item", name = "nullius-textile", amount = 8}, {type = "item", name = "nullius-speed-module-2", amount = 1} }, results = { - {type = "item", name = "RTZiplineItem3", amount = 1} + {type = "item", name = "RTZiplineTrolley3", amount = 1} } }, { @@ -2961,14 +2961,14 @@ data:extend({ category = "medium-crafting", energy_required = 25, ingredients = { - {type = "item", name = "RTZiplineItem3", amount = 1}, + {type = "item", name = "RTZiplineTrolley3", amount = 1}, {type = "item", name = "nullius-motor-3", amount = 4}, {type = "item", name = "nullius-carbon-composite", amount = 12}, {type = "item", name = "nullius-bearing", amount = 12}, {type = "item", name = "nullius-levitation-field-1", amount = 2} }, results = { - {type = "item", name = "RTZiplineItem4", amount = 1} + {type = "item", name = "RTZiplineTrolley4", amount = 1} } }, { @@ -2979,14 +2979,14 @@ data:extend({ category = "medium-crafting", energy_required = 50, ingredients = { - {type = "item", name = "RTZiplineItem4", amount = 2}, + {type = "item", name = "RTZiplineTrolley4", amount = 2}, {type = "item", name = "nullius-locomotive-3", amount = 1}, {type = "item", name = "nullius-titanium-rod", amount = 6}, {type = "item", name = "nullius-speed-module-3", amount = 3}, {type = "item", name = "nullius-stabilizer-1", amount = 2} }, results = { - {type = "item", name = "RTZiplineItem5", amount = 1} + {type = "item", name = "RTZiplineTrolley5", amount = 1} } }, { @@ -3001,7 +3001,7 @@ data:extend({ {type = "item", name = "decider-combinator", amount = 1} }, results = { - {type = "item", name = "RTZiplineControlsItem", amount = 1} + {type = "item", name = "RTZiplineControls", amount = 1} } }, { @@ -3012,12 +3012,12 @@ data:extend({ category = "medium-crafting", energy_required = 1, ingredients = { - {type = "item", name = "RTZiplineControlsItem", amount = 1}, + {type = "item", name = "RTZiplineControls", amount = 1}, {type = "item", name = "nullius-steel-rod", amount = 1}, {type = "item", name = "nullius-steel-gear", amount = 2} }, results = { - {type = "item", name = "RTZiplineCrankControlsItem", amount = 1} + {type = "item", name = "RTZiplineCrankControls", amount = 1} } }, { @@ -3028,13 +3028,13 @@ data:extend({ category = "tiny-crafting", energy_required = 5, ingredients = { - {type = "item", name = "RTZiplineControlsItem", amount = 1}, + {type = "item", name = "RTZiplineControls", amount = 1}, {type = "item", name = "nullius-speed-module-1", amount = 1}, {type = "item", name = "programmable-speaker", amount = 1}, {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { - {type = "item", name = "RTProgrammableZiplineControlsItem", amount = 1} + {type = "item", name = "RTProgrammableZiplineControls", amount = 1} } }, { @@ -3045,13 +3045,13 @@ data:extend({ category = "large-crafting", energy_required = 15, ingredients = { - {type = "item", name = "RTProgrammableZiplineControlsItem", amount = 1}, + {type = "item", name = "RTProgrammableZiplineControls", amount = 1}, {type = "item", name = "train-stop", amount = 1}, {type = "item", name = "nullius-steel-cable", amount = 12}, {type = "item", name = "big-electric-pole", amount = 1} }, results = { - {type = "item", name = "RTZiplineTerminalItem", amount = 1} + {type = "item", name = "RTZiplineTerminal", amount = 1} } } }) @@ -3078,7 +3078,7 @@ data:extend({ {type = "item", name = "nullius-steel-beam", amount = 4} }, results = { - {type = "item", name = "RTTrainRampItem", amount = 1} + {type = "item", name = "RTTrainRamp", amount = 1} } }, { @@ -3089,13 +3089,13 @@ data:extend({ category = "large-crafting", energy_required = 6, ingredients = { - {type = "item", name = "RTTrainRampItem", amount = 1}, + {type = "item", name = "RTTrainRamp", amount = 1}, {type = "item", name = "nullius-grid-battery-1", amount = 1}, {type = "item", name = "nullius-beacon-2", amount = 1}, {type = "item", name = "nullius-levitation-field-1", amount = 4} }, results = { - {type = "item", name = "RTMagnetTrainRampItem", amount = 1} + {type = "item", name = "RTMagnetTrainRamp", amount = 1} } }, { @@ -3109,10 +3109,10 @@ data:extend({ {type = "item", name = "stone-wall", amount = 6}, {type = "item", name = "refined-concrete", amount = 30}, {type = "item", name = "nullius-steel-plate", amount = 12}, - {type = "item", name = "RTTrainDirectedBouncePlateItem", amount = 1} + {type = "item", name = "RTTrainDirectedBouncePlate", amount = 1} }, results = { - {type = "item", name = "RTImpactUnloaderItem", amount = 1} + {type = "item", name = "RTImpactUnloader", amount = 1} } }, { @@ -3124,12 +3124,12 @@ data:extend({ energy_required = 4, ingredients = { {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, - {type = "item", name = "HatchRTItem", amount = 5}, + {type = "item", name = "HatchRT", amount = 5}, {type = "item", name = "nullius-steel-gear", amount = 4}, {type = "item", name = "nullius-steel-plate", amount = 10} }, results = { - {type = "item", name = "RTImpactWagonItem", amount = 1} + {type = "item", name = "RTImpactWagon", amount = 1} } } }) @@ -3143,12 +3143,12 @@ data:extend({ category = "large-crafting", energy_required = 5, ingredients = { - {type = "item", name = "BouncePlateItem", amount = 6}, + {type = "item", name = "RTBouncePlate", amount = 6}, {type = "item", name = "nullius-textile", amount = 12}, {type = "item", name = "nullius-steel-beam", amount = 4} }, results = { - {type = "item", name = "RTTrainBouncePlateItem", amount = 1} + {type = "item", name = "RTTrainBouncePlate", amount = 1} } }, { @@ -3159,11 +3159,11 @@ data:extend({ category = "large-crafting", energy_required = 2, ingredients = { - {type = "item", name = "RTTrainBouncePlateItem", amount = 1}, - {type = "item", name = "RTTrainRampItem", amount = 1} + {type = "item", name = "RTTrainBouncePlate", amount = 1}, + {type = "item", name = "RTTrainRamp", amount = 1} }, results = { - {type = "item", name = "RTTrainDirectedBouncePlateItem", amount = 1} + {type = "item", name = "RTTrainDirectedBouncePlate", amount = 1} } } }) @@ -3181,7 +3181,7 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-1", order = "nullius-cd", - icon = "__RenaiTransportation__/graphics/tech/ThrowerTech.png", + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", icon_size = 128, effects = { { @@ -3209,7 +3209,7 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-2", order = "nullius-cf", - icon = "__RenaiTransportation__/graphics/tech/start.png", + icon = "__RenaiTransportation__/graphics/technology/start.png", icon_size = 128, effects = { { @@ -3229,7 +3229,7 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-3", order = "nullius-ci", - icon = "__RenaiTransportation__/graphics/hatch/icon.png", + icon = "__RenaiTransportation__/graphics/icons/hatch_icon.png", icon_size = 64, effects = { { @@ -3249,7 +3249,7 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-4", order = "nullius-cj", - icon = "__RenaiTransportation__/graphics/BouncePlates/BouncePlate/PlateIconn.png", + icon = "__RenaiTransportation__/graphics/technology/PrimerPlateIconn.png", icon_size = 64, effects = { { @@ -3273,17 +3273,17 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-5", order = "nullius-de", - icon = "__RenaiTransportation__/graphics/tech/ThrowerTech.png", + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", icon_size = 128, effects = { { type = "unlock-recipe", recipe = "nullius-thrower-2" }, - { - type = "unlock-recipe", - recipe = "nullius-filter-thrower-2" - } + -- { + -- type = "unlock-recipe", + -- recipe = "nullius-filter-thrower-2" + -- } }, unit = { count = 10, @@ -3300,13 +3300,13 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-6", order = "nullius-dl", - icon = "__RenaiTransportation__/graphics/BouncePlates/DirectorBouncePlate/DirectorPlateIcon.png", + icon = "__RenaiTransportation__/graphics/icons/DirectorPlateIcon.png", icon_size = 64, effects = { - { - type = "unlock-recipe", - recipe = "nullius-signal-bounce-plate" - }, + -- { + -- type = "unlock-recipe", + -- recipe = "nullius-signal-bounce-plate" + -- }, { type = "unlock-recipe", recipe = "nullius-director-bounce-plate" @@ -3330,17 +3330,17 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-7", order = "nullius-ek", - icon = "__RenaiTransportation__/graphics/tech/ThrowerTech.png", + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", icon_size = 128, effects = { { type = "unlock-recipe", recipe = "nullius-thrower-3" }, - { - type = "unlock-recipe", - recipe = "nullius-filter-thrower-3" - } + -- { + -- type = "unlock-recipe", + -- recipe = "nullius-filter-thrower-3" + -- } }, unit = { count = 400, @@ -3357,17 +3357,17 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-8", order = "nullius-fe", - icon = "__RenaiTransportation__/graphics/tech/ThrowerTech.png", + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", icon_size = 128, effects = { { type = "unlock-recipe", recipe = "nullius-thrower-4" }, - { - type = "unlock-recipe", - recipe = "nullius-filter-thrower-4" - } + -- { + -- type = "unlock-recipe", + -- recipe = "nullius-filter-thrower-4" + -- } }, unit = { count = 1200, @@ -3396,7 +3396,7 @@ data:extend({ name = "nullius-ziplining-1", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-dd", - icon = "__RenaiTransportation__/graphics/zipline/controls.png", + icon = "__RenaiTransportation__/graphics/technology/Zipline_crankcontrols.png", icon_size = 64, effects = { { @@ -3428,7 +3428,7 @@ data:extend({ name = "nullius-ziplining-2", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-dm", - icon = "__RenaiTransportation__/graphics/zipline/terminaltech.png", + icon = "__RenaiTransportation__/graphics/technology/Zipline_terminaltech.png", icon_size = 128, effects = { { @@ -3459,7 +3459,7 @@ data:extend({ name = "nullius-ziplining-3", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-em", - icon = "__RenaiTransportation__/graphics/zipline/icon.png", + icon = "__RenaiTransportation__/graphics/technology/Zipline1.png", icon_size = 64, effects = { { @@ -3484,7 +3484,7 @@ data:extend({ name = "nullius-ziplining-4", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-fh", - icon = "__RenaiTransportation__/graphics/zipline/autocontrols.png", + icon = "__RenaiTransportation__/graphics/technology/Zipline2.png", icon_size = 64, effects = { { @@ -3508,7 +3508,7 @@ data:extend({ name = "nullius-ziplining-5", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-gd", - icon = "__RenaiTransportation__/graphics/zipline/controls.png", + icon = "__RenaiTransportation__/graphics/technology/Zipline3.png", icon_size = 64, effects = { { @@ -3539,7 +3539,7 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-1", order = "nullius-dm", - icon = "__RenaiTransportation__/graphics/tech/FlyingFreight.png", + icon = "__RenaiTransportation__/graphics/technology/FlyingFreight.png", icon_size = 128, effects = { { @@ -3561,7 +3561,7 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-2", order = "nullius-eh", - icon = "__RenaiTransportation__/graphics/tech/FlyingFreightPlate.png", + icon = "__RenaiTransportation__/graphics/technology/FlyingFreightPlate.png", icon_size = 128, effects = { { @@ -3588,7 +3588,7 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-3", order = "nullius-eq", - icon = "__RenaiTransportation__/graphics/tech/Impact.png", + icon = "__RenaiTransportation__/graphics/technology/Impact.png", icon_size = 128, effects = { { @@ -3615,7 +3615,7 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-4", order = "nullius-fc", - icon = "__RenaiTransportation__/graphics/tech/MagnetFreight.png", + icon = "__RenaiTransportation__/graphics/technology/MagnetFreight.png", icon_size = 128, effects = { { diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 7a574fd..0ea54d7 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -374,11 +374,11 @@ AAILoaders.make_tier{ recipe = { ingredients = {{type = "item", name ="transport-belt", amount = 1}}, energy_required = 2 } } -data.raw["loader-1x1"]["aai-basic-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", 1} -data.raw["loader-1x1"]["aai-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", 2} -data.raw["loader-1x1"]["aai-fast-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", 3} -data.raw["loader-1x1"]["aai-express-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", 4} -data.raw["loader-1x1"]["aai-ultimate-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", 5} +data.raw["loader-1x1"]["aai-basic-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", "1"} +data.raw["loader-1x1"]["aai-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", "2"} +data.raw["loader-1x1"]["aai-fast-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", "3"} +data.raw["loader-1x1"]["aai-express-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", "4"} +data.raw["loader-1x1"]["aai-ultimate-loader"].localised_name = {"", {"entity-name.aai-loader"}, " ", "5"} data.raw["loader-1x1"]["aai-basic-loader"].localised_description = {"entity-description.nullius-loader"} data.raw["loader-1x1"]["aai-loader"].localised_description = {"entity-description.nullius-loader"} data.raw["loader-1x1"]["aai-fast-loader"].localised_description = {"entity-description.nullius-loader"} @@ -1645,19 +1645,19 @@ end if mods["UPSFriendlyNixieTubeDisplay"] then - data.raw.item["SNTD-old-nixie-tube"].order = "nullius-sh" - data.raw.item["SNTD-nixie-tube"].order = "nullius-sh" - data.raw.item["SNTD-nixie-tube-small"].order = "nullius-sh" + data.raw.item["classic-nixie-tube"].order = "nullius-sh" + data.raw.item["reinforced-nixie-tube"].order = "nullius-sh" + data.raw.item["small-reinforced-nixie-tube"].order = "nullius-sh" - data.raw.item["SNTD-old-nixie-tube"].stack_size = 50 - data.raw.item["SNTD-nixie-tube"].stack_size = 50 - data.raw.item["SNTD-nixie-tube-small"].stack_size = 50 + data.raw.item["classic-nixie-tube"].stack_size = 50 + data.raw.item["reinforced-nixie-tube"].stack_size = 50 + data.raw.item["small-reinforced-nixie-tube"].stack_size = 50 - table.insert(data.raw.technology["nullius-broadcasting-1"].prerequisites,"nullius-SNTD-nixie-tubes-reinforced") + table.insert(data.raw.technology["nullius-broadcasting-1"].prerequisites,"nullius-reinforced-nixie-tubes-reinforced") if mods["DisplayPlates"] then - data.raw.item["SNTD-old-nixie-tube"].subgroup = "display-plates" - data.raw.item["SNTD-nixie-tube-small"].subgroup = "display-plates" - data.raw.item["SNTD-nixie-tube"].subgroup = "display-plates" + data.raw.item["classic-nixie-tube"].subgroup = "display-plates" + data.raw.item["small-reinforced-nixie-tube"].subgroup = "display-plates" + data.raw.item["reinforced-nixie-tube"].subgroup = "display-plates" end end @@ -1766,34 +1766,34 @@ if settings.startup["RTThrowersSetting"].value then if (mods["bobinserters"] and (settings.startup["bobmods-inserters-more2"].value == true)) then - table.insert(data.raw.technology["more-inserters-2"].prerequisites, - "nullius-logistic-ballistics-7") + -- table.insert(data.raw.technology["more-inserters-2"].prerequisites, + -- "nullius-logistic-ballistics-7") else table.insert(data.raw.technology["nullius-inserter-capacity-1"].prerequisites, "nullius-logistic-ballistics-7") end - data.raw.item["PlayerLauncherItem"].subgroup = "nullius-renai-bounce" - data.raw.item["PlayerLauncherItem"].order = "nullius-b" - data.raw.item["HatchRTItem"].subgroup = "nullius-renai-bounce" - data.raw.item["HatchRTItem"].order = "nullius-cb" - data.raw.item["HatchRTItem"].stack_size = 100 - data.raw.item["RTThrower-EjectorHatchRTItem"].subgroup = "nullius-renai-bounce" - data.raw.item["RTThrower-EjectorHatchRTItem"].order = "nullius-cc" + data.raw.item["PlayerLauncher"].subgroup = "nullius-renai-bounce" + data.raw.item["PlayerLauncher"].order = "nullius-b" + data.raw.item["HatchRT"].subgroup = "nullius-renai-bounce" + data.raw.item["HatchRT"].order = "nullius-cb" + data.raw.item["HatchRT"].stack_size = 100 + data.raw.item["RTThrower-EjectorHatchRT"].subgroup = "nullius-renai-bounce" + data.raw.item["RTThrower-EjectorHatchRT"].order = "nullius-cc" data.raw.inserter["RTThrower-EjectorHatchRT"].order = "nullius-ucc" - data.raw.item["RTThrower-EjectorHatchRTItem"].stack_size = 100 - data.raw.item["OpenContainerItem"].subgroup = "nullius-renai-bounce" - data.raw.item["OpenContainerItem"].order = "nullius-db" - data.raw.item["OpenContainerItem"].stack_size = 100 + data.raw.item["RTThrower-EjectorHatchRT"].stack_size = 100 + data.raw.item["OpenContainer"].subgroup = "nullius-renai-bounce" + data.raw.item["OpenContainer"].order = "nullius-db" + data.raw.item["OpenContainer"].stack_size = 100 data.raw["container"]["OpenContainer"].inventory_size = 10 - data.raw.item["BouncePlateItem"].subgroup = "nullius-renai-bounce" - data.raw.item["BouncePlateItem"].order = "nullius-eb" - data.raw.item["DirectedBouncePlateItem"].subgroup = "nullius-renai-bounce" - data.raw.item["DirectedBouncePlateItem"].order = "nullius-ec" - data.raw.item["SignalBouncePlateItem"].subgroup = "nullius-renai-bounce" - data.raw.item["SignalBouncePlateItem"].order = "nullius-ed" - data.raw.item["DirectorBouncePlateItem"].subgroup = "nullius-renai-bounce" - data.raw.item["DirectorBouncePlateItem"].order = "nullius-ee" + data.raw.item["RTBouncePlate"].subgroup = "nullius-renai-bounce" + data.raw.item["RTBouncePlate"].order = "nullius-eb" + data.raw.item["DirectedBouncePlate"].subgroup = "nullius-renai-bounce" + data.raw.item["DirectedBouncePlate"].order = "nullius-ec" + -- data.raw.item["SignalBouncePlate"].subgroup = "nullius-renai-bounce" + -- data.raw.item["SignalBouncePlate"].order = "nullius-ed" + data.raw.item["DirectorBouncePlate"].subgroup = "nullius-renai-bounce" + data.raw.item["DirectorBouncePlate"].order = "nullius-ee" end if settings.startup["RTZiplineSetting"].value then @@ -1806,24 +1806,24 @@ if settings.startup["RTZiplineSetting"].value then data.raw.technology["nullius-robot-speed-5"].prerequisites = {"nullius-copper-production", "nullius-ziplining-5"} - data.raw.item["RTZiplineTerminalItem"].subgroup = "nullius-renai-zipline" - data.raw.item["RTZiplineTerminalItem"].order = "nullius-bb" - data.raw.gun["RTZiplineItem"].subgroup = "nullius-renai-zipline" - data.raw.gun["RTZiplineItem"].order = "nullius-cb" - data.raw.gun["RTZiplineItem2"].subgroup = "nullius-renai-zipline" - data.raw.gun["RTZiplineItem2"].order = "nullius-cc" - data.raw.gun["RTZiplineItem3"].subgroup = "nullius-renai-zipline" - data.raw.gun["RTZiplineItem3"].order = "nullius-cd" - data.raw.gun["RTZiplineItem4"].subgroup = "nullius-renai-zipline" - data.raw.gun["RTZiplineItem4"].order = "nullius-ce" - data.raw.gun["RTZiplineItem5"].subgroup = "nullius-renai-zipline" - data.raw.gun["RTZiplineItem5"].order = "nullius-cf" - data.raw.ammo["RTZiplineControlsItem"].subgroup = "nullius-renai-zipline" - data.raw.ammo["RTZiplineControlsItem"].order = "nullius-db" - data.raw.ammo["RTZiplineCrankControlsItem"].subgroup = "nullius-renai-zipline" - data.raw.ammo["RTZiplineCrankControlsItem"].order = "nullius-dc" - data.raw.ammo["RTProgrammableZiplineControlsItem"].subgroup = "nullius-renai-zipline" - data.raw.ammo["RTProgrammableZiplineControlsItem"].order = "nullius-dd" + data.raw.item["RTZiplineTerminal"].subgroup = "nullius-renai-zipline" + data.raw.item["RTZiplineTerminal"].order = "nullius-bb" + data.raw.gun["RTZiplineTrolley"].subgroup = "nullius-renai-zipline" + data.raw.gun["RTZiplineTrolley"].order = "nullius-cb" + data.raw.gun["RTZiplineTrolley2"].subgroup = "nullius-renai-zipline" + data.raw.gun["RTZiplineTrolley2"].order = "nullius-cc" + data.raw.gun["RTZiplineTrolley3"].subgroup = "nullius-renai-zipline" + data.raw.gun["RTZiplineTrolley3"].order = "nullius-cd" + data.raw.gun["RTZiplineTrolley4"].subgroup = "nullius-renai-zipline" + data.raw.gun["RTZiplineTrolley4"].order = "nullius-ce" + data.raw.gun["RTZiplineTrolley5"].subgroup = "nullius-renai-zipline" + data.raw.gun["RTZiplineTrolley5"].order = "nullius-cf" + data.raw.ammo["RTZiplineControls"].subgroup = "nullius-renai-zipline" + data.raw.ammo["RTZiplineControls"].order = "nullius-db" + data.raw.ammo["RTZiplineCrankControls"].subgroup = "nullius-renai-zipline" + data.raw.ammo["RTZiplineCrankControls"].order = "nullius-dc" + data.raw.ammo["RTProgrammableZiplineControls"].subgroup = "nullius-renai-zipline" + data.raw.ammo["RTProgrammableZiplineControls"].order = "nullius-dd" data.raw["electric-pole"]["RTZiplineTerminal"].minable.mining_time = 1 end @@ -1851,17 +1851,17 @@ if settings.startup["RTTrainRampSetting"].value then "nullius-freight-ballistics-1") end - data.raw.item["RTTrainRampItem"].subgroup = "nullius-renai-ramp" - data.raw.item["RTTrainRampItem"].order = "nullius-bb" - data.raw.item["RTMagnetTrainRampItem"].subgroup = "nullius-renai-ramp" - data.raw.item["RTMagnetTrainRampItem"].order = "nullius-bc" - data.raw.item["RTImpactUnloaderItem"].subgroup = "nullius-renai-ramp" - data.raw.item["RTImpactUnloaderItem"].order = "nullius-db" - data.raw.item["RTImpactWagonItem"].subgroup = "nullius-renai-ramp" - data.raw.item["RTImpactWagonItem"].order = "nullius-dc" - data.raw["simple-entity-with-owner"]["RTTrainRamp"].minable.mining_time = 0.8 - data.raw["simple-entity-with-owner"]["RTMagnetTrainRamp"].minable.mining_time = 1.2 - data.raw["simple-entity-with-owner"]["RTImpactUnloader"].minable.mining_time = 1 + data.raw.item["RTTrainRamp"].subgroup = "nullius-renai-ramp" + data.raw.item["RTTrainRamp"].order = "nullius-bb" + data.raw.item["RTMagnetTrainRamp"].subgroup = "nullius-renai-ramp" + data.raw.item["RTMagnetTrainRamp"].order = "nullius-bc" + data.raw.item["RTImpactUnloader"].subgroup = "nullius-renai-ramp" + data.raw.item["RTImpactUnloader"].order = "nullius-db" + data.raw.item["RTImpactWagon"].subgroup = "nullius-renai-ramp" + data.raw.item["RTImpactWagon"].order = "nullius-dc" + -- data.raw["simple-entity-with-owner"]["RTTrainRamp"].minable.mining_time = 0.8 + -- data.raw["simple-entity-with-owner"]["RTMagnetTrainRamp"].minable.mining_time = 1.2 + -- data.raw["simple-entity-with-owner"]["RTImpactUnloader"].minable.mining_time = 1 data.raw["cargo-wagon"]["RTImpactWagon"].inventory_size = 50 data.raw["cargo-wagon"]["RTImpactWagon"].max_health = 800 @@ -1880,14 +1880,14 @@ if settings.startup["RTTrainRampSetting"].value then } if settings.startup["RTThrowersSetting"].value then - data.raw.item["RTTrainBouncePlateItem"].subgroup = "nullius-renai-ramp" - data.raw.item["RTTrainBouncePlateItem"].order = "nullius-cb" - data.raw.item["RTTrainBouncePlateItem"].stack_size = 20 - data.raw.item["RTTrainDirectedBouncePlateItem"].subgroup = "nullius-renai-ramp" - data.raw.item["RTTrainDirectedBouncePlateItem"].order = "nullius-cc" - data.raw.item["RTTrainDirectedBouncePlateItem"].stack_size = 20 + data.raw.item["RTTrainBouncePlate"].subgroup = "nullius-renai-ramp" + data.raw.item["RTTrainBouncePlate"].order = "nullius-cb" + data.raw.item["RTTrainBouncePlate"].stack_size = 20 + data.raw.item["RTTrainDirectedBouncePlate"].subgroup = "nullius-renai-ramp" + data.raw.item["RTTrainDirectedBouncePlate"].order = "nullius-cc" + data.raw.item["RTTrainDirectedBouncePlate"].stack_size = 20 data.raw["simple-entity-with-owner"]["RTTrainBouncePlate"].minable.mining_time = 0.6 - data.raw["constant-combinator"]["RTTrainDirectedBouncePlate"].minable.mining_time = 0.8 + data.raw["simple-entity-with-owner"]["RTTrainDirectedBouncePlate"].minable.mining_time = 0.8 end end end diff --git a/nullius/prototypes/override_mod_final.lua b/nullius/prototypes/override_mod_final.lua index dfdc785..69e36fb 100644 --- a/nullius/prototypes/override_mod_final.lua +++ b/nullius/prototypes/override_mod_final.lua @@ -56,9 +56,9 @@ if settings.startup["reskins-lib-icon-tier-labeling"].value == true then "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" data.raw.item["ultimate-transport-belt"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["ultimate-underground-belt"].icons[4].icon = + data.raw.item["bob-ultimate-underground-belt"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["ultimate-underground-belt"].icons[5].icon = + data.raw.item["bob-ultimate-underground-belt"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" data.raw.item["ultimate-splitter"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" @@ -136,7 +136,7 @@ end if (mods["RenaiTransportation"] and - settings.startup["RTThrowersSetting"].value) then + settings.startup["RTThrowersSetting"].value and false) then data.raw.recipe["nullius-thrower-2"].ingredients = { {type = "item", name = "RTThrower-inserter-Item", amount = 1}, {type = "item", name = "turbo-inserter", amount = 1}, @@ -185,10 +185,10 @@ if (mods["RenaiTransportation"] and data.raw.inserter["RTThrower-inserter"].energy_per_movement = "1W" data.raw.inserter["RTThrower-inserter"].energy_source.drain = "2kW" data.raw.inserter["RTThrower-inserter"].minable.mining_time = 0.6 - data.raw.item["RTThrower-turbo-inserter-Item"].localised_name = {"entity-name.nullius-thrower", 2} + data.raw.item["RTThrower-turbo-inserter"].localised_name = {"entity-name.nullius-thrower", 2} data.raw.inserter["RTThrower-turbo-inserter"].localised_name = {"entity-name.nullius-thrower", 2} - data.raw.item["RTThrower-turbo-inserter-Item"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-turbo-inserter-Item"].order = "nullius-tcb" + data.raw.item["RTThrower-turbo-inserter"].subgroup = "nullius-renai-thrower" + data.raw.item["RTThrower-turbo-inserter"].order = "nullius-tcb" data.raw.inserter["RTThrower-turbo-inserter"].order = "nullius-tcb" data.raw.inserter["RTThrower-turbo-inserter"].rotation_speed = 0.016666667 data.raw.inserter["RTThrower-turbo-inserter"].energy_per_rotation = "56KJ" diff --git a/nullius/prototypes/recipe_book.lua b/nullius/prototypes/recipe_book.lua index 0769d95..970dbda 100644 --- a/nullius/prototypes/recipe_book.lua +++ b/nullius/prototypes/recipe_book.lua @@ -61,7 +61,7 @@ group_with(data.raw.item["ultimate-splitter"], data.raw.recipe["nullius-splitter group_with(data.raw.item["underground-belt"], data.raw.recipe["nullius-underground-belt-1"]) group_with(data.raw.item["fast-underground-belt"], data.raw.recipe["nullius-underground-belt-2"]) group_with(data.raw.item["express-underground-belt"], data.raw.recipe["nullius-underground-belt-3"]) -group_with(data.raw.item["ultimate-underground-belt"], data.raw.recipe["nullius-underground-belt-4"]) +group_with(data.raw.item["bob-ultimate-underground-belt"], data.raw.recipe["nullius-underground-belt-4"]) group_with(data.raw.item["transport-belt"], data.raw.recipe["nullius-conveyor-belt-1"]) group_with(data.raw.item["fast-transport-belt"], data.raw.recipe["nullius-conveyor-belt-2"]) group_with(data.raw.item["express-transport-belt"], data.raw.recipe["nullius-conveyor-belt-3"]) @@ -286,9 +286,9 @@ group_with(data.raw.item["steel-display"], data.raw.recipe["nullius-display-plat group_with(data.raw.item["copper-display-small"], data.raw.recipe["nullius-display-plate-small-plastic"]) group_with(data.raw.item["copper-display-medium"], data.raw.recipe["nullius-display-plate-medium-plastic"]) group_with(data.raw.item["copper-display"], data.raw.recipe["nullius-display-plate-large-plastic"]) -group_with(data.raw.item["SNTD-nixie-tube"], data.raw.recipe["nullius-SNTD-nixie-tube"]) -group_with(data.raw.item["SNTD-nixie-tube-small"], data.raw.recipe["nullius-SNTD-nixie-tube-small"]) -group_with(data.raw.item["SNTD-old-nixie-tube"], data.raw.recipe["nullius-SNTD-old-nixie-tube"]) +group_with(data.raw.item["reinforced-nixie-tube"], data.raw.recipe["nullius-reinforced-nixie-tube"]) +group_with(data.raw.item["small-reinforced-nixie-tube"], data.raw.recipe["nullius-small-reinforced-nixie-tube"]) +group_with(data.raw.item["classic-nixie-tube"], data.raw.recipe["nullius-classic-nixie-tube"]) group_with(data.raw.item["hs_holo_sign"], data.raw.recipe["nullius-holographic-sign"]) diff --git a/train-upgrader/prototypes/recipe.lua b/train-upgrader/prototypes/recipe.lua index 13043dd..214f2f8 100644 --- a/train-upgrader/prototypes/recipe.lua +++ b/train-upgrader/prototypes/recipe.lua @@ -5,7 +5,7 @@ data:extend({ enabled = false, energy_required = 5, ingredients = { - {"logistic-chest-passive-provider", 1}, + {"nullius-small-supply-chest-2", 1}, {"rail-signal", 1}, {"construction-robot", 1} }, @@ -17,7 +17,7 @@ data:extend({ enabled = false, energy_required = 4, ingredients = { - {"logistic-chest-storage", 1}, + {"nullius-small-storage-chest-2", 1}, {"rail-chain-signal", 1} }, result = "tu-receiver" From 94b35d66b685f36aa19b0be38df231ecdbeea29d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 21:04:02 +0200 Subject: [PATCH 061/236] Crash hotfix --- safefill/control.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safefill/control.lua b/safefill/control.lua index c765cf7..44a37de 100644 --- a/safefill/control.lua +++ b/safefill/control.lua @@ -118,7 +118,7 @@ local fillname = { } function entity_built(event) - local entity = event.created_entity + local entity = event.entity if (entity.name == "tile-ghost") then local tilename = entity.ghost_name local safetile = fillname[tilename] From 956a1df18b115cf8ebd14744184cffae6e70fe75 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 16 Aug 2025 21:31:53 +0200 Subject: [PATCH 062/236] Increased valve flow rate --- nullius/prototypes/entity/plumbing.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 6285653..b1d9103 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1281,7 +1281,7 @@ data:extend({ mode = "overflow", threshold = 0.25, - flow_rate = 5, + flow_rate = 200, animations = { north = { @@ -1376,7 +1376,7 @@ data:extend({ circuit_wire_max_distance = default_circuit_wire_max_distance, mode = "one-way", - flow_rate = 5, + flow_rate = 200, animations = { north = { @@ -1472,7 +1472,7 @@ data:extend({ mode = "top-up", threshold = 0.5, - flow_rate = 5, + flow_rate = 200, animations = { north = { @@ -1568,7 +1568,7 @@ data:extend({ mode = "overflow", threshold = 0.75, - flow_rate = 5, + flow_rate = 200, animations = { north = { From 11b731194e9926b79f412ccab5a7b44f2195e8a7 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 01:55:40 +0200 Subject: [PATCH 063/236] Added ability to remove waterfill by right clicking Enabled by setting --- safefill/data.lua | 16 +++++++++++++--- safefill/locale/en/safefill.cfg | 2 ++ safefill/settings.lua | 11 +++++++++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/safefill/data.lua b/safefill/data.lua index 98dfdda..67549ca 100644 --- a/safefill/data.lua +++ b/safefill/data.lua @@ -93,6 +93,14 @@ function create_waterfill(suffix, tilename, suborder, active, layer) cond = "water_layer_"..layer tile.collision_mask.layers[cond] = true end + + local minableWater = nil + if settings.startup["safefill-minable-water"].value then + minableWater = { + mining_time = 1, + result = safename + } + end data:extend({ { @@ -114,7 +122,7 @@ function create_waterfill(suffix, tilename, suborder, active, layer) { type = "tile", name = safename, - localised_name = localised, + localised_name = localised, order = "c[watersafefill]-"..tilename, collision_mask = {layers = {ground_tile = true}}, layer = data.raw.tile[tilename].layer, @@ -123,12 +131,14 @@ function create_waterfill(suffix, tilename, suborder, active, layer) empty_transitions = true }, map_color = data.raw.tile[tilename].map_color, - pollution_absorption_per_second = data.raw.tile[tilename].pollution_absorption_per_second + minable = minableWater, + pollution_absorption_per_second = data.raw.tile[tilename].pollution_absorption_per_second }, - recipe + recipe }) tile.placeable_by = {item = safename, count = 1} + tile.minable = minableWater end diff --git a/safefill/locale/en/safefill.cfg b/safefill/locale/en/safefill.cfg index 5181c36..7014c86 100644 --- a/safefill/locale/en/safefill.cfg +++ b/safefill/locale/en/safefill.cfg @@ -6,12 +6,14 @@ safefill-green-water=Green water safefill-cost=Recipe cost safefill-depth=Depths enabled safefill-water-on-water=Water on water +safefill-minable-water=Waterfill removable [mod-setting-description] safefill-green-water=Allow placement of green water and mud tiles. safefill-cost=Adjust production cost and technology prerequisites. safefill-depth=Configure the subset of supported water depths. safefill-water-on-water=Allow non-shallow water to be placed over other water. +safefill-minable-water=Allow waterfill to be removed by right click [technology-name] nullius-irrigation=Irrigation diff --git a/safefill/settings.lua b/safefill/settings.lua index ea2f4b2..dbdd2f8 100644 --- a/safefill/settings.lua +++ b/safefill/settings.lua @@ -20,13 +20,20 @@ data:extend({ name = "safefill-green-water", setting_type = "startup", default_value = true, - order = "d" + order = "d" }, { type = "bool-setting", name = "safefill-water-on-water", setting_type = "startup", default_value = true, - order = "e" + order = "e" + }, + { + type = "bool-setting", + name = "safefill-minable-water", + setting_type = "startup", + default_value = false, + order = "f" } }) From d2c4c9876e23d152fef8fd50c7690b80b3250285 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 12:59:27 +0200 Subject: [PATCH 064/236] Fixed train graphics --- nullius/prototypes/entity/train.lua | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/nullius/prototypes/entity/train.lua b/nullius/prototypes/entity/train.lua index c336371..072a553 100644 --- a/nullius/prototypes/entity/train.lua +++ b/nullius/prototypes/entity/train.lua @@ -78,7 +78,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = {0.0, -0.5}, tint = {0.62, 0.6, 0.5}, } ), @@ -93,7 +92,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = {0.0, -0.5}, } ), util.sprite_load("__base__/graphics/entity/locomotive/locomotive-shadow", @@ -106,7 +104,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = {1, 0.3} } ) } @@ -182,7 +179,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = {0.0, -0.5}, tint = {1, 0.9, 0.8}, } ), @@ -259,7 +255,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = {0.0, -0.5}, tint = {0.9, 0.95, 1} } ), @@ -329,7 +324,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = {0.0, -0.5}, tint = {0.9, 1, 0.95} } ), @@ -536,7 +530,7 @@ data:extend({ impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, sound_minimum_speed = 0.1, - + pictures = { rotated = { layers = { @@ -549,7 +543,6 @@ data:extend({ direction_count = 128, scale = 0.5, usage = "train", - shift = {0 + 0.013, -1 + 0.077}, apply_runtime_tint = true, } ), @@ -563,7 +556,6 @@ data:extend({ direction_count = 128, scale = 0.5, usage = "train", - shift = {0.875 + 0.013, 0.3125 + 0.077}, } ) } @@ -707,11 +699,14 @@ data:extend({ back_light = data.raw["artillery-wagon"]["artillery-wagon"].back_light, stand_by_light = data.raw["artillery-wagon"]["artillery-wagon"].stand_by_light, color = {r = 0.43, g = 0.23, b = 0, a = 0.5}, + cannon_barrel_pictures = data.raw["artillery-wagon"]["artillery-wagon"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_pictures, - cannon_base_shiftings = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_shiftings, cannon_barrel_recoil_shiftings = data.raw["artillery-wagon"]["artillery-wagon"].cannon_barrel_recoil_shiftings, - cannon_barrel_recoil_shiftings_load_correction_matrix = data.raw["artillery-wagon"]["artillery-wagon"].cannon_barrel_recoil_shiftings_load_correction_matrix, + cannon_base_height = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_height, + cannon_base_shift_when_vertical = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_shift_when_vertical, + cannon_base_shift_when_horizontal = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_shift_when_horizontal, + minimap_representation = data.raw["artillery-wagon"]["artillery-wagon"].minimap_representation, selected_minimap_representation = data.raw["artillery-wagon"]["artillery-wagon"].selected_minimap_representation, wheels = data.raw["artillery-wagon"]["artillery-wagon"].wheels, @@ -740,7 +735,6 @@ data:extend({ scale = 0.5, usage = "train", tint = { 0.7, 0.7, 0.9 }, - shift = util.by_pixel(0, -27), } ), util.sprite_load("__base__/graphics/entity/artillery-wagon/artillery-wagon-base", @@ -752,7 +746,6 @@ data:extend({ direction_count = 256, scale = 0.5, usage = "train", - shift = util.by_pixel(0.5, -27.5), tint = { 0.7, 0.7, 0.9 } } ), @@ -802,12 +795,15 @@ data:extend({ back_light = data.raw["artillery-wagon"]["artillery-wagon"].back_light, stand_by_light = data.raw["artillery-wagon"]["artillery-wagon"].stand_by_light, color = {r = 0.43, g = 0.23, b = 0, a = 0.5}, + pictures = data.raw["artillery-wagon"]["artillery-wagon"].pictures, cannon_barrel_pictures = data.raw["artillery-wagon"]["artillery-wagon"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_pictures, - cannon_base_shiftings = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_shiftings, cannon_barrel_recoil_shiftings = data.raw["artillery-wagon"]["artillery-wagon"].cannon_barrel_recoil_shiftings, - cannon_barrel_recoil_shiftings_load_correction_matrix = data.raw["artillery-wagon"]["artillery-wagon"].cannon_barrel_recoil_shiftings_load_correction_matrix, + cannon_base_height = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_height, + cannon_base_shift_when_vertical = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_shift_when_vertical, + cannon_base_shift_when_horizontal = data.raw["artillery-wagon"]["artillery-wagon"].cannon_base_shift_when_horizontal, + minimap_representation = data.raw["artillery-wagon"]["artillery-wagon"].minimap_representation, selected_minimap_representation = data.raw["artillery-wagon"]["artillery-wagon"].selected_minimap_representation, wheels = data.raw["artillery-wagon"]["artillery-wagon"].wheels, From d443faebf9911c63718fdd43c336d602646cb348 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 13:38:54 +0200 Subject: [PATCH 065/236] Fixed pipe graphics --- nullius/data.lua | 2 +- nullius/prototypes/entity/pipe_graphics.lua | 62 +++++++++++++++++++++ nullius/prototypes/entity/plumbing.lua | 50 ++++++++++------- nullius/prototypes/override.lua | 3 + 4 files changed, 97 insertions(+), 20 deletions(-) diff --git a/nullius/data.lua b/nullius/data.lua index f53556f..fc563a1 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -49,4 +49,4 @@ require("prototypes.yafc") require("prototypes.inputs") require("prototypes.achievements") -data.raw["map-settings"]["map-settings"].pollution.enabled = false \ No newline at end of file +data.raw["map-settings"]["map-settings"].pollution.enabled = false diff --git a/nullius/prototypes/entity/pipe_graphics.lua b/nullius/prototypes/entity/pipe_graphics.lua index 6306b25..5a93181 100644 --- a/nullius/prototypes/entity/pipe_graphics.lua +++ b/nullius/prototypes/entity/pipe_graphics.lua @@ -3,6 +3,32 @@ local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" +--- @param i integer +local function make_visualization(i) + return + { + filename = BASEENTITY.."pipe/visualization.png", + priority = "extra-high", + x = i * 64, + size = 64, + scale = 0.5, + flags = {"icon"}, + } +end + +--- @param i integer +local function make_disabled_visualization(i) + return + { + filename = BASEENTITY.."pipe/disabled-visualization.png", + priority = "extra-high", + x = i * 64, + size = 64, + scale = 0.5, + flags = {"icon"}, + } +end + function pipepics(dir) return { @@ -132,6 +158,42 @@ function pipepics(dir) height = 128, scale = 0.5 }, + straight_vertical_single_visualization = make_visualization(0), + straight_vertical_visualization = make_visualization(5), + straight_vertical_window_visualization = make_visualization(5), + straight_horizontal_window_visualization = make_visualization(10), + straight_horizontal_visualization = make_visualization(10), + corner_up_right_visualization = make_visualization(3), + corner_up_left_visualization = make_visualization(9), + corner_down_right_visualization = make_visualization(6), + corner_down_left_visualization = make_visualization(12), + t_up_visualization = make_visualization(11), + t_down_visualization = make_visualization(14), + t_right_visualization = make_visualization(7), + t_left_visualization = make_visualization(13), + cross_visualization = make_visualization(15), + ending_up_visualization = make_visualization(1), + ending_down_visualization = make_visualization(4), + ending_right_visualization = make_visualization(2), + ending_left_visualization = make_visualization(8), + straight_vertical_single_disabled_visualization = make_disabled_visualization(0), + straight_vertical_disabled_visualization = make_disabled_visualization(5), + straight_vertical_window_disabled_visualization = make_disabled_visualization(5), + straight_horizontal_window_disabled_visualization = make_disabled_visualization(10), + straight_horizontal_disabled_visualization = make_disabled_visualization(10), + corner_up_right_disabled_visualization = make_disabled_visualization(3), + corner_up_left_disabled_visualization = make_disabled_visualization(9), + corner_down_right_disabled_visualization = make_disabled_visualization(6), + corner_down_left_disabled_visualization = make_disabled_visualization(12), + t_up_disabled_visualization = make_disabled_visualization(11), + t_down_disabled_visualization = make_disabled_visualization(14), + t_right_disabled_visualization = make_disabled_visualization(7), + t_left_disabled_visualization = make_disabled_visualization(13), + cross_disabled_visualization = make_disabled_visualization(15), + ending_up_disabled_visualization = make_disabled_visualization(1), + ending_down_disabled_visualization = make_disabled_visualization(4), + ending_right_disabled_visualization = make_disabled_visualization(2), + ending_left_disabled_visualization = make_disabled_visualization(8), horizontal_window_background = { filename = dir.."pipe-horizontal-window-background.png", priority = "extra-high", diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index b1d9103..6d18754 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -3183,6 +3183,7 @@ data:extend({ localised_description = {"entity-description.nullius-pipe", tostring(60), tostring(4360), tostring(1260)}, icons = data.raw.item["nullius-pipe-2"].icons, flags = {"placeable-neutral", "player-creation"}, + icon_draw_specification = {scale = 0.5}, minable = {mining_time = 0.3, result = "nullius-pipe-2"}, max_health = 150, corpse = "pipe-remnants", @@ -3198,12 +3199,14 @@ data:extend({ damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { volume = 400, + pipe_covers = pipecoverspictures(), -- in case a real pipe is connected to a ghost pipe_connections = { - { position = {0, -0.1}, direction = defines.direction.north }, - { position = {0.1, 0}, direction = defines.direction.east }, - { position = {0, 0.1}, direction = defines.direction.south }, - { position = {-0.1, 0}, direction = defines.direction.west } - } + { position = {0, 0}, direction = defines.direction.north }, + { position = {0, 0}, direction = defines.direction.east }, + { position = {0, 0}, direction = defines.direction.south }, + { position = {0, 0}, direction = defines.direction.west } + }, + hide_connection_info = true }, impact_category = data.raw["pipe"]["pipe"].impact_category, working_sound = data.raw["pipe"]["pipe"].working_sound, @@ -3215,9 +3218,10 @@ data:extend({ { type = "pipe", name = "nullius-pipe-3", - localised_description = {"entity-description.nullius-pipe", tostring(80), tostring(5370), tostring(4260)}, + localised_description = {"entity-description.nullius-pipe", tostring(80), tostring(5370), tostring(4260)}, icons = data.raw.item["nullius-pipe-3"].icons, flags = {"placeable-neutral", "player-creation"}, + icon_draw_specification = {scale = 0.5}, minable = {mining_time = 0.4, result = "nullius-pipe-3"}, max_health = 200, corpse = "pipe-remnants", @@ -3233,26 +3237,29 @@ data:extend({ damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { volume = 400, + pipe_covers = pipecoverspictures(), -- in case a real pipe is connected to a ghost pipe_connections = { - { position = {0, -0.1}, direction = defines.direction.north }, - { position = {0.1, 0}, direction = defines.direction.east }, - { position = {0, 0.1}, direction = defines.direction.south }, - { position = {-0.1, 0}, direction = defines.direction.west } - } + { position = {0, 0}, direction = defines.direction.north }, + { position = {0, 0}, direction = defines.direction.east }, + { position = {0, 0}, direction = defines.direction.south }, + { position = {0, 0}, direction = defines.direction.west } + }, + hide_connection_info = true }, impact_category = data.raw["pipe"]["pipe"].impact_category, working_sound = data.raw["pipe"]["pipe"].working_sound, horizontal_window_bounding_box = {{-0.25, -0.25}, {0.25, 0.15625}}, vertical_window_bounding_box = {{-0.28125, -0.40625}, {0.03125, 0.125}}, - pictures = data.raw["pipe"]["bob-plastic-pipe"].pictures + pictures = pipepics("__boblogistics__/graphics/entity/pipe/plastic/") }, { type = "pipe", name = "nullius-pipe-4", - localised_description = {"entity-description.nullius-pipe", tostring(100), tostring(6720), tostring(5180)}, + localised_description = {"entity-description.nullius-pipe", tostring(100), tostring(6720), tostring(5180)}, icons = data.raw.item["nullius-pipe-4"].icons, flags = {"placeable-neutral", "player-creation"}, + icon_draw_specification = {scale = 0.5}, minable = {mining_time = 0.5, result = "nullius-pipe-4"}, max_health = 250, corpse = "pipe-remnants", @@ -3267,12 +3274,14 @@ data:extend({ damaged_trigger_effect = data.raw["pipe"]["pipe"].damaged_trigger_effect, fluid_box = { volume = 400, + pipe_covers = pipecoverspictures(), -- in case a real pipe is connected to a ghost pipe_connections = { - { position = {0, -0.1}, direction = defines.direction.north }, - { position = {0.1, 0}, direction = defines.direction.east }, - { position = {0, 0.1}, direction = defines.direction.south }, - { position = {-0.1, 0}, direction = defines.direction.west } - } + { position = {0, 0}, direction = defines.direction.north }, + { position = {0, 0}, direction = defines.direction.east }, + { position = {0, 0}, direction = defines.direction.south }, + { position = {0, 0}, direction = defines.direction.west } + }, + hide_connection_info = true }, impact_category = data.raw["pipe"]["pipe"].impact_category, working_sound = data.raw["pipe"]["pipe"].working_sound, @@ -3287,6 +3296,7 @@ data:extend({ localised_description = {"entity-description.nullius-underground-pipe", tostring(60)}, icons = data.raw.item["nullius-underground-pipe-2"].icons, flags = {"placeable-neutral", "player-creation"}, + icon_draw_specification = {scale = 0.5}, minable = {mining_time = 0.6, result = "nullius-underground-pipe-2"}, max_health = 200, corpse = "pipe-to-ground-remnants", @@ -3323,9 +3333,10 @@ data:extend({ { type = "pipe-to-ground", name = "nullius-underground-pipe-3", - localised_description = {"entity-description.nullius-underground-pipe", tostring(80)}, + localised_description = {"entity-description.nullius-underground-pipe", tostring(80)}, icons = data.raw.item["nullius-underground-pipe-3"].icons, flags = {"placeable-neutral", "player-creation"}, + icon_draw_specification = {scale = 0.5}, minable = {mining_time = 0.8, result = "nullius-underground-pipe-3"}, max_health = 250, corpse = "pipe-to-ground-remnants", @@ -3365,6 +3376,7 @@ data:extend({ localised_description = {"entity-description.nullius-underground-pipe", tostring(100)}, icons = data.raw.item["nullius-underground-pipe-4"].icons, flags = {"placeable-neutral", "player-creation"}, + icon_draw_specification = {scale = 0.5}, minable = {mining_time = 1, result = "nullius-underground-pipe-4"}, max_health = 300, corpse = "pipe-to-ground-remnants", diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 5a78bb7..553f8b5 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -832,6 +832,9 @@ data.raw["pipe"]["pipe"].resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 20, percent = 50 } } +data.raw["pipe"]["pipe"].pictures = pipepics("__boblogistics__/graphics/entity/pipe/iron/") + + data.raw["pipe-to-ground"]["pipe-to-ground"].resistances = data.raw["pipe"]["pipe"].resistances data.raw["pipe-to-ground"]["pipe-to-ground"].collision_box = From 90d57c090e09181cc9921465a52f21fc9f058c30 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 14:03:39 +0200 Subject: [PATCH 066/236] Fixed grid battery graphics --- nullius/prototypes/entity/energy.lua | 162 ++++++++++++++------------- 1 file changed, 85 insertions(+), 77 deletions(-) diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 711071e..f2a3e9c 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -13,7 +13,7 @@ function accumulator_picture(tint, repeat_count) width = 130, height = 189, repeat_count = repeat_count, - shift = util.by_pixel(0, -16.5), + shift = util.by_pixel(0, -11), tint = tint, animation_speed = 0.5, scale = 0.75 @@ -24,7 +24,7 @@ function accumulator_picture(tint, repeat_count) width = 234, height = 106, repeat_count = repeat_count, - shift = util.by_pixel(43.5, 9), + shift = util.by_pixel(29, 6), draw_as_shadow = true, scale = 0.75 } @@ -222,11 +222,11 @@ data:extend({ filename = BASEENTITY .. "accumulator/accumulator-charge.png", priority = "high", width = 178, - height = 206, + height = 210, line_length = 6, frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(0, -33), + draw_as_glow = true, + shift = util.by_pixel(1, -20), scale = 0.75 } } @@ -239,12 +239,12 @@ data:extend({ { filename = BASEENTITY .. "accumulator/accumulator-discharge.png", priority = "high", - width = 170, - height = 210, + width = 174, + height = 214, line_length = 6, frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(-1.5, -34.5), + draw_as_glow = true, + shift = util.by_pixel(-1, -21), scale = 0.75 } } @@ -281,43 +281,47 @@ data:extend({ output_flow_limit = "800kW" }, resistances = { { type = "impact", decrease = 100, percent = 90 } }, - picture = accumulator_picture({ r=1, g=1, b=1, a=1 }), - charge_animation = { - layers = { - accumulator_picture({ r=1, g=1, b=1, a=1 } , 24), - { - filename = BASEENTITY .. "accumulator/accumulator-charge.png", - priority = "high", - width = 178, - height = 206, - line_length = 6, - frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(0, -33), - scale = 0.75 + + chargable_graphics = { + picture = accumulator_picture({ r=1, g=1, b=1, a=1 }), + charge_animation = { + layers = { + accumulator_picture({ r=1, g=1, b=1, a=1 } , 24), + { + filename = BASEENTITY .. "accumulator/accumulator-charge.png", + priority = "high", + width = 178, + height = 210, + line_length = 6, + frame_count = 24, + draw_as_glow = true, + shift = util.by_pixel(1, -20), + scale = 0.75 + } } - } - }, - charge_cooldown = 30, - charge_light = {intensity = 0.3, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, - discharge_animation = { - layers = { - accumulator_picture({ r=1, g=1, b=1, a=1 } , 24), - { - filename = BASEENTITY .. "accumulator/accumulator-discharge.png", - priority = "high", - width = 170, - height = 210, - line_length = 6, - frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(-1.5, -34.5), - scale = 0.75 + }, + charge_cooldown = 30, + charge_light = {intensity = 0.3, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, + discharge_animation = { + layers = { + accumulator_picture({ r=1, g=1, b=1, a=1 } , 24), + { + filename = BASEENTITY .. "accumulator/accumulator-discharge.png", + priority = "high", + width = 174, + height = 214, + line_length = 6, + frame_count = 24, + draw_as_glow = true, + shift = util.by_pixel(-1, -21), + scale = 0.75 + } } - } + }, + discharge_cooldown = 60, + discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, }, - discharge_cooldown = 60, - discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, + impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, @@ -346,43 +350,47 @@ data:extend({ output_flow_limit = "1.5MW" }, resistances = { { type = "impact", decrease = 100, percent = 90 } }, - picture = accumulator_picture({ r=1, g=0.85, b=1, a=1 }), - charge_animation = { - layers = { - accumulator_picture({ r=1, g=0.85, b=1, a=1 } , 24), - { - filename = BASEENTITY .. "accumulator/accumulator-charge.png", - priority = "high", - width = 178, - height = 206, - line_length = 6, - frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(0, -33), - scale = 0.75 + + chargable_graphics = { + picture = accumulator_picture({ r=1, g=0.85, b=1, a=1 }), + charge_animation = { + layers = { + accumulator_picture({ r=1, g=0.85, b=1, a=1 } , 24), + { + filename = BASEENTITY .. "accumulator/accumulator-charge.png", + priority = "high", + width = 178, + height = 210, + line_length = 6, + frame_count = 24, + draw_as_glow = true, + shift = util.by_pixel(1, -20), + scale = 0.75 + } } - } - }, - charge_cooldown = 30, - charge_light = {intensity = 0.3, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, - discharge_animation = { - layers = { - accumulator_picture({ r=1, g=0.85, b=1, a=1 } , 24), - { - filename = BASEENTITY .. "accumulator/accumulator-discharge.png", - priority = "high", - width = 170, - height = 210, - line_length = 6, - frame_count = 24, - blend_mode = "additive", - shift = util.by_pixel(-1.5, -34.5), - scale = 0.75 + }, + charge_cooldown = 30, + charge_light = {intensity = 0.3, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, + discharge_animation = { + layers = { + accumulator_picture({ r=1, g=0.85, b=1, a=1 } , 24), + { + filename = BASEENTITY .. "accumulator/accumulator-discharge.png", + priority = "high", + width = 174, + height = 214, + line_length = 6, + frame_count = 24, + draw_as_glow = true, + shift = util.by_pixel(-1, -21), + scale = 0.75 + } } - } + }, + discharge_cooldown = 60, + discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, }, - discharge_cooldown = 60, - discharge_light = {intensity = 0.7, size = 7, color = {r = 1.0, g = 1.0, b = 1.0}}, + impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, From 7017c02d706ed6ffe90b60308e3c639c705e095f Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 14:17:24 +0200 Subject: [PATCH 067/236] Fixed inconsistency in ingredients --- train-upgrader/prototypes/recipe.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/train-upgrader/prototypes/recipe.lua b/train-upgrader/prototypes/recipe.lua index 214f2f8..e6bedc2 100644 --- a/train-upgrader/prototypes/recipe.lua +++ b/train-upgrader/prototypes/recipe.lua @@ -3,9 +3,9 @@ data:extend({ type = "recipe", name = "tu-supplier", enabled = false, - energy_required = 5, - ingredients = { - {"nullius-small-supply-chest-2", 1}, + energy_required = 5, + ingredients = { + {"passive-provider-chest", 1}, {"rail-signal", 1}, {"construction-robot", 1} }, @@ -15,9 +15,9 @@ data:extend({ type = "recipe", name = "tu-receiver", enabled = false, - energy_required = 4, + energy_required = 4, ingredients = { - {"nullius-small-storage-chest-2", 1}, + {"storage-chest", 1}, {"rail-chain-signal", 1} }, result = "tu-receiver" From 133a53f73f4c36fb24574ae4bcc73f47074b1034 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 15:00:02 +0200 Subject: [PATCH 068/236] Nixie tubes - Fixed locale, hid some internal objects, add the dependency in info.json --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 11 +++++++---- nullius/prototypes/override_mod.lua | 16 ++++++++++------ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 32a51b2..40749aa 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -21,6 +21,7 @@ "(?) boblibrary >= 1.1.4", "(?) IRobot >= 1.1.0", "(?) jetpack >= 0.3.14", + "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index a58f309..b707378 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -528,7 +528,7 @@ data:extend({ {type="item", name="express-filter-miniloader", amount=1}, {type="item", name="storage-chest", amount=1}, {type="item", name="bob-ultimate-underground-belt", amount=1}, - {type="item", name="express-stack-filter-inserter", amount=2} + {type="item", name="express-stack-filter-inserter", amount=2} -- TODO: rename this ?? }, results = { {type = "item", name = "ultimate-filter-miniloader", amount = 1} @@ -2105,6 +2105,7 @@ if mods["UPSFriendlyNixieTubeDisplay"] then { type = "recipe", name = "nullius-classic-nixie-tube", + localised_name = {"entity-name.classic-nixie-tube"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -2122,6 +2123,7 @@ if mods["UPSFriendlyNixieTubeDisplay"] then { type = "recipe", name = "nullius-reinforced-nixie-tube", + localised_name = {"entity-name.reinforced-nixie-tube"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2137,13 +2139,14 @@ if mods["UPSFriendlyNixieTubeDisplay"] then { type = "recipe", name = "nullius-small-reinforced-nixie-tube", + localised_name = {"entity-name.small-reinforced-nixie-tube"}, enabled = false, always_show_made_in = true, category = "small-crafting", energy_required = 3, ingredients = { {type = "item", name = "classic-nixie-tube", amount = 1}, - {type = "item", name = "nullius-green-wire", amount = 2}, + {type = "item", name = "nullius-green-wire", amount = 2}, {type = "item", name = "iron-chest", amount = 1} }, results = { @@ -2672,7 +2675,7 @@ data:extend({ }, -- { -- type = "recipe", - -- name = "nullius-filter-thrower-2", + -- name = "nullius-filter-thrower-2", -- TODO: no filter thrower-1 ?? -- enabled = false, -- always_show_made_in = true, -- GCKI_ignore = true, @@ -2864,7 +2867,7 @@ data:extend({ }, -- { -- type = "recipe", - -- name = "nullius-signal-bounce-plate", + -- name = "nullius-signal-bounce-plate", -- TODO: what happened there ? -- enabled = false, -- always_show_made_in = true, -- category = "small-crafting", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 0ea54d7..5a518d7 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -1652,13 +1652,17 @@ if mods["UPSFriendlyNixieTubeDisplay"] then data.raw.item["classic-nixie-tube"].stack_size = 50 data.raw.item["reinforced-nixie-tube"].stack_size = 50 data.raw.item["small-reinforced-nixie-tube"].stack_size = 50 + + data.raw["arithmetic-combinator"]["classic-nixie-tube-sprite"].hidden_in_factoriopedia = true + data.raw["arithmetic-combinator"]["reinforced-nixie-tube-sprite"].hidden_in_factoriopedia = true + data.raw["arithmetic-combinator"]["small-reinforced-nixie-tube-sprite"].hidden_in_factoriopedia = true table.insert(data.raw.technology["nullius-broadcasting-1"].prerequisites,"nullius-reinforced-nixie-tubes-reinforced") -if mods["DisplayPlates"] then - data.raw.item["classic-nixie-tube"].subgroup = "display-plates" - data.raw.item["small-reinforced-nixie-tube"].subgroup = "display-plates" - data.raw.item["reinforced-nixie-tube"].subgroup = "display-plates" -end + if mods["DisplayPlates"] then + data.raw.item["classic-nixie-tube"].subgroup = "display-plates" + data.raw.item["small-reinforced-nixie-tube"].subgroup = "display-plates" + data.raw.item["reinforced-nixie-tube"].subgroup = "display-plates" + end end @@ -1766,7 +1770,7 @@ if settings.startup["RTThrowersSetting"].value then if (mods["bobinserters"] and (settings.startup["bobmods-inserters-more2"].value == true)) then - -- table.insert(data.raw.technology["more-inserters-2"].prerequisites, + -- table.insert(data.raw.technology["more-inserters-2"].prerequisites, -- TODO: wtf -- "nullius-logistic-ballistics-7") else table.insert(data.raw.technology["nullius-inserter-capacity-1"].prerequisites, From 2da5807adb2dcd0b854e07db41b2ffb7ef9269f8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 15:39:40 +0200 Subject: [PATCH 069/236] aai-loaders - Fixed locale, hid junk in factoriopedia, added optional dependency in info.json --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 21 +++++++++++++-------- nullius/prototypes/override_mod.lua | 1 + 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 40749aa..fd536a5 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -22,6 +22,7 @@ "(?) IRobot >= 1.1.0", "(?) jetpack >= 0.3.14", "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", + "(?) aai-loaders >= 0.2.7", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index b707378..9c7839f 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -545,7 +545,7 @@ data:extend({ type = "technology", name = "nullius-loader-1", order = "nullius-ce", - localised_description = {"technology-description.nullius-miniloader"}, + localised_description = {"technology-description.nullius-miniloader"}, effects = {{type = "unlock-recipe", recipe = "nullius-loader-1"}}, unit = { count = 3, @@ -562,7 +562,7 @@ data:extend({ type = "technology", name = "nullius-loader-2", order = "nullius-ck", - localised_description = {"technology-description.nullius-miniloader"}, + localised_description = {"technology-description.nullius-miniloader"}, effects = {{type = "unlock-recipe", recipe = "nullius-loader-2"}}, unit = { count = 25, @@ -579,8 +579,8 @@ data:extend({ type = "technology", name = "nullius-loader-3", order = "nullius-dg", - localised_description = {"technology-description.nullius-miniloader"}, - effects = {{type = "unlock-recipe", recipe = "nullius-loader-3"}}, + localised_description = {"technology-description.nullius-miniloader"}, + effects = {{type = "unlock-recipe", recipe = "nullius-loader-3"}}, unit = { count = 50, ingredients = { @@ -595,8 +595,8 @@ data:extend({ type = "technology", name = "nullius-loader-4", order = "nullius-ek", - localised_description = {"technology-description.nullius-miniloader"}, - effects = {{type = "unlock-recipe", recipe = "nullius-loader-4"}}, + localised_description = {"technology-description.nullius-miniloader"}, + effects = {{type = "unlock-recipe", recipe = "nullius-loader-4"}}, unit = { count = 1000, ingredients = { @@ -612,8 +612,8 @@ data:extend({ type = "technology", name = "nullius-loader-5", order = "nullius-fo", - localised_description = {"technology-description.nullius-miniloader"}, - effects = {{type = "unlock-recipe", recipe = "nullius-loader-5"}}, + localised_description = {"technology-description.nullius-miniloader"}, + effects = {{type = "unlock-recipe", recipe = "nullius-loader-5"}}, unit = { count = 3000, ingredients = { @@ -631,6 +631,7 @@ data:extend({ { type = "recipe", name = "nullius-loader-1", + localised_name = {"entity-name.aai-basic-loader"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -646,6 +647,7 @@ data:extend({ { type = "recipe", name = "nullius-loader-2", + localised_name = {"entity-name.aai-loader"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -663,6 +665,7 @@ data:extend({ { type = "recipe", name = "nullius-loader-3", + localised_name = {"entity-name.aai-fast-loader"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -680,6 +683,7 @@ data:extend({ { type = "recipe", name = "nullius-loader-4", + localised_name = {"entity-name.aai-express-loader"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -697,6 +701,7 @@ data:extend({ { type = "recipe", name = "nullius-loader-5", + localised_name = {"entity-name.aai-ultimate-loader"}, enabled = false, always_show_made_in = true, category = "medium-crafting", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 5a518d7..1bd4008 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -440,6 +440,7 @@ data.raw.technology["nullius-loader-5"].icons = data.raw.technology["aai-ultimat if (data.raw["loader-1x1"]["aai-turbo-loader"] ~= nil) then data.raw["loader-1x1"]["aai-turbo-loader"].next_upgrade = nil +data.raw["loader-1x1"]["aai-turbo-loader"].hidden_in_factoriopedia = true end table.insert(data.raw.technology["nullius-mechanical-separation"].prerequisites,"nullius-loader-1") From 6d86efa929a82826ecabd2b5fca7d35aa85d34b0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 20:39:44 +0200 Subject: [PATCH 070/236] renai-transportation - Fixed locale, hid junk in factoriopedia, added optional dependency in info.json, fixed icons, fixed buggy code for throwers --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 239 +++++++++------------- nullius/prototypes/override_mod.lua | 14 +- nullius/prototypes/override_mod_final.lua | 173 +++++++--------- 4 files changed, 181 insertions(+), 246 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index fd536a5..37017ab 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -23,6 +23,7 @@ "(?) jetpack >= 0.3.14", "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", "(?) aai-loaders >= 0.2.7", + "(?) RenaiTransportation >= 2.2.4", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 9c7839f..aca6fe4 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -2648,9 +2648,10 @@ data:extend({ { type = "recipe", name = "nullius-thrower-1", + localised_name = {"entity-name.nullius-thrower", tostring(1)}, enabled = false, always_show_made_in = true, - GCKI_ignore = true, + GCKI_ignore = true, category = "medium-crafting", energy_required = 3, ingredients = { @@ -2664,9 +2665,10 @@ data:extend({ { type = "recipe", name = "nullius-thrower-2", + localised_name = {"entity-name.nullius-thrower", tostring(2)}, enabled = false, always_show_made_in = true, - GCKI_ignore = true, + GCKI_ignore = true, category = "medium-crafting", energy_required = 2, ingredients = { @@ -2678,29 +2680,13 @@ data:extend({ {type = "item", name = "bob-turbo-inserter", amount = 1} } }, - -- { - -- type = "recipe", - -- name = "nullius-filter-thrower-2", -- TODO: no filter thrower-1 ?? - -- enabled = false, - -- always_show_made_in = true, - -- GCKI_ignore = true, - -- category = "medium-crafting", - -- energy_required = 2, - -- ingredients = { - -- {type = "item", name = "RTThrower-inserter-Item", amount = 1}, - -- {type = "item", name = "bob-turbo-filter-inserter", amount = 1}, - -- {type = "item", name = "nullius-motor-2", amount = 1} - -- }, - -- results = { - -- {type = "item", name = "bob-turbo-filter-inserter", amount = 1} - -- } - -- }, { type = "recipe", name = "nullius-thrower-3", + localised_name = {"entity-name.nullius-thrower", tostring(3)}, enabled = false, always_show_made_in = true, - GCKI_ignore = true, + GCKI_ignore = true, category = "medium-crafting", energy_required = 2, ingredients = { @@ -2711,28 +2697,13 @@ data:extend({ {type = "item", name = "bulk-inserter", amount = 1} } }, - -- { - -- type = "recipe", - -- name = "nullius-filter-thrower-3", - -- enabled = false, - -- always_show_made_in = true, - -- GCKI_ignore = true, - -- category = "medium-crafting", - -- energy_required = 2, - -- ingredients = { - -- {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, - -- {type = "item", name = "stack-filter-inserter", amount = 2} - -- }, - -- results = { - -- {type = "item", name = "stack-filter-inserter", amount = 1} - -- } - -- }, { type = "recipe", name = "nullius-thrower-4", + localised_name = {"entity-name.nullius-thrower", tostring(4)}, enabled = false, always_show_made_in = true, - GCKI_ignore = true, + GCKI_ignore = true, category = "medium-crafting", energy_required = 3, ingredients = { @@ -2743,25 +2714,10 @@ data:extend({ {type = "item", name = "bob-express-bulk-inserter", amount = 1} } }, - -- { - -- type = "recipe", - -- name = "nullius-filter-thrower-4", - -- enabled = false, - -- always_show_made_in = true, - -- GCKI_ignore = true, - -- category = "medium-crafting", - -- energy_required = 3, - -- ingredients = { - -- {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, - -- {type = "item", name = "express-stack-filter-inserter", amount = 2} - -- }, - -- results = { - -- {type = "item", name = "express-stack-filter-inserter", amount = 1} - -- } - -- }, { type = "recipe", name = "nullius-open-chest", + localised_name = {"entity-name.OpenContainer"}, enabled = false, always_show_made_in = true, no_productivity = true, @@ -2782,8 +2738,8 @@ data:extend({ always_show_made_in = true, no_productivity = true, category = "medium-crafting", - subgroup = "nullius-renai-bounce", - order = "nullius-dc", + subgroup = "nullius-renai-bounce", + order = "nullius-dc", energy_required = 0.5, ingredients = { {type = "item", name = "OpenContainer", amount = 1} @@ -2795,13 +2751,14 @@ data:extend({ { type = "recipe", name = "nullius-hatch", + localised_name = {"entity-name.HatchRT"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 2, ingredients = { {type = "item", name = "nullius-underground-pipe-2", amount = 1}, - {type = "item", name = "nullius-priority-valve", amount = 1}, + {type = "item", name = "nullius-priority-valve", amount = 1}, {type = "item", name = "nullius-steel-rod", amount = 1} }, results = { @@ -2811,6 +2768,7 @@ data:extend({ { type = "recipe", name = "nullius-ejector-hatch", + localised_name = {"entity-name.RTThrower-EjectorHatchRT"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2827,6 +2785,7 @@ data:extend({ { type = "recipe", name = "nullius-player-thrower", + localised_name = {"entity-name.PlayerLauncher"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2842,6 +2801,7 @@ data:extend({ { type = "recipe", name = "nullius-bounce-plate", + localised_name = {"entity-name.RTBouncePlate"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2858,6 +2818,7 @@ data:extend({ { type = "recipe", name = "nullius-directed-bounce-plate", + localised_name = {"entity-name.DirectedBouncePlate"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2872,7 +2833,7 @@ data:extend({ }, -- { -- type = "recipe", - -- name = "nullius-signal-bounce-plate", -- TODO: what happened there ? + -- name = "nullius-signal-bounce-plate", -- Recently removed by the original mod -- enabled = false, -- always_show_made_in = true, -- category = "small-crafting", @@ -2888,6 +2849,7 @@ data:extend({ { type = "recipe", name = "nullius-director-bounce-plate", + localised_name = {"entity-name.DirectorBouncePlate"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -2916,13 +2878,14 @@ data:extend({ { type = "recipe", name = "nullius-zipline-trolley", + localised_name = {"item-name.RTZiplineTrolley"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 3, ingredients = { {type = "item", name = "nullius-locomotive-1", amount = 1}, - {type = "item", name = "nullius-iron-wire", amount = 2} + {type = "item", name = "nullius-iron-wire", amount = 2} }, results = { {type = "item", name = "RTZiplineTrolley", amount = 1} @@ -2931,14 +2894,15 @@ data:extend({ { type = "recipe", name = "nullius-zipline-trolley-2", + localised_name = {"item-name.RTZiplineTrolley2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 6, ingredients = { {type = "item", name = "RTZiplineTrolley", amount = 2}, - {type = "item", name = "nullius-motor-2", amount = 3}, - {type = "item", name = "nullius-steel-cable", amount = 10} + {type = "item", name = "nullius-motor-2", amount = 3}, + {type = "item", name = "nullius-steel-cable", amount = 10} }, results = { {type = "item", name = "RTZiplineTrolley2", amount = 1} @@ -2947,15 +2911,16 @@ data:extend({ { type = "recipe", name = "nullius-zipline-trolley-3", + localised_name = {"item-name.RTZiplineTrolley3"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 12, ingredients = { {type = "item", name = "RTZiplineTrolley2", amount = 1}, - {type = "item", name = "nullius-locomotive-2", amount = 1}, - {type = "item", name = "nullius-textile", amount = 8}, - {type = "item", name = "nullius-speed-module-2", amount = 1} + {type = "item", name = "nullius-locomotive-2", amount = 1}, + {type = "item", name = "nullius-textile", amount = 8}, + {type = "item", name = "nullius-speed-module-2", amount = 1} }, results = { {type = "item", name = "RTZiplineTrolley3", amount = 1} @@ -2964,16 +2929,17 @@ data:extend({ { type = "recipe", name = "nullius-zipline-trolley-4", + localised_name = {"item-name.RTZiplineTrolley4"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 25, ingredients = { {type = "item", name = "RTZiplineTrolley3", amount = 1}, - {type = "item", name = "nullius-motor-3", amount = 4}, - {type = "item", name = "nullius-carbon-composite", amount = 12}, - {type = "item", name = "nullius-bearing", amount = 12}, - {type = "item", name = "nullius-levitation-field-1", amount = 2} + {type = "item", name = "nullius-motor-3", amount = 4}, + {type = "item", name = "nullius-carbon-composite", amount = 12}, + {type = "item", name = "nullius-bearing", amount = 12}, + {type = "item", name = "nullius-levitation-field-1", amount = 2} }, results = { {type = "item", name = "RTZiplineTrolley4", amount = 1} @@ -2982,16 +2948,17 @@ data:extend({ { type = "recipe", name = "nullius-zipline-trolley-5", + localised_name = {"item-name.RTZiplineTrolley5"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 50, ingredients = { {type = "item", name = "RTZiplineTrolley4", amount = 2}, - {type = "item", name = "nullius-locomotive-3", amount = 1}, - {type = "item", name = "nullius-titanium-rod", amount = 6}, - {type = "item", name = "nullius-speed-module-3", amount = 3}, - {type = "item", name = "nullius-stabilizer-1", amount = 2} + {type = "item", name = "nullius-locomotive-3", amount = 1}, + {type = "item", name = "nullius-titanium-rod", amount = 6}, + {type = "item", name = "nullius-speed-module-3", amount = 3}, + {type = "item", name = "nullius-stabilizer-1", amount = 2} }, results = { {type = "item", name = "RTZiplineTrolley5", amount = 1} @@ -3000,13 +2967,14 @@ data:extend({ { type = "recipe", name = "nullius-zipline-control", + localised_name = {"item-name.RTZiplineControls"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 2, ingredients = { {type = "item", name = "power-switch", amount = 1}, - {type = "item", name = "decider-combinator", amount = 1} + {type = "item", name = "decider-combinator", amount = 1} }, results = { {type = "item", name = "RTZiplineControls", amount = 1} @@ -3015,14 +2983,15 @@ data:extend({ { type = "recipe", name = "nullius-zipline-crank-control", + localised_name = {"item-name.RTZiplineCrankControls"}, enabled = false, always_show_made_in = true, category = "medium-crafting", energy_required = 1, ingredients = { {type = "item", name = "RTZiplineControls", amount = 1}, - {type = "item", name = "nullius-steel-rod", amount = 1}, - {type = "item", name = "nullius-steel-gear", amount = 2} + {type = "item", name = "nullius-steel-rod", amount = 1}, + {type = "item", name = "nullius-steel-gear", amount = 2} }, results = { {type = "item", name = "RTZiplineCrankControls", amount = 1} @@ -3031,15 +3000,16 @@ data:extend({ { type = "recipe", name = "nullius-zipline-smart-control", + localised_name = {"item-name.RTProgrammableZiplineControls"}, enabled = false, always_show_made_in = true, category = "tiny-crafting", energy_required = 5, ingredients = { {type = "item", name = "RTZiplineControls", amount = 1}, - {type = "item", name = "nullius-speed-module-1", amount = 1}, - {type = "item", name = "programmable-speaker", amount = 1}, - {type = "item", name = "nullius-sensor-1", amount = 1} + {type = "item", name = "nullius-speed-module-1", amount = 1}, + {type = "item", name = "programmable-speaker", amount = 1}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type = "item", name = "RTProgrammableZiplineControls", amount = 1} @@ -3048,15 +3018,16 @@ data:extend({ { type = "recipe", name = "nullius-zipline-terminal", + localised_name = {"entity-name.RTZiplineTerminal"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 15, ingredients = { {type = "item", name = "RTProgrammableZiplineControls", amount = 1}, - {type = "item", name = "train-stop", amount = 1}, - {type = "item", name = "nullius-steel-cable", amount = 12}, - {type = "item", name = "big-electric-pole", amount = 1} + {type = "item", name = "train-stop", amount = 1}, + {type = "item", name = "nullius-steel-cable", amount = 12}, + {type = "item", name = "big-electric-pole", amount = 1} }, results = { {type = "item", name = "RTZiplineTerminal", amount = 1} @@ -3076,14 +3047,15 @@ data:extend({ { type = "recipe", name = "nullius-train-ramp", + localised_name = {"entity-name.RTTrainRamp"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 4, ingredients = { {type = "item", name = "rail", amount = 2}, - {type = "item", name = "concrete", amount = 25}, - {type = "item", name = "nullius-steel-beam", amount = 4} + {type = "item", name = "concrete", amount = 25}, + {type = "item", name = "nullius-steel-beam", amount = 4} }, results = { {type = "item", name = "RTTrainRamp", amount = 1} @@ -3092,15 +3064,16 @@ data:extend({ { type = "recipe", name = "nullius-magnetic-ramp", + localised_name = {"entity-name.RTMagnetTrainRamp"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 6, ingredients = { {type = "item", name = "RTTrainRamp", amount = 1}, - {type = "item", name = "nullius-grid-battery-1", amount = 1}, - {type = "item", name = "nullius-beacon-2", amount = 1}, - {type = "item", name = "nullius-levitation-field-1", amount = 4} + {type = "item", name = "nullius-grid-battery-1", amount = 1}, + {type = "item", name = "nullius-beacon-2", amount = 1}, + {type = "item", name = "nullius-levitation-field-1", amount = 4} }, results = { {type = "item", name = "RTMagnetTrainRamp", amount = 1} @@ -3109,6 +3082,7 @@ data:extend({ { type = "recipe", name = "nullius-impact-unloader", + localised_name = {"entity-name.RTImpactUnloader"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -3116,8 +3090,8 @@ data:extend({ ingredients = { {type = "item", name = "stone-wall", amount = 6}, {type = "item", name = "refined-concrete", amount = 30}, - {type = "item", name = "nullius-steel-plate", amount = 12}, - {type = "item", name = "RTTrainDirectedBouncePlate", amount = 1} + {type = "item", name = "nullius-steel-plate", amount = 12}, + {type = "item", name = "RTTrainDirectedBouncePlate", amount = 1} }, results = { {type = "item", name = "RTImpactUnloader", amount = 1} @@ -3126,6 +3100,7 @@ data:extend({ { type = "recipe", name = "nullius-impact-wagon", + localised_name = {"entity-name.RTImpactWagon"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -3133,8 +3108,8 @@ data:extend({ ingredients = { {type = "item", name = "nullius-cargo-wagon-2", amount = 1}, {type = "item", name = "HatchRT", amount = 5}, - {type = "item", name = "nullius-steel-gear", amount = 4}, - {type = "item", name = "nullius-steel-plate", amount = 10} + {type = "item", name = "nullius-steel-gear", amount = 4}, + {type = "item", name = "nullius-steel-plate", amount = 10} }, results = { {type = "item", name = "RTImpactWagon", amount = 1} @@ -3146,6 +3121,7 @@ data:extend({ { type = "recipe", name = "nullius-train-bounce-plate", + localised_name = {"entity-name.RTTrainBouncePlate"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -3162,6 +3138,7 @@ data:extend({ { type = "recipe", name = "nullius-train-directed-bounce-plate", + localised_name = {"entity-name.RTTrainDirectedBouncePlate"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -3189,8 +3166,8 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-1", order = "nullius-cd", - icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3217,8 +3194,8 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-2", order = "nullius-cf", - icon = "__RenaiTransportation__/graphics/technology/start.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/start.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3237,8 +3214,8 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-3", order = "nullius-ci", - icon = "__RenaiTransportation__/graphics/icons/hatch_icon.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/icons/hatch_icon.png", + icon_size = 64, effects = { { type = "unlock-recipe", @@ -3257,8 +3234,8 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-4", order = "nullius-cj", - icon = "__RenaiTransportation__/graphics/technology/PrimerPlateIconn.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/technology/PrimerPlateIconn.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3281,17 +3258,13 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-5", order = "nullius-de", - icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", + icon_size = 256, effects = { { type = "unlock-recipe", recipe = "nullius-thrower-2" - }, - -- { - -- type = "unlock-recipe", - -- recipe = "nullius-filter-thrower-2" - -- } + } }, unit = { count = 10, @@ -3308,8 +3281,8 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-6", order = "nullius-dl", - icon = "__RenaiTransportation__/graphics/icons/DirectorPlateIcon.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/icons/DirectorPlateIcon.png", + icon_size = 256, effects = { -- { -- type = "unlock-recipe", @@ -3338,17 +3311,13 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-7", order = "nullius-ek", - icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", + icon_size = 256, effects = { { type = "unlock-recipe", recipe = "nullius-thrower-3" }, - -- { - -- type = "unlock-recipe", - -- recipe = "nullius-filter-thrower-3" - -- } }, unit = { count = 400, @@ -3365,17 +3334,13 @@ data:extend({ type = "technology", name = "nullius-logistic-ballistics-8", order = "nullius-fe", - icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/ThrowerTech.png", + icon_size = 256, effects = { { type = "unlock-recipe", recipe = "nullius-thrower-4" }, - -- { - -- type = "unlock-recipe", - -- recipe = "nullius-filter-thrower-4" - -- } }, unit = { count = 1200, @@ -3404,8 +3369,8 @@ data:extend({ name = "nullius-ziplining-1", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-dd", - icon = "__RenaiTransportation__/graphics/technology/Zipline_crankcontrols.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/technology/Zipline_crankcontrols.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3436,8 +3401,8 @@ data:extend({ name = "nullius-ziplining-2", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-dm", - icon = "__RenaiTransportation__/graphics/technology/Zipline_terminaltech.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/Zipline_terminaltech.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3467,8 +3432,8 @@ data:extend({ name = "nullius-ziplining-3", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-em", - icon = "__RenaiTransportation__/graphics/technology/Zipline1.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/technology/Zipline1.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3480,7 +3445,7 @@ data:extend({ ingredients = { {"nullius-geology-pack", 1}, {"nullius-climatology-pack", 1}, {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}, - {"nullius-chemical-pack", 1} + {"nullius-chemical-pack", 1} }, time = 35 }, @@ -3492,8 +3457,8 @@ data:extend({ name = "nullius-ziplining-4", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-fh", - icon = "__RenaiTransportation__/graphics/technology/Zipline2.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/technology/Zipline2.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3516,8 +3481,8 @@ data:extend({ name = "nullius-ziplining-5", localised_description = {"technology-description.RTZiplineTech"}, order = "nullius-gd", - icon = "__RenaiTransportation__/graphics/technology/Zipline3.png", - icon_size = 64, + icon = "__RenaiTransportation__/graphics/technology/Zipline3.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3547,8 +3512,8 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-1", order = "nullius-dm", - icon = "__RenaiTransportation__/graphics/technology/FlyingFreight.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/FlyingFreight.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3569,8 +3534,8 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-2", order = "nullius-eh", - icon = "__RenaiTransportation__/graphics/technology/FlyingFreightPlate.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/FlyingFreightPlate.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3596,8 +3561,8 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-3", order = "nullius-eq", - icon = "__RenaiTransportation__/graphics/technology/Impact.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/Impact.png", + icon_size = 256, effects = { { type = "unlock-recipe", @@ -3623,8 +3588,8 @@ if settings.startup["RTTrainRampSetting"].value then type = "technology", name = "nullius-freight-ballistics-4", order = "nullius-fc", - icon = "__RenaiTransportation__/graphics/technology/MagnetFreight.png", - icon_size = 128, + icon = "__RenaiTransportation__/graphics/technology/MagnetFreight.png", + icon_size = 256, effects = { { type = "unlock-recipe", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 1bd4008..378fa53 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -1771,8 +1771,8 @@ if settings.startup["RTThrowersSetting"].value then if (mods["bobinserters"] and (settings.startup["bobmods-inserters-more2"].value == true)) then - -- table.insert(data.raw.technology["more-inserters-2"].prerequisites, -- TODO: wtf - -- "nullius-logistic-ballistics-7") + table.insert(data.raw.technology["bob-more-inserters-2"].prerequisites, + "nullius-logistic-ballistics-7") else table.insert(data.raw.technology["nullius-inserter-capacity-1"].prerequisites, "nullius-logistic-ballistics-7") @@ -1795,7 +1795,7 @@ if settings.startup["RTThrowersSetting"].value then data.raw.item["RTBouncePlate"].order = "nullius-eb" data.raw.item["DirectedBouncePlate"].subgroup = "nullius-renai-bounce" data.raw.item["DirectedBouncePlate"].order = "nullius-ec" - -- data.raw.item["SignalBouncePlate"].subgroup = "nullius-renai-bounce" + -- data.raw.item["SignalBouncePlate"].subgroup = "nullius-renai-bounce" -- removed by renai transportation -- data.raw.item["SignalBouncePlate"].order = "nullius-ed" data.raw.item["DirectorBouncePlate"].subgroup = "nullius-renai-bounce" data.raw.item["DirectorBouncePlate"].order = "nullius-ee" @@ -1853,7 +1853,7 @@ if settings.startup["RTTrainRampSetting"].value then end elseif settings.startup["RTThrowersSetting"].value then table.insert(data.raw.technology["nullius-freight-ballistics-2"].prerequisites, - "nullius-freight-ballistics-1") + "nullius-freight-ballistics-1") end data.raw.item["RTTrainRamp"].subgroup = "nullius-renai-ramp" @@ -1864,9 +1864,9 @@ if settings.startup["RTTrainRampSetting"].value then data.raw.item["RTImpactUnloader"].order = "nullius-db" data.raw.item["RTImpactWagon"].subgroup = "nullius-renai-ramp" data.raw.item["RTImpactWagon"].order = "nullius-dc" - -- data.raw["simple-entity-with-owner"]["RTTrainRamp"].minable.mining_time = 0.8 - -- data.raw["simple-entity-with-owner"]["RTMagnetTrainRamp"].minable.mining_time = 1.2 - -- data.raw["simple-entity-with-owner"]["RTImpactUnloader"].minable.mining_time = 1 + data.raw["rail-signal"]["RTTrainRamp"].minable.mining_time = 0.8 + data.raw["rail-signal"]["RTMagnetTrainRamp"].minable.mining_time = 1.2 + data.raw["rail-signal"]["RTImpactUnloader"].minable.mining_time = 1 data.raw["cargo-wagon"]["RTImpactWagon"].inventory_size = 50 data.raw["cargo-wagon"]["RTImpactWagon"].max_health = 800 diff --git a/nullius/prototypes/override_mod_final.lua b/nullius/prototypes/override_mod_final.lua index 69e36fb..185f7b5 100644 --- a/nullius/prototypes/override_mod_final.lua +++ b/nullius/prototypes/override_mod_final.lua @@ -136,119 +136,76 @@ end if (mods["RenaiTransportation"] and - settings.startup["RTThrowersSetting"].value and false) then + settings.startup["RTThrowersSetting"].value) then data.raw.recipe["nullius-thrower-2"].ingredients = { {type = "item", name = "RTThrower-inserter-Item", amount = 1}, - {type = "item", name = "turbo-inserter", amount = 1}, - {type = "item", name = "nullius-motor-2", amount = 1} - } - data.raw.recipe["nullius-filter-thrower-2"].ingredients = { - {type = "item", name = "RTThrower-inserter-Item", amount = 1}, - {type = "item", name = "turbo-filter-inserter", amount = 1}, - {type = "item", name = "nullius-motor-2", amount = 1} + {type = "item", name = "bob-turbo-inserter", amount = 1}, + {type = "item", name = "nullius-motor-2", amount = 1} } data.raw.recipe["nullius-thrower-3"].ingredients = { - {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, - {type = "item", name = "stack-inserter", amount = 2} - } - data.raw.recipe["nullius-filter-thrower-3"].ingredients = { - {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1}, - {type = "item", name = "stack-filter-inserter", amount = 2} + {type = "item", name = "RTThrower-bob-turbo-inserter-Item", amount = 1}, + {type = "item", name = "bulk-inserter", amount = 2} } data.raw.recipe["nullius-thrower-4"].ingredients = { - {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1}, - {type = "item", name = "express-stack-inserter", amount = 2} - } - data.raw.recipe["nullius-filter-thrower-4"].ingredients = { - {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1}, - {type = "item", name = "express-stack-filter-inserter", amount = 2} + {type = "item", name = "RTThrower-bulk-inserter-Item", amount = 1}, + {type = "item", name = "bob-express-bulk-inserter", amount = 2} } data.raw.recipe["nullius-ejector-hatch"].ingredients = { - {type = "item", name = "HatchRTItem", amount = 1}, - {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1}, + {type = "item", name = "HatchRT", amount = 1}, + {type = "item", name = "RTThrower-bob-turbo-inserter-Item", amount = 1}, {type = "item", name = "fast-underground-belt", amount = 1} } data.raw.recipe["nullius-player-thrower"].ingredients = { {type = "item", name = "RTThrower-inserter-Item", amount = 1}, {type = "item", name = "nullius-steel-plate", amount = 2} } - + data.raw.recipe["RTThrower-burner-inserter-Recipe"].enabled = false data.raw.recipe["RTThrower-inserter-Recipe"].enabled = false - data.raw.item["RTThrower-inserter-Item"].localised_name = {"entity-name.nullius-thrower", 1} - data.raw.inserter["RTThrower-inserter"].localised_name = {"entity-name.nullius-thrower", 1} + data.raw.item["RTThrower-inserter-Item"].localised_name = {"entity-name.nullius-thrower", tostring(1)} + data.raw.inserter["RTThrower-inserter"].localised_name = {"entity-name.nullius-thrower", tostring(1)} data.raw.item["RTThrower-inserter-Item"].subgroup = "nullius-renai-thrower" data.raw.item["RTThrower-inserter-Item"].order = "nullius-tbb" data.raw.inserter["RTThrower-inserter"].order = "nullius-tbb" data.raw.inserter["RTThrower-inserter"].rotation_speed = 0.0083333333 - data.raw.inserter["RTThrower-inserter"].energy_per_rotation = "56KJ" + data.raw.inserter["RTThrower-inserter"].energy_per_rotation = "56kJ" data.raw.inserter["RTThrower-inserter"].energy_per_movement = "1W" data.raw.inserter["RTThrower-inserter"].energy_source.drain = "2kW" data.raw.inserter["RTThrower-inserter"].minable.mining_time = 0.6 - data.raw.item["RTThrower-turbo-inserter"].localised_name = {"entity-name.nullius-thrower", 2} - data.raw.inserter["RTThrower-turbo-inserter"].localised_name = {"entity-name.nullius-thrower", 2} - data.raw.item["RTThrower-turbo-inserter"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-turbo-inserter"].order = "nullius-tcb" - data.raw.inserter["RTThrower-turbo-inserter"].order = "nullius-tcb" - data.raw.inserter["RTThrower-turbo-inserter"].rotation_speed = 0.016666667 - data.raw.inserter["RTThrower-turbo-inserter"].energy_per_rotation = "56KJ" - data.raw.inserter["RTThrower-turbo-inserter"].energy_per_movement = "1W" - data.raw.inserter["RTThrower-turbo-inserter"].energy_source.drain = "4kW" - data.raw.inserter["RTThrower-turbo-inserter"].minable.mining_time = 0.8 - data.raw.item["RTThrower-turbo-filter-inserter-Item"].localised_name = {"entity-name.nullius-filter-thrower", 2} - data.raw.inserter["RTThrower-turbo-filter-inserter"].localised_name = {"entity-name.nullius-filter-thrower", 2} - data.raw.item["RTThrower-turbo-filter-inserter-Item"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-turbo-filter-inserter-Item"].order = "nullius-tcc" - data.raw.inserter["RTThrower-turbo-filter-inserter"].order = "nullius-tcc" - data.raw.inserter["RTThrower-turbo-filter-inserter"].rotation_speed = 0.016666667 - data.raw.inserter["RTThrower-turbo-filter-inserter"].energy_per_rotation = "56KJ" - data.raw.inserter["RTThrower-turbo-filter-inserter"].energy_per_movement = "1W" - data.raw.inserter["RTThrower-turbo-filter-inserter"].energy_source.drain = "4kW" - data.raw.inserter["RTThrower-turbo-filter-inserter"].minable.mining_time = 0.8 - data.raw.item["RTThrower-stack-inserter-Item"].localised_name = {"entity-name.nullius-thrower", 3} - data.raw.inserter["RTThrower-stack-inserter"].localised_name = {"entity-name.nullius-thrower", 3} - data.raw.item["RTThrower-stack-inserter-Item"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-stack-inserter-Item"].order = "nullius-tdb" - data.raw.inserter["RTThrower-stack-inserter"].order = "nullius-tdb" - data.raw.inserter["RTThrower-stack-inserter"].rotation_speed = 0.016666667 - data.raw.inserter["RTThrower-stack-inserter"].energy_per_rotation = "114KJ" - data.raw.inserter["RTThrower-stack-inserter"].energy_per_movement = "1W" - data.raw.inserter["RTThrower-stack-inserter"].energy_source.drain = "6kW" - data.raw.inserter["RTThrower-stack-inserter"].minable.mining_time = 1 - data.raw.item["RTThrower-stack-filter-inserter-Item"].localised_name = {"entity-name.nullius-filter-thrower", 3} - data.raw.inserter["RTThrower-stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-thrower", 3} - data.raw.item["RTThrower-stack-filter-inserter-Item"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-stack-filter-inserter-Item"].order = "nullius-tdc" - data.raw.inserter["RTThrower-stack-filter-inserter"].order = "nullius-tdc" - data.raw.inserter["RTThrower-stack-filter-inserter"].rotation_speed = 0.016666667 - data.raw.inserter["RTThrower-stack-filter-inserter"].energy_per_rotation = "114KJ" - data.raw.inserter["RTThrower-stack-filter-inserter"].energy_per_movement = "1W" - data.raw.inserter["RTThrower-stack-filter-inserter"].energy_source.drain = "6kW" - data.raw.inserter["RTThrower-stack-filter-inserter"].minable.mining_time = 1 - data.raw.item["RTThrower-express-stack-inserter-Item"].localised_name = {"entity-name.nullius-thrower", 4} - data.raw.inserter["RTThrower-express-stack-inserter"].localised_name = {"entity-name.nullius-thrower", 4} - data.raw.item["RTThrower-express-stack-inserter-Item"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-express-stack-inserter-Item"].order = "nullius-teb" - data.raw.inserter["RTThrower-express-stack-inserter"].order = "nullius-teb" - data.raw.inserter["RTThrower-express-stack-inserter"].rotation_speed = 0.033333333 - data.raw.inserter["RTThrower-express-stack-inserter"].energy_per_rotation = "115KJ" - data.raw.inserter["RTThrower-express-stack-inserter"].energy_per_movement = "1W" - data.raw.inserter["RTThrower-express-stack-inserter"].energy_source.drain = "10kW" - data.raw.inserter["RTThrower-express-stack-inserter"].minable.mining_time = 1.2 - data.raw.item["RTThrower-express-stack-filter-inserter-Item"].localised_name = {"entity-name.nullius-filter-thrower", 4} - data.raw.inserter["RTThrower-express-stack-filter-inserter"].localised_name = {"entity-name.nullius-filter-thrower", 4} - data.raw.item["RTThrower-express-stack-filter-inserter-Item"].subgroup = "nullius-renai-thrower" - data.raw.item["RTThrower-express-stack-filter-inserter-Item"].order = "nullius-tec" - data.raw.inserter["RTThrower-express-stack-filter-inserter"].order = "nullius-tec" - data.raw.inserter["RTThrower-express-stack-filter-inserter"].rotation_speed = 0.033333333 - data.raw.inserter["RTThrower-express-stack-filter-inserter"].energy_per_rotation = "115KJ" - data.raw.inserter["RTThrower-express-stack-filter-inserter"].energy_per_movement = "1W" - data.raw.inserter["RTThrower-express-stack-filter-inserter"].energy_source.drain = "10kW" - data.raw.inserter["RTThrower-express-stack-filter-inserter"].minable.mining_time = 1.2 + data.raw.item["RTThrower-bob-turbo-inserter-Item"].localised_name = {"entity-name.nullius-thrower", tostring(2)} + data.raw.inserter["RTThrower-bob-turbo-inserter"].localised_name = {"entity-name.nullius-thrower", tostring(2)} + data.raw.item["RTThrower-bob-turbo-inserter-Item"].subgroup = "nullius-renai-thrower" + data.raw.item["RTThrower-bob-turbo-inserter-Item"].order = "nullius-tcb" + data.raw.inserter["RTThrower-bob-turbo-inserter"].order = "nullius-tcb" + data.raw.inserter["RTThrower-bob-turbo-inserter"].rotation_speed = 0.016666667 + data.raw.inserter["RTThrower-bob-turbo-inserter"].energy_per_rotation = "56kJ" + data.raw.inserter["RTThrower-bob-turbo-inserter"].energy_per_movement = "1W" + data.raw.inserter["RTThrower-bob-turbo-inserter"].energy_source.drain = "4kW" + data.raw.inserter["RTThrower-bob-turbo-inserter"].minable.mining_time = 0.8 + data.raw.item["RTThrower-bulk-inserter-Item"].localised_name = {"entity-name.nullius-thrower", tostring(3)} + data.raw.inserter["RTThrower-bulk-inserter"].localised_name = {"entity-name.nullius-thrower", tostring(3)} + data.raw.item["RTThrower-bulk-inserter-Item"].subgroup = "nullius-renai-thrower" + data.raw.item["RTThrower-bulk-inserter-Item"].order = "nullius-tdb" + data.raw.inserter["RTThrower-bulk-inserter"].order = "nullius-tdb" + data.raw.inserter["RTThrower-bulk-inserter"].rotation_speed = 0.016666667 + data.raw.inserter["RTThrower-bulk-inserter"].energy_per_rotation = "114kJ" + data.raw.inserter["RTThrower-bulk-inserter"].energy_per_movement = "1W" + data.raw.inserter["RTThrower-bulk-inserter"].energy_source.drain = "6kW" + data.raw.inserter["RTThrower-bulk-inserter"].minable.mining_time = 1 + data.raw.item["RTThrower-bob-express-bulk-inserter-Item"].localised_name = {"entity-name.nullius-thrower", tostring(4)} + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].localised_name = {"entity-name.nullius-thrower", tostring(4)} + data.raw.item["RTThrower-bob-express-bulk-inserter-Item"].subgroup = "nullius-renai-thrower" + data.raw.item["RTThrower-bob-express-bulk-inserter-Item"].order = "nullius-teb" + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].order = "nullius-teb" + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].rotation_speed = 0.033333333 + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].energy_per_rotation = "115kJ" + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].energy_per_movement = "1W" + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].energy_source.drain = "10kW" + data.raw.inserter["RTThrower-bob-express-bulk-inserter"].minable.mining_time = 1.2 data.raw.inserter["PlayerLauncher"].rotation_speed = 0.033333333 data.raw.inserter["RTThrower-EjectorHatchRT"].rotation_speed = 0.016666667 data.raw.inserter["RTThrower-EjectorHatchRT"].extension_speed = 0.04 - data.raw.inserter["RTThrower-EjectorHatchRT"].energy_per_rotation = "56KJ" + data.raw.inserter["RTThrower-EjectorHatchRT"].energy_per_rotation = "56kJ" data.raw.inserter["RTThrower-EjectorHatchRT"].energy_per_movement = "1W" data.raw.inserter["RTThrower-EjectorHatchRT"].energy_source.drain = "4kW" data.raw.inserter["RTThrower-EjectorHatchRT"].minable.mining_time = 0.75 @@ -256,32 +213,44 @@ if (mods["RenaiTransportation"] and data.raw["simple-entity-with-owner"]["HatchRT"].minable.mining_time = 0.5 data.raw.inserter["PlayerLauncher"].minable.mining_time = 0.6 data.raw["container"]["OpenContainer"].minable.mining_time = 0.5 - data.raw["simple-entity-with-owner"]["BouncePlate"].minable.mining_time = 1 - data.raw["simple-entity-with-owner"]["DirectedBouncePlate"].minable.mining_time = 1.2 - data.raw["constant-combinator"]["SignalBouncePlate"].minable.mining_time = 1.5 + data.raw["constant-combinator"]["RTBouncePlate"].minable.mining_time = 1 + data.raw["constant-combinator"]["DirectedBouncePlate"].minable.mining_time = 1.2 + -- data.raw["constant-combinator"]["SignalBouncePlate"].minable.mining_time = 1.5 --removed data.raw["constant-combinator"]["DirectorBouncePlate"].minable.mining_time = 2 data.raw.recipe["nullius-thrower-1"].results = { {type = "item", name = "RTThrower-inserter-Item", amount = 1} } data.raw.recipe["nullius-thrower-2"].results = { - {type = "item", name = "RTThrower-turbo-inserter-Item", amount = 1} - } - data.raw.recipe["nullius-filter-thrower-2"].results = { - {type = "item", name = "RTThrower-turbo-filter-inserter-Item", amount = 1} + {type = "item", name = "RTThrower-bob-turbo-inserter-Item", amount = 1} } + data.raw.recipe["nullius-thrower-3"].results = { - {type = "item", name = "RTThrower-stack-inserter-Item", amount = 1} - } - data.raw.recipe["nullius-filter-thrower-3"].results = { - {type = "item", name = "RTThrower-stack-filter-inserter-Item", amount = 1} + {type = "item", name = "RTThrower-bulk-inserter-Item", amount = 1} } + data.raw.recipe["nullius-thrower-4"].results = { - {type = "item", name = "RTThrower-express-stack-inserter-Item", amount = 1} - } - data.raw.recipe["nullius-filter-thrower-4"].results = { - {type = "item", name = "RTThrower-express-stack-filter-inserter-Item", amount = 1} + {type = "item", name = "RTThrower-bob-express-bulk-inserter-Item", amount = 1} } + + local hiddenInserterRecipes = { + "RTThrower-burner-inserter-Recipe", + "RTThrower-inserter-Recipe", + "RTThrower-bob-turbo-inserter-Recipe", + "RTThrower-bulk-inserter-Recipe", + "RTThrower-bob-express-bulk-inserter-Recipe", + "RTThrower-bob-steam-inserter-Recipe", + "RTThrower-bob-red-inserter-Recipe", + "RTThrower-long-handed-inserter-Recipe", + "RTThrower-bob-red-bulk-inserter-Recipe", + "RTThrower-fast-inserter-Recipe", + "RTThrower-bob-turbo-bulk-inserter-Recipe", + "RTThrower-bob-express-inserter-Recipe" + } + + for _, inserter in pairs(hiddenInserterRecipes) do + data.raw.recipe[inserter].hidden_in_factoriopedia = true + end end From 8e57d9398d3c839f1c054fe5f2ad7be163c59ffd Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 21:39:09 +0200 Subject: [PATCH 071/236] Updated safefill recipe's ingredients to new format Added remaining optional mods to info.json --- nullius/TODO_list.txt | 4 +- nullius/info.json | 5 +- safefill/data.lua | 120 +++++++++++++++++++++--------------------- 3 files changed, 67 insertions(+), 62 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index b0152d6..9c9a828 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -12,4 +12,6 @@ do we remove the legacy items/recipes/buildings ? why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 update changelog and info.json(min version of dependencies) before publishing geothermal plant can mine petroleum in nullius 1.1 is it a bug ? -some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it \ No newline at end of file +some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it +airfilter graphics are not symmetric when rotating -> it causes the alt icon to be off center in certain orientations +alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled \ No newline at end of file diff --git a/nullius/info.json b/nullius/info.json index 37017ab..272162d 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -17,10 +17,13 @@ "? RecipeBook >= 2.7.1", "? underground-pipe-pack >= 1.1.2", "(?) cargo-ships >= 0.2.2", - "(?) RenaiTransportation >= 1.0.0", "(?) boblibrary >= 1.1.4", "(?) IRobot >= 1.1.0", "(?) jetpack >= 0.3.14", + + "(?) FluidMustFlow >= 1.4.4", + "(?) factorissimo-2-notnotmelon >= 3.9.7", + "(?) safefill >= 2.0.0", "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", "(?) aai-loaders >= 0.2.7", "(?) RenaiTransportation >= 2.2.4", diff --git a/safefill/data.lua b/safefill/data.lua index 67549ca..a65e04e 100644 --- a/safefill/data.lua +++ b/safefill/data.lua @@ -154,10 +154,10 @@ if (settings.startup["safefill-cost"].value == "expensive") then data.raw.recipe["safefill-medium"].energy_required = 5 data.raw.recipe["safefill-deep"].energy_required = 4 if mods["nullius"] then - data.raw.recipe["safefill-shallow"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="item", name="nullius-saline-barrel", amount=50}} + data.raw.recipe["safefill-shallow"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="item", name="nullius-saline-barrel", amount=50}} if do_shallow then - data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",1}, + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "safefill-shallow", amount = 1}, {type="item", name="nullius-saline-barrel", amount=40}} data.raw.recipe["safefill-medium"].results = { {type="item", name="safefill-medium", amount=1}, @@ -165,32 +165,32 @@ if (settings.startup["safefill-cost"].value == "expensive") then } else data.raw.recipe["safefill-medium"].energy_required = 15 - data.raw.recipe["safefill-medium"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="item", name="nullius-saline-barrel", amount=80}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="item", name="nullius-saline-barrel", amount=80}} data.raw.recipe["safefill-medium"].results = { {type="item", name="safefill-medium", amount=1}, {type="item", name="empty-barrel", amount=77, catalyst_amount=77} } end - data.raw.recipe["safefill-deep"].ingredients = {{"safefill-medium",1}, + data.raw.recipe["safefill-deep"].ingredients = {{type = "item", name = "safefill-medium", amount = 1}, {type="item", name="nullius-saline-barrel", amount=40}} data.raw.recipe["safefill-medium"].main_product = "safefill-medium" else - data.raw.recipe["safefill-shallow"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="item", name="water-barrel", amount=50}} + data.raw.recipe["safefill-shallow"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="item", name="water-barrel", amount=50}} if do_shallow then - data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",2}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "safefill-shallow", amount = 2}} else data.raw.recipe["safefill-medium"].energy_required = 15 - data.raw.recipe["safefill-medium"].ingredients = {{"concrete",6}, - {"cliff-explosives",2}, {type="item", name="water-barrel", amount=80}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "concrete", amount = 6}, + {type = "item", name = "cliff-explosives", amount = 2}, {type="item", name="water-barrel", amount=80}} data.raw.recipe["safefill-medium"].results = { {type="item", name="safefill-medium", amount=1}, {type="item", name="empty-barrel", amount=77, catalyst_amount=77} } data.raw.recipe["safefill-medium"].main_product = "safefill-medium" end - data.raw.recipe["safefill-deep"].ingredients = {{"safefill-medium",1}, + data.raw.recipe["safefill-deep"].ingredients = {{type = "item", name = "safefill-medium", amount = 1}, {type="item", name="water-barrel", amount=40}} end data.raw.recipe["safefill-shallow"].results = { @@ -209,28 +209,28 @@ elseif (settings.startup["safefill-cost"].value == "cheap") then data.raw.recipe["safefill-deep"].energy_required = 1 if mods["nullius"] then data.raw.recipe["safefill-shallow"].ingredients = { - {"stone-brick",1}, {type="fluid", name="nullius-saline", amount=500}} + {type = "item", name = "stone-brick", amount = 1}, {type="fluid", name="nullius-saline", amount=500}} if do_shallow then - data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",1}, + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "safefill-shallow", amount = 1}, {type="fluid", name="nullius-saline", amount=500}} else data.raw.recipe["safefill-medium"].energy_required = 4 - data.raw.recipe["safefill-medium"].ingredients = {{"stone-brick",1}, + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "stone-brick", amount = 1}, {type="fluid", name="nullius-saline", amount=1000}} end - data.raw.recipe["safefill-deep"].ingredients = {{"safefill-medium",1}, + data.raw.recipe["safefill-deep"].ingredients = {{type = "item", name = "safefill-medium", amount = 1}, {type="fluid", name="nullius-saline", amount=500}} else data.raw.recipe["safefill-shallow"].ingredients = { - {"stone-brick",1}, {type="fluid", name="water", amount=500}} + {type = "item", name = "stone-brick", amount = 1}, {type="fluid", name="water", amount=500}} if do_shallow then - data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",2}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "safefill-shallow", amount = 2}} else data.raw.recipe["safefill-medium"].energy_required = 4 data.raw.recipe["safefill-medium"].ingredients = { - {"stone-brick",1}, {type="fluid", name="water", amount=1000}} + {type = "item", name = "stone-brick", amount = 1}, {type="fluid", name="water", amount=1000}} end - data.raw.recipe["safefill-deep"].ingredients = {{"safefill-medium",1}, + data.raw.recipe["safefill-deep"].ingredients = {{type = "item", name = "safefill-medium", amount = 1}, {type="fluid", name="water", amount=500}} end else @@ -239,31 +239,31 @@ else data.raw.recipe["safefill-medium"].energy_required = 3 data.raw.recipe["safefill-deep"].energy_required = 2 if mods["nullius"] then - data.raw.recipe["safefill-shallow"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="fluid", name="nullius-saline", amount=2500}} + data.raw.recipe["safefill-shallow"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="nullius-saline", amount=2500}} if do_shallow then - data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",1}, + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "safefill-shallow", amount = 1}, {type="fluid", name="nullius-saline", amount=1000}} else data.raw.recipe["safefill-medium"].results[1].amount = 4 data.raw.recipe["safefill-medium"].energy_required = 12 - data.raw.recipe["safefill-medium"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="fluid", name="nullius-saline", amount=5000}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="nullius-saline", amount=5000}} end - data.raw.recipe["safefill-deep"].ingredients = {{"safefill-medium",1}, + data.raw.recipe["safefill-deep"].ingredients = {{type = "item", name = "safefill-medium", amount = 1}, {type="fluid", name="nullius-saline", amount=1000}} else - data.raw.recipe["safefill-shallow"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="fluid", name="water", amount=2500}} + data.raw.recipe["safefill-shallow"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="water", amount=2500}} if do_shallow then - data.raw.recipe["safefill-medium"].ingredients = {{"safefill-shallow",2}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "safefill-shallow", amount = 2}} else data.raw.recipe["safefill-medium"].results[1].amount = 2 data.raw.recipe["safefill-medium"].energy_required = 12 - data.raw.recipe["safefill-medium"].ingredients = {{"concrete",4}, - {"cliff-explosives",1}, {type="fluid", name="water", amount=2500}} + data.raw.recipe["safefill-medium"].ingredients = {{type = "item", name = "concrete", amount = 4}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="water", amount=2500}} end - data.raw.recipe["safefill-deep"].ingredients = {{"safefill-medium",1}, + data.raw.recipe["safefill-deep"].ingredients = {{type = "item", name = "safefill-medium", amount = 1}, {type="fluid", name="water", amount=1000}} end end @@ -284,11 +284,11 @@ if settings.startup["safefill-green-water"].value then data.raw.recipe["safefill-deepgreen"].energy_required = 4 if mods["nullius"] then data.raw.recipe["safefill-mud"].ingredients = { - {"nullius-land-fill-gravel",1}, {"cliff-explosives",1}, + {type = "item", name = "nullius-land-fill-gravel", amount = 1}, {type = "item", name = "cliff-explosives", amount = 1}, {type="item", name="nullius-sludge-barrel", amount=5}, {type="item", name="nullius-seawater-barrel", amount=45}} if do_shallow then - data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",1}, + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "safefill-mud", amount = 1}, {type="item", name="nullius-wastewater-barrel", amount=40}} data.raw.recipe["safefill-green"].results = { {type="item", name="safefill-green", amount=1}, @@ -297,7 +297,7 @@ if settings.startup["safefill-green-water"].value then else data.raw.recipe["safefill-green"].energy_required = 12 data.raw.recipe["safefill-green"].ingredients = { - {"nullius-land-fill-gravel",1}, {"cliff-explosives",1}, + {type = "item", name = "nullius-land-fill-gravel", amount = 1}, {type = "item", name = "cliff-explosives", amount = 1}, {type="item", name="nullius-sludge-barrel", amount=5}, {type="item", name="nullius-wastewater-barrel", amount=75}} data.raw.recipe["safefill-green"].results = { @@ -305,25 +305,25 @@ if settings.startup["safefill-green-water"].value then {type="item", name="empty-barrel", amount=77, catalyst_amount=77} } end - data.raw.recipe["safefill-deepgreen"].ingredients = {{"safefill-green",1}, + data.raw.recipe["safefill-deepgreen"].ingredients = {{type = "item", name = "safefill-green", amount = 1}, {type="item", name="nullius-wastewater-barrel", amount=40}} data.raw.recipe["safefill-green"].main_product = "safefill-green" else - data.raw.recipe["safefill-mud"].ingredients = {{"landfill",1}, - {"cliff-explosives",1}, {type="item", name="water-barrel", amount=50}} + data.raw.recipe["safefill-mud"].ingredients = {{type = "item", name = "landfill", amount = 1}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="item", name="water-barrel", amount=50}} if do_shallow then - data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",2}} + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "safefill-mud", amount = 2}} else data.raw.recipe["safefill-green"].energy_required = 12 - data.raw.recipe["safefill-green"].ingredients = {{"landfill",2}, - {"cliff-explosives",2}, {type="item", name="water-barrel", amount=80}} + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "landfill", amount = 2}, + {type = "item", name = "cliff-explosives", amount = 2}, {type="item", name="water-barrel", amount=80}} data.raw.recipe["safefill-green"].results = { {type="item", name="safefill-green", amount=1}, {type="item", name="empty-barrel", amount=77, catalyst_amount=77} } data.raw.recipe["safefill-green"].main_product = "safefill-green" end - data.raw.recipe["safefill-deepgreen"].ingredients = {{"safefill-green",1}, + data.raw.recipe["safefill-deepgreen"].ingredients = {{type = "item", name = "safefill-green", amount = 1}, {type="item", name="water-barrel", amount=40}} end data.raw.recipe["safefill-mud"].results = { @@ -341,31 +341,31 @@ if settings.startup["safefill-green-water"].value then data.raw.recipe["safefill-green"].energy_required = 2 data.raw.recipe["safefill-deepgreen"].energy_required = 1 if mods["nullius"] then - data.raw.recipe["safefill-mud"].ingredients = {{"nullius-gravel",1}, + data.raw.recipe["safefill-mud"].ingredients = {{type = "item", name = "nullius-gravel", amount = 1}, {type="fluid", name="nullius-sludge", amount=50}, {type="fluid", name="nullius-seawater", amount=400}} if do_shallow then - data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",1}, + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "safefill-mud", amount = 1}, {type="fluid", name="nullius-wastewater", amount=500}} else data.raw.recipe["safefill-green"].energy_required = 3 - data.raw.recipe["safefill-green"].ingredients = {{"nullius-gravel",1}, + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "nullius-gravel", amount = 1}, {type="fluid", name="nullius-sludge", amount=50}, {type="fluid", name="nullius-wastewater", amount=800}} end - data.raw.recipe["safefill-deepgreen"].ingredients = {{"safefill-green",1}, + data.raw.recipe["safefill-deepgreen"].ingredients = {{type = "item", name = "safefill-green", amount = 1}, {type="fluid", name="nullius-wastewater", amount=500}} else data.raw.recipe["safefill-mud"].ingredients = { - {"stone",2}, {type="fluid", name="water", amount=500}} + {type = "item", name = "stone", amount = 2}, {type="fluid", name="water", amount=500}} if do_shallow then - data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",2}} + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "safefill-mud", amount = 2}} else data.raw.recipe["safefill-green"].energy_required = 3 data.raw.recipe["safefill-green"].ingredients = { - {"stone",3}, {type="fluid", name="water", amount=1000}} + {type = "item", name = "stone", amount = 3}, {type="fluid", name="water", amount=1000}} end - data.raw.recipe["safefill-deepgreen"].ingredients = {{"safefill-green",1}, + data.raw.recipe["safefill-deepgreen"].ingredients = {{type = "item", name = "safefill-green", amount = 1}, {type="fluid", name="water", amount=500}} end else @@ -375,34 +375,34 @@ if settings.startup["safefill-green-water"].value then data.raw.recipe["safefill-deepgreen"].energy_required = 2 if mods["nullius"] then data.raw.recipe["safefill-mud"].ingredients = { - {"nullius-land-fill-gravel",1}, {"cliff-explosives",1}, + {type = "item", name = "nullius-land-fill-gravel",amount = 1}, {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="nullius-sludge", amount=200}, {type="fluid", name="nullius-seawater", amount=2000}} if do_shallow then - data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",1}, + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "safefill-mud", amount = 1}, {type="fluid", name="nullius-wastewater", amount=1000}} else data.raw.recipe["safefill-green"].energy_required = 10 data.raw.recipe["safefill-green"].results[1].amount = 4 data.raw.recipe["safefill-green"].ingredients = { - {"nullius-land-fill-gravel",1}, {"cliff-explosives",1}, + {type = "item", name = "nullius-land-fill-gravel",amount = 1}, {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="nullius-sludge", amount=200}, {type="fluid", name="nullius-wastewater", amount=4500}} end - data.raw.recipe["safefill-deepgreen"].ingredients = {{"safefill-green",1}, + data.raw.recipe["safefill-deepgreen"].ingredients = {{type = "item", name = "safefill-green", amount = 1}, {type="fluid", name="nullius-wastewater", amount=1000}} else - data.raw.recipe["safefill-mud"].ingredients = {{"landfill",1}, - {"cliff-explosives",1}, {type="fluid", name="water", amount=2500}} + data.raw.recipe["safefill-mud"].ingredients = {{type = "item", name = "landfill", amount = 1}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="water", amount=2500}} if do_shallow then - data.raw.recipe["safefill-green"].ingredients = {{"safefill-mud",2}} + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "safefill-mud", amount = 2}} else data.raw.recipe["safefill-green"].energy_required = 10 data.raw.recipe["safefill-green"].results[1].amount = 2 - data.raw.recipe["safefill-green"].ingredients = {{"landfill",1}, - {"cliff-explosives",1}, {type="fluid", name="water", amount=2500}} + data.raw.recipe["safefill-green"].ingredients = {{type = "item", name = "landfill", amount = 1}, + {type = "item", name = "cliff-explosives", amount = 1}, {type="fluid", name="water", amount=2500}} end - data.raw.recipe["safefill-deepgreen"].ingredients = {{"safefill-green",1}, + data.raw.recipe["safefill-deepgreen"].ingredients = {{type = "item", name = "safefill-green", amount = 1}, {type="fluid", name="water", amount=1000}} end end From 66d7ffdf6b98bd48820e89f8989a0c9f4d716376 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 17 Aug 2025 22:48:53 +0200 Subject: [PATCH 072/236] Flipped valves orientation, should fix it for everybody --- nullius/prototypes/entity/plumbing.lua | 76 +++++++++++++------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 6d18754..b52edab 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1268,8 +1268,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1297,15 +1297,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", - x = 128, frame_count = 1, width = 64, - height = 64, - shift = {0, -0.05} - } + height = 64 + } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 64, @@ -1327,13 +1325,15 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", + x = 128, frame_count = 1, width = 64, - height = 64 - } + height = 64, + shift = {0, -0.05} + } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-inspector.png", priority = "extra-high", x = 192, @@ -1364,8 +1364,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1392,15 +1392,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", - x = 128, frame_count = 1, width = 64, - height = 64, - shift = {0, -0.05} + height = 64 } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 64, @@ -1422,13 +1420,15 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", + x = 128, frame_count = 1, width = 64, - height = 64 + height = 64, + shift = {0, -0.05} } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-overflow.png", priority = "extra-high", x = 192, @@ -1459,8 +1459,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1488,15 +1488,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", - x = 128, - frame_count = 1, + frames = 1, width = 64, - height = 64, - shift = {0, -0.05} + height = 64 } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 64, @@ -1515,16 +1513,18 @@ data:extend({ scale = 0.5, shift = {0, -0.5} }, - { + { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", - frames = 1, + x = 128, + frame_count = 1, width = 64, - height = 64 + height = 64, + shift = {0, -0.05} } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", x = 192, @@ -1555,8 +1555,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "input-output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1584,15 +1584,13 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", - x = 128, frame_count = 1, width = 64, - height = 64, - shift = {0, -0.05} + height = 64 } } }, - west = { + east = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 64, @@ -1611,16 +1609,18 @@ data:extend({ scale = 0.5, shift = {0, -0.5} }, - { + { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", + x = 128, frame_count = 1, width = 64, - height = 64 + height = 64, + shift = {0, -0.05} } } }, - east = { + west = { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-return.png", priority = "extra-high", x = 192, From 5c83639739c844bb928b04679c2fbc3aa34f817a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 10:19:11 +0200 Subject: [PATCH 073/236] train-upgrader - Initial update --- nullius/info.json | 1 + train-upgrader/info.json | 6 ++--- train-upgrader/prototypes/entity.lua | 2 +- train-upgrader/prototypes/item.lua | 4 ++-- train-upgrader/prototypes/recipe.lua | 8 +++++-- train-upgrader/prototypes/tech.lua | 2 +- train-upgrader/scripts/build.lua | 20 ++++++++--------- train-upgrader/scripts/station.lua | 30 +++++++++++++------------ train-upgrader/scripts/tick.lua | 9 ++++---- train-upgrader/scripts/upgrade.lua | 33 +++++++++++++++++----------- 10 files changed, 65 insertions(+), 50 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 272162d..303162f 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -24,6 +24,7 @@ "(?) FluidMustFlow >= 1.4.4", "(?) factorissimo-2-notnotmelon >= 3.9.7", "(?) safefill >= 2.0.0", + "(?) train-upgrader >= 2.0.0", "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", "(?) aai-loaders >= 0.2.7", "(?) RenaiTransportation >= 2.2.4", diff --git a/train-upgrader/info.json b/train-upgrader/info.json index dbd259a..592ca2a 100644 --- a/train-upgrader/info.json +++ b/train-upgrader/info.json @@ -1,12 +1,12 @@ { "name": "train-upgrader", - "version": "1.0.5", - "factorio_version": "1.1", + "version": "2.0.0", + "factorio_version": "2.0", "title": "Train Upgrader", "author": "Anachrony", "description": "Easily automate the replacement of large numbers of active locomotives and wagons in your rail system. Useful in combination with mods that add multiple tiers of locomotives or wagons.", "homepage": "https://discord.gg/tZY2Rkte8Y", "dependencies": [ - "base >= 1.1.43" + "base >= 2.0.64" ] } diff --git a/train-upgrader/prototypes/entity.lua b/train-upgrader/prototypes/entity.lua index e6137b1..adb13db 100644 --- a/train-upgrader/prototypes/entity.lua +++ b/train-upgrader/prototypes/entity.lua @@ -16,7 +16,7 @@ supplier.picture = { layers = { scale = 0.5 }, { - filename = "__base__/graphics/entity/infinity-chest/hr-infinity-chest-shadow.png", + filename = "__base__/graphics/entity/infinity-chest/infinity-chest-shadow.png", priority = "extra-high", width = 116, height = 48, diff --git a/train-upgrader/prototypes/item.lua b/train-upgrader/prototypes/item.lua index 023890b..67d4077 100644 --- a/train-upgrader/prototypes/item.lua +++ b/train-upgrader/prototypes/item.lua @@ -6,7 +6,7 @@ data:extend({ icon = "__train-upgrader__/graphics/icon/supplier.png", icon_size = 64 }}, - subgroup = "train-transport", + subgroup = "train-transport", order = "a[train-system]-tub[tu-supplier]", place_result = "tu-supplier", stack_size = 20 @@ -18,7 +18,7 @@ data:extend({ icon = "__train-upgrader__/graphics/icon/receiver.png", icon_size = 64 }}, - subgroup = "train-transport", + subgroup = "train-transport", order = "a[train-system]-tuc[tu-receiver]", place_result = "tu-receiver", stack_size = 20 diff --git a/train-upgrader/prototypes/recipe.lua b/train-upgrader/prototypes/recipe.lua index e6bedc2..4c90ae2 100644 --- a/train-upgrader/prototypes/recipe.lua +++ b/train-upgrader/prototypes/recipe.lua @@ -9,7 +9,9 @@ data:extend({ {"rail-signal", 1}, {"construction-robot", 1} }, - result = "tu-supplier" + results = { + {type = "item", name = "tu-supplier", amount = 1} + } }, { type = "recipe", @@ -20,6 +22,8 @@ data:extend({ {"storage-chest", 1}, {"rail-chain-signal", 1} }, - result = "tu-receiver" + results = { + {type = "item", name = "tu-receiver", amount = 1} + } } }) diff --git a/train-upgrader/prototypes/tech.lua b/train-upgrader/prototypes/tech.lua index 3d97fea..5cbe0cc 100644 --- a/train-upgrader/prototypes/tech.lua +++ b/train-upgrader/prototypes/tech.lua @@ -20,7 +20,7 @@ data:extend({ ingredients = { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, - {"chemical-science-pack", 1} + {"chemical-science-pack", 1} }, time = 30 }, diff --git a/train-upgrader/scripts/build.lua b/train-upgrader/scripts/build.lua index 8bc872d..be64542 100644 --- a/train-upgrader/scripts/build.lua +++ b/train-upgrader/scripts/build.lua @@ -3,10 +3,10 @@ function scan_stop(ts) type = "container", name = {"tu-supplier", "tu-receiver"}} if ((chests == nil) or (chests[1] == nil)) then return end - if (global.unit_table == nil) then - global.unit_table = { } + if (storage.unit_table == nil) then + storage.unit_table = { } else - local entry = global.unit_table[ts.unit_number] + local entry = storage.unit_table[ts.unit_number] if (entry ~= nil) then delete_station(entry) end @@ -15,7 +15,7 @@ function scan_stop(ts) local unit_list = { } for _, chest in pairs(chests) do if (chest.valid) then - local entry = global.unit_table[chest.unit_number] + local entry = storage.unit_table[chest.unit_number] if (entry == nil) then unit_list[chest.unit_number] = chest end @@ -37,7 +37,7 @@ function scan_stop(ts) end if ((supplier_number < 1) or (receiver_number < 1)) then return end - script.register_on_entity_destroyed(ts) + script.register_on_object_destroyed(ts) init_station(ts, unit_list, supplier_list, receiver_list) end @@ -52,7 +52,7 @@ function entity_added(entity) if (entity.type == "train-stop") then scan_stop(entity) elseif (string.sub(entity.name, 1, 3) == "tu-") then - script.register_on_entity_destroyed(entity) + script.register_on_object_destroyed(entity) local stops = entity.surface.find_entities_filtered{type = "train-stop", area = entity_box(entity, 2.9)} if ((stops == nil) or (stops[2] ~= nil)) then return end @@ -73,13 +73,13 @@ function destroy_station(station, unit) end function destroy_unit(unit) - if (global.unit_table == nil) then return end - destroy_station(global.unit_table[unit], unit) + if (storage.unit_table == nil) then return end + destroy_station(storage.unit_table[unit], unit) end function entity_built(event) - entity_added(event.created_entity) + entity_added(event.entity) end function entity_raised(event) entity_added(event.entity) @@ -102,4 +102,4 @@ end script.on_event(defines.events.on_player_mined_entity, entity_removed) script.on_event(defines.events.on_robot_mined_entity, entity_removed) script.on_event(defines.events.on_entity_died, entity_removed) -script.on_event(defines.events.on_entity_destroyed, entity_destroyed) \ No newline at end of file +script.on_event(defines.events.on_object_destroyed, entity_destroyed) \ No newline at end of file diff --git a/train-upgrader/scripts/station.lua b/train-upgrader/scripts/station.lua index 40ccb7b..4b46b4d 100644 --- a/train-upgrader/scripts/station.lua +++ b/train-upgrader/scripts/station.lua @@ -90,35 +90,37 @@ function init_station(entity, unit_list, supplier_list, receiver_list) train_count = 0, train_index = 0, last_refresh = 0, hold = false, pending = { } } for u, _ in pairs(unit_list) do - global.unit_table[u] = entry + storage.unit_table[u] = entry end - if (global.station_head == nil) then + if (storage.station_head == nil) then entry.next = entry - entry.prev = entry - global.station_head = entry + entry.prev = entry + storage.station_head = entry else - entry.prev = global.station_head - entry.next = entry.prev.next - entry.prev.next = entry - entry.next.prev = entry + entry.prev = storage.station_head + entry.next = entry.prev.next + entry.prev.next = entry + entry.next.prev = entry end - local stops = entity.force.get_train_stops{name = entity.backer_name} + --local stops = entity.force.get_train_stops{name = entity.backer_name} + local stops = game.train_manager.get_train_stops{force = entity.force, station_name = entity.backer_name} + if (stops[2] ~= nil) then entry.old_name = entity.backer_name - entity.backer_name = "Train_Updater_" .. entity.unit_number + entity.backer_name = "Train_Updater_" .. entity.unit_number end end function delete_station(station, no_rename) if (station.next == station) then - global.station_head = nil + storage.station_head = nil else station.next.prev = station.prev station.prev.next = station.next - if (global.station_head == station) then - global.station_head = station.next + if (storage.station_head == station) then + storage.station_head = station.next end end station.next = nil @@ -128,7 +130,7 @@ function delete_station(station, no_rename) release_train_schedule(pend.train, station) end for unit, entity in pairs(station.units) do - global.unit_table[unit] = nil + storage.unit_table[unit] = nil end if ((station.old_name ~= nil) and (not no_rename) and diff --git a/train-upgrader/scripts/tick.lua b/train-upgrader/scripts/tick.lua index 79c235d..e382d0a 100644 --- a/train-upgrader/scripts/tick.lua +++ b/train-upgrader/scripts/tick.lua @@ -73,7 +73,8 @@ function update_train_set(station) station.train_index = station.train_index + 1 if (station.train_index <= station.train_count) then return false end if (game.tick < (station.last_refresh + 900)) then return true end - station.train_set = station.stop.surface.get_trains(station.stop.force) + --station.train_set = station.stop.surface.get_trains(station.stop.force) + station.train_set = game.train_manager.get_trains{force = station.stop.force, surface = station.stop.surface} station.train_index = 0 station.train_count = 0 station.last_refresh = game.tick @@ -95,9 +96,9 @@ function update_station(station) end function update_tick() - if (global.station_head == nil) then return end - global.station_head = global.station_head.next - update_station(global.station_head) + if (storage.station_head == nil) then return end + storage.station_head = storage.station_head.next + update_station(storage.station_head) end script.on_nth_tick(23, update_tick) diff --git a/train-upgrader/scripts/upgrade.lua b/train-upgrader/scripts/upgrade.lua index 8eb250a..e01f2f9 100644 --- a/train-upgrader/scripts/upgrade.lua +++ b/train-upgrader/scripts/upgrade.lua @@ -21,13 +21,13 @@ function different_box(box1, box2) end function equal_mask(car1, car2) - local mask1 = car1.collision_mask - local mask2 = car2.collision_mask - for layer, _ in pairs(mask1) do - if (mask2[layer] ~= true) then return false end + local mask1 = car1.collision_mask.layers + local mask2 = car2.collision_mask.layers + for layer, value in pairs(mask1) do + if (mask2[layer] ~= value) then return false end end - for layer, _ in pairs(mask2) do - if (mask1[layer] ~= true) then return false end + for layer, value in pairs(mask2) do + if (mask1[layer] ~= value) then return false end end return true end @@ -165,7 +165,9 @@ function restore_inventory(car, contents, station) end end - for itemname, amount in pairs(entry.contents) do + for _, inv_slot in pairs(entry.contents) do + itemname = inv_slot.name + amount = inv_slot.count local inserted = inv.insert({name=itemname, count=amount}) local remaining = amount - inserted if (remaining < 1) then remaining = nil end @@ -173,7 +175,9 @@ function restore_inventory(car, contents, station) end end - for itemname, amount in pairs(entry.contents) do + for _, inv_slot in pairs(entry.contents) do + itemname = inv_slot.name + amount = inv_slot.count for _,s in pairs(station.receivers) do local receiver = s.get_inventory(defines.inventory.chest) if ((receiver ~= nil) and receiver.can_insert(itemname)) then @@ -334,7 +338,7 @@ function replace_fuel(carriage, fuel_supply, station, doit) local skip = true for new_fuel, new_num in pairs(fuel_supply) do local threshold = math.max(1, math.min(20, - (game.item_prototypes[new_fuel].stack_size * 0.5))) + (prototypes.item[new_fuel].stack_size * 0.5))) if (new_num < threshold) then fuel_supply[new_fuel] = nil else @@ -353,7 +357,7 @@ function replace_fuel(carriage, fuel_supply, station, doit) for new_fuel, new_num in pairs(fuel_supply) do local insertable = burn_inv.get_insertable_count(new_fuel) local amount = math.min(insertable, new_num) - local new_proto = game.item_prototypes[new_fuel] + local new_proto = prototypes.item[new_fuel] local value = (amount * new_proto.fuel_value * new_proto.fuel_acceleration_multiplier * new_proto.fuel_top_speed_multiplier) @@ -381,7 +385,7 @@ function replace_fuel(carriage, fuel_supply, station, doit) local fuel_contents = burn_inv.get_contents() for old_fuel, old_num in pairs(fuel_contents) do - local old_proto = game.item_prototypes[old_fuel] + local old_proto = prototypes.item[old_fuel] if ((fuel_supply[old_fuel] == nil) and (old_proto ~= nil)) then local stack = { name = old_fuel, count = old_num } local burnt_stack = nil @@ -445,8 +449,11 @@ function try_upgrade_one_carriage(carriage, train, station, doit) local supply_inv = s.get_inventory(defines.inventory.chest) if (supply_inv ~= nil) then local supply_contents = supply_inv.get_contents() - for supply_name,supply_count in pairs(supply_contents) do - local item_proto = game.item_prototypes[supply_name] + for _,inv_slot in pairs(supply_contents) do + supply_name = inv_slot.name + supply_count = inv_slot.count + -- TODO: manage quality too + local item_proto = prototypes.item[supply_name] if (item_proto ~= nil) then if (upgradeable and (item_proto.place_result ~= nil) and compatible_carriage(carriage, item_proto.place_result)) then From f28cbc518abd11065c94ee42648c14b152835bd1 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 10:42:15 +0200 Subject: [PATCH 074/236] Fixed locale for warehousing --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/nullius/info.json b/nullius/info.json index 303162f..02de0f5 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -28,6 +28,7 @@ "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", "(?) aai-loaders >= 0.2.7", "(?) RenaiTransportation >= 2.2.4", + "(?) Warehousing >= 1.0.3", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index aca6fe4..1dd3b37 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -1495,6 +1495,7 @@ data:extend({ { type = "recipe", name = "nullius-storehouse", + localised_name = {"entity-name.storehouse-basic"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -1511,6 +1512,7 @@ data:extend({ { type = "recipe", name = "nullius-warehouse", + localised_name = {"entity-name.warehouse-basic"}, enabled = false, always_show_made_in = true, category = "huge-crafting", @@ -1528,6 +1530,7 @@ data:extend({ { type = "recipe", name = "nullius-storehouse-storage", + localised_name = {"entity-name.storehouse-storage"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -1543,6 +1546,7 @@ data:extend({ { type = "recipe", name = "nullius-warehouse-storage", + localised_name = {"entity-name.warehouse-storage"}, enabled = false, always_show_made_in = true, category = "huge-crafting", @@ -1558,6 +1562,7 @@ data:extend({ { type = "recipe", name = "nullius-storehouse-passive-provider", + localised_name = {"entity-name.storehouse-passive-provider"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -1573,6 +1578,7 @@ data:extend({ { type = "recipe", name = "nullius-warehouse-passive-provider", + localised_name = {"entity-name.warehouse-passive-provider"}, enabled = false, always_show_made_in = true, category = "huge-crafting", @@ -1588,6 +1594,7 @@ data:extend({ { type = "recipe", name = "nullius-storehouse-requester", + localised_name = {"entity-name.storehouse-requester"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -1603,6 +1610,7 @@ data:extend({ { type = "recipe", name = "nullius-warehouse-requester", + localised_name = {"entity-name.warehouse-requester"}, enabled = false, always_show_made_in = true, category = "huge-crafting", @@ -1618,6 +1626,7 @@ data:extend({ { type = "recipe", name = "nullius-storehouse-buffer", + localised_name = {"entity-name.storehouse-buffer"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -1633,6 +1642,7 @@ data:extend({ { type = "recipe", name = "nullius-warehouse-buffer", + localised_name = {"entity-name.warehouse-buffer"}, enabled = false, always_show_made_in = true, category = "huge-crafting", @@ -1648,6 +1658,7 @@ data:extend({ { type = "recipe", name = "nullius-storehouse-active-provider", + localised_name = {"entity-name.storehouse-active-provider"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -1663,6 +1674,7 @@ data:extend({ { type = "recipe", name = "nullius-warehouse-active-provider", + localised_name = {"entity-name.warehouse-active-provider"}, enabled = false, always_show_made_in = true, category = "huge-crafting", From cc7ab2e06a5303c202186aca2f61554c86531efc Mon Sep 17 00:00:00 2001 From: pla Date: Mon, 18 Aug 2025 10:58:24 +0200 Subject: [PATCH 075/236] Fix tu-supplier and tu-receiver recipe --- train-upgrader/prototypes/recipe.lua | 54 ++++++++++++++-------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/train-upgrader/prototypes/recipe.lua b/train-upgrader/prototypes/recipe.lua index 4c90ae2..bba233d 100644 --- a/train-upgrader/prototypes/recipe.lua +++ b/train-upgrader/prototypes/recipe.lua @@ -1,29 +1,29 @@ data:extend({ - { - type = "recipe", - name = "tu-supplier", - enabled = false, - energy_required = 5, - ingredients = { - {"passive-provider-chest", 1}, - {"rail-signal", 1}, - {"construction-robot", 1} - }, - results = { - {type = "item", name = "tu-supplier", amount = 1} - } - }, - { - type = "recipe", - name = "tu-receiver", - enabled = false, - energy_required = 4, - ingredients = { - {"storage-chest", 1}, - {"rail-chain-signal", 1} - }, - results = { - {type = "item", name = "tu-receiver", amount = 1} - } - } + { + type = "recipe", + name = "tu-supplier", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "passive-provider-chest", amount = 1 }, + { type = "item", name = "rail-signal", amount = 1 }, + { type = "item", name = "construction-robot", amount = 1 }, + }, + results = { + { type = "item", name = "tu-supplier", amount = 1 }, + }, + }, + { + type = "recipe", + name = "tu-receiver", + enabled = false, + energy_required = 4, + ingredients = { + { type = "item", name = "storage-chest", amount = 1 }, + { type = "item", name = "rail-chain-signal", amount = 1 }, + }, + results = { + { type = "item", name = "tu-receiver", amount = 1 }, + }, + }, }) From e9c874140348e52b5c916bee09482660aeed18ab Mon Sep 17 00:00:00 2001 From: pla Date: Mon, 18 Aug 2025 13:38:31 +0200 Subject: [PATCH 076/236] Update inventory handling to reflect Factorio2.0 changes --- train-upgrader/prototypes/tech.lua | 2 +- train-upgrader/scripts/upgrade.lua | 33 +++++++++++++++++------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/train-upgrader/prototypes/tech.lua b/train-upgrader/prototypes/tech.lua index 5cbe0cc..1f0273d 100644 --- a/train-upgrader/prototypes/tech.lua +++ b/train-upgrader/prototypes/tech.lua @@ -14,7 +14,7 @@ data:extend({ recipe = "tu-receiver" } }, - prerequisites = {"rail-signals", "construction-robotics"}, + prerequisites = {"automated-rail-transportation", "construction-robotics"}, unit = { count = 100, ingredients = { diff --git a/train-upgrader/scripts/upgrade.lua b/train-upgrader/scripts/upgrade.lua index e01f2f9..9e54b27 100644 --- a/train-upgrader/scripts/upgrade.lua +++ b/train-upgrader/scripts/upgrade.lua @@ -165,23 +165,28 @@ function restore_inventory(car, contents, station) end end - for _, inv_slot in pairs(entry.contents) do + for key, inv_slot in pairs(entry.contents) do itemname = inv_slot.name amount = inv_slot.count - local inserted = inv.insert({name=itemname, count=amount}) - local remaining = amount - inserted - if (remaining < 1) then remaining = nil end - entry.contents[itemname] = remaining + quality = inv_slot.quality + local inserted = inv.insert({name=itemname, count=amount, quality = quality}) + local remaining = amount - inserted + if (remaining < 1) then + entry.contents[key] = nil + else + entry.contents[key].count = remaining + end end end for _, inv_slot in pairs(entry.contents) do itemname = inv_slot.name - amount = inv_slot.count + amount = inv_slot.count + quality = inv_slot.quality for _,s in pairs(station.receivers) do local receiver = s.get_inventory(defines.inventory.chest) - if ((receiver ~= nil) and receiver.can_insert(itemname)) then - amount = amount - receiver.insert({name=itemname, count=amount}) + if ((receiver ~= nil) and receiver.can_insert({name=itemname, count=1, quality = quality})) then + amount = amount - receiver.insert({name=itemname, count=amount, quality = quality}) if (amount < 1) then break end end end @@ -230,7 +235,7 @@ function restore_grid(grid, contents, station, doit) local receiver = s.get_inventory(defines.inventory.chest) if ((receiver ~= nil) and receiver.can_insert(take_name) and (receiver.insert({name=take_name}) > 0)) then - break; + break end end end @@ -240,14 +245,14 @@ function restore_grid(grid, contents, station, doit) local burn = neweq.burner if ((eq.fuel ~= nil) and (burn.inventory ~= nil) and burn.inventory.valid) then - for itemname, amount in pairs(eq.fuel) do - burn.inventory.insert({name=itemname, count=amount}) - end + for _, entry in pairs(eq.fuel) do + burn.inventory.insert({name=entry.name, count=entry.count,quality=entry.quality}) + end end if ((eq.burnt ~= nil) and (burn.burnt_result_inventory ~= nil) and burn.burnt_result_inventory.valid) then - for itemname, amount in pairs(eq.burnt) do - burn.burnt_result_inventory.insert({name=itemname, count=amount}) + for _, entry in pairs(eq.burnt) do + burn.burnt_result_inventory.insert({name=entry.name, count=entry.count,quality=entry.quality}) end end end From 832eb1463852064d5aa5163fbddd1ec34b626de2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 15:11:43 +0200 Subject: [PATCH 077/236] Added description for inserters and renamed the extension tech Hid some factoriopedia junk Gave proper name and icon and subgroup to the ammo-categories --- nullius/TODO_list.txt | 7 ++++--- nullius/locale/en/entity.cfg | 1 + nullius/locale/en/misc.cfg | 5 +++-- nullius/locale/en/tech.cfg | 4 ++-- nullius/prototypes/category.lua | 6 +++++- nullius/prototypes/entity/alignment.lua | 3 +++ nullius/prototypes/entity/energy.lua | 6 ++++++ nullius/prototypes/entity/equipment.lua | 2 ++ nullius/prototypes/entity/wind.lua | 1 + nullius/prototypes/hidden.lua | 4 ++++ nullius/prototypes/override.lua | 11 +++++++++++ 11 files changed, 42 insertions(+), 8 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 9c9a828..ac29505 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -2,16 +2,17 @@ TODO list: add working_sounds to entities (i think) Fix fluid boxes (volume and pipe connections) Valves, pipes and tanks: fix mentions of pressure in locales -Rework the entity mirroring system Rework the checkpoint system (maybe) fix the others warnings in the log landfill variants are not the same as on 1.1 mods compatibility fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) -do we remove the legacy items/recipes/buildings ? +do we remove the legacy items/recipes/buildings ? Probably not why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 update changelog and info.json(min version of dependencies) before publishing geothermal plant can mine petroleum in nullius 1.1 is it a bug ? some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it airfilter graphics are not symmetric when rotating -> it causes the alt icon to be off center in certain orientations -alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled \ No newline at end of file +alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled +hide the rest of military equipment and their related ammo categories that are unused (what to do if other mods reintroduces those ?) +new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) \ No newline at end of file diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index 1803e8e..c44284d 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -508,6 +508,7 @@ or_pole=Offshore extractor power nullius-loader=Moves items to or from a container or machine at the rate of a matching belt. nullius-align-conscription-turret=Defensive installation that fires conscription rays at rival factions automatically. nullius-align-concordance-transmitter=Newly arriving androids will start in a faction with an active transmitter instead of starting their own. Protects all players and buildings from conscription while active. Gradually reveals distant sectors. +inserterToggleInfo=Use Shift+L to toggle between long and normal inserter (available when the extension research is unlocked) [equipment-name] nullius-solar-panel-1=Solar panel 1 diff --git a/nullius/locale/en/misc.cfg b/nullius/locale/en/misc.cfg index 8fcc14d..9d35eb9 100644 --- a/nullius/locale/en/misc.cfg +++ b/nullius/locale/en/misc.cfg @@ -160,5 +160,6 @@ faction-absorbed=__1__ has been absorbed into __2__. [gui-game-finished] victory=Nauvis has been successfully terraformed! -[ammo-category] -nullius-drone=Drone \ No newline at end of file +[ammo-category-name] +nullius-drone=Drone +nullius-conscription=Conscription \ No newline at end of file diff --git a/nullius/locale/en/tech.cfg b/nullius/locale/en/tech.cfg index cb8c7c3..e46f172 100644 --- a/nullius/locale/en/tech.cfg +++ b/nullius/locale/en/tech.cfg @@ -56,7 +56,7 @@ nullius-electrical-engineering=Electrical engineering nullius-empiricism=Empiricism nullius-maintenance=Maintenance nullius-signal-processing=Signal processing -nullius-long-inserters=Extension +nullius-long-inserters=Extension for inserters nullius-limestone-processing=Calcite processing nullius-volcanism=Volcanism nullius-computation=Computation @@ -230,7 +230,7 @@ nullius-electrical-engineering=Research into automated electronic controls. nullius-empiricism=Automation of the research process itself. nullius-maintenance=Repair of damaged equipment. nullius-signal-processing=Advanced digital control of equipment. -nullius-long-inserters=Adjustable inserter length. +nullius-long-inserters=Adjustable inserter length. Use shift+L to toggle. nullius-limestone-processing=Refinement of calcium rich minerals. nullius-volcanism=Extraction of gases from geothermal fissures. nullius-computation=Combination of circuitry for sophisticated automation. diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index 355b395..3141f8c 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -1901,7 +1901,10 @@ data:extend({ { type = "ammo-category", - name = "nullius-conscription" + name = "nullius-conscription", + icon = "__nullius__/graphics/icons/card1.png", + icon_size = 128, + subgroup = "military-equipment" }, { type = "fuel-category", @@ -1916,6 +1919,7 @@ data:extend({ name = "nullius-drone", icon = "__nullius__/graphics/icons/scout-2.png", icon_size = 64, + subgroup = "military-equipment" }, -- Old categories -- { diff --git a/nullius/prototypes/entity/alignment.lua b/nullius/prototypes/entity/alignment.lua index 93df35a..dafb8b3 100644 --- a/nullius/prototypes/entity/alignment.lua +++ b/nullius/prototypes/entity/alignment.lua @@ -46,6 +46,7 @@ data:extend({ type = "projectile", name = "nullius-align-identification-card", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, acceleration = 0.005, action = { { @@ -77,6 +78,7 @@ data:extend({ type = "projectile", name = "nullius-align-invitation-card", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, acceleration = 0.005, action = { { @@ -107,6 +109,7 @@ data:extend({ { type = "projectile", name = "nullius-align-conscription-charge", + hidden_in_factoriopedia = true, flags = {"not-on-map"}, acceleration = 0.1, action = { diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index f2a3e9c..150d702 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -3067,6 +3067,7 @@ data:extend({ icons = data.raw.item["nullius-stirling-engine-1"].icons, order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, + hidden_in_factoriopedia = true, collision_box = {{-0.5, -2.2}, {0.5, 2.2}}, collision_mask = { layers = {}}, selectable_in_game = false, @@ -3097,6 +3098,7 @@ data:extend({ icons = data.raw.item["nullius-stirling-engine-1"].icons, order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, + hidden_in_factoriopedia = true, collision_box = {{-2.2, -0.5}, {2.2, 0.5}}, collision_mask = { layers = {}}, selectable_in_game = false, @@ -3127,6 +3129,7 @@ data:extend({ icons = data.raw.item["nullius-stirling-engine-2"].icons, order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, + hidden_in_factoriopedia = true, collision_box = {{-0.5, -2.2}, {0.5, 2.2}}, collision_mask = { layers = {}}, selectable_in_game = false, @@ -3157,6 +3160,7 @@ data:extend({ icons = data.raw.item["nullius-stirling-engine-2"].icons, order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, + hidden_in_factoriopedia = true, collision_box = {{-2.2, -0.5}, {2.2, 0.5}}, collision_mask = { layers = {}}, selectable_in_game = false, @@ -3187,6 +3191,7 @@ data:extend({ icons = data.raw.item["nullius-stirling-engine-3"].icons, order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, + hidden_in_factoriopedia = true, collision_box = {{-0.5, -2.2}, {0.5, 2.2}}, collision_mask = { layers = {}}, selectable_in_game = false, @@ -3217,6 +3222,7 @@ data:extend({ icons = data.raw.item["nullius-stirling-engine-3"].icons, order = "c", flags = {"placeable-neutral","player-creation","not-blueprintable"}, + hidden_in_factoriopedia = true, collision_box = {{-2.2, -0.5}, {2.2, 0.5}}, collision_mask = { layers = {}}, selectable_in_game = false, diff --git a/nullius/prototypes/entity/equipment.lua b/nullius/prototypes/entity/equipment.lua index 79a22da..34dcd9b 100644 --- a/nullius/prototypes/entity/equipment.lua +++ b/nullius/prototypes/entity/equipment.lua @@ -1339,6 +1339,7 @@ data:extend({ type = "projectile", name = "nullius-missile-1", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, acceleration = 0.005, light = {intensity = 0.5, size = 4}, animation = data.raw["projectile"]["explosive-rocket"].animation, @@ -1421,6 +1422,7 @@ data:extend({ type = "projectile", name = "nullius-missile-2", flags = {"not-on-map"}, + hidden_in_factoriopedia = true, acceleration = 0.004, light = {intensity = 0.5, size = 4}, animation = data.raw["projectile"]["atomic-rocket"].animation, diff --git a/nullius/prototypes/entity/wind.lua b/nullius/prototypes/entity/wind.lua index 8785042..04a097a 100644 --- a/nullius/prototypes/entity/wind.lua +++ b/nullius/prototypes/entity/wind.lua @@ -166,6 +166,7 @@ data:extend({ icon_size = 64, order = "bb", flags = {"placeable-neutral", "player-creation", "not-on-map"}, + hidden_in_factoriopedia = true, collision_box = {{-30.5, -30.5}, {30.5, 30.5}}, collision_mask = { layers = {layer_43 = true}}, selection_box = {{-0.9, -0.9}, {0.9, 0.9}}, diff --git a/nullius/prototypes/hidden.lua b/nullius/prototypes/hidden.lua index 19261be..cb278e7 100644 --- a/nullius/prototypes/hidden.lua +++ b/nullius/prototypes/hidden.lua @@ -247,3 +247,7 @@ data.raw.item["nullius-energy-barrel"] = nil data.raw.recipe["nullius-energy-barrel"] = nil data.raw.recipe["empty-nullius-energy-barrel"] = nil data.raw.technology["fluid-handling"].effects = { } + +data.raw["spider-vehicle"]["spidertron"].hidden_in_factoriopedia = true +data.raw["car"]["car"].hidden_in_factoriopedia = true +data.raw["car"]["tank"].hidden_in_factoriopedia = true \ No newline at end of file diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 553f8b5..2d3c536 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -343,6 +343,13 @@ data.raw["inserter"]["inserter"].next_upgrade = "bob-turbo-inserter" data.raw["inserter"]["inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } +data.raw["inserter"]["inserter"].localised_description = {"entity-description.inserterToggleInfo"} +-- data.raw["inserter"]["inserter"].custom_tooltip_fields = { --Potential alternative +-- { +-- name = {"", "Toggle long inserter"}, +-- value = {"", "Shift+L"} +-- } +-- } data.raw.item["bob-turbo-inserter"].subgroup = "inserter" data.raw.item["bob-turbo-inserter"].order = "nullius-c" @@ -360,6 +367,7 @@ data.raw["inserter"]["bob-turbo-inserter"].next_upgrade = "bulk-inserter" data.raw["inserter"]["bob-turbo-inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } +data.raw["inserter"]["bob-turbo-inserter"].localised_description = {"entity-description.inserterToggleInfo"} -- data.raw.item["turbo-filter-inserter"].subgroup = "inserter" -- data.raw.item["turbo-filter-inserter"].order = "nullius-d" @@ -394,6 +402,8 @@ data.raw["inserter"]["bulk-inserter"].next_upgrade = "bob-express-bulk-inserter" data.raw["inserter"]["bulk-inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } +data.raw["inserter"]["bulk-inserter"].localised_description = {"entity-description.inserterToggleInfo"} + data.raw.recipe["inserter"].order = "x" -- data.raw.item["bulk-filter-inserter"].subgroup = "inserter" @@ -429,6 +439,7 @@ data.raw["inserter"]["bob-express-bulk-inserter"].next_upgrade = nil data.raw["inserter"]["bob-express-bulk-inserter"].resistances = { { type = "impact", decrease = 100, percent = 90 } } +data.raw["inserter"]["bob-express-bulk-inserter"].localised_description = {"entity-description.inserterToggleInfo"} -- data.raw.item["express-bulk-filter-inserter"].subgroup = "inserter" -- data.raw.item["express-bulk-filter-inserter"].order = "nullius-h" From bd7631c70811fdec60055ac5579e11d0ec016b03 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 16:49:36 +0200 Subject: [PATCH 078/236] Cleaned some code and fixed the fluidmustflow version dependency --- nullius/info.json | 2 +- train-upgrader/scripts/upgrade.lua | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 02de0f5..9cc0f6b 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -21,7 +21,7 @@ "(?) IRobot >= 1.1.0", "(?) jetpack >= 0.3.14", - "(?) FluidMustFlow >= 1.4.4", + "(?) FluidMustFlow >= 1.4.3", "(?) factorissimo-2-notnotmelon >= 3.9.7", "(?) safefill >= 2.0.0", "(?) train-upgrader >= 2.0.0", diff --git a/train-upgrader/scripts/upgrade.lua b/train-upgrader/scripts/upgrade.lua index 9e54b27..2cbac7a 100644 --- a/train-upgrader/scripts/upgrade.lua +++ b/train-upgrader/scripts/upgrade.lua @@ -168,28 +168,28 @@ function restore_inventory(car, contents, station) for key, inv_slot in pairs(entry.contents) do itemname = inv_slot.name amount = inv_slot.count - quality = inv_slot.quality + quality = inv_slot.quality local inserted = inv.insert({name=itemname, count=amount, quality = quality}) - local remaining = amount - inserted - if (remaining < 1) then - entry.contents[key] = nil - else + local remaining = amount - inserted + if (remaining < 1) then + entry.contents[key] = nil + else entry.contents[key].count = remaining - end + end end end for _, inv_slot in pairs(entry.contents) do itemname = inv_slot.name - amount = inv_slot.count + amount = inv_slot.count quality = inv_slot.quality - for _,s in pairs(station.receivers) do - local receiver = s.get_inventory(defines.inventory.chest) - if ((receiver ~= nil) and receiver.can_insert({name=itemname, count=1, quality = quality})) then - amount = amount - receiver.insert({name=itemname, count=amount, quality = quality}) - if (amount < 1) then break end - end - end + for _,s in pairs(station.receivers) do + local receiver = s.get_inventory(defines.inventory.chest) + if ((receiver ~= nil) and receiver.can_insert({name=itemname, count=1, quality = quality})) then + amount = amount - receiver.insert({name=itemname, count=amount, quality = quality}) + if (amount < 1) then break end + end + end end end end @@ -247,7 +247,7 @@ function restore_grid(grid, contents, station, doit) burn.inventory.valid) then for _, entry in pairs(eq.fuel) do burn.inventory.insert({name=entry.name, count=entry.count,quality=entry.quality}) - end + end end if ((eq.burnt ~= nil) and (burn.burnt_result_inventory ~= nil) and burn.burnt_result_inventory.valid) then From 1b52df989d103840d7305ae826873c55de11b44d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 17:30:13 +0200 Subject: [PATCH 079/236] Added command to flip all valves --- nullius/scripts/startup.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index 0e01832..a587182 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -255,3 +255,10 @@ script.on_event(defines.events.on_research_finished, update_checkpoint_list(techname) end ) + +commands.add_command("flip_valves", nil, function(command) + for _, v in pairs(game.surfaces["nauvis"].find_entities_filtered{type = "valve"}) do + v.rotate() + v.rotate() + end +end) \ No newline at end of file From e184cc49f483b2306bac4317b3a277f3b15c4c5e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 18:52:56 +0200 Subject: [PATCH 080/236] Replaced colored wires icons with 1.1 version Fixed the description for some checkpoint techs --- nullius/graphics/icons/green-wire.png | Bin 0 -> 9243 bytes nullius/graphics/icons/red-wire.png | Bin 0 -> 10639 bytes nullius/prototypes/checkpoint.lua | 6 +++--- nullius/prototypes/item/intermediate.lua | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 nullius/graphics/icons/green-wire.png create mode 100644 nullius/graphics/icons/red-wire.png diff --git a/nullius/graphics/icons/green-wire.png b/nullius/graphics/icons/green-wire.png new file mode 100644 index 0000000000000000000000000000000000000000..bdee96fd797e84bc18fd3569bf335f4d20fad3ae GIT binary patch literal 9243 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 pWXX~xOO`BIvSi7UB}>+z{t5aU+r<(sT Date: Mon, 18 Aug 2025 22:10:18 +0200 Subject: [PATCH 081/236] Mod teleporters - fixed locale --- nullius/info.json | 3 ++- nullius/prototypes/mods.lua | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nullius/info.json b/nullius/info.json index 9cc0f6b..40c0566 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -22,13 +22,14 @@ "(?) jetpack >= 0.3.14", "(?) FluidMustFlow >= 1.4.3", - "(?) factorissimo-2-notnotmelon >= 3.9.7", + "(?) factorissimo-2-notnotmelon >= 3.9.6", "(?) safefill >= 2.0.0", "(?) train-upgrader >= 2.0.0", "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", "(?) aai-loaders >= 0.2.7", "(?) RenaiTransportation >= 2.2.4", "(?) Warehousing >= 1.0.3", + "(?) Teleporters >= 2.0.0", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 1dd3b37..b1a994d 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -793,6 +793,7 @@ data:extend({ { type = "recipe", name = "nullius-teleporter", + localised_name = {"teleporter"}, enabled = false, category = "nanotechnology", energy_required = 60, From 7b28ff38184605b8ce7ccc221397f2c7656657a6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 22:10:52 +0200 Subject: [PATCH 082/236] Fixed alt icons for assemblers, flying robots and nanofab --- nullius/prototypes/entity/assembler.lua | 10 ++++++ nullius/prototypes/entity/robot.lua | 44 +++++++++++++++---------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index cbea097..8ca8388 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -11,6 +11,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-small-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.1}, scale = 0.8}, minable = {mining_time = 0.6, result = "nullius-small-assembler-1"}, max_health = 200, dying_explosion = "medium-explosion", @@ -81,6 +82,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-medium-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.2}}, minable = {mining_time = 0.8, result = "nullius-medium-assembler-1"}, max_health = 300, dying_explosion = "medium-explosion", @@ -170,6 +172,7 @@ data:extend({ order = "nullius-mdb", icons = data.raw.item["nullius-large-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.4}, scale = 1.2}, minable = {mining_time = 1.5, result = "nullius-large-assembler-1"}, max_health = 600, dying_explosion = "medium-explosion", @@ -262,6 +265,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-small-assembler-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.1}, scale = 0.8}, minable = {mining_time = 0.9, result = "nullius-small-assembler-2"}, max_health = 300, dying_explosion = "medium-explosion", @@ -315,6 +319,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-small-assembler-3"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.1}, scale = 0.8}, minable = {mining_time = 1.2, result = "nullius-small-assembler-3"}, max_health = 400, dying_explosion = "medium-explosion", @@ -378,6 +383,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-medium-assembler-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.2}}, minable = {mining_time = 1.2, result = "nullius-medium-assembler-2"}, max_health = 450, dying_explosion = "medium-explosion", @@ -443,6 +449,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-medium-assembler-3"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.2}}, minable = {mining_time = 1.6, result = "nullius-medium-assembler-3"}, max_health = 600, dying_explosion = "medium-explosion", @@ -506,6 +513,7 @@ data:extend({ order = "nullius-mdc", icons = data.raw.item["nullius-large-assembler-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {0, -0.3}, scale = 1.2}, minable = {mining_time = 2, result = "nullius-large-assembler-2"}, max_health = 800, dying_explosion = "medium-explosion", @@ -609,6 +617,7 @@ data:extend({ order = data.raw.item["nullius-nanofabricator-1"].order .. "b", localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {-0.1, 0}, scale = 1.2}, minable = {mining_time = 2, result = "nullius-nanofabricator-1"}, max_health = 300, corpse = "big-remnants", @@ -718,6 +727,7 @@ data:extend({ order = data.raw.item["nullius-nanofabricator-2"].order .. "b", localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + icon_draw_specification = {shift = {-0.1, 0}, scale = 1.2}, minable = {mining_time = 2.5, result = "nullius-nanofabricator-2"}, max_health = 400, corpse = "big-remnants", diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index a5225df..efe64fe 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -24,11 +24,12 @@ data:extend({ { type = "construction-robot", name = "nullius-construction-bot-1", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-kilojoule", tostring(800)}}, + {"entity-description.nullius-kilojoule", tostring(800)}}, icons = data.raw.item["nullius-construction-bot-1"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.3}, scale = 0.4, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-1"}, max_health = 100, collision_box = {{0, 0}, {0, 0}}, @@ -67,11 +68,12 @@ data:extend({ { type = "construction-robot", name = "nullius-construction-bot-2", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-megajoule", tostring(3)}}, + {"entity-description.nullius-megajoule", tostring(3)}}, icons = data.raw.item["nullius-construction-bot-2"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.3}, scale = 0.4, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-2"}, max_health = 200, collision_box = {{0, 0}, {0, 0}}, @@ -110,11 +112,12 @@ data:extend({ { type = "construction-robot", name = "nullius-construction-bot-3", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-megajoule", tostring(8)}}, + {"entity-description.nullius-megajoule", tostring(8)}}, icons = data.raw.item["nullius-construction-bot-3"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.3}, scale = 0.4, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-3"}, max_health = 300, collision_box = {{0, 0}, {0, 0}}, @@ -123,7 +126,7 @@ data:extend({ damaged_trigger_effect = data.raw["construction-robot"]["construction-robot"].damaged_trigger_effect, dying_explosion = "construction-robot-explosion", max_payload_size = 3, - speed = 0.2777777778, + speed = 0.2777777778, energy_per_tick = "0.25kJ", energy_per_move = "2.4kJ", max_energy = "8MJ", @@ -153,11 +156,12 @@ data:extend({ { type = "construction-robot", name = "nullius-construction-bot-4", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.construction-robot"}, - {"entity-description.nullius-megajoule", tostring(15)}}, + {"entity-description.nullius-megajoule", tostring(15)}}, icons = data.raw.item["nullius-construction-bot-4"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.3}, scale = 0.4, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-construction-bot-4"}, max_health = 400, collision_box = {{0, 0}, {0, 0}}, @@ -166,7 +170,7 @@ data:extend({ damaged_trigger_effect = data.raw["construction-robot"]["construction-robot"].damaged_trigger_effect, dying_explosion = "construction-robot-explosion", max_payload_size = 4, - speed = 0.34722222222222, + speed = 0.34722222222222, energy_per_tick = "0.333333333333kJ", energy_per_move = "2.16kJ", max_energy = "15MJ", @@ -196,11 +200,12 @@ data:extend({ { type = "logistic-robot", name = "nullius-logistic-bot-1", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", tostring(1.2)}}, + {"entity-description.nullius-megajoule", tostring(1.2)}}, icons = data.raw.item["nullius-logistic-bot-1"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.2}, scale = 0.3, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-1"}, max_health = 100, collision_box = {{0, 0}, {0, 0}}, @@ -232,11 +237,12 @@ data:extend({ { type = "logistic-robot", name = "nullius-logistic-bot-2", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", tostring(2.5)}}, + {"entity-description.nullius-megajoule", tostring(2.5)}}, icons = data.raw.item["nullius-logistic-bot-2"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.2}, scale = 0.3, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-2"}, max_health = 150, collision_box = {{0, 0}, {0, 0}}, @@ -268,11 +274,12 @@ data:extend({ { type = "logistic-robot", name = "nullius-logistic-bot-3", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", tostring(6)}}, + {"entity-description.nullius-megajoule", tostring(6)}}, icons = data.raw.item["nullius-logistic-bot-3"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.2}, scale = 0.3, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-3"}, max_health = 200, collision_box = {{0, 0}, {0, 0}}, @@ -304,11 +311,12 @@ data:extend({ { type = "logistic-robot", name = "nullius-logistic-bot-4", - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"entity-description.logistic-robot"}, - {"entity-description.nullius-megajoule", tostring(12)}}, + {"entity-description.nullius-megajoule", tostring(12)}}, icons = data.raw.item["nullius-logistic-bot-4"].icons, flags = {"placeable-player", "player-creation", "placeable-off-grid", "not-on-map"}, + icon_draw_specification = {shift = {0, -0.2}, scale = 0.3, render_layer = "air-entity-info-icon"}, minable = {mining_time = 0.1, result = "nullius-logistic-bot-4"}, max_health = 250, collision_box = {{0, 0}, {0, 0}}, From 1112821feb624a90709ef327a826956c8e21b143 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 23:14:11 +0200 Subject: [PATCH 083/236] Added setting to hide the alt icon on chimneys and outfalls --- nullius/TODO_list.txt | 3 ++- nullius/locale/en/misc.cfg | 2 ++ nullius/prototypes/override.lua | 7 +++++++ nullius/prototypes/technology.lua | 2 +- nullius/settings.lua | 8 +++++++- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index ac29505..49f7b42 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -15,4 +15,5 @@ some of the mining drills that use the electric drill graphics have the vector_t airfilter graphics are not symmetric when rotating -> it causes the alt icon to be off center in certain orientations alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled hide the rest of military equipment and their related ammo categories that are unused (what to do if other mods reintroduces those ?) -new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) \ No newline at end of file +new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) +crash report for turbine crash (seems to be caused by engine itself) \ No newline at end of file diff --git a/nullius/locale/en/misc.cfg b/nullius/locale/en/misc.cfg index 9d35eb9..ff73e17 100644 --- a/nullius/locale/en/misc.cfg +++ b/nullius/locale/en/misc.cfg @@ -131,10 +131,12 @@ nullius-alignment=Multiplayer alignment nullius-wind-turbine-energy-multiplier=Wind turbine energy multiplier nullius-hydrothermal=Enable hydrothermal vents and offshore extractors. nullius-infinite-fumaroles=Infinite fumaroles +nullius-hide-void-alt=Hide venting building alt-icon [mod-setting-description] nullius-alignment=Players start in separate factions before teaming up. nullius-infinite-fumaroles=Don't limit land deposits of volcanic gas when water desposits are available. +nullius-hide-void-alt=Hides the alt-icon for Chimney and Outfall [alignment] nullius-align-first-intro=You're a von Neumann android. Your probe has arrived at a barren planet with a mandate to terraform it, seed it with life, and build a wave of successors to continue on to new planets. You've detected signs that other probes may be approaching this planet, but you're the first to arrive. Use this head start to prepare for potentially hostile interference, until you can determine if they're operating according to compatible directives. If so, work together to achieve them faster, otherwise reprogram them to share your goals or race to outcompete them. Prepare for a rough landing as you begin to enter the atmosphere. diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 2d3c536..6831d7e 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -948,3 +948,10 @@ for tilename,landfill in pairs(landfill_tiles) do tile.can_be_part_of_blueprint = true end end + +if settings.startup["nullius-hide-void-alt"].value then + local void_buildings = {"nullius-chimney-1","nullius-chimney-2","nullius-chimney-3","nullius-outfall-1","nullius-outfall-2","nullius-outfall-3"} + for _, building in pairs(void_buildings) do + table.insert(data.raw.furnace[building].flags, "hide-alt-info") + end +end \ No newline at end of file diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index a1b7bb8..3f7cc54 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -2607,7 +2607,7 @@ data:extend({ type = "technology", name = "nullius-aesthetics-1", order = "nullius-df", - icons = data.raw["selection-tool"]["nullius-rock-picker"].icons, + icons = data.raw["selection-tool"]["nullius-rock-picker"].icons, effects = { { type = "unlock-recipe", diff --git a/nullius/settings.lua b/nullius/settings.lua index 9abe13d..8416a12 100644 --- a/nullius/settings.lua +++ b/nullius/settings.lua @@ -13,5 +13,11 @@ data:extend({ minimum_value = 0.01, maximum_value = 100.0, hidden = true - } + }, + { + type = "bool-setting", + name = "nullius-hide-void-alt", + setting_type = "startup", + default_value = false + }, }) \ No newline at end of file From fd339525ac74f1e943787a97e3753e865f097528 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 23:45:22 +0200 Subject: [PATCH 084/236] Made floatation cell flippable Updated todo list --- nullius/TODO_list.txt | 5 ++++- nullius/prototypes/entity/furnace.lua | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 49f7b42..f183f23 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -16,4 +16,7 @@ airfilter graphics are not symmetric when rotating -> it causes the alt icon to alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled hide the rest of military equipment and their related ammo categories that are unused (what to do if other mods reintroduces those ?) new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) -crash report for turbine crash (seems to be caused by engine itself) \ No newline at end of file +crash report for turbine crash (seems to be caused by engine itself) +someone is missing the near inserters tech with bobinserters +someone is blocked from researching aesthetics-1 because of an invisible dependency +weird visualization for underground pipe pack \ No newline at end of file diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 9fef347..42f4d44 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -1279,6 +1279,7 @@ data:extend({ pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} } }, + forced_symmetry = "horizontal", -- TODO: decide what value graphics_set = { animation = scale_image({ layers = { From efa69b1bf53a2caa6ffbba75614e0bf7022c240e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 18 Aug 2025 23:51:59 +0200 Subject: [PATCH 085/236] Added missing migrations for nixie tubes --- nullius/migrations/nullius_2.0.0.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 1dc4e38..05fe316 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -3,12 +3,19 @@ [ ["nullius-empty-canister", "nullius-canister"], ["nullius-duct-end-point-outtake", "nullius-duct-exhaust"], - ["nullius-duct-end-point-intake", "nullius-duct-intake"] + ["nullius-duct-end-point-intake", "nullius-duct-intake"], + ["nullius-SNTD-old-nixie-tube", "nullius-classic-nixie-tube"], + ["nullius-SNTD-nixie-tube", "nullius-reinforced-nixie-tube"], + ["nullius-SNTD-nixie-tube-small", "nullius-small-reinforced-nixie-tube"] ], "tile":[ ["angels-tile-clay-brick", "nullius-tile-clay-brick"] ], "entity": [ ["angels-crystal-rock", "nullius-crystal-rock"] + ], + "technology": [ + ["nullius-SNTD-nixie-tubes-basic", "nullius-reinforced-nixie-tubes-basic"], + ["nullius-SNTD-nixie-tubes-reinforced", "nullius-reinforced-nixie-tubes-reinforced"] ] } \ No newline at end of file From a65fd8a5bc201852abfd3c27fb1a8f9fe547d0e1 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 00:02:28 +0200 Subject: [PATCH 086/236] Added migration script to hide nullius-landfill- surfaces from the remote view --- nullius/scripts/migrate.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nullius/scripts/migrate.lua b/nullius/scripts/migrate.lua index 52c5f84..fd6cd63 100644 --- a/nullius/scripts/migrate.lua +++ b/nullius/scripts/migrate.lua @@ -165,6 +165,13 @@ function migrate_version(event) force.technologies["nullius-salvage-lab-wreckage"].researched = true end end + for _,surface in pairs(game.surfaces) do + if string.sub(surface.name, 1, 17) == "nullius-landfill-" then + for _, force in pairs(game.forces) do + force.set_surface_hidden(surface.name, true) + end + end + end if (version >= 10901) then return end legacy_recipe_all("nullius-lithium-production", "lithium-chloride") From 05cd070007ecb8cbd1b3a5c4c10ea7189ec13e36 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 00:24:57 +0200 Subject: [PATCH 087/236] Fixed Fluid must flow reduced underground distance --- nullius/TODO_list.txt | 3 ++- nullius/prototypes/override.lua | 1 + nullius/prototypes/override_mod.lua | 6 ++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index f183f23..d2be6ba 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -19,4 +19,5 @@ new branch chirality_rework -> remove all the mirror buildings, use legacy syste crash report for turbine crash (seems to be caused by engine itself) someone is missing the near inserters tech with bobinserters someone is blocked from researching aesthetics-1 because of an invisible dependency -weird visualization for underground pipe pack \ No newline at end of file +weird visualization for underground pipe pack +pumps slower than expected -> is it because of flow_scaling ? \ No newline at end of file diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 6831d7e..91fa86d 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -875,6 +875,7 @@ data.raw["pump"]["pump"].resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", decrease = 20, percent = 50 } } +--data.raw["pump"]["pump"].flow_scaling = false data.raw["mining-drill"]["burner-mining-drill"].resource_categories = {"unused-resource"} data.raw["mining-drill"]["electric-mining-drill"].resource_categories = {"unused-resource"} diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 378fa53..970eb91 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -994,8 +994,8 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do local archetype = data.raw["pipe-to-ground"]["nullius-underground-pipe-"..lvl] junction.fluid_box.volume = archetype.fluid_box.volume - junction.minable.mining_time = (lvl * 0.5) - junction.hidden_in_factoriopedia = true -- TODO: confirm that those are just clutter for factoriopedia + junction.minable.mining_time = (lvl * 0.5) + junction.hidden_in_factoriopedia = true -- TODO: confirm that those are just clutter for factoriopedia for _,connection in pairs(junction.fluid_box.pipe_connections) do if ((connection.max_underground_distance ~= nil) and @@ -1726,8 +1726,6 @@ if mods["FluidMustFlow"] then data.raw["pump"]["duct-intake"].minable.mining_time = 3 data.raw["pump"]["duct-exhaust"].minable.mining_time = 3 - local duct_box = data.raw["pipe-to-ground"]["duct-underground"].fluid_box - duct_box.pipe_connections[2].max_underground_distance = duct_box.pipe_connections[2].max_underground_distance - 2 table.insert(data.raw.technology["nullius-barreling-3"].prerequisites,"nullius-ducts") end From e7f14f97aa0fa2bdd488c77edacc27f4959b5ba0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 00:32:07 +0200 Subject: [PATCH 088/236] railway-motor-car - compatibility --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 8 +++++--- nullius/prototypes/override_mod.lua | 12 ++++++------ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 40c0566..c29dc19 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -30,6 +30,7 @@ "(?) RenaiTransportation >= 2.2.4", "(?) Warehousing >= 1.0.3", "(?) Teleporters >= 2.0.0", + "(?) railway-motor-car >= 0.6.0", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index b1a994d..83e3227 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -2028,14 +2028,15 @@ data:extend({ { type = "recipe", name = "nullius-railway-motorcar-1", + localised_name = {"entity-name.railway-motor-car-base"}, enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 15, ingredients = { {type = "item", name = "nullius-locomotive-1", amount = 1}, {type = "item", name = "nullius-large-chest-1", amount = 1}, - {type = "item", name = "nullius-small-assembler-1", amount = 1} + {type = "item", name = "nullius-small-assembler-1", amount = 1} }, results = { {type = "item", name = "railway-motor-car-base", amount = 1} @@ -2044,8 +2045,9 @@ data:extend({ { type = "recipe", name = "nullius-railway-motorcar-2", + localised_name = {"entity-name.railway-motor-car-nuclear"}, enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "large-crafting", energy_required = 25, ingredients = { diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 970eb91..cc364bb 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -1560,28 +1560,28 @@ end if mods["railway-motor-car"] then data.raw["battery-equipment"]["railway-motor-car-base"].localised_name = - {"", {"equipment-name.railway-motor-car-base"}, " ", 1} + {"", {"equipment-name.railway-motor-car-base"}, " ", tostring(1)} data.raw["item"]["railway-motor-car-base"].localised_name = - {"", {"equipment-name.railway-motor-car-base"}, " ", 1} + {"", {"equipment-name.railway-motor-car-base"}, " ", tostring(1)} data.raw["item"]["railway-motor-car-base"].subgroup = "jetpack" data.raw["item"]["railway-motor-car-base"].order = "nullius-mb" data.raw["battery-equipment"]["railway-motor-car-base"].categories = {"cybernetic"} data.raw["battery-equipment"]["railway-motor-car-nuclear"].localised_name = - {"", {"equipment-name.railway-motor-car-base"}, " ", 2} + {"", {"equipment-name.railway-motor-car-base"}, " ", tostring(2)} data.raw["item"]["railway-motor-car-nuclear"].localised_name = - {"", {"equipment-name.railway-motor-car-base"}, " ", 2} + {"", {"equipment-name.railway-motor-car-base"}, " ", tostring(2)} data.raw["item"]["railway-motor-car-nuclear"].subgroup = "jetpack" data.raw["item"]["railway-motor-car-nuclear"].order = "nullius-mc" data.raw["battery-equipment"]["railway-motor-car-nuclear"].localised_description = {"item-description.railway-motor-car-base"} data.raw["battery-equipment"]["railway-motor-car-nuclear"].categories = {"cybernetic"} data.raw["locomotive"]["railway-motor-car-base"].localised_name = - {"", {"entity-name.railway-motor-car-base"}, " ", 1} + {"", {"entity-name.railway-motor-car-base"}, " ", tostring(1)} data.raw["locomotive"]["railway-motor-car-base"].weight = 250 data.raw["locomotive"]["railway-motor-car-base"].max_power = "600kW" data.raw["locomotive"]["railway-motor-car-base"].max_speed = 1.11111111 data.raw["locomotive"]["railway-motor-car-nuclear"].localised_name = - {"", {"entity-name.railway-motor-car-base"}, " ", 2} + {"", {"entity-name.railway-motor-car-base"}, " ", tostring(2)} data.raw["locomotive"]["railway-motor-car-nuclear"].weight = 325 data.raw["locomotive"]["railway-motor-car-nuclear"].max_power = "1.2MW" data.raw["locomotive"]["railway-motor-car-nuclear"].max_speed = 2.5 From f684d63cfea76d88edfd384a914ec82860d59d45 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 11:12:23 +0200 Subject: [PATCH 089/236] Changed minable properties for landfills --- nullius/TODO_list.txt | 6 +- nullius/prototypes/item/landfill.lua | 38 ++++-- nullius/prototypes/override.lua | 11 +- nullius/scripts/landfill.lua | 169 +++++++++++++-------------- 4 files changed, 124 insertions(+), 100 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index d2be6ba..5c240e7 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -17,7 +17,7 @@ alignment issue in multiplayer -> probably need a warning message when not every hide the rest of military equipment and their related ammo categories that are unused (what to do if other mods reintroduces those ?) new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) crash report for turbine crash (seems to be caused by engine itself) -someone is missing the near inserters tech with bobinserters -someone is blocked from researching aesthetics-1 because of an invisible dependency weird visualization for underground pipe pack -pumps slower than expected -> is it because of flow_scaling ? \ No newline at end of file +pumps slower than expected -> is it because of flow_scaling ? +solar collectors stopped ? +removing landfill -> shallow water remains: maybe change that/rework the landfill system anyway \ No newline at end of file diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index 7b26538..ce578cc 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -835,7 +835,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, category = "bulk-smelting", subgroup = "boxed-dumping", order = "nullius-fc", @@ -876,7 +876,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, category = "ore-crushing", subgroup = "boxed-dumping", order = "nullius-h", @@ -994,7 +994,7 @@ data:extend({ ingredients = { {type="item", name="nullius-terraforming-drone-tan", amount=5}, {type="item", name="nullius-box-land-fill-sand", amount=2500}, - {type="item", name="nullius-box-rocket-fuel", amount=4} + {type="item", name="nullius-box-rocket-fuel", amount=4} }, results = { {type="item", name="nullius-shallow-excavation-drone", amount=3}, @@ -1015,6 +1015,10 @@ data:extend({ transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, absorptions_per_second = {pollution = 0}, + minable = { + mining_time = 1, + name = "nullius-land-fill-sand" + }, variants = { empty_transitions = true, material_background = { @@ -1074,6 +1078,10 @@ data:extend({ transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, absorptions_per_second = {pollution = 0}, + minable = { + mining_time = 1, + name = "nullius-land-fill-bauxite" + }, variants = { empty_transitions = true, material_background = { @@ -1133,6 +1141,10 @@ data:extend({ transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, absorptions_per_second = {pollution = 0}, + minable = { + mining_time = 1, + name = "nullius-land-fill-iron" + }, variants = { empty_transitions = true, material_background = { @@ -1192,6 +1204,10 @@ data:extend({ transitions_between_transitions = transitions.cliff_transitions_between_transitions(), walking_sound = data.raw.tile["landfill"].walking_sound, absorptions_per_second = {pollution = 0}, + minable = { + mining_time = 1, + name = "nullius-land-fill-limestone" + }, variants = { empty_transitions = true, material_background = { @@ -1243,7 +1259,7 @@ data:extend({ { type = "tile", name = "nullius-white-concrete", - localised_name = {"item-name.nullius-white-concrete"}, + localised_name = {"item-name.nullius-white-concrete"}, order = "nullius-ccw", minable = {mining_time = 0.1, result = "nullius-white-concrete"}, collision_mask = { layers = {ground_tile = true}}, @@ -1256,14 +1272,14 @@ data:extend({ transition_overlay_layer_offset = data.raw.tile["refined-concrete"].transition_overlay_layer_offset, decorative_removal_probability = data.raw.tile["refined-concrete"].decorative_removal_probability, transitions = data.raw.tile["refined-concrete"].transitions, - transitions_between_transitions = data.raw.tile["refined-concrete"].transitions_between_transitions, + transitions_between_transitions = data.raw.tile["refined-concrete"].transitions_between_transitions, mined_sound = data.raw.tile["refined-concrete"].mined_sound, - walking_sound = data.raw.tile["refined-concrete"].walking_sound, - build_sound = data.raw.tile["refined-concrete"].build_sound, - scorch_mark_color = data.raw.tile["refined-concrete"].scorch_mark_color, - absorptions_per_second = data.raw.tile["refined-concrete"].absorptions_per_second, - trigger_effect = data.raw.tile["refined-concrete"].trigger_effect, - + walking_sound = data.raw.tile["refined-concrete"].walking_sound, + build_sound = data.raw.tile["refined-concrete"].build_sound, + scorch_mark_color = data.raw.tile["refined-concrete"].scorch_mark_color, + absorptions_per_second = data.raw.tile["refined-concrete"].absorptions_per_second, + trigger_effect = data.raw.tile["refined-concrete"].trigger_effect, + variants = { empty_transitions = true, material_background = { diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 91fa86d..454212d 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -946,9 +946,18 @@ for tilename,landfill in pairs(landfill_tiles) do local tile = data.raw.tile[tilename] if ((tile ~= nil) and (tile.placeable_by == nil)) then tile.placeable_by = {item=landfill, count=1} - tile.can_be_part_of_blueprint = true + tile.can_be_part_of_blueprint = true + tile.minable = { + mining_time = 1, + result = landfill + } end end +data.raw.tile["landfill"].minable = { + mining_time = 1, + result = "nullius-land-fill-gravel" +} +data.raw.tile["landfill"].is_foundation = false if settings.startup["nullius-hide-void-alt"].value then local void_buildings = {"nullius-chimney-1","nullius-chimney-2","nullius-chimney-3","nullius-outfall-1","nullius-outfall-2","nullius-outfall-3"} diff --git a/nullius/scripts/landfill.lua b/nullius/scripts/landfill.lua index 9539412..a4d2251 100644 --- a/nullius/scripts/landfill.lua +++ b/nullius/scripts/landfill.lua @@ -530,13 +530,13 @@ function built_tiles(event, entity) for _,t in pairs(event.tiles) do local row = grid[t.position.x] - if (row ~= nil) then - local cell = row[t.position.y] - if (cell ~= nil) then - cell.change = true - cell.oldname = t.old_tile.name + if (row ~= nil) then + local cell = row[t.position.y] + if (cell ~= nil) then + cell.change = true + cell.oldname = t.old_tile.name + end end - end end local newtiles = { } @@ -544,50 +544,50 @@ function built_tiles(event, entity) for _,t in pairs(filltiles) do local tx = t.position.x local row = grid[tx] - if (row ~= nil) then - local ty = t.position.y - local cell = row[ty] - if ((cell ~= nil) and (cell.change or (cell.coast ~= nil))) then - local water = false - local adjacent = false - for i=-1,1 do - if (not water) then - local r = grid[tx+i] - if (r == nil) then - water = true - else - for j=-1,1 do - local c = r[ty+j] - if (c == nil) then - water = true - elseif (c.change) then - adjacent = true - elseif (c.oldname:find("water")) then - water = true - end + if (row ~= nil) then + local ty = t.position.y + local cell = row[ty] + if ((cell ~= nil) and (cell.change or (cell.coast ~= nil))) then + local water = false + local adjacent = false + for i=-1,1 do + if (not water) then + local r = grid[tx+i] + if (r == nil) then + water = true + else + for j=-1,1 do + local c = r[ty+j] + if (c == nil) then + water = true + elseif (c.change) then + adjacent = true + elseif (c.oldname:find("water")) then + water = true + end + end + end end - end - end - end + end local newname = nil if (water) then - if (cell.change) then - newname = coastname - end - elseif (cell.change or adjacent) then - if (cell.coast ~= nil) then - newname = landfill_map(cell.coast, t.name) - else - newname = landfill_map(tilename, t.name) - end - end - if (newname ~= nil) then - newind = newind + 1 - newtiles[newind] = { name = newname, position = t.position } - end + if (cell.change) then + newname = coastname + end + elseif (cell.change or adjacent) then + if (cell.coast ~= nil) then + newname = landfill_map(cell.coast, t.name) + else + newname = landfill_map(tilename, t.name) + end + end + if (newname ~= nil) then + newind = newind + 1 + newtiles[newind] = { name = newname, position = t.position } + end + end end - end end for tx,row in pairs(grid) do @@ -602,56 +602,55 @@ function built_tiles(event, entity) depth = 3 elseif (oname == "water-green") then depth = 2 - green = true + green = true elseif (oname == "deepwater-green") then depth = 3 - green = true + green = true end - if (depth > 1) then + if (depth > 1) then local proximity = 3 - if (depth > 2) then - for i=-2,2 do - local r = grid[tx+i] - if (r ~= nil) then - for j=-2,2 do - local c = r[ty+j] - if ((c ~= nil) and c.change) then - if ((i > -2) and (i < 2) and (j > -2) and (j < 2)) then - proximity = 1 - elseif (proximity > 2) then - proximity = 2 - end - end - end + if (depth > 2) then + for i=-2,2 do + local r = grid[tx+i] + if (r ~= nil) then + for j=-2,2 do + local c = r[ty+j] + if ((c ~= nil) and c.change) then + if ((i > -2) and (i < 2) and (j > -2) and (j < 2)) then + proximity = 1 + elseif (proximity > 2) then + proximity = 2 + end + end + end + end end - end - else - for i=-1,1 do - local r = grid[tx+i] - if (r ~= nil) then - for j=-1,1 do - local c = r[ty+j] - if ((c ~= nil) and c.change) then - proximity = 1 - end - end - end - end - end - - if (proximity < 3) then - local newname = nil - if (proximity > 1) then - newname = ((green and "water-green") or "water") else - newname = ((green and "water-mud") or "water-shallow") + for i=-1,1 do + local r = grid[tx+i] + if (r ~= nil) then + for j=-1,1 do + local c = r[ty+j] + if ((c ~= nil) and c.change) then + proximity = 1 + end + end + end + end end - newind = newind + 1 + if (proximity < 3) then + local newname = nil + if (proximity > 1) then + newname = ((green and "water-green") or "water") + else + newname = ((green and "water-mud") or "water-shallow") + end + newind = newind + 1 newtiles[newind] = { name = newname, position = cell.position } + end end - end - end + end end end From a605133170a87b04f895346c4c2629b0e6c4a754 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 16:44:41 +0200 Subject: [PATCH 090/236] Fixed turbine crash -> turns out that replacing an entity that has a pipe connection of type "input-output" to one that has just "input" causes an engine crash (but not the other way around !) --- nullius/prototypes/entity/turbine.lua | 2 +- nullius/scripts/turbine.lua | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index a330d4a..5c1b127 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -235,7 +235,7 @@ local furnace1cb = { fluid_boxes = { { production_type = "input", - pipe_connections = {{ flow_direction = "input", position = {0, -2}, direction = defines.direction.north }}, + pipe_connections = {{ flow_direction = "input-output", position = {0, -2}, direction = defines.direction.north }}, pipe_covers = pipecoverspictures(), volume = 500, secondary_draw_orders = { north = -1 } diff --git a/nullius/scripts/turbine.lua b/nullius/scripts/turbine.lua index 4caa29b..dc9846e 100644 --- a/nullius/scripts/turbine.lua +++ b/nullius/scripts/turbine.lua @@ -97,8 +97,8 @@ local function replace_turbine(entity, force, newname) local entry = storage.nullius_turbines[entity.unit_number] if (entry ~= nil) then connector_contents = save_fluid_contents(entry.connector) - generator_contents = save_fluid_contents(entry.generator) - remove_turbine(entity.unit_number) + generator_contents = save_fluid_contents(entry.generator) + remove_turbine(entity.unit_number) end if (newname ~= nil) then @@ -281,7 +281,6 @@ end script.on_event(defines.events.on_entity_settings_pasted, entity_paste_event) - function dolly_moved_entity(event) if (storage.nullius_turbines == nil) then return end if (event == nil) then return end From 2de76149922f49bf16df33cf6e7d0d68cc750701 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 18:24:32 +0200 Subject: [PATCH 091/236] Fixed tiers of pumps, fixed pipe connections for small pumps, removed all mentions of pressure in descriptions of entities and in informatron --- nullius/TODO_list.txt | 3 - nullius/locale/en/entity.cfg | 40 +++---- nullius/locale/en/informatron.cfg | 7 +- nullius/locale/en/item.cfg | 7 +- nullius/locale/en/tech.cfg | 2 +- nullius/locale/ko/item.cfg | 3 - nullius/locale/pl/item.cfg | 3 - nullius/locale/ru/item.cfg | 3 - nullius/locale/uk/item.cfg | 3 - nullius/locale/zh-CN/nullius.cfg | 3 - nullius/prototypes/entity/plumbing.lua | 154 ++++++++++++------------- nullius/prototypes/override.lua | 4 +- nullius/prototypes/override_final.lua | 2 +- nullius/prototypes/override_mod.lua | 60 ++++------ nullius/scripts/informatron.lua | 2 - 15 files changed, 125 insertions(+), 171 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 5c240e7..89d2ea3 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -1,7 +1,6 @@ TODO list: add working_sounds to entities (i think) Fix fluid boxes (volume and pipe connections) -Valves, pipes and tanks: fix mentions of pressure in locales Rework the checkpoint system (maybe) fix the others warnings in the log landfill variants are not the same as on 1.1 @@ -16,8 +15,6 @@ airfilter graphics are not symmetric when rotating -> it causes the alt icon to alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled hide the rest of military equipment and their related ammo categories that are unused (what to do if other mods reintroduces those ?) new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) -crash report for turbine crash (seems to be caused by engine itself) weird visualization for underground pipe pack -pumps slower than expected -> is it because of flow_scaling ? solar collectors stopped ? removing landfill -> shallow water remains: maybe change that/rework the landfill system anyway \ No newline at end of file diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index c44284d..faebe39 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -353,10 +353,10 @@ nullius-well-1=Pumps groundwater from below surface (Up to 100/s). nullius-well-2=Pumps groundwater from below surface (Up to 400/s). nullius-seawater-intake-1=Placed off coast to produce seawater (Up to 125/s). nullius-seawater-intake-2=Placed off coast to produce seawater (Up to 500/s). -nullius-chimney-1=Vents excess gas to atmosphere (Up to 100/s). Compressed gases released at half speed. Requires input of at least 10% pressure. +nullius-chimney-1=Vents excess gas to atmosphere (Up to 100/s). Compressed gases released at half speed. nullius-chimney-2=Vents excess gas to atmosphere (Up to 500/s). Compressed gases released at half speed. nullius-chimney-3=Vents excess gas to atmosphere (Up to 2000/s). Compressed gases released at half speed. -nullius-outfall-1=Dumps excess liquid into sea (Up to 100/s). Requires input of at least 10% pressure. +nullius-outfall-1=Dumps excess liquid into sea (Up to 100/s). nullius-outfall-2=Dumps excess liquid into sea (Up to 400/s). nullius-outfall-3=Dumps excess liquid into sea (Up to 1000/s). nullius-hydro-plant=Filters impurities and treats water. @@ -394,26 +394,26 @@ nullius-combustion-chamber=Burns stored chemical fuels to produce steam. nullius-boiler=Uses electricity to turn water into steam. nullius-chemical-plant=Catalyzes a broad range of chemical reactions. nullius-one-way-valve=Allows flow in a single direction only. May be useful to control backflow and sloshing in higher throughput pipes. -nullius-relief-valve=Allows flow from a source with over 75% pressure. Useful attached to a pump-filled tank to spill excess quantities of a byproduct for venting to avoid blocking production. -nullius-top-up-valve=Allows flow into a destination with under 50% pressure. Useful when you have two sources of the same fluid, as both a byproduct and a main product. Use this valve to fill a tank from the main product pipeline, and not the byproduct pipeline, thus prioritizing use of the byproduct when sufficient, but providing it by other means if not. -nullius-priority-valve=Allows flow from a source with over 25% pressure. Useful when supplying a single fluid to multiple destinations of varying importance. Use this valve to supply a pipeline of secondary importance, so that it will be supplied only if the tank has adequate supply to satisfy the primary usage. -nullius-pipe=Transfers fluid at up to __1__% pressure.\nThroughput of up to __2__ fluid per second across 10 pipe segments between pumps, or __3__/s across 50. -nullius-underground-pipe=Transfers fluid at up to __1__% pressure. -nullius-small-tank-1=Stores fluid at up to 90% pressure.\nMay require a pump to fill completely. -nullius-small-tank-2=Stores fluid at up to 100% pressure.\nMay require a pump to fill completely. -nullius-medium-tank-1=Stores fluid at up to 85% pressure.\nMay require a pump to fill completely. -nullius-medium-tank-2=Stores fluid at up to 90% pressure.\nMay require a pump to fill completely. -nullius-medium-tank-3=Stores fluid at up to 100% pressure.\nMay require a pump to fill completely. -nullius-large-tank-1=Stores fluid at up to 100% pressure.\nMay require a pump to fill completely. -nullius-large-tank-2=Stores fluid at up to 110% pressure.\nRequires a pump to fill to maximum capacity. -nullius-large-tank-3=Stores fluid at up to 125% pressure.\nRequires a pump to fill to maximum capacity. +nullius-relief-valve=Allows flow from a source with over 75% volume. Useful attached to a pump-filled tank to spill excess quantities of a byproduct for venting to avoid blocking production. +nullius-top-up-valve=Allows flow into a destination with under 50% volume. Useful when you have two sources of the same fluid, as both a byproduct and a main product. Use this valve to fill a tank from the main product pipeline, and not the byproduct pipeline, thus prioritizing use of the byproduct when sufficient, but providing it by other means if not. +nullius-priority-valve=Allows flow from a source with over 25% volume. Useful when supplying a single fluid to multiple destinations of varying importance. Use this valve to supply a pipeline of secondary importance, so that it will be supplied only if the tank has adequate supply to satisfy the primary usage. +nullius-pipe=Transfers fluids +nullius-underground-pipe=Transfers fluids. +nullius-small-tank-1=Stores fluid. Not much. +nullius-small-tank-2=Stores fluid. Not much. +nullius-medium-tank-1=Stores fluid. +nullius-medium-tank-2=Stores fluid. +nullius-medium-tank-3=Stores fluid. +nullius-large-tank-1=Stores fluid. A lot. +nullius-large-tank-2=Stores fluid. A lot. +nullius-large-tank-3=Stores fluid. A lot. nullius-barrel-pump-1=Fills or empties barrels with fluid. nullius-barrel-pump-2=Fills or empties barrels with fluid. -nullius-pump-1=Necessary to maintain acceptable flow rate over longer pipeline distances. Required to fill tanks to their maximum capacity from pipes with lower maximum pressure. -nullius-pump-2=Necessary to maintain acceptable flow rate over longer pipeline distances. Required to fill tanks to their maximum capacity from pipes with lower maximum pressure. -nullius-pump-3=Necessary to maintain acceptable flow rate over longer pipeline distances. Required to fill tanks to their maximum capacity from pipes with lower maximum pressure. -nullius-small-pump-1=Half the size of a regular pump, but slower. -nullius-small-pump-2=Half the size of a regular pump, but slower. +nullius-pump-1=Necessary to extend pipelines to longer distances. Pumps up to 1200/s +nullius-pump-2=Necessary to extend pipelines to longer distances. Pumps up to 3000/s +nullius-pump-3=Necessary to extend pipelines to longer distances. Pumps up to 6000/s +nullius-small-pump-1=Half the size of a regular pump, but slower. Pumps up to 960/s +nullius-small-pump-2=Half the size of a regular pump, but slower. Pumps up to 1920/s nullius-wind-base-1=Intermittent renewable energy averaging 600kW, up to a max of 1.5MW. nullius-wind-base-2=Intermittent renewable energy averaging 1.6MW, up to a max of 4MW. nullius-wind-base-3=Intermittent renewable energy averaging 4.8MW, up to a max of 12MW. diff --git a/nullius/locale/en/informatron.cfg b/nullius/locale/en/informatron.cfg index b5d1360..1aa1eb7 100644 --- a/nullius/locale/en/informatron.cfg +++ b/nullius/locale/en/informatron.cfg @@ -46,11 +46,8 @@ menu_fluids=Fluids title_fluids=Fluids page_fluids_text_1=Chemistry and fluid handling are critical parts of the Nullius crafting system, so it's important to understand how to manage fluids. There are certain areas where Nullius diverges from vanilla fluid handling to be aware of. -page_fluids_header_1=Pressure -page_fluids_text_2=Nullius has the concept of a "pressure" rating for pipes and tanks. This is an abstraction that uses features of the Factorio game engine's fluid simulation to create pipes with varying throughput. A major effect of the greater "pressure" rating is that Pipe 4 transfers significantly more fluid per second than pipe 1. A vanilla pipe would fall somewhere between a Nullius pipe 1 and 2 in throughput. This effect is complicated to achieve in Factorio and has a few side effects. -page_fluids_text_3=The pressure rating of each pipe and tank is listed in the tooltip. When pipe 1 is completely full, it achieves its maximum pressure of 40%. When pipe 2 is full it's at 60%, pipe 3 is 80%, and when pipe 4 is full it's 100%. Tanks can handle a little more pressure than pipes. 100% of what? An arbitrary amount that the best pipes can handle. This system is just an abstraction that isn't meant to refer to a fixed amount of real world pressure. -page_fluids_text_4=Since pipe 1 and 2 never achieve 75% pressure, even when full, they are not compatible with the relief valve which has a threshold of 75%. Tank 1 does go over 75%, so it can be used with a relief valve. The trick is that if you hook up a tank 1 directly with a pipe 1 it will only get approximately half full due to the pressure difference. This can be solved with pumps, which will fill a tank completely regardless of the pressure of the source. This is the reason that relief valves become available with the same technology as pumps, since they are unusable in the early game without pumps. - +page_fluids_header_1=Pressure (outdated mechanic) +page_fluids_text_2=Nullius had the concept of a "pressure" rating for pipes and tanks. It was removed by the engine in 2.0, now the new fluid system simplifies tremendously all matters of fluid manipulation. Use pumps, tanks and valves to master fluids ! page_fluids_header_2=Waste Byproducts page_fluids_text_5=Many chemical processes in Nullius produce 2 or more products. Any time that happens, it is likely to create a waste byproduct, since you are unlikely to use all of the products in exactly the ratio they are produced. Disposing of unwanted waste fluids is essential to sustainable automation. page_fluids_text_6=Hover over the fluid icon to read the tooltip. Fluids may be gases or liquids. Most gases can be vented in a chimney and most liquids can be vented in an outfall. However, some are marked as non-disposable, and cannot just be vented. All byproducts can be destroyed in some way, but there may be more steps required. Hydrochloric acid, for instance, must be neutralized by caustic solution first. Benzene must be combusted into disposable gases. Some solids, such as sodium hydroxide or gravel may be processed into fluid for the sake of disposal. Most key waste disposal technologies are available by the end of the mechanical engineering technologies. In the early game prior to that point you may need to build some chests or manually clear tanks. diff --git a/nullius/locale/en/item.cfg b/nullius/locale/en/item.cfg index 1681e93..1ecc3f0 100644 --- a/nullius/locale/en/item.cfg +++ b/nullius/locale/en/item.cfg @@ -552,13 +552,10 @@ nullius-underground-straight-junction=Extend an underground pipeline nullius-underground-elbow-junction=Connect two perpendicular underground pipes nullius-underground-three-way-junction=Connect three underground pipes nullius-underground-four-way-junction=Connect four underground pipes -nullius-pressure-2= at up to 60% pressure. -nullius-pressure-3= at up to 80% pressure. -nullius-pressure-4= at up to 100% pressure. nullius-underground-ctrl-r=\nPress CTRL+R to rotate underground pipes. nullius-underground-pump=Pump directly between underground pipes. -nullius-adjustable-top-up-valve=Allows flow into a destination with pressure below configurable threshold.\nPress +/- to adjust threshold by 10% increments. -nullius-adjustable-relief-valve=Allows flow from a source with pressure above configurable threshold.\nPress +/- to adjust threshold by 10% increments. +nullius-adjustable-top-up-valve=Allows flow into a destination with volume below configurable threshold.\nPress +/- to adjust threshold by 10% increments. +nullius-adjustable-relief-valve=Allows flow from a source with volume above configurable threshold.\nPress +/- to adjust threshold by 10% increments. nullius-companion-fuel=Companion drone fuel pod. nullius-land-fill-gravel=Can be placed on water to create terrain you can build on. Result in a grey mix of dirt and sand terrain, with a dirt coast. nullius-land-fill-sand=Can be placed on water to create terrain you can build on. Results entirely in tannish sand terrain. diff --git a/nullius/locale/en/tech.cfg b/nullius/locale/en/tech.cfg index e46f172..e6fd707 100644 --- a/nullius/locale/en/tech.cfg +++ b/nullius/locale/en/tech.cfg @@ -202,7 +202,7 @@ nullius-actuation=Mechanical devices capable of precise movements. nullius-logistics=Transportation of commodities from producers to consumers. nullius-wind-power=Intermittent renewable energy generation. nullius-metalworking=Automated shaping of metals into useful forms. -nullius-pumping=Increase pressure and flow rate of fluids. +nullius-pumping=Increase pipeline extent and flow rate of fluids. nullius-automation=Automatic assembly of materials into complex products. nullius-steelmaking=Techniques to alloy iron for improved tensile strength. nullius-mineral-processing=Sorting of ores by composition and purity. diff --git a/nullius/locale/ko/item.cfg b/nullius/locale/ko/item.cfg index fbbea9d..beff115 100644 --- a/nullius/locale/ko/item.cfg +++ b/nullius/locale/ko/item.cfg @@ -501,9 +501,6 @@ nullius-underground-straight-junction=지하 파이프라인 확장 nullius-underground-elbow-junction=수직 지하 파이프 2개 연결 nullius-underground-three-way-junction=지하 파이프 3개 연결 nullius-underground-four-way-junction=지하 파이프 4개 연결 -nullius-pressure-2=최대 60% 압력에서. -nullius-pressure-3=최대 80% 압력에서. -nullius-pressure-4=최대 100% 압력에서. nullius-underground-ctrl-r=\n지하 파이프를 회전하려면 CTRL+R을 누릅니다. nullius-underground-pump=지하 파이프 사이에 직접 펌핑합니다. nullius-adjustable-top-up-valve=압력이 구성 가능한 임계값보다 낮은 대상으로의 흐름을 허용합니다.\n+/-를 눌러 임계값을 10%씩 조정합니다. diff --git a/nullius/locale/pl/item.cfg b/nullius/locale/pl/item.cfg index 5ea9343..436de8b 100644 --- a/nullius/locale/pl/item.cfg +++ b/nullius/locale/pl/item.cfg @@ -499,9 +499,6 @@ nullius-underground-straight-junction=Przedłużenie podziemnego rurociągu. nullius-underground-elbow-junction=Połączenie dwóch prostopadłych rur podziemnych nullius-underground-three-way-junction=Połączenie trzech rur podziemnych nullius-underground-four-way-junction=Połączenie czterech rur podziemnych -nullius-pressure-2= do 60% ciśnienia. -nullius-pressure-3= do 80% ciśnienia. -nullius-pressure-4= do 100% ciśnienia. nullius-underground-ctrl-r= Naciśnij CTRL+R aby obrócić podziemne rury. nullius-underground-pump=Pompuj bezpośrednio pomiędzy podziemnymi rurami. nullius-adjustable-top-up-valve=Zezwala na przepływ do miejsca docelowego z ciśnieniem poniżej konfigurowalnego progu.\nNaciśnij +/- aby dostosować o 10%. diff --git a/nullius/locale/ru/item.cfg b/nullius/locale/ru/item.cfg index 0bc4377..2e99b89 100644 --- a/nullius/locale/ru/item.cfg +++ b/nullius/locale/ru/item.cfg @@ -566,7 +566,4 @@ nullius-guide-drone-copper-1=Направляет метеор с орбиты, nullius-guide-drone-copper-2=Направляет метеоритный дождь с орбиты, чтобы создать большое месторождение меди. nullius-guide-drone-uranium-1=Направляет метеор с орбиты, чтобы создать небольшое месторождение урана. nullius-guide-drone-uranium-2=Направляет метеоритный дождь с орбиты, чтобы создать большое месторождение урана. -nullius-pressure-2= с давлением до 60%. -nullius-pressure-3= с давлением до 80%. -nullius-pressure-4= с давлением до 100%. nullius-underground-ctrl-r=\nНажмите CTRL+R для поворота подземной трубы. diff --git a/nullius/locale/uk/item.cfg b/nullius/locale/uk/item.cfg index 1504bc6..e8458d0 100644 --- a/nullius/locale/uk/item.cfg +++ b/nullius/locale/uk/item.cfg @@ -521,9 +521,6 @@ nullius-underground-straight-junction=Продовження підземног nullius-underground-elbow-junction=З'єднує дві перпендикуоярні підземні труби. nullius-underground-three-way-junction=З'єднує три підземні труби. nullius-underground-four-way-junction=З'єднує чотири підземні труби. -nullius-pressure-2= із тиском до 60%. -nullius-pressure-3= із тиском до 80%. -nullius-pressure-4= із тиском до 100%. nullius-underground-ctrl-r=\nНатисніть CTRL+R, щоб повернути підземні труби. nullius-underground-pump=Прокачуйте безпосередньо між підземними трубами. nullius-adjustable-top-up-valve=Дозволяє потік до пункту призначення з тиском, нижчим за встановлений поріг.\nНатискайте +/-, щоб налаштувати поріг із кроком 10%. diff --git a/nullius/locale/zh-CN/nullius.cfg b/nullius/locale/zh-CN/nullius.cfg index 8d20758..2df315f 100644 --- a/nullius/locale/zh-CN/nullius.cfg +++ b/nullius/locale/zh-CN/nullius.cfg @@ -1747,9 +1747,6 @@ nullius-underground-straight-junction=延伸地下管道, nullius-underground-elbow-junction=连接两根垂直的地下管道, nullius-underground-three-way-junction=连接三根地下管道, nullius-underground-four-way-junction=连接四根地下管道, -nullius-pressure-2=以60%的峰值压强。 -nullius-pressure-3=以80%的峰值压强。 -nullius-pressure-4=以100%的峰值压强。 nullius-underground-ctrl-r=\n按下CTRL+R旋转地下管道。 nullius-underground-pump=在地下管道之间直接进行泵送。 nullius-adjustable-top-up-valve=当目标压强低于可配置阈值时,允许将流体流入目标。\n按+/-按键以10%的增量调整阈值。 diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index b52edab..9437bff 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -494,11 +494,11 @@ data:extend({ crafting_speed = 1, fixed_recipe = "nullius-freshwater", energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions = 0.02, - drain = "20kW" - }, + type = "electric", + usage_priority = "secondary-input", + emissions = 0.02, + drain = "20kW" + }, energy_usage = "280kW", ingredient_count = 1, minable = {mining_time = 1, result = "nullius-well-1"}, @@ -2654,7 +2654,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "15kW", - pumping_speed = 50, + pumping_speed = 20, impact_category = data.raw.pump["pump"].impact_category, open_sound = data.raw.pump["pump"].open_sound, close_sound = data.raw.pump["pump"].close_sound, @@ -2821,7 +2821,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "20kW", - pumping_speed = 100, + pumping_speed = 50, impact_category = data.raw.pump["pump"].impact_category, open_sound = data.raw.pump["pump"].open_sound, close_sound = data.raw.pump["pump"].close_sound, @@ -2976,8 +2976,8 @@ data:extend({ fluid_box = { volume = 500, pipe_connections = { - { position = {0, 0.1}, flow_direction = "output", direction = defines.direction.south }, - { position = {0, -0.1}, flow_direction = "input", direction = defines.direction.north } + { position = {0, 0}, flow_direction = "output", direction = defines.direction.south }, + { position = {0, 0}, flow_direction = "input", direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -2986,7 +2986,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "10kW", - pumping_speed = 40, + pumping_speed = 16, impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, @@ -2996,71 +2996,71 @@ data:extend({ animations = { north = { - layers = { - { + layers = { + { filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, - scale = 0.5, - animation_speed = 0.5, - shift = {0, -0.5} - }, - { + scale = 0.5, + animation_speed = 0.5, + shift = {0, -0.5} + }, + { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-north.png", priority = "extra-high", frame_count = 16, - line_length = 4, + line_length = 4, width = 64, height = 64, - animation_speed = 0.5, + animation_speed = 0.5, tint = {0.75, 0.85, 0.95}, shift = {0, -0.05} - } - } + } + } }, east = { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-east.png", priority = "extra-high", - frame_count = 16, - line_length = 4, + frame_count = 16, + line_length = 4, width = 64, height = 64, - animation_speed = 0.5, + animation_speed = 0.5, tint = {0.75, 0.85, 0.95} }, south = { - layers = { - { + layers = { + { filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, - scale = 0.5, - animation_speed = 0.5, - shift = {0, -0.5} - }, - { + scale = 0.5, + animation_speed = 0.5, + shift = {0, -0.5} + }, + { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-south.png", priority = "extra-high", - frame_count = 16, - line_length = 4, + frame_count = 16, + line_length = 4, width = 64, height = 64, - animation_speed = 0.5, + animation_speed = 0.5, tint = {0.75, 0.85, 0.95}, shift = {0, -0.05} - } - } + } + } }, west = { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-west.png", priority = "extra-high", - frame_count = 16, - line_length = 4, + frame_count = 16, + line_length = 4, width = 64, height = 64, - animation_speed = 0.5, + animation_speed = 0.5, tint = {0.75, 0.85, 0.95} } } @@ -3087,8 +3087,8 @@ data:extend({ fluid_box = { volume = 500, pipe_connections = { - { position = {0, 0.1}, flow_direction = "output", direction = defines.direction.south }, - { position = {0, -0.1}, flow_direction = "input", direction = defines.direction.north } + { position = {0, 0}, flow_direction = "output", direction = defines.direction.south }, + { position = {0, 0}, flow_direction = "input", direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -3097,7 +3097,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "15kW", - pumping_speed = 80, + pumping_speed = 32, impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, @@ -3107,71 +3107,71 @@ data:extend({ animations = { north = { - layers = { - { + layers = { + { filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, - scale = 0.5, - animation_speed = 0.667, - shift = {0, -0.5} - }, - { + scale = 0.5, + animation_speed = 0.667, + shift = {0, -0.5} + }, + { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-north.png", priority = "extra-high", frame_count = 16, - line_length = 4, + line_length = 4, width = 64, height = 64, - animation_speed = 0.667, + animation_speed = 0.667, tint = {1, 1, 0.85}, shift = {0, -0.05} - } - } + } + } }, east = { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-east.png", priority = "extra-high", - frame_count = 16, - line_length = 4, + frame_count = 16, + line_length = 4, width = 64, height = 64, - animation_speed = 0.667, + animation_speed = 0.667, tint = {1, 1, 0.85} }, south = { - layers = { - { + layers = { + { filename = "__boblogistics__/graphics/entity/pipe/steel/pipe-straight-vertical.png", repeat_count = 16, width = 128, height = 64, - scale = 0.5, - animation_speed = 0.667, - shift = {0, -0.5} - }, - { + scale = 0.5, + animation_speed = 0.667, + shift = {0, -0.5} + }, + { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-south.png", priority = "extra-high", - frame_count = 16, - line_length = 4, + frame_count = 16, + line_length = 4, width = 64, height = 64, - animation_speed = 0.667, + animation_speed = 0.667, tint = {1, 1, 0.85}, shift = {0, -0.05} - } - } + } + } }, west = { filename = "__angelsrefininggraphics__/graphics/entity/water-pump/pump-west.png", priority = "extra-high", - frame_count = 16, - line_length = 4, + frame_count = 16, + line_length = 4, width = 64, height = 64, - animation_speed = 0.667, + animation_speed = 0.667, tint = {1, 1, 0.85} } } @@ -3180,7 +3180,7 @@ data:extend({ { type = "pipe", name = "nullius-pipe-2", - localised_description = {"entity-description.nullius-pipe", tostring(60), tostring(4360), tostring(1260)}, + localised_description = {"entity-description.nullius-pipe"}, icons = data.raw.item["nullius-pipe-2"].icons, flags = {"placeable-neutral", "player-creation"}, icon_draw_specification = {scale = 0.5}, @@ -3218,7 +3218,7 @@ data:extend({ { type = "pipe", name = "nullius-pipe-3", - localised_description = {"entity-description.nullius-pipe", tostring(80), tostring(5370), tostring(4260)}, + localised_description = {"entity-description.nullius-pipe"}, icons = data.raw.item["nullius-pipe-3"].icons, flags = {"placeable-neutral", "player-creation"}, icon_draw_specification = {scale = 0.5}, @@ -3256,7 +3256,7 @@ data:extend({ { type = "pipe", name = "nullius-pipe-4", - localised_description = {"entity-description.nullius-pipe", tostring(100), tostring(6720), tostring(5180)}, + localised_description = {"entity-description.nullius-pipe"}, icons = data.raw.item["nullius-pipe-4"].icons, flags = {"placeable-neutral", "player-creation"}, icon_draw_specification = {scale = 0.5}, @@ -3293,7 +3293,7 @@ data:extend({ { type = "pipe-to-ground", name = "nullius-underground-pipe-2", - localised_description = {"entity-description.nullius-underground-pipe", tostring(60)}, + localised_description = {"entity-description.nullius-underground-pipe"}, icons = data.raw.item["nullius-underground-pipe-2"].icons, flags = {"placeable-neutral", "player-creation"}, icon_draw_specification = {scale = 0.5}, @@ -3333,7 +3333,7 @@ data:extend({ { type = "pipe-to-ground", name = "nullius-underground-pipe-3", - localised_description = {"entity-description.nullius-underground-pipe", tostring(80)}, + localised_description = {"entity-description.nullius-underground-pipe"}, icons = data.raw.item["nullius-underground-pipe-3"].icons, flags = {"placeable-neutral", "player-creation"}, icon_draw_specification = {scale = 0.5}, @@ -3373,7 +3373,7 @@ data:extend({ { type = "pipe-to-ground", name = "nullius-underground-pipe-4", - localised_description = {"entity-description.nullius-underground-pipe", tostring(100)}, + localised_description = {"entity-description.nullius-underground-pipe"}, icons = data.raw.item["nullius-underground-pipe-4"].icons, flags = {"placeable-neutral", "player-creation"}, icon_draw_specification = {scale = 0.5}, diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 454212d..5ce2cd4 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -825,7 +825,7 @@ data.raw["logistic-container"]["active-provider-chest"].minable.mining_time = 1 data.raw.item["pipe"].localised_name = {"entity-name.nullius-pipe-1"} data.raw.item["pipe"].localised_description = - {"entity-description.nullius-pipe", tostring(40), tostring(2290), tostring(450)} + {"entity-description.nullius-pipe"} data.raw["pipe"]["pipe"].localised_name = {"entity-name.nullius-pipe-1"} data.raw["pipe"]["pipe"].localised_description = data.raw.item["pipe"].localised_description @@ -833,7 +833,7 @@ data.raw["pipe"]["pipe"].minable.mining_time = 0.2 data.raw.item["pipe-to-ground"].localised_name = {"entity-name.nullius-underground-pipe-1"} data.raw.item["pipe-to-ground"].localised_description = - {"entity-description.nullius-underground-pipe", tostring(40)} + {"entity-description.nullius-underground-pipe"} data.raw["pipe-to-ground"]["pipe-to-ground"].localised_name = {"entity-name.nullius-underground-pipe-1"} data.raw["pipe-to-ground"]["pipe-to-ground"].localised_description = diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index 44b2106..91dfcfb 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -245,7 +245,7 @@ data.raw.item["pump"].stack_size = 50 data.raw["pump"]["pump"].fast_replaceable_group = "pump" data.raw["pump"]["pump"].next_upgrade = nil data.raw["pump"]["pump"].fluid_box.volume = 1000 -data.raw["pump"]["pump"].pumping_speed = 200 +data.raw["pump"]["pump"].pumping_speed = 100 data.raw.pump["nullius-pump-2"].collision_mask = data.raw.pump.pump.collision_mask data.raw.pump["nullius-pump-2"].collision_box = data.raw.pump.pump.collision_box data.raw.pump["nullius-pump-2"].selection_box = data.raw.pump.pump.selection_box diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index cc364bb..507249e 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -592,8 +592,7 @@ data.raw.item["one-to-one-forward-t2-pipe"].order = "nullius-bb" data.raw.item["one-to-one-forward-t2-pipe"].localised_name = {"", {"item-name.nullius-surface-two-way-junction"}, " ", tostring(1)} data.raw.item["one-to-one-forward-t2-pipe"].localised_description = - {"", {"item-description.nullius-surface-two-way-junction"}, - {"item-description.nullius-pressure-2"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-two-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-two-way-junction-1"].localised_name = data.raw.item["one-to-one-forward-t2-pipe"].localised_name data.raw.item["one-to-two-perpendicular-t2-pipe"].subgroup = "nullius-surface-junction" @@ -601,8 +600,7 @@ data.raw.item["one-to-two-perpendicular-t2-pipe"].order = "nullius-bc" data.raw.item["one-to-two-perpendicular-t2-pipe"].localised_name = {"", {"item-name.nullius-surface-three-way-junction"}, " ", tostring(1)} data.raw.item["one-to-two-perpendicular-t2-pipe"].localised_description = - {"", {"item-description.nullius-surface-three-way-junction"}, - {"item-description.nullius-pressure-2"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-three-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-three-way-junction-1"].localised_name = data.raw.item["one-to-two-perpendicular-t2-pipe"].localised_name data.raw.item["one-to-three-forward-t2-pipe"].subgroup = "nullius-surface-junction" @@ -610,8 +608,7 @@ data.raw.item["one-to-three-forward-t2-pipe"].order = "nullius-bd" data.raw.item["one-to-three-forward-t2-pipe"].localised_name = {"", {"item-name.nullius-surface-four-way-junction"}, " ", tostring(1)} data.raw.item["one-to-three-forward-t2-pipe"].localised_description = - {"", {"item-description.nullius-surface-four-way-junction"}, - {"item-description.nullius-pressure-2"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-four-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-four-way-junction-1"].localised_name = data.raw.item["one-to-three-forward-t2-pipe"].localised_name data.raw.item["underground-i-t2-pipe"].subgroup = "nullius-underground-junction" @@ -619,8 +616,7 @@ data.raw.item["underground-i-t2-pipe"].order = "nullius-bb" data.raw.item["underground-i-t2-pipe"].localised_name = {"", {"item-name.nullius-underground-straight-junction"}, " ", tostring(1)} data.raw.item["underground-i-t2-pipe"].localised_description = - {"", {"item-description.nullius-underground-straight-junction"}, - {"item-description.nullius-pressure-2"}} + {"", {"item-description.nullius-underground-straight-junction"}} data.raw.recipe["nullius-underground-straight-junction-1"].localised_name = data.raw.item["underground-i-t2-pipe"].localised_name data.raw.item["underground-L-t2-pipe"].subgroup = "nullius-underground-junction" @@ -628,8 +624,7 @@ data.raw.item["underground-L-t2-pipe"].order = "nullius-bc" data.raw.item["underground-L-t2-pipe"].localised_name = {"", {"item-name.nullius-underground-elbow-junction"}, " ", tostring(1)} data.raw.item["underground-L-t2-pipe"].localised_description = - {"", {"item-description.nullius-underground-elbow-junction"}, - {"item-description.nullius-pressure-2"}} + {"", {"item-description.nullius-underground-elbow-junction"}} data.raw.recipe["nullius-underground-elbow-junction-1"].localised_name = data.raw.item["underground-L-t2-pipe"].localised_name data.raw.item["underground-t-t2-pipe"].subgroup = "nullius-underground-junction" @@ -637,8 +632,7 @@ data.raw.item["underground-t-t2-pipe"].order = "nullius-bd" data.raw.item["underground-t-t2-pipe"].localised_name = {"", {"item-name.nullius-underground-three-way-junction"}, " ", tostring(1)} data.raw.item["underground-t-t2-pipe"].localised_description = - {"", {"item-description.nullius-underground-three-way-junction"}, - {"item-description.nullius-pressure-2"}} + {"", {"item-description.nullius-underground-three-way-junction"}} data.raw.recipe["nullius-underground-three-way-junction-1"].localised_name = data.raw.item["underground-t-t2-pipe"].localised_name data.raw.item["one-to-one-forward-t3-pipe"].subgroup = "nullius-surface-junction" @@ -646,8 +640,7 @@ data.raw.item["one-to-one-forward-t3-pipe"].order = "nullius-cb" data.raw.item["one-to-one-forward-t3-pipe"].localised_name = {"", {"item-name.nullius-surface-two-way-junction"}, " ", tostring(2)} data.raw.item["one-to-one-forward-t3-pipe"].localised_description = - {"", {"item-description.nullius-surface-two-way-junction"}, - {"item-description.nullius-pressure-3"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-two-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-two-way-junction-2"].localised_name = data.raw.item["one-to-one-forward-t3-pipe"].localised_name data.raw.item["one-to-two-perpendicular-t3-pipe"].subgroup = "nullius-surface-junction" @@ -655,8 +648,7 @@ data.raw.item["one-to-two-perpendicular-t3-pipe"].order = "nullius-cc" data.raw.item["one-to-two-perpendicular-t3-pipe"].localised_name = {"", {"item-name.nullius-surface-three-way-junction"}, " ", tostring(2)} data.raw.item["one-to-two-perpendicular-t3-pipe"].localised_description = - {"", {"item-description.nullius-surface-three-way-junction"}, - {"item-description.nullius-pressure-3"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-three-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-three-way-junction-2"].localised_name = data.raw.item["one-to-two-perpendicular-t3-pipe"].localised_name data.raw.item["one-to-three-forward-t3-pipe"].subgroup = "nullius-surface-junction" @@ -664,8 +656,7 @@ data.raw.item["one-to-three-forward-t3-pipe"].order = "nullius-cd" data.raw.item["one-to-three-forward-t3-pipe"].localised_name = {"", {"item-name.nullius-surface-four-way-junction"}, " ", tostring(2)} data.raw.item["one-to-three-forward-t3-pipe"].localised_description = - {"", {"item-description.nullius-surface-four-way-junction"}, - {"item-description.nullius-pressure-3"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-four-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-four-way-junction-2"].localised_name = data.raw.item["one-to-three-forward-t3-pipe"].localised_name data.raw.item["underground-i-t3-pipe"].subgroup = "nullius-underground-junction" @@ -673,8 +664,7 @@ data.raw.item["underground-i-t3-pipe"].order = "nullius-cb" data.raw.item["underground-i-t3-pipe"].localised_name = {"", {"item-name.nullius-underground-straight-junction"}, " ", tostring(2)} data.raw.item["underground-i-t3-pipe"].localised_description = - {"", {"item-description.nullius-underground-straight-junction"}, - {"item-description.nullius-pressure-3"}} + {"", {"item-description.nullius-underground-straight-junction"}} data.raw.recipe["nullius-underground-straight-junction-2"].localised_name = data.raw.item["underground-i-t3-pipe"].localised_name data.raw.item["underground-L-t3-pipe"].subgroup = "nullius-underground-junction" @@ -682,8 +672,7 @@ data.raw.item["underground-L-t3-pipe"].order = "nullius-cc" data.raw.item["underground-L-t3-pipe"].localised_name = {"", {"item-name.nullius-underground-elbow-junction"}, " ", tostring(2)} data.raw.item["underground-L-t3-pipe"].localised_description = - {"", {"item-description.nullius-underground-elbow-junction"}, - {"item-description.nullius-pressure-3"}} + {"", {"item-description.nullius-underground-elbow-junction"}} data.raw.recipe["nullius-underground-elbow-junction-2"].localised_name = data.raw.item["underground-L-t3-pipe"].localised_name data.raw.item["underground-t-t3-pipe"].subgroup = "nullius-underground-junction" @@ -691,8 +680,7 @@ data.raw.item["underground-t-t3-pipe"].order = "nullius-cd" data.raw.item["underground-t-t3-pipe"].localised_name = {"", {"item-name.nullius-underground-three-way-junction"}, " ", tostring(2)} data.raw.item["underground-t-t3-pipe"].localised_description = - {"", {"item-description.nullius-underground-three-way-junction"}, - {"item-description.nullius-pressure-3"}} + {"", {"item-description.nullius-underground-three-way-junction"}} data.raw.recipe["nullius-underground-three-way-junction-2"].localised_name = data.raw.item["underground-t-t3-pipe"].localised_name @@ -701,8 +689,7 @@ data.raw.item["one-to-one-forward-pipe"].order = "nullius-db" data.raw.item["one-to-one-forward-pipe"].localised_name = {"", {"item-name.nullius-surface-two-way-junction"}, " ", tostring(3)} data.raw.item["one-to-one-forward-pipe"].localised_description = - {"", {"item-description.nullius-surface-two-way-junction"}, - {"item-description.nullius-pressure-4"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-two-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-two-way-junction-3"].localised_name = data.raw.item["one-to-one-forward-pipe"].localised_name data.raw.item["one-to-two-perpendicular-pipe"].subgroup = "nullius-surface-junction" @@ -710,8 +697,7 @@ data.raw.item["one-to-two-perpendicular-pipe"].order = "nullius-dc" data.raw.item["one-to-two-perpendicular-pipe"].localised_name = {"", {"item-name.nullius-surface-three-way-junction"}, " ", tostring(3)} data.raw.item["one-to-two-perpendicular-pipe"].localised_description = - {"", {"item-description.nullius-surface-three-way-junction"}, - {"item-description.nullius-pressure-4"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-three-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-three-way-junction-3"].localised_name = data.raw.item["one-to-two-perpendicular-pipe"].localised_name data.raw.item["one-to-three-forward-pipe"].subgroup = "nullius-surface-junction" @@ -719,8 +705,7 @@ data.raw.item["one-to-three-forward-pipe"].order = "nullius-dd" data.raw.item["one-to-three-forward-pipe"].localised_name = {"", {"item-name.nullius-surface-four-way-junction"}, " ", tostring(3)} data.raw.item["one-to-three-forward-pipe"].localised_description = - {"", {"item-description.nullius-surface-four-way-junction"}, - {"item-description.nullius-pressure-4"}, {"item-description.nullius-underground-ctrl-r"}} + {"", {"item-description.nullius-surface-four-way-junction"},{"item-description.nullius-underground-ctrl-r"}} data.raw.recipe["nullius-surface-four-way-junction-3"].localised_name = data.raw.item["one-to-three-forward-pipe"].localised_name data.raw.item["one-to-four-pipe"].subgroup = "nullius-surface-junction" @@ -728,8 +713,7 @@ data.raw.item["one-to-four-pipe"].order = "nullius-de" data.raw.item["one-to-four-pipe"].localised_name = {"", {"item-name.nullius-surface-five-way-junction"}, " ", tostring(3)} data.raw.item["one-to-four-pipe"].localised_description = - {"", {"item-description.nullius-surface-five-way-junction"}, - {"item-description.nullius-pressure-4"}} + {"", {"item-description.nullius-surface-five-way-junction"}} data.raw.recipe["nullius-surface-five-way-junction-3"].localised_name = data.raw.item["one-to-four-pipe"].localised_name data.raw.item["underground-i-pipe"].subgroup = "nullius-underground-junction" @@ -737,8 +721,7 @@ data.raw.item["underground-i-pipe"].order = "nullius-db" data.raw.item["underground-i-pipe"].localised_name = {"", {"item-name.nullius-underground-straight-junction"}, " ", tostring(3)} data.raw.item["underground-i-pipe"].localised_description = - {"", {"item-description.nullius-underground-straight-junction"}, - {"item-description.nullius-pressure-4"}} + {"", {"item-description.nullius-underground-straight-junction"}} data.raw.recipe["nullius-underground-straight-junction-3"].localised_name = data.raw.item["underground-i-pipe"].localised_name data.raw.item["underground-L-pipe"].subgroup = "nullius-underground-junction" @@ -746,8 +729,7 @@ data.raw.item["underground-L-pipe"].order = "nullius-dc" data.raw.item["underground-L-pipe"].localised_name = {"", {"item-name.nullius-underground-elbow-junction"}, " ", tostring(3)} data.raw.item["underground-L-pipe"].localised_description = - {"", {"item-description.nullius-underground-elbow-junction"}, - {"item-description.nullius-pressure-4"}} + {"", {"item-description.nullius-underground-elbow-junction"}} data.raw.recipe["nullius-underground-elbow-junction-3"].localised_name = data.raw.item["underground-L-pipe"].localised_name data.raw.item["underground-t-pipe"].subgroup = "nullius-underground-junction" @@ -755,8 +737,7 @@ data.raw.item["underground-t-pipe"].order = "nullius-dd" data.raw.item["underground-t-pipe"].localised_name = {"", {"item-name.nullius-underground-three-way-junction"}, " ", tostring(3)} data.raw.item["underground-t-pipe"].localised_description = - {"", {"item-description.nullius-underground-three-way-junction"}, - {"item-description.nullius-pressure-4"}} + {"", {"item-description.nullius-underground-three-way-junction"}} data.raw.recipe["nullius-underground-three-way-junction-3"].localised_name = data.raw.item["underground-t-pipe"].localised_name data.raw.item["underground-cross-pipe"].subgroup = "nullius-underground-junction" @@ -764,8 +745,7 @@ data.raw.item["underground-cross-pipe"].order = "nullius-de" data.raw.item["underground-cross-pipe"].localised_name = {"", {"item-name.nullius-underground-four-way-junction"}, " ", tostring(3)} data.raw.item["underground-cross-pipe"].localised_description = - {"", {"item-description.nullius-underground-four-way-junction"}, - {"item-description.nullius-pressure-4"}} + {"", {"item-description.nullius-underground-four-way-junction"}} data.raw.recipe["nullius-underground-four-way-junction-3"].localised_name = data.raw.item["underground-cross-pipe"].localised_name diff --git a/nullius/scripts/informatron.lua b/nullius/scripts/informatron.lua index f796da3..077dc5f 100644 --- a/nullius/scripts/informatron.lua +++ b/nullius/scripts/informatron.lua @@ -57,8 +57,6 @@ function nullius_info_page_content(page_name, player_index, element) element.add{type="label", name="header_1", caption={"nullius.page_fluids_header_1"}, style="heading_1_label"} element.add{type="label", name="text_2", caption={"nullius.page_fluids_text_2"}} - element.add{type="label", name="text_3", caption={"nullius.page_fluids_text_3"}} - element.add{type="label", name="text_4", caption={"nullius.page_fluids_text_4"}} element.add{type="label", name="header_2", caption={"nullius.page_fluids_header_2"}, style="heading_1_label"} element.add{type="label", name="text_5", caption={"nullius.page_fluids_text_5"}} From 56e2d0a618013f8b884e63dcc486ebf400240ed3 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 21:12:11 +0200 Subject: [PATCH 092/236] Increased max_fluid_flow and changed back the pumping speeds accordingly --- nullius/locale/en/entity.cfg | 10 +++++----- nullius/prototypes/entity/plumbing.lua | 8 ++++---- nullius/prototypes/override.lua | 4 +++- nullius/prototypes/override_final.lua | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index faebe39..33e8157 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -409,11 +409,11 @@ nullius-large-tank-2=Stores fluid. A lot. nullius-large-tank-3=Stores fluid. A lot. nullius-barrel-pump-1=Fills or empties barrels with fluid. nullius-barrel-pump-2=Fills or empties barrels with fluid. -nullius-pump-1=Necessary to extend pipelines to longer distances. Pumps up to 1200/s -nullius-pump-2=Necessary to extend pipelines to longer distances. Pumps up to 3000/s -nullius-pump-3=Necessary to extend pipelines to longer distances. Pumps up to 6000/s -nullius-small-pump-1=Half the size of a regular pump, but slower. Pumps up to 960/s -nullius-small-pump-2=Half the size of a regular pump, but slower. Pumps up to 1920/s +nullius-pump-1=Necessary to extend pipelines to longer distances. Pumps up to 3000/s +nullius-pump-2=Necessary to extend pipelines to longer distances. Pumps up to 6000/s +nullius-pump-3=Necessary to extend pipelines to longer distances. Pumps up to 12000/s +nullius-small-pump-1=Half the size of a regular pump, but slower. Pumps up to 2400/s +nullius-small-pump-2=Half the size of a regular pump, but slower. Pumps up to 4800/s nullius-wind-base-1=Intermittent renewable energy averaging 600kW, up to a max of 1.5MW. nullius-wind-base-2=Intermittent renewable energy averaging 1.6MW, up to a max of 4MW. nullius-wind-base-3=Intermittent renewable energy averaging 4.8MW, up to a max of 12MW. diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 9437bff..230cf22 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -2654,7 +2654,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "15kW", - pumping_speed = 20, + pumping_speed = 50, impact_category = data.raw.pump["pump"].impact_category, open_sound = data.raw.pump["pump"].open_sound, close_sound = data.raw.pump["pump"].close_sound, @@ -2821,7 +2821,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "20kW", - pumping_speed = 50, + pumping_speed = 100, impact_category = data.raw.pump["pump"].impact_category, open_sound = data.raw.pump["pump"].open_sound, close_sound = data.raw.pump["pump"].close_sound, @@ -2986,7 +2986,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "10kW", - pumping_speed = 16, + pumping_speed = 40, impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, @@ -3097,7 +3097,7 @@ data:extend({ usage_priority = "primary-input" }, energy_usage = "15kW", - pumping_speed = 32, + pumping_speed = 80, impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 5ce2cd4..0b31af3 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -964,4 +964,6 @@ if settings.startup["nullius-hide-void-alt"].value then for _, building in pairs(void_buildings) do table.insert(data.raw.furnace[building].flags, "hide-alt-info") end -end \ No newline at end of file +end + +data.raw["utility-constants"]["default"].max_fluid_flow = 500 diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index 91dfcfb..44b2106 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -245,7 +245,7 @@ data.raw.item["pump"].stack_size = 50 data.raw["pump"]["pump"].fast_replaceable_group = "pump" data.raw["pump"]["pump"].next_upgrade = nil data.raw["pump"]["pump"].fluid_box.volume = 1000 -data.raw["pump"]["pump"].pumping_speed = 100 +data.raw["pump"]["pump"].pumping_speed = 200 data.raw.pump["nullius-pump-2"].collision_mask = data.raw.pump.pump.collision_mask data.raw.pump["nullius-pump-2"].collision_box = data.raw.pump.pump.collision_box data.raw.pump["nullius-pump-2"].selection_box = data.raw.pump.pump.selection_box From a1d68250e89a9d26ec26606ff82277430d380103 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 19 Aug 2025 23:19:41 +0200 Subject: [PATCH 093/236] Fixed rocket silo, added cargo landing pad, added the appropriate weights for items to place in rockets, fixed bugs in the mission.lua control script --- nullius/TODO_list.txt | 3 ++- nullius/prototypes/entity/vehicle.lua | 7 ++++++ nullius/prototypes/item/alignment.lua | 8 ++++-- nullius/prototypes/item/buildings.lua | 35 ++++++++++++++++++++++++++- nullius/prototypes/item/drone.lua | 8 ++++-- nullius/prototypes/item/equipment.lua | 2 ++ nullius/prototypes/override.lua | 1 + nullius/prototypes/technology.lua | 4 +++ nullius/scripts/alignment.lua | 2 +- nullius/scripts/mission.lua | 23 +++++++++++------- 10 files changed, 77 insertions(+), 16 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 89d2ea3..c2a7295 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -17,4 +17,5 @@ hide the rest of military equipment and their related ammo categories that are u new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) weird visualization for underground pipe pack solar collectors stopped ? -removing landfill -> shallow water remains: maybe change that/rework the landfill system anyway \ No newline at end of file +removing landfill -> shallow water remains: maybe change that/rework the landfill system anyway +hide the alignment stuff when the setting is off: satellite shwos in the rocket inv slot and other stuff in factoriopedia \ No newline at end of file diff --git a/nullius/prototypes/entity/vehicle.lua b/nullius/prototypes/entity/vehicle.lua index 0cc7db7..39add95 100644 --- a/nullius/prototypes/entity/vehicle.lua +++ b/nullius/prototypes/entity/vehicle.lua @@ -493,6 +493,11 @@ data:extend({ module_slots = 4, fixed_recipe = "nullius-rocket", show_recipe_icon = false, + icon_draw_specification = {shift = {0, 2}}, + icons_positioning = + { + {inventory_index = defines.inventory.crafter_modules, shift = {0, 3.3}} + }, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, minable = {mining_time = 8, result = "nullius-silo"}, max_health = 5000, @@ -522,6 +527,8 @@ data:extend({ times_to_blink = 3, light_blinking_speed = 1 / (3 * 60), door_opening_speed = 1 / (4.25 * 60), + can_launch_without_landing_pads = true, + to_be_inserted_to_rocket_inventory_size = 1, base_engine_light = data.raw["rocket-silo"]["rocket-silo"].base_engine_light, shadow_sprite = data.raw["rocket-silo"]["rocket-silo"].shadow_sprite, diff --git a/nullius/prototypes/item/alignment.lua b/nullius/prototypes/item/alignment.lua index 115d95d..291e4bd 100644 --- a/nullius/prototypes/item/alignment.lua +++ b/nullius/prototypes/item/alignment.lua @@ -222,7 +222,7 @@ data:extend({ subgroup = "alignment", order = "nullius-h", stack_size = 5, - place_result = "nullius-align-concordance-transmitter" + place_result = "nullius-align-concordance-transmitter" }, { type = "item", @@ -234,7 +234,11 @@ data:extend({ subgroup = "alignment", order = "nullius-i", stack_size = 1, - rocket_launch_product = {"nullius-astronomy-pack", 42} + weight = 1000000, + send_to_orbit_mode = "automated", + rocket_launch_products = { + {type = "item", name = "nullius-astronomy-pack", amount = 42} + } }, { diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index d076208..1cf0416 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -3560,7 +3560,7 @@ data:extend({ type = "recipe", name = "nullius-silo", enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "huge-crafting", energy_required = 180, ingredients = { @@ -3577,6 +3577,39 @@ data:extend({ {type = "item", name = "nullius-silo", amount = 1} } }, + + { + type = "item", + name = "nullius-landing-pad", + icon = "__base__/graphics/icons/cargo-landing-pad.png", + icon_size = 64, + + subgroup = "space", + order = "nullius-c", + place_result = "cargo-landing-pad", + stack_size = 1 + }, + { + type = "recipe", + name = "nullius-landing-pad", + enabled = false, + always_show_made_in = true, + category = "huge-crafting", + energy_required = 180, + ingredients = { + {type="item", name="nullius-drone-launcher-2", amount=5}, + {type="item", name="nullius-hangar-3", amount=2}, + {type="item", name="nullius-beacon-3", amount=4}, + {type="item", name="nullius-box-wall", amount=10}, + {type="item", name="nullius-box-heat-pipe-3", amount=4}, + {type="item", name="nullius-box-hazard-concrete", amount=30}, + {type="item", name="nullius-box-productivity-module-2", amount=1}, + {type="item", name="nullius-lab-3", amount=1} + }, + results = { + {type = "item", name = "nullius-landing-pad", amount = 1} + } + }, { type = "item", diff --git a/nullius/prototypes/item/drone.lua b/nullius/prototypes/item/drone.lua index 98d0907..5c469a4 100644 --- a/nullius/prototypes/item/drone.lua +++ b/nullius/prototypes/item/drone.lua @@ -763,8 +763,10 @@ data:extend({ subgroup = "space", order = "nullius-eb", stack_size = 1, + weight = 1000000, + send_to_orbit_mode = "automated", rocket_launch_products = { - {type = "item", name="nullius-guide-drone-iron-1", amount=1, probability=0.3}, -- todo: check that this works + {type = "item", name="nullius-guide-drone-iron-1", amount=1, probability=0.3}, {type = "item", name="nullius-guide-drone-sandstone-1", amount=1, probability=0.2}, {type = "item", name="nullius-guide-drone-bauxite-1", amount=1, probability=0.2}, {type = "item", name="nullius-guide-drone-limestone-1", amount=1, probability=0.1}, @@ -804,8 +806,10 @@ data:extend({ subgroup = "space", order = "nullius-ec", stack_size = 1, + weight = 1000000, + send_to_orbit_mode = "automated", rocket_launch_products = { - {type = "item", name="nullius-guide-drone-iron-1", amount=1, probability=0.9}, -- todo : check that this works + {type = "item", name="nullius-guide-drone-iron-1", amount=1, probability=0.9}, {type = "item", name="nullius-guide-drone-sandstone-1", amount=1, probability=0.8}, {type = "item", name="nullius-guide-drone-bauxite-1", amount=1, probability=0.7}, {type = "item", name="nullius-guide-drone-limestone-1", amount=1, probability=0.5}, diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index ab729fe..539bd6f 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -3572,6 +3572,8 @@ data:extend({ subgroup = "space", order = "nullius-l", stack_size = 1, + weight = 1000000, + send_to_orbit_mode = "automated", rocket_launch_products = { {type = "item", name = "nullius-box-astronomy-pack", amount = 1000}, {type = "item", name = "nullius-box-physics-pack", amount = 200}, diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 0b31af3..f9008ad 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -967,3 +967,4 @@ if settings.startup["nullius-hide-void-alt"].value then end data.raw["utility-constants"]["default"].max_fluid_flow = 500 +data.raw["cargo-landing-pad"]["cargo-landing-pad"].hidden_in_factoriopedia = true diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 3f7cc54..8e0de1c 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -12894,6 +12894,10 @@ data:extend({ { type = "unlock-recipe", recipe = "nullius-rocket" + }, + { + type = "unlock-recipe", + recipe = "nullius-landing-pad" } }, unit = { diff --git a/nullius/scripts/alignment.lua b/nullius/scripts/alignment.lua index 95d09a5..37a7405 100644 --- a/nullius/scripts/alignment.lua +++ b/nullius/scripts/alignment.lua @@ -225,7 +225,7 @@ local function schedule_absorb_faction(oldforce, newforce, target) }) end -function align_satellite_launch(rocket) +function align_satellite_launch(rocket) --todo: rename as pod and test if it works if (not storage.nullius_alignment) then return end if (storage.nullius_align_satellite_winner ~= nil) then return end local newforce = rocket.force diff --git a/nullius/scripts/mission.lua b/nullius/scripts/mission.lua index f657041..767a6b6 100644 --- a/nullius/scripts/mission.lua +++ b/nullius/scripts/mission.lua @@ -310,15 +310,20 @@ function create_mission(force) end end -function rocket_launched(event) - local rocket = event.rocket - if (rocket and rocket.valid) then +function cargo_pod_finished(event) + local pod = event.cargo_pod + if (pod and pod.valid) then create_mission(force) - local payload = rocket.get_inventory(defines.inventory.rocket).get_contents() - if (payload["nullius-probe"] ~= nil) then - bump_mission_goal(1, 1, rocket.force) - elseif (payload["nullius-align-concordance-satellite"] ~= nil) then - align_satellite_launch(rocket) + local inv = pod.get_inventory(defines.inventory.item_main) + local payload = inv.get_contents() + for _, slot in pairs(payload) do + if slot.name == "nullius-probe" then + bump_mission_goal(1, 1, pod.force) + break + elseif slot.name == "nullius-align-concordance-satellite" then + align_satellite_launch(pod) + break + end end end end @@ -335,5 +340,5 @@ function gui_clicked(event) end end -script.on_event(defines.events.on_rocket_launched, rocket_launched) +script.on_event(defines.events.on_cargo_pod_finished_ascending, cargo_pod_finished) script.on_event(defines.events.on_gui_click, gui_clicked) From 1deef7599ab27d668d9f5bb5901c18bed7640b59 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 00:32:28 +0200 Subject: [PATCH 094/236] Fixed drone remotes, re added the proper ammo categories for drones --- nullius/locale/en/misc.cfg | 37 ++- nullius/prototypes/category.lua | 362 +++++++++++++++++----------- nullius/prototypes/entity/drone.lua | 2 +- nullius/prototypes/item/drone.lua | 5 +- nullius/prototypes/item/weapon.lua | 67 +++-- 5 files changed, 300 insertions(+), 173 deletions(-) diff --git a/nullius/locale/en/misc.cfg b/nullius/locale/en/misc.cfg index ff73e17..dd71b64 100644 --- a/nullius/locale/en/misc.cfg +++ b/nullius/locale/en/misc.cfg @@ -163,5 +163,38 @@ faction-absorbed=__1__ has been absorbed into __2__. victory=Nauvis has been successfully terraformed! [ammo-category-name] -nullius-drone=Drone -nullius-conscription=Conscription \ No newline at end of file +nullius-conscription=Conscription + +nullius-sequestration-petroleum-drone=Petroleum sequestration drone +nullius-sequestration-coal-drone=Coal sequestration drone +nullius-husbandry-drone=Husbandry drone +nullius-aquaculture-drone=Aquaculture drone +nullius-arboriculture-drone=Arboriculture drone +nullius-entomology-drone=Entomology drone +nullius-horticulture-drone=Horticulture drone +nullius-algaculture-drone=Algaculture drone +nullius-guide-drone-uranium=Guide drone uranium +nullius-guide-drone-copper=Guide drone copper +nullius-guide-drone-limestone=Guide drone limestone +nullius-guide-drone-sandstone=Guide drone sandstone +nullius-guide-drone-bauxite=Guide drone bauxite +nullius-guide-drone-iron=Guide drone iron +nullius-paving-drone-hazard=Paving drone hazard +nullius-paving-drone-black=Paving drone black +nullius-paving-drone-brown=Paving drone brown +nullius-paving-drone-purple=Paving drone purple +nullius-paving-drone-green=Paving drone green +nullius-paving-drone-yellow=Paving drone yellow +nullius-paving-drone-blue=Paving drone blue +nullius-paving-drone-red=Paving drone red +nullius-paving-drone-white=Paving drone white +nullius-paving-drone-grey=Paving drone grey +nullius-terraforming-drone-beige=Terraforming drone beige +nullius-terraforming-drone-red=Terraforming drone red +nullius-terraforming-drone-brown=Terraforming drone brown +nullius-terraforming-drone-tan=Terraforming drone tan +nullius-terraforming-drone-grey=Terraforming drone grey +nullius-shallow-excavation-drone=Shallow excavation drone +nullius-excavation-drone=Excavation drone +nullius-demolition-drone=Demolition drone +nullius-scout-drone=Scout drone \ No newline at end of file diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index 3141f8c..48cd999 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -1904,7 +1904,8 @@ data:extend({ name = "nullius-conscription", icon = "__nullius__/graphics/icons/card1.png", icon_size = 128, - subgroup = "military-equipment" + subgroup = "military-equipment", + order = "aaa" }, { type = "fuel-category", @@ -1916,142 +1917,233 @@ data:extend({ }, { type = "ammo-category", - name = "nullius-drone", + name = "nullius-scout-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-demolition-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-excavation-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-shallow-excavation-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-terraforming-drone-grey", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-terraforming-drone-tan", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-terraforming-drone-brown", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-terraforming-drone-red", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-terraforming-drone-beige", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-grey", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-white", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-red", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-blue", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-yellow", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-green", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-purple", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-brown", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-black", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-paving-drone-hazard", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-guide-drone-iron", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-guide-drone-bauxite", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-guide-drone-sandstone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-guide-drone-limestone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-guide-drone-copper", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-guide-drone-uranium", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-algaculture-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-horticulture-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-entomology-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-arboriculture-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-aquaculture-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-husbandry-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-sequestration-coal-drone", + icon = "__nullius__/graphics/icons/scout-2.png", + icon_size = 64, + subgroup = "military-equipment" + }, + { + type = "ammo-category", + name = "nullius-sequestration-petroleum-drone", icon = "__nullius__/graphics/icons/scout-2.png", icon_size = 64, subgroup = "military-equipment" }, - -- Old categories - -- { - -- type = "ammo-category", - -- name = "nullius-scout-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-demolition-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-excavation-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-shallow-excavation-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-terraforming-drone-grey" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-terraforming-drone-tan" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-terraforming-drone-brown" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-terraforming-drone-red" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-terraforming-drone-beige" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-grey" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-white" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-red" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-blue" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-yellow" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-green" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-purple" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-brown" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-black" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-paving-drone-hazard" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-guide-drone-iron" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-guide-drone-bauxite" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-guide-drone-sandstone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-guide-drone-limestone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-guide-drone-copper" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-guide-drone-uranium" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-algaculture-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-horticulture-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-entomology-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-arboriculture-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-aquaculture-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-husbandry-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-sequestration-coal-drone" - -- }, - -- { - -- type = "ammo-category", - -- name = "nullius-sequestration-petroleum-drone" - -- }, }) diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index 2f197d3..6260916 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -348,7 +348,7 @@ local function create_flare(base_name, suffix) name = prefix.."-flare"..suffix, icons = data.raw.capsule[prefix.."-remote"..suffix].icons, hidden_in_factoriopedia = true, - shot_category = "nullius-drone", -- prefix.."-drone"..suffix, + shot_category = prefix.."-drone"..suffix, flags = {"placeable-off-grid", "not-on-map"}, map_color = {r=1, g=0.5, b=0}, life_time = 60 * 60, diff --git a/nullius/prototypes/item/drone.lua b/nullius/prototypes/item/drone.lua index 5c469a4..05f9bb3 100644 --- a/nullius/prototypes/item/drone.lua +++ b/nullius/prototypes/item/drone.lua @@ -36,6 +36,7 @@ local function create_drone(base_name, group, suborder, base_suffix, stack, flar type = "capsule", name = prefix.."-remote"..suffix, icons = remote_icons, + flags = {"spawnable"}, --"only-in-cursor", "not-stackable", capsule_action = { type = "artillery-remote", flare = prefix.."-flare"..suffix @@ -61,7 +62,7 @@ local function create_drone(base_name, group, suborder, base_suffix, stack, flar subgroup = group, order = "nullius-"..suborder, stack_size = stack, - ammo_category = "nullius-drone", --flare, + ammo_category = flare, ammo_type = { target_type = "position", action = { @@ -213,6 +214,7 @@ local function create_miner(mineral, suborder, group, landfill, iname, isize, it type = "capsule", name = "nullius-guide-remote-"..mineral, icons = remote_icons, + flags = {"spawnable"}, --"only-in-cursor","not-stackable", capsule_action = { type = "artillery-remote", flare = "nullius-guide-flare-"..mineral @@ -469,6 +471,7 @@ data:extend({ name = "nullius-scout-remote", icon = ICONPATH .. "scout-remote.png", icon_size = 64, + flags = {"spawnable"}, --"only-in-cursor", "not-stackable", capsule_action = { type = "artillery-remote", flare = "nullius-scout-flare" diff --git a/nullius/prototypes/item/weapon.lua b/nullius/prototypes/item/weapon.lua index d5441c8..0eff602 100644 --- a/nullius/prototypes/item/weapon.lua +++ b/nullius/prototypes/item/weapon.lua @@ -15,40 +15,39 @@ data:extend({ attack_parameters = { type = "projectile", ammo_categories = { - "nullius-drone", - -- "nullius-scout-drone", - -- "nullius-demolition-drone", - -- "nullius-excavation-drone", - -- "nullius-shallow-excavation-drone", - -- "nullius-terraforming-drone-grey", - -- "nullius-terraforming-drone-tan", - -- "nullius-terraforming-drone-brown", - -- "nullius-terraforming-drone-red", - -- "nullius-terraforming-drone-beige", - -- "nullius-paving-drone-grey", - -- "nullius-paving-drone-red", - -- "nullius-paving-drone-blue", - -- "nullius-paving-drone-yellow", - -- "nullius-paving-drone-green", - -- "nullius-paving-drone-white", - -- "nullius-paving-drone-purple", - -- "nullius-paving-drone-brown", - -- "nullius-paving-drone-black", - -- "nullius-paving-drone-hazard", - -- "nullius-guide-drone-iron", - -- "nullius-guide-drone-bauxite", - -- "nullius-guide-drone-sandstone", - -- "nullius-guide-drone-limestone", - -- "nullius-guide-drone-copper", - -- "nullius-guide-drone-uranium", - -- "nullius-algaculture-drone", - -- "nullius-horticulture-drone", - -- "nullius-entomology-drone", - -- "nullius-arboriculture-drone", - -- "nullius-aquaculture-drone", - -- "nullius-husbandry-drone", - -- "nullius-sequestration-coal-drone", - -- "nullius-sequestration-petroleum-drone" + "nullius-scout-drone", + "nullius-demolition-drone", + "nullius-excavation-drone", + "nullius-shallow-excavation-drone", + "nullius-terraforming-drone-grey", + "nullius-terraforming-drone-tan", + "nullius-terraforming-drone-brown", + "nullius-terraforming-drone-red", + "nullius-terraforming-drone-beige", + "nullius-paving-drone-grey", + "nullius-paving-drone-red", + "nullius-paving-drone-blue", + "nullius-paving-drone-yellow", + "nullius-paving-drone-green", + "nullius-paving-drone-white", + "nullius-paving-drone-purple", + "nullius-paving-drone-brown", + "nullius-paving-drone-black", + "nullius-paving-drone-hazard", + "nullius-guide-drone-iron", + "nullius-guide-drone-bauxite", + "nullius-guide-drone-sandstone", + "nullius-guide-drone-limestone", + "nullius-guide-drone-copper", + "nullius-guide-drone-uranium", + "nullius-algaculture-drone", + "nullius-horticulture-drone", + "nullius-entomology-drone", + "nullius-arboriculture-drone", + "nullius-aquaculture-drone", + "nullius-husbandry-drone", + "nullius-sequestration-coal-drone", + "nullius-sequestration-petroleum-drone" }, cooldown = 200, movement_slow_down_factor = 0, From 482499aadb09221a44b0d475c903ddbcedf0e24f Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 01:06:27 +0200 Subject: [PATCH 095/236] Removed the regular artillery remote --- nullius/prototypes/override.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index f9008ad..530d23a 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -968,3 +968,6 @@ end data.raw["utility-constants"]["default"].max_fluid_flow = 500 data.raw["cargo-landing-pad"]["cargo-landing-pad"].hidden_in_factoriopedia = true +data.raw["artillery-flare"]["artillery-flare"].shot_category = "artillery-shell" --regular remote will only fire artillery shells +data.raw["custom-input"]["give-artillery-targeting-remote"].enabled = false +data.raw["shortcut"]["give-artillery-targeting-remote"].hidden = true \ No newline at end of file From da347d1adc458f3c89d8f74a2fc1cb7bfd6d81b3 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 01:44:42 +0200 Subject: [PATCH 096/236] Fixed a crash when copying beacons --- nullius/scripts/beacon.lua | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/nullius/scripts/beacon.lua b/nullius/scripts/beacon.lua index ce0f7de..28a96d2 100644 --- a/nullius/scripts/beacon.lua +++ b/nullius/scripts/beacon.lua @@ -32,20 +32,20 @@ function update_small_beacon(entity) local proxies = entity.surface.find_entities_filtered{area=bound, type = "item-request-proxy"} for _,proxy in pairs(proxies) do - if (proxy.valid and (proxy.proxy_target == entity) and - (proxy.item_requests ~= nil)) then - local found = false - modrequest = { } - for modind, modval in pairs(proxy.item_requests) do - modrequest[modind] = modval - found = true + if (proxy.valid and (proxy.proxy_target == entity) and + (proxy.item_requests ~= nil)) then + local found = false + modrequest = {} + for _, req in pairs(proxy.insert_plan) do + table.insert(modrequest, {id = table.deepcopy(req.id), items = table.deepcopy(req.items)}) + found = true + end + if (not found) then + modrequest = nil + end + proxy.destroy() + break end - if (not found) then - modrequest = nil - end - proxy.destroy() - break - end end local newname = "nullius-beacon-"..tier From 65b6ab471481a0426117e376e43eb7a548973608 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 10:49:28 +0200 Subject: [PATCH 097/236] Changed the tech requirements for shortcuts --- nullius/prototypes/override.lua | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 530d23a..ff15723 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -968,6 +968,23 @@ end data.raw["utility-constants"]["default"].max_fluid_flow = 500 data.raw["cargo-landing-pad"]["cargo-landing-pad"].hidden_in_factoriopedia = true + data.raw["artillery-flare"]["artillery-flare"].shot_category = "artillery-shell" --regular remote will only fire artillery shells data.raw["custom-input"]["give-artillery-targeting-remote"].enabled = false -data.raw["shortcut"]["give-artillery-targeting-remote"].hidden = true \ No newline at end of file +data.raw["custom-input"]["give-discharge-defense-remote"].enabled = false +data.raw["shortcut"]["give-artillery-targeting-remote"].hidden = true +data.raw["shortcut"]["discharge-defense-equipment"].hidden = true + +local scTechs = { + ["construction-robotics"] = nil, --"nullius-construction-robot-1" -- we have bots at the start + ["personal-roboport-equipment"] = nil, + ["electronics"] = nil, + ["circuit-network"] = nil, + ["exoskeleton-equipment"] = "nullius-cybernetics-4", + ["spidertron"] = "nullius-personal-transportation-4" +} +for _, sc in pairs(data.raw.shortcut) do + if sc.technology_to_unlock ~= nil then + sc.technology_to_unlock = scTechs[sc.technology_to_unlock] + end +end \ No newline at end of file From bd5d42b3deb3044a5ae123b924187af15d4fd2b9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 10:59:34 +0200 Subject: [PATCH 098/236] hotfix crash --- nullius/prototypes/override.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index ff15723..d9879e0 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -973,7 +973,7 @@ data.raw["artillery-flare"]["artillery-flare"].shot_category = "artillery-shell" data.raw["custom-input"]["give-artillery-targeting-remote"].enabled = false data.raw["custom-input"]["give-discharge-defense-remote"].enabled = false data.raw["shortcut"]["give-artillery-targeting-remote"].hidden = true -data.raw["shortcut"]["discharge-defense-equipment"].hidden = true +data.raw["shortcut"]["give-discharge-defense-remote"].hidden = true local scTechs = { ["construction-robotics"] = nil, --"nullius-construction-robot-1" -- we have bots at the start From 68c400e3cbd3e2b84a790db165368bb227e0a2f2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 11:42:19 +0200 Subject: [PATCH 099/236] Made landfill into foundations, now we can place stone bricks on top of it --- nullius/prototypes/item/landfill.lua | 4 ++++ nullius/prototypes/override.lua | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index ce578cc..d57a658 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -1009,6 +1009,7 @@ data:extend({ collision_mask = { layers = {ground_tile = true}}, layer = 40, map_color={r=158, g=129, b=81}, + is_foundation = true, vehicle_friction_modifier = 1.4, walking_speed_modifier = 1, transitions = transitions.cliff_transitions(), @@ -1072,6 +1073,7 @@ data:extend({ collision_mask = { layers = {ground_tile = true}}, layer = 39, map_color={r=121, g=103, b=65}, + is_foundation = true, vehicle_friction_modifier = 1.2, walking_speed_modifier = 1, transitions = transitions.cliff_transitions(), @@ -1135,6 +1137,7 @@ data:extend({ collision_mask = { layers = {ground_tile = true}}, layer = 36, map_color={r=119, g=73, b=68}, + is_foundation = true, vehicle_friction_modifier = 1.1, walking_speed_modifier = 1, transitions = transitions.cliff_transitions(), @@ -1198,6 +1201,7 @@ data:extend({ collision_mask = { layers = {ground_tile = true}}, layer = 38, map_color={r=161, g=140, b=119}, + is_foundation = true, vehicle_friction_modifier = 1, walking_speed_modifier = 1, transitions = transitions.cliff_transitions(), diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index d9879e0..5c51b13 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -951,13 +951,14 @@ for tilename,landfill in pairs(landfill_tiles) do mining_time = 1, result = landfill } + tile.is_foundation = true end end data.raw.tile["landfill"].minable = { mining_time = 1, result = "nullius-land-fill-gravel" } -data.raw.tile["landfill"].is_foundation = false +data.raw.tile["landfill"].is_foundation = true if settings.startup["nullius-hide-void-alt"].value then local void_buildings = {"nullius-chimney-1","nullius-chimney-2","nullius-chimney-3","nullius-outfall-1","nullius-outfall-2","nullius-outfall-3"} From a3bb657623025c36f5bf765c493230ffa294e36d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 11:48:41 +0200 Subject: [PATCH 100/236] Removed artillery remote and discharge defense remote from shortcut bar --- nullius/prototypes/override.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 5c51b13..b203ca1 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -973,8 +973,8 @@ data.raw["cargo-landing-pad"]["cargo-landing-pad"].hidden_in_factoriopedia = tru data.raw["artillery-flare"]["artillery-flare"].shot_category = "artillery-shell" --regular remote will only fire artillery shells data.raw["custom-input"]["give-artillery-targeting-remote"].enabled = false data.raw["custom-input"]["give-discharge-defense-remote"].enabled = false -data.raw["shortcut"]["give-artillery-targeting-remote"].hidden = true -data.raw["shortcut"]["give-discharge-defense-remote"].hidden = true +data.raw["shortcut"]["give-artillery-targeting-remote"] = nil --.hidden = true +data.raw["shortcut"]["give-discharge-defense-remote"] = nil --.hidden = true local scTechs = { ["construction-robotics"] = nil, --"nullius-construction-robot-1" -- we have bots at the start From b1d7932f348f01c71ec2dc3a38e8682c2d693f61 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 17:14:47 +0200 Subject: [PATCH 101/236] Cleared todo list file --- nullius/TODO_list.txt | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index c2a7295..8b13789 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -1,21 +1 @@ -TODO list: -add working_sounds to entities (i think) -Fix fluid boxes (volume and pipe connections) -Rework the checkpoint system (maybe) -fix the others warnings in the log -landfill variants are not the same as on 1.1 -mods compatibility -fix factoriopedia duplicate entities (maybe wait for kiwi's modding request to go through) -do we remove the legacy items/recipes/buildings ? Probably not -why does grass drone take this long to spawn grass ?? -> it also takes very long on 1.1 -update changelog and info.json(min version of dependencies) before publishing -geothermal plant can mine petroleum in nullius 1.1 is it a bug ? -some of the mining drills that use the electric drill graphics have the vector_to_place_result set to the burner drill value so the little is not in front of the animation BUT this is how it is in nullius 1.1 so I didn't change it -airfilter graphics are not symmetric when rotating -> it causes the alt icon to be off center in certain orientations -alignment issue in multiplayer -> probably need a warning message when not every player has the setting enabled -hide the rest of military equipment and their related ammo categories that are unused (what to do if other mods reintroduces those ?) -new branch chirality_rework -> remove all the mirror buildings, use legacy system to introduce new symmetrical fluid boxes for entities like flotation cell (see the electromagnetic plant in SA that seems to have a weird symmetry) -weird visualization for underground pipe pack -solar collectors stopped ? -removing landfill -> shallow water remains: maybe change that/rework the landfill system anyway -hide the alignment stuff when the setting is off: satellite shwos in the rocket inv slot and other stuff in factoriopedia \ No newline at end of file + From afcd3808ed658cdc2411728284580613a8b07d86 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 18:50:00 +0200 Subject: [PATCH 102/236] Added first wire connectors for assembling machines, boxer and nanofab --- nullius/prototypes/entity/assembler.lua | 95 ++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 8 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 8ca8388..da6dc74 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -1,8 +1,52 @@ +require ("circuit-connector-sprites") + local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" +local function scale_wire_position(wire_pos, scale) + for _, wire_type in pairs(wire_pos) do + if wire_type.x then + wire_type.x = wire_type.x*scale + wire_type.y = wire_type.y*scale + else + wire_type[1] = wire_type[1]*scale + wire_type[2] = wire_type[2]*scale + end + end +end + +local function offset_sprite(sprite, scale, only_shift) + if sprite == nil then return end + if sprite.shift ~= nil then + sprite.shift = {sprite.shift[1]*scale,sprite.shift[2]*scale} + else + --sprite.shift = {2,2} -- what value do we set if no shift ? + end + if sprite.scale and not only_shift then + sprite.scale = sprite.scale * scale + end +end + +local function scale_connector_points(original, scale, only_shift) + local result = table.deepcopy(original) + for _, connector in pairs(result) do + scale_wire_position(connector.points.wire, scale) + scale_wire_position(connector.points.shadow, scale) + offset_sprite(connector.sprites.connector_main,scale, only_shift) + offset_sprite(connector.sprites.connector_shadow,scale, only_shift) + offset_sprite(connector.sprites.wire_pins,scale, only_shift) + offset_sprite(connector.sprites.wire_pins_shadow,scale, only_shift) + offset_sprite(connector.sprites.led_blue_off,scale, only_shift) + offset_sprite(connector.sprites.led_red,scale, only_shift) + offset_sprite(connector.sprites.led_green,scale, only_shift) + offset_sprite(connector.sprites.led_blue,scale, only_shift) + offset_sprite(connector.sprites.led_light,scale, only_shift) + end + return result +end + data:extend({ { type = "assembling-machine", @@ -72,7 +116,9 @@ data:extend({ }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, apparent_volume = 0.8 - } + }, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = scale_connector_points(circuit_connector_definitions["assembling-machine"], 0.7) }, { @@ -163,7 +209,9 @@ data:extend({ }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, apparent_volume = 1.2 - } + }, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["assembling-machine"] }, { @@ -253,7 +301,9 @@ data:extend({ }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, apparent_volume = 1.6 - } + }, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = scale_connector_points(circuit_connector_definitions["assembling-machine"], 1.4) } }) @@ -309,7 +359,9 @@ data:extend({ open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-small-assembler-1"].working_sound + working_sound = data.raw["assembling-machine"]["nullius-small-assembler-1"].working_sound, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-small-assembler-1"].circuit_connector }, { @@ -373,7 +425,9 @@ data:extend({ open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-small-assembler-1"].working_sound + working_sound = data.raw["assembling-machine"]["nullius-small-assembler-1"].working_sound, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-small-assembler-1"].circuit_connector }, { @@ -439,7 +493,9 @@ data:extend({ open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-medium-assembler-1"].working_sound + working_sound = data.raw["assembling-machine"]["nullius-medium-assembler-1"].working_sound, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-medium-assembler-1"].circuit_connector }, { @@ -504,7 +560,9 @@ data:extend({ open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-medium-assembler-1"].working_sound + working_sound = data.raw["assembling-machine"]["nullius-medium-assembler-1"].working_sound, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-medium-assembler-1"].circuit_connector }, { @@ -568,7 +626,9 @@ data:extend({ open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 }, impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-large-assembler-1"].working_sound + working_sound = data.raw["assembling-machine"]["nullius-large-assembler-1"].working_sound, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-large-assembler-1"].circuit_connector } }) @@ -699,6 +759,8 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = scale_connector_points(circuit_connector_definitions["recycler"], 0.15, true) } }) @@ -809,6 +871,19 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-nanofabricator-1"].circuit_connector + --circuit_connector = scale_connector_points(circuit_connector_definitions["recycler"], 2, true) -- other attempts + -- circuit_connector = circuit_connector_definitions.create_vector + -- ( + -- universal_connector_template, + -- { + -- { variation = 24, main_offset = util.by_pixel(-26, -16), shadow_offset = util.by_pixel(0, 0), show_shadow = false }, + -- { variation = 26, main_offset = util.by_pixel(-25, 20), shadow_offset = util.by_pixel(-23, 24), show_shadow = true }, + -- { variation = 24, main_offset = util.by_pixel(-25, -26), shadow_offset = util.by_pixel(4, -10), show_shadow = false }, + -- { variation = 30, main_offset = util.by_pixel(0, 20), shadow_offset = util.by_pixel(2, 24), show_shadow = true }, + -- } + -- ) } }) @@ -880,6 +955,8 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-nanofabricator-2"].circuit_connector }, { @@ -941,6 +1018,8 @@ data:extend({ }, }, 0.52) }, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["inserter"] } }) From 32918f9f8c9ea4b591023315b8fbc64627e40d24 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 20:11:35 +0200 Subject: [PATCH 103/236] Compatibility for cargo ships fixed --- nullius/info.json | 4 +- nullius/prototypes/override_mod.lua | 87 ++++++++--------------- nullius/prototypes/override_mod_final.lua | 2 +- nullius/prototypes/resource.lua | 6 +- nullius/prototypes/resource_override.lua | 30 ++++---- 5 files changed, 52 insertions(+), 77 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index c29dc19..cc4d47a 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -14,9 +14,9 @@ "angelssmeltinggraphics >= 1.0.0", "angelspetrochemgraphics >= 1.0.0", "boblogistics >= 2.0.2", - "? RecipeBook >= 2.7.1", + "? RecipeBook >= 4.0.2", "? underground-pipe-pack >= 1.1.2", - "(?) cargo-ships >= 0.2.2", + "(?) cargo-ships >= 1.0.21", "(?) boblibrary >= 1.1.4", "(?) IRobot >= 1.1.0", "(?) jetpack >= 0.3.14", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 507249e..737313c 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -975,7 +975,7 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do local archetype = data.raw["pipe-to-ground"]["nullius-underground-pipe-"..lvl] junction.fluid_box.volume = archetype.fluid_box.volume junction.minable.mining_time = (lvl * 0.5) - junction.hidden_in_factoriopedia = true -- TODO: confirm that those are just clutter for factoriopedia + junction.hidden_in_factoriopedia = true for _,connection in pairs(junction.fluid_box.pipe_connections) do if ((connection.max_underground_distance ~= nil) and @@ -987,11 +987,11 @@ for _,junction in pairs(data.raw["pipe-to-ground"]) do end local northpipe = { - filename = "__base__/graphics/entity/pipe-covers/hr-pipe-cover-north.png", + filename = "__base__/graphics/entity/pipe-covers/pipe-cover-north.png", width = 128, height = 128, scale = 0.5, - shift = {0, -1} + shift = {0, -1} } for i=1,9 do @@ -1005,31 +1005,6 @@ for i=1,9 do relief.hidden_in_factoriopedia = true topup.minable.mining_time = 0.8 relief.minable.mining_time = 0.8 - - -- topup.pictures.picture.north.layers = { -- TODO: handle this ? - -- northpipe, - -- topup.pictures.picture.north.layers[1], - -- topup.pictures.picture.north.layers[2], - -- topup.pictures.picture.north.layers[3] - -- } - -- topup.pictures.picture.south.layers = { - -- northpipe, - -- topup.pictures.picture.south.layers[1], - -- topup.pictures.picture.south.layers[2], - -- topup.pictures.picture.south.layers[3] - -- } - -- relief.pictures.picture.north.layers = { - -- northpipe, - -- relief.pictures.picture.north.layers[1], - -- relief.pictures.picture.north.layers[2], - -- relief.pictures.picture.north.layers[3] - -- } - -- relief.pictures.picture.south.layers = { - -- northpipe, - -- relief.pictures.picture.south.layers[1], - -- relief.pictures.picture.south.layers[2], - -- relief.pictures.picture.south.layers[3] - -- } end end @@ -1995,18 +1970,18 @@ if mods["cargo-ships"] then end data.raw["electric-pole"]["floating-electric-pole"].maximum_wire_distance = 32.5 - data.raw["car"]["indep-boat"].burner.fuel_category = "vehicle" - data.raw["car"]["indep-boat"].burner.fuel_inventory_size = 1 - data.raw["car"]["indep-boat"].burner.burnt_inventory_size = 1 - data.raw["car"]["indep-boat"].burner.effectivity = 1.5 - data.raw["locomotive"]["boat_engine"].burner.fuel_category = "vehicle" - data.raw["locomotive"]["boat_engine"].burner.fuel_inventory_size = 1 - data.raw["locomotive"]["boat_engine"].burner.burnt_inventory_size = 1 - data.raw["locomotive"]["boat_engine"].burner.effectivity = 1.5 - data.raw["locomotive"]["cargo_ship_engine"].burner.fuel_category = "vehicle" - data.raw["locomotive"]["cargo_ship_engine"].burner.fuel_inventory_size = 3 - data.raw["locomotive"]["cargo_ship_engine"].burner.burnt_inventory_size = 3 - data.raw["locomotive"]["cargo_ship_engine"].burner.effectivity = 2 + data.raw["car"]["indep-boat"].energy_source.fuel_categories = {"vehicle"} + data.raw["car"]["indep-boat"].energy_source.fuel_inventory_size = 1 + data.raw["car"]["indep-boat"].energy_source.burnt_inventory_size = 1 + data.raw["car"]["indep-boat"].energy_source.effectivity = 1.5 + data.raw["locomotive"]["boat_engine"].energy_source.fuel_categories = {"vehicle"} + data.raw["locomotive"]["boat_engine"].energy_source.fuel_inventory_size = 1 + data.raw["locomotive"]["boat_engine"].energy_source.burnt_inventory_size = 1 + data.raw["locomotive"]["boat_engine"].energy_source.effectivity = 1.5 + data.raw["locomotive"]["cargo_ship_engine"].energy_source.fuel_categories = {"vehicle"} + data.raw["locomotive"]["cargo_ship_engine"].energy_source.fuel_inventory_size = 3 + data.raw["locomotive"]["cargo_ship_engine"].energy_source.burnt_inventory_size = 3 + data.raw["locomotive"]["cargo_ship_engine"].energy_source.effectivity = 2 data.raw.technology["water_transport"].order = "nullius-cn" @@ -2034,7 +2009,7 @@ if mods["cargo-ships"] then data.raw.technology["automated_water_transport"].order = "nullius-di" data.raw.technology["automated_water_transport"].prerequisites = - {"cargo_ships", "nullius-concrete-1", "nullius-weaving-1"} + {"cargo_ships", "nullius-concrete-1", "nullius-weaving-1","nullius-checkpoint-sensor"} data.raw.technology["automated_water_transport"].unit = { count = 100, time = 30, ingredients = { @@ -2054,20 +2029,20 @@ if mods["cargo-ships"] then } } - data.raw.technology["water_transport_signals"].order = "nullius-dj" - data.raw.technology["water_transport_signals"].prerequisites = - {"automated_water_transport", "nullius-checkpoint-sensor"} - data.raw.technology["water_transport_signals"].unit = { - count = 80, time = 30, - ingredients = { - {"nullius-geology-pack", 1}, {"nullius-climatology-pack", 1}, - {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 2} - } - } + -- data.raw.technology["water_transport_signals"].order = "nullius-dj" + -- data.raw.technology["water_transport_signals"].prerequisites = + -- {"automated_water_transport", "nullius-checkpoint-sensor"} + -- data.raw.technology["water_transport_signals"].unit = { + -- count = 80, time = 30, + -- ingredients = { + -- {"nullius-geology-pack", 1}, {"nullius-climatology-pack", 1}, + -- {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 2} + -- } + -- } data.raw.technology["oversea-energy-distribution"].order = "nullius-dk" data.raw.technology["oversea-energy-distribution"].prerequisites = - {"water_transport_signals", "tank_ship", "nullius-energy-distribution-3"} + {"water_transport", "tank_ship", "nullius-energy-distribution-3"} data.raw.technology["oversea-energy-distribution"].unit = { count = 150, time = 30, ingredients = { @@ -2094,7 +2069,7 @@ if mods["cargo-ships"] then data.raw["rail-planner"]["waterway"].order = "nullius-b" data.raw["item-with-entity-data"]["boat_engine"].order = "nullius-l" data.raw["item-with-entity-data"]["cargo_ship_engine"].order = "nullius-m" - data.raw["item-with-entity-data"]["indep-boat"].order = "nullius-i" + --data.raw["item-with-entity-data"]["indep-boat"].order = "nullius-i" data.raw["item-with-entity-data"]["boat"].order = "nullius-h" data.raw.recipe["boat"].order = "nullius-h" @@ -2152,7 +2127,7 @@ if mods["cargo-ships"] then data.raw.recipe["buoy"].energy_required = 5 data.raw.recipe["buoy"].ingredients = { {type="item", name="rail-signal", amount=1}, - {type="item", name="empty-barrel", amount=1}, + {type="item", name="barrel", amount=1}, {type="item", name="nullius-steel-cable", amount=5}, {type="item", name="concrete", amount=5}, {type="fluid", name="nullius-nitrogen", amount=250, fluidbox_index=1} @@ -2194,7 +2169,7 @@ if mods["cargo-ships"] then } - if settings.startup["deep_oil"].value then + if settings.startup["offshore_oil_enabled"].value then data.raw.technology["deep_sea_oil_extraction"].order = "nullius-dk" data.raw.technology["deep_sea_oil_extraction"].prerequisites = {"oversea-energy-distribution", "nullius-plumbing-4"} @@ -2209,7 +2184,7 @@ if mods["cargo-ships"] then data.raw.item["oil_rig"].subgroup = "water-intake" data.raw.item["oil_rig"].order = "nullius-dr" - data.raw.recipe["oil_rig"].order = "nullius-dr" + data.raw.recipe["oil_rig"].order = "nullius-dr" data.raw.recipe["oil_rig"].category = "huge-crafting" data.raw.recipe["oil_rig"].always_show_made_in = true data.raw.recipe["oil_rig"].energy_required = 60 diff --git a/nullius/prototypes/override_mod_final.lua b/nullius/prototypes/override_mod_final.lua index 185f7b5..5e00629 100644 --- a/nullius/prototypes/override_mod_final.lua +++ b/nullius/prototypes/override_mod_final.lua @@ -254,7 +254,7 @@ if (mods["RenaiTransportation"] and end -if (mods["cargo-ships"] and settings.startup["deep_oil"].value) then +if (mods["cargo-ships"] and settings.startup["offshore_oil_enabled"].value) then data.raw.technology["deep_sea_oil_extraction"].unit = { count = 200, time = 30, ingredients = { diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index 8b1b971..a64ef79 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -392,12 +392,12 @@ data:extend({ }) -if (mods["cargo-ships"] and settings.startup["deep_oil"].value) then +if (mods["cargo-ships"] and settings.startup["offshore_oil_enabled"].value) then data:extend({ { type = "autoplace-control", - name = "deep_oil", - localised_name = {"autoplace-control-names.nullius-hydrothermal"}, + name = "offshore-oil", + localised_name = {"autoplace-control-names.nullius-hydrothermal"}, category = "resource", richness = true, order = "a-c-c" diff --git a/nullius/prototypes/resource_override.lua b/nullius/prototypes/resource_override.lua index 5b3e84f..a5f1fb3 100644 --- a/nullius/prototypes/resource_override.lua +++ b/nullius/prototypes/resource_override.lua @@ -158,12 +158,12 @@ data.raw["map-gen-presets"]["default"]["ribbon-world"].basic_settings = { } -if (mods["cargo-ships"] and settings.startup["deep_oil"].value) then -resource_autoplace.initialize_patch_set("deep_oil", false) +if (mods["cargo-ships"] and settings.startup["offshore_oil_enabled"].value) then +resource_autoplace.initialize_patch_set("offshore-oil", false) -data.raw.resource["deep_oil"].autoplace = +data.raw.resource["offshore-oil"].autoplace = resource_autoplace.resource_autoplace_settings { - name = "deep_oil", + name = "offshore-oil", order = "a-c-c", base_density = 8.2, base_spots_per_km2 = 1.8, @@ -175,7 +175,7 @@ data.raw.resource["deep_oil"].autoplace = has_starting_area_placement = false } -data.raw.resource["deep_oil"].minable = { +data.raw.resource["offshore-oil"].minable = { mining_time = 1, results = {{ type = "fluid", @@ -187,14 +187,14 @@ data.raw.resource["deep_oil"].minable = { }} } -data.raw.resource["deep_oil"].map_color = {r=0.7, g=0.5, b=0.3} -data.raw.resource["deep_oil"].mining_visualisation_tint = {r = 1.0, g = 0.7, b = 0.4, a = 1.0} -data.raw.resource["deep_oil"].localised_name = {"entity-name.nullius-hydrothermal-vent"} -data.raw.resource["deep_oil"].localised_description = {"entity-description.nullius-hydrothermal-vent"} +data.raw.resource["offshore-oil"].map_color = {r=0.7, g=0.5, b=0.3} +data.raw.resource["offshore-oil"].mining_visualisation_tint = {r = 1.0, g = 0.7, b = 0.4, a = 1.0} +data.raw.resource["offshore-oil"].localised_name = {"entity-name.nullius-hydrothermal-vent"} +data.raw.resource["offshore-oil"].localised_description = {"entity-description.nullius-hydrothermal-vent"} -table.insert(data.raw.resource["deep_oil"].collision_mask, 'ground-tile') +table.insert(data.raw.resource["offshore-oil"].collision_mask, 'ground-tile') -data.raw.resource["deep_oil"].stages = { sheet = { +data.raw.resource["offshore-oil"].stages = { sheet = { filename = "__angelsrefininggraphics__/graphics/entity/patches/gas.png", tint = {0.4, 0.2, 0, 0.4}, priority = "extra-high", @@ -205,11 +205,11 @@ data.raw.resource["deep_oil"].stages = { sheet = { }} data.raw["map-gen-presets"]["default"]["rich-resources"].basic_settings. - autoplace_controls["deep_oil"] = { richness = "very-good"} + autoplace_controls["offshore-oil"] = { richness = "very-good"} data.raw["map-gen-presets"]["default"]["rail-world"].basic_settings. - autoplace_controls["deep_oil"] = { frequency = 0.33333333333, size = 3 } + autoplace_controls["offshore-oil"] = { frequency = 0.33333333333, size = 3 } data.raw["map-gen-presets"]["default"]["ribbon-world"].basic_settings. - autoplace_controls["deep_oil"] = { frequency = 3, size = 0.5, richness = 2 } + autoplace_controls["offshore-oil"] = { frequency = 3, size = 0.5, richness = 2 } if (not settings.startup["no_oil_for_oil_rig"].value) then data.raw.resource["nullius-fumarole"].infinite = false @@ -219,7 +219,7 @@ if (not settings.startup["no_oil_for_oil_rig"].value) then end end --- Alien Biomes Patch -- TODO: do a bug report: alien biomes crashes when the disable all vegetation setting is enabled +-- Alien Biomes Patch (alien biomes 0.7.4 crashes when the disable all vegetation setting is enabled) local block_decorative_words = {"grass", "asterisk", "fluff", "garballo", "bush", "croton", "pita", "cane"} for _, prototype in pairs(data.raw['optimized-decorative']) do for _, word in pairs(block_decorative_words) do From b52afb4d11a629ba32bbb134ae624c9f425f021a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 20:42:53 +0200 Subject: [PATCH 104/236] Jetpack - fixed locale --- nullius/info.json | 4 ++-- nullius/prototypes/mods.lua | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index cc4d47a..1b98ccf 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -18,8 +18,8 @@ "? underground-pipe-pack >= 1.1.2", "(?) cargo-ships >= 1.0.21", "(?) boblibrary >= 1.1.4", - "(?) IRobot >= 1.1.0", - "(?) jetpack >= 0.3.14", + "(?) IRobot >= 2.0.0", + "(?) jetpack >= 0.4.12", "(?) FluidMustFlow >= 1.4.3", "(?) factorissimo-2-notnotmelon >= 3.9.6", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 83e3227..ea38c68 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -919,6 +919,7 @@ data:extend({ { type = "recipe", name = "nullius-jetpack-1", + localised_name = {"item-name.jetpack-1"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -937,6 +938,7 @@ data:extend({ { type = "recipe", name = "nullius-jetpack-2", + localised_name = {"item-name.jetpack-2"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -956,6 +958,7 @@ data:extend({ { type = "recipe", name = "nullius-jetpack-3", + localised_name = {"item-name.jetpack-3"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -975,6 +978,7 @@ data:extend({ { type = "recipe", name = "nullius-jetpack-4", + localised_name = {"item-name.jetpack-4"}, enabled = false, always_show_made_in = true, category = "medium-crafting", From aa03d31a51ab1b67a539900564c8221d07ecf3b0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 20:56:47 +0200 Subject: [PATCH 105/236] LTN & LTN Combinator - fixed locale --- nullius/info.json | 3 +++ nullius/prototypes/mods.lua | 2 ++ 2 files changed, 5 insertions(+) diff --git a/nullius/info.json b/nullius/info.json index 1b98ccf..746230e 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -31,6 +31,9 @@ "(?) Warehousing >= 1.0.3", "(?) Teleporters >= 2.0.0", "(?) railway-motor-car >= 0.6.0", + "(?) LogisticTrainNetwork >= 2.3.4", + "(?) LTN_Combinator_Modernized >= 2.2.5", + "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index ea38c68..fffd4e9 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -31,6 +31,7 @@ data:extend({ { type = "recipe", name = "nullius-logistic-train-stop", + localised_name = {"entity-name.logistic-train-stop"}, enabled = false, category = "medium-crafting", always_show_made_in = true, @@ -53,6 +54,7 @@ if mods["LTN_Combinator_Modernized"] then { type = "recipe", name = "nullius-ltn-combinator", + localised_name = {"entity-name.ltn-combinator"}, enabled = false, always_show_made_in = true, category = "tiny-crafting", From fff6119602c44eb5aad0c676480b18b3b98d6ab2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 21:02:35 +0200 Subject: [PATCH 106/236] aai-signal-transmitter - fixed locale --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 2 ++ 2 files changed, 3 insertions(+) diff --git a/nullius/info.json b/nullius/info.json index 746230e..8e51d89 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -33,6 +33,7 @@ "(?) railway-motor-car >= 0.6.0", "(?) LogisticTrainNetwork >= 2.3.4", "(?) LTN_Combinator_Modernized >= 2.2.5", + "(?) aai-signal-transmission >= 0.5.1", "! aai-industry", "! angelsbioprocessing", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index fffd4e9..176a6fe 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -83,6 +83,7 @@ data:extend({ { type = "recipe", name = "nullius-aai-signal-sender", + localised_name = {"entity-name.aai-signal-sender"}, category = "huge-crafting", always_show_made_in = true, energy_required = 12, @@ -98,6 +99,7 @@ data:extend({ { type = "recipe", name = "nullius-aai-signal-receiver", + localised_name = {"entity-name.aai-signal-receiver"}, category = "huge-crafting", always_show_made_in = true, energy_required = 15, From 6d7baf1a9494961a89905f8d04f0f0a36dee6062 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 21:49:10 +0200 Subject: [PATCH 107/236] train-pubsub - fixed locale and subgroup --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 4 ++++ nullius/prototypes/override_mod.lua | 1 + 3 files changed, 6 insertions(+) diff --git a/nullius/info.json b/nullius/info.json index 8e51d89..95ed080 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -34,6 +34,7 @@ "(?) LogisticTrainNetwork >= 2.3.4", "(?) LTN_Combinator_Modernized >= 2.2.5", "(?) aai-signal-transmission >= 0.5.1", + "(?) train-pubsub >= 2.0.7", "! aai-industry", "! angelsbioprocessing", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 176a6fe..7101b3f 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -729,6 +729,7 @@ data:extend({ { type = "recipe", name = "nullius-train-publisher", + localised_name = {"entity-name.train-publisher"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -744,6 +745,7 @@ data:extend({ { type = "recipe", name = "nullius-subscriber-train-stop", + localised_name = {"entity-name.subscriber-train-stop"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -760,6 +762,7 @@ data:extend({ { type = "recipe", name = "nullius-publisher-train-stop", + localised_name = {"entity-name.publisher-train-stop"}, enabled = false, always_show_made_in = true, category = "large-crafting", @@ -776,6 +779,7 @@ data:extend({ { type = "recipe", name = "nullius-train-config", + localised_name = {"entity-name.train-config"}, enabled = false, always_show_made_in = true, category = "tiny-crafting", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 737313c..a172f30 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -499,6 +499,7 @@ end end if mods["train-pubsub"] then +data.raw["item-subgroup"]["transport"].group = "logistics" data.raw.technology["train-manager"].order = "nullius-dl" data.raw.technology["train-manager"].unit = { count = 300, From 137f63400eaeb9a33607aece879ee13cb4cd3bad Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 20 Aug 2025 22:22:52 +0200 Subject: [PATCH 108/236] Inventory sensor & botReplacer - fixed locale --- nullius/info.json | 11 +++++++++-- nullius/prototypes/mods.lua | 13 ++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 95ed080..b823e78 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -8,7 +8,6 @@ "homepage": "https://discord.gg/tZY2Rkte8Y", "dependencies": [ "base >= 2.0.58", - "(?) Transport_Drones >= 1.0.16", "alien-biomes >= 0.7.4", "angelsrefininggraphics >= 1.0.0", "angelssmeltinggraphics >= 1.0.0", @@ -35,12 +34,20 @@ "(?) LTN_Combinator_Modernized >= 2.2.5", "(?) aai-signal-transmission >= 0.5.1", "(?) train-pubsub >= 2.0.7", + "(?) textplates >= 0.7.2", + "(?) botReplacer >= 2.0.0", + "(?) Inventory Sensor >= 2.0.6", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", "! bobores", "! stack-size-tooltip", - "! angelssmelting" + "! angelssmelting", + + "(?) Transport_Drones >= 1.0.16", + "(?) Companion_Drones >= 1.0.25", + "(?) miniloader >= 1.15.7", + "(?) FuelTrainStop >= 1.1.0" ] } diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 7101b3f..1953120 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -1858,6 +1858,7 @@ data:extend({ { type = "recipe", name = "nullius-bot-upgrade-chest", + localised_name = {"entity-name.logistic-chest-botUpgrader"}, enabled = false, always_show_made_in = true, category = "medium-crafting", @@ -1879,9 +1880,10 @@ data:extend({ { type = "recipe", name = "nullius-fuel-train-stop", + localised_name = {"entity-name.fuel-train-stop"}, enabled = false, - always_show_made_in = true, - no_productivity = true, + always_show_made_in = true, + no_productivity = true, category = "medium-crafting", energy_required = 2, ingredients = { @@ -1941,7 +1943,7 @@ data:extend({ type = "recipe", name = "nullius-companion", enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "medium-crafting", energy_required = 90, ingredients = { @@ -1956,7 +1958,7 @@ data:extend({ type = "recipe", name = "nullius-companion-reactor-equipment", enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "medium-crafting", energy_required = 30, ingredients = { @@ -2080,8 +2082,9 @@ data:extend({ { type = "recipe", name = "nullius-item-sensor", + localised_name = {"entity-name.item-sensor"}, enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "small-crafting", energy_required = 5, ingredients = { From 67f47a529d13d53d38cd1ee0306cf2ca752536a3 Mon Sep 17 00:00:00 2001 From: Sairon Istyar Date: Wed, 20 Aug 2025 22:30:48 +0200 Subject: [PATCH 109/236] fix equipment fuel inventory iterator loop in update_generators() --- nullius/scripts/equipment.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/nullius/scripts/equipment.lua b/nullius/scripts/equipment.lua index 3d05b78..3c8642f 100644 --- a/nullius/scripts/equipment.lua +++ b/nullius/scripts/equipment.lua @@ -517,15 +517,15 @@ function update_generators() if ((burninv ~= nil) and burninv.valid) then local content = burninv.get_contents() local lastfuel = nil - for fuelname,_ in pairs(content) do - lastfuel = fuelname - local fuelnum = burninv.get_insertable_count(fuelname) + for _,fuel in pairs(content) do + lastfuel = fuel.name + local fuelnum = burninv.get_insertable_count(fuel.name) if (fuelnum > 0) then - fuelnum = c.remove_item({name=fuelname, count=fuelnum}) + fuelnum = c.remove_item({name=fuel.name, count=fuelnum}) if (fuelnum > 0) then - local actual = burninv.insert({name=fuelname, count=fuelnum}) + local actual = burninv.insert({name=fuel.name, count=fuelnum}) if (actual < fuelnum) then - c.insert({name=fuelname, count=(fuelnum - actual)}) + c.insert({name=fuel.name, count=(fuelnum - actual)}) end end end @@ -567,11 +567,11 @@ function update_generators() if ((spentinv ~= nil) and spentinv.valid and (not spentinv.is_empty())) then local spent = spentinv.get_contents() - for itemname,itemcount in pairs(spent) do - if (c.can_insert({name=itemname, count=itemcount})) then - local diff = c.insert({name=itemname, count=itemcount}) + for _,item in pairs(spent) do + if (c.can_insert({name=item.name, count=item.count})) then + local diff = c.insert({name=item.name, count=item.count}) if (diff > 0) then - spentinv.remove({name=itemname, count=diff}) + spentinv.remove({name=item.name, count=diff}) end end end From c894fedad3432f98741f1c82f387ae2ec8bfb820 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 03:29:22 +0200 Subject: [PATCH 110/236] FIxed crash when using husbandry drone --- nullius/scripts/drone.lua | 5 ++--- nullius/scripts/mission.lua | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/nullius/scripts/drone.lua b/nullius/scripts/drone.lua index 593bb91..db300d5 100644 --- a/nullius/scripts/drone.lua +++ b/nullius/scripts/drone.lua @@ -752,9 +752,8 @@ function husbandry_effect(event) if (old_status == nil) then old_status = 0 end if (old_status == 0) then game.forces["enemy"].reset_evolution() - elseif (game.forces["enemy"].evolution_factor < 0.8) then - game.forces["enemy"].evolution_factor = - game.forces["enemy"].evolution_factor + 0.01 + elseif (game.forces["enemy"].get_evolution_factor() < 0.8) then + game.forces["enemy"].set_evolution_factor(game.forces["enemy"].get_evolution_factor() + 0.01) end local source = event.source_entity diff --git a/nullius/scripts/mission.lua b/nullius/scripts/mission.lua index 767a6b6..f57979f 100644 --- a/nullius/scripts/mission.lua +++ b/nullius/scripts/mission.lua @@ -146,7 +146,7 @@ function set_mission_goal(goal, amount, force) local oldstatus = status[goal] count[goal] = math.min(math.max(amount, 0), (mission_target[goal] * 4)) status[goal] = (math.floor(100 * - ((100 * count[goal]) / mission_target[goal])) / 100) + ((100 * count[goal]) / mission_target[goal])) / 100) -- only shows 2 digits after the dot if ((goal >= 3) and (goal <= 5)) then local algae_oxygen = (40 * count[3]) / (count[3] + (mission_target[3] / 2)) @@ -226,18 +226,18 @@ function update_oxygen() local vent_force = nil local vent_total = storage.nullius_oxygen_legacy for _, force in pairs(game.forces) do - if (force.research_enabled) then - local stats = force.get_fluid_production_statistics("nauvis") - local vent_score = 0 - for gasname,multiplier in pairs(oxygen_equivalent) do - vent_score = (vent_score + ((stats.get_input_count(gasname) - - stats.get_output_count(gasname)) * multiplier)) - end - vent_total = vent_total + vent_score - if ((vent_force == nil) or (vent_score > vent_best)) then - vent_best = vent_score - vent_force = force - end + if (force.research_enabled) then + local stats = force.get_fluid_production_statistics("nauvis") + local vent_score = 0 + for gasname,multiplier in pairs(oxygen_equivalent) do + vent_score = (vent_score + ((stats.get_input_count(gasname) - + stats.get_output_count(gasname)) * multiplier)) + end + vent_total = vent_total + vent_score + if ((vent_force == nil) or (vent_score > vent_best)) then + vent_best = vent_score + vent_force = force + end end end From 8d35673f1f1bfb03c2c24016d0f9b91c8c06276f Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 11:10:39 +0200 Subject: [PATCH 111/236] Added missing migrations for filter-inserters --- nullius/migrations/nullius_2.0.0.json | 20 +++++++++++++++++++- nullius/prototypes/item/boxing.lua | 8 ++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 05fe316..77a1fd1 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -6,7 +6,25 @@ ["nullius-duct-end-point-intake", "nullius-duct-intake"], ["nullius-SNTD-old-nixie-tube", "nullius-classic-nixie-tube"], ["nullius-SNTD-nixie-tube", "nullius-reinforced-nixie-tube"], - ["nullius-SNTD-nixie-tube-small", "nullius-small-reinforced-nixie-tube"] + ["nullius-SNTD-nixie-tube-small", "nullius-small-reinforced-nixie-tube"], + + ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], + ["nullius-unbox-filter-inserter-2", "nullius-unbox-inserter-2"], + ["nullius-box-filter-inserter-3", "nullius-box-inserter-3"], + ["nullius-unbox-filter-inserter-3", "nullius-unbox-inserter-3"], + ["nullius-box-filter-inserter-4", "nullius-box-inserter-4"], + ["nullius-unbox-filter-inserter-4", "nullius-unbox-inserter-4"], + ["nullius-filter-inserter-2", "nullius-inserter-2"], + ["nullius-filter-inserter-3", "nullius-inserter-3"], + ["nullius-filter-inserter-4", "nullius-inserter-4"], + ["nullius-boxed-filter-inserter-2", "nullius-boxed-inserter-2"], + ["nullius-boxed-filter-inserter-3", "nullius-boxed-inserter-3"], + ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"] + ], + "item": [ + ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], + ["nullius-box-filter-inserter-3", "nullius-box-inserter-3"], + ["nullius-box-filter-inserter-4", "nullius-box-inserter-4"] ], "tile":[ ["angels-tile-clay-brick", "nullius-tile-clay-brick"] diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index 5ea1236..2a709b2 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -66,8 +66,8 @@ local function create_boxed_item(base_name, group, box_order, always_show_products = true, allow_as_intermediate = false, no_productivity = true, - hide_from_stats = true, - requester_paste_multiplier = 5, + hide_from_stats = true, + requester_paste_multiplier = 5, energy_required = 1, ingredients = { {type="item", name= full_name, amount = 4*ratio} @@ -90,8 +90,8 @@ local function create_boxed_item(base_name, group, box_order, allow_decomposition = false, allow_as_intermediate = false, no_productivity = true, - hide_from_stats = true, - requester_paste_multiplier = 4, + hide_from_stats = true, + requester_paste_multiplier = 4, energy_required = 0.2, ingredients = { {type="item", name="nullius-box-"..base_name, amount = 1} From 473b881dbe6d64dc8865534afb53647cc35827d9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 11:46:27 +0200 Subject: [PATCH 112/236] Fixed stack size of antenna and power switch --- nullius/prototypes/item/boxing.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index 2a709b2..ddbb040 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -136,6 +136,8 @@ data.raw.item["refined-hazard-concrete"].stack_size = 500 data.raw.item["copper-cable"].localised_name = {"item-name.nullius-insulated-wire"} data.raw.item["copper-cable"].stack_size = 200 data.raw.item["big-electric-pole"].stack_size = 50 +data.raw.item["programmable-speaker"].stack_size = 50 +data.raw.item["power-switch"].stack_size = 50 data.raw.item["constant-combinator"].localised_name = {"entity-name.nullius-memory-circuit"} data.raw.item["arithmetic-combinator"].localised_name = {"entity-name.nullius-arithmetic-circuit"} From 5422c133fd70df2a079d523e740191cca773cc63 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 12:57:16 +0200 Subject: [PATCH 113/236] Quick and dirty fix for the broken recipe getting disabled while in an assembling machine --- nullius/prototypes/entity/assembler.lua | 1 + nullius/scripts/checkpoint.lua | 76 ++++++++++++------------- nullius/scripts/landing.lua | 2 +- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index da6dc74..c47dbab 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -128,6 +128,7 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-medium-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + disabled_when_recipe_not_researched = false, icon_draw_specification = {shift = {0, -0.2}}, minable = {mining_time = 0.8, result = "nullius-medium-assembler-1"}, max_health = 300, diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index 06a903e..964333b 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -213,12 +213,12 @@ function reset_checkpoints(force) (not storage.nullius_alignment)) then for suffix, count in pairs(broken_data) do local broken_name = "nullius-broken-" .. suffix - if (not broken_disabled(broken_name)) then - checknum = checknum + 1 - checkset[checknum] = {name=broken_name, category=CAT_BROKEN, - reqs={{ CHK_ITEM, STT_CONSUME, count, {{ broken_name }} }}} + if (not broken_disabled(broken_name)) then + checknum = checknum + 1 + checkset[checknum] = {name=broken_name, category=CAT_BROKEN, + reqs={{ CHK_ITEM, STT_CONSUME, count, {{ broken_name }} }}} + end end - end end storage.checkpoint_list[force.index] = checkset @@ -367,45 +367,45 @@ local function update_checkpoint_force(force, tick) if ((progress >= count) or (count < 1)) then if (tech ~= nil) then - if ((force.current_research == nil) or - (force.current_research.name ~= tech.name)) then - force.print({"technology-description.nullius-complete-checkpoint", - "[technology="..tech.name.."]"}, {1, 0.75, 0.4}) - end - if ((force.current_research ~= nil) and (force.current_research.name ~= tech.name)) then - -- When checkpoint is in research queue, researching item - -- clears anything else in queue that has it as a dependency. - -- Try to restore the original queue afterwards. - local saved_queue = { } - local saved_count = 1 - local found = nil - for ind,q in pairs(force.research_queue) do - if (ind > 1) then - if (q.name == tech.name) then - found = saved_count - else - saved_count = saved_count + 1 - saved_queue[saved_count] = q - end - else - saved_queue[1] = q - end - end - tech.researched = true - if ((found ~= nil) and (found < saved_count)) then - force.research_queue = saved_queue - end + if ((force.current_research == nil) or + (force.current_research.name ~= tech.name)) then + force.print({"technology-description.nullius-complete-checkpoint", + "[technology="..tech.name.."]"}, {1, 0.75, 0.4}) + end + if ((force.current_research ~= nil) and (force.current_research.name ~= tech.name)) then + -- When checkpoint is in research queue, researching item + -- clears anything else in queue that has it as a dependency. + -- Try to restore the original queue afterwards. + local saved_queue = { } + local saved_count = 1 + local found = nil + for ind,q in pairs(force.research_queue) do + if (ind > 1) then + if (q.name == tech.name) then + found = saved_count + else + saved_count = saved_count + 1 + saved_queue[saved_count] = q + end + else + saved_queue[1] = q + end + end + tech.researched = true + if ((found ~= nil) and (found < saved_count)) then + force.research_queue = saved_queue + end + else + tech.researched = true + end else - tech.researched = true + broken_finished(check.name) end - else - broken_finished(check.name) - end elseif (tech ~= nil) then progress = (progress / count) if ((force.current_research ~= nil) and (force.current_research.name == tech.name)) then - force.research_progress = progress + force.research_progress = progress else -- force.set_saved_technology_progress(tech, progress) force.technologies[tech.name].saved_progress = progress diff --git a/nullius/scripts/landing.lua b/nullius/scripts/landing.lua index c3f2087..1fad405 100644 --- a/nullius/scripts/landing.lua +++ b/nullius/scripts/landing.lua @@ -128,7 +128,7 @@ function landing_site(surface, loc, frc) local can_place = surface.can_place_entity{ name = part.name, position = part_position, force = frc, forced = true, - build_check_type = defines.build_check_type.ghost_place } + build_check_type = defines.build_check_type.ghost_place }--todo: check this if (can_place and ((part.min_separation == nil) or (surface.count_entities_filtered{position = part_position, radius = part.min_separation, limit = 1, From d7d9d2526075ff6ae47a94e8d692e317e418fe35 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 16:26:31 +0200 Subject: [PATCH 114/236] Renamed cargo landing pad and changed its recipe --- nullius/locale/en/item.cfg | 1 + nullius/locale/en/recipe.cfg | 2 +- nullius/prototypes/item/buildings.lua | 9 ++++++--- nullius/prototypes/override.lua | 4 +++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/nullius/locale/en/item.cfg b/nullius/locale/en/item.cfg index 1ecc3f0..f797e53 100644 --- a/nullius/locale/en/item.cfg +++ b/nullius/locale/en/item.cfg @@ -336,6 +336,7 @@ nullius-align-conscription-ray=Conscription ray nullius-align-concordance-satellite=Concordance satellite nullius-red-wire=Red wire nullius-green-wire=Green wire +nullius-landing-pad=Landing pad [item-description] nullius-geology-pack=Mineral sample studied in lab to adapt technology to local minerals. diff --git a/nullius/locale/en/recipe.cfg b/nullius/locale/en/recipe.cfg index fee66df..11869d9 100644 --- a/nullius/locale/en/recipe.cfg +++ b/nullius/locale/en/recipe.cfg @@ -227,4 +227,4 @@ nullius-carbon-sink=Carbon sink nullius-chlorine-sink=Chlorine sink nullius-boron-sink=Boron sink nullius-glycolysis=Glycolysis -nullius-carbon-nanotubes=Carbon nanotubes +nullius-carbon-nanotubes=Carbon nanotubes \ No newline at end of file diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index 1cf0416..c92a652 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -3597,14 +3597,17 @@ data:extend({ category = "huge-crafting", energy_required = 180, ingredients = { - {type="item", name="nullius-drone-launcher-2", amount=5}, {type="item", name="nullius-hangar-3", amount=2}, {type="item", name="nullius-beacon-3", amount=4}, {type="item", name="nullius-box-wall", amount=10}, + {type="item", name="nullius-box-steel-beam", amount=10}, + {type="item", name="nullius-armor-plate", amount=50}, {type="item", name="nullius-box-heat-pipe-3", amount=4}, {type="item", name="nullius-box-hazard-concrete", amount=30}, - {type="item", name="nullius-box-productivity-module-2", amount=1}, - {type="item", name="nullius-lab-3", amount=1} + --{type="item", name="nullius-box-productivity-module-2", amount=1}, + {type="item", name="nullius-large-supply-chest-2", amount=8}, + {type="item", name="nullius-box-sensor-2", amount=4}, + {type="item", name="nullius-multi-tool-2", amount=15}, }, results = { {type = "item", name = "nullius-landing-pad", amount = 1} diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index b203ca1..6cb5bf1 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -988,4 +988,6 @@ for _, sc in pairs(data.raw.shortcut) do if sc.technology_to_unlock ~= nil then sc.technology_to_unlock = scTechs[sc.technology_to_unlock] end -end \ No newline at end of file +end + +data.raw["cargo-landing-pad"]["cargo-landing-pad"].localised_name = {"item-name.nullius-landing-pad"} \ No newline at end of file From b2b2026bbdc87c10b3cf73624c6014eaedd13b6a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 18:11:54 +0200 Subject: [PATCH 115/236] Holographic signs - fixed locale --- nullius/info.json | 63 +++++++++++++++++++------------------ nullius/prototypes/mods.lua | 3 +- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index b823e78..578782c 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -9,45 +9,48 @@ "dependencies": [ "base >= 2.0.58", "alien-biomes >= 0.7.4", - "angelsrefininggraphics >= 1.0.0", + "angelsrefininggraphics >= 1.0.0", "angelssmeltinggraphics >= 1.0.0", "angelspetrochemgraphics >= 1.0.0", "boblogistics >= 2.0.2", "? RecipeBook >= 4.0.2", "? underground-pipe-pack >= 1.1.2", - "(?) cargo-ships >= 1.0.21", + "(?) cargo-ships >= 1.0.21", "(?) boblibrary >= 1.1.4", "(?) IRobot >= 2.0.0", - "(?) jetpack >= 0.4.12", + "(?) jetpack >= 0.4.12", - "(?) FluidMustFlow >= 1.4.3", - "(?) factorissimo-2-notnotmelon >= 3.9.6", - "(?) safefill >= 2.0.0", - "(?) train-upgrader >= 2.0.0", - "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", - "(?) aai-loaders >= 0.2.7", - "(?) RenaiTransportation >= 2.2.4", - "(?) Warehousing >= 1.0.3", - "(?) Teleporters >= 2.0.0", - "(?) railway-motor-car >= 0.6.0", - "(?) LogisticTrainNetwork >= 2.3.4", - "(?) LTN_Combinator_Modernized >= 2.2.5", - "(?) aai-signal-transmission >= 0.5.1", - "(?) train-pubsub >= 2.0.7", - "(?) textplates >= 0.7.2", - "(?) botReplacer >= 2.0.0", - "(?) Inventory Sensor >= 2.0.6", + "(?) FluidMustFlow >= 1.4.3", + "(?) factorissimo-2-notnotmelon >= 3.9.6", + "(?) safefill >= 2.0.0", + "(?) train-upgrader >= 2.0.0", + "(?) UPSFriendlyNixieTubeDisplay >= 0.2.9", + "(?) aai-loaders >= 0.2.7", + "(?) RenaiTransportation >= 2.2.4", + "(?) Warehousing >= 1.0.3", + "(?) Teleporters >= 2.0.0", + "(?) railway-motor-car >= 0.6.0", + "(?) LogisticTrainNetwork >= 2.3.4", + "(?) LTN_Combinator_Modernized >= 2.2.5", + "(?) aai-signal-transmission >= 0.5.1", + "(?) train-pubsub >= 2.0.7", + "(?) textplates >= 0.7.2", + "(?) botReplacer >= 2.0.0", + "(?) Inventory Sensor >= 2.0.6", + "(?) holographic_signs >= 2.0.8", "! aai-industry", - "! angelsbioprocessing", - "! angelsinfiniteores", - "! bobores", - "! stack-size-tooltip", - "! angelssmelting", - - "(?) Transport_Drones >= 1.0.16", - "(?) Companion_Drones >= 1.0.25", - "(?) miniloader >= 1.15.7", - "(?) FuelTrainStop >= 1.1.0" + "! angelsbioprocessing", + "! angelsinfiniteores", + "! bobores", + "! stack-size-tooltip", + "! angelssmelting", + + "(?) Transport_Drones >= 1.0.16", + "(?) Companion_Drones >= 1.0.25", + "(?) miniloader >= 1.15.7", + "(?) FuelTrainStop >= 1.1.0", + "(?) crafting_combinator >= 0.16.3", + "(?) Shuttle_Train_Continued >= 1.1.0" ] } diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 1953120..1b7f7ca 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -2247,6 +2247,7 @@ data:extend({ { type = "recipe", name = "nullius-holographic-sign", + localised_name = {"entity-name.hs_holo_sign"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -2255,7 +2256,7 @@ data:extend({ {type = "item", name = "constant-combinator", amount = 2}, {type = "item", name = "small-lamp", amount = 3}, {type = "item", name = "nullius-aluminum-plate", amount = 1}, - {type = "item", name = "nullius-glass", amount = 2} + {type = "item", name = "nullius-glass", amount = 2} }, results = { {type = "item", name = "hs_holo_sign", amount = 1} From 6fef11865298fe49cfbb8e7a99d3e39d1aecfedb Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 18:31:31 +0200 Subject: [PATCH 116/236] Recursive blueprints + - fixed locale --- nullius/info.json | 5 ++++- nullius/prototypes/mods.lua | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 578782c..cc1a818 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -38,6 +38,7 @@ "(?) botReplacer >= 2.0.0", "(?) Inventory Sensor >= 2.0.6", "(?) holographic_signs >= 2.0.8", + "(?) rec-blue-plus >= 1.4.8", "! aai-industry", "! angelsbioprocessing", @@ -51,6 +52,8 @@ "(?) miniloader >= 1.15.7", "(?) FuelTrainStop >= 1.1.0", "(?) crafting_combinator >= 0.16.3", - "(?) Shuttle_Train_Continued >= 1.1.0" + "(?) Shuttle_Train_Continued >= 1.1.0", + "(?) railloader >= 1.1.6", + "(?) DisplayPlates >= 1.5.1" ] } diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 1b7f7ca..1477580 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -3860,6 +3860,7 @@ if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then { type = "recipe", name = "nullius-blueprint-deployer", + localised_name = {"entity-name.blueprint-deployer"}, enabled = false, always_show_made_in = true, category = "small-crafting", @@ -3876,13 +3877,14 @@ if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then { type = "recipe", name = "nullius-recursive-blueprints-scanner", + localised_name = {"entity-name.recursive-blueprints-scanner"}, enabled = false, always_show_made_in = true, category = "large-crafting", energy_required = 20, ingredients = { {type = "item", name = "radar", amount = 1}, - {type = "item", name = "nullius-small-miner-2", amount = 1}, + {type = "item", name = "nullius-small-miner-2", amount = 1}, {type = "item", name = "nullius-sensor-1", amount = 4} }, results = { From 1471d04e10fe58db67caed6374e4c241e46908cd Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 18:47:26 +0200 Subject: [PATCH 117/236] ch-concentrated-solar - fixed locale --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index cc1a818..a1d3b8a 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -39,6 +39,7 @@ "(?) Inventory Sensor >= 2.0.6", "(?) holographic_signs >= 2.0.8", "(?) rec-blue-plus >= 1.4.8", + "(?) ch-concentrated-solar >= 0.5.1", "! aai-industry", "! angelsbioprocessing", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 1477580..ae43157 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -3900,6 +3900,7 @@ if mods["ch-concentrated-solar"] then { type = "recipe", name = "nullius-heliostat-mirror", + localised_name = {"entity-name.chcs-heliostat-mirror"}, enabled = false, always_show_made_in = true, category = "hand-casting", @@ -3921,7 +3922,7 @@ if mods["ch-concentrated-solar"] then enabled = false, always_show_made_in = true, category = "machine-casting", - subgroup = "boxed-heat-energy", + subgroup = "boxed-heat-energy", energy_required = 50, ingredients = { {type = "item", name = "nullius-box-aluminum-sheet", amount = 8}, @@ -3937,16 +3938,17 @@ if mods["ch-concentrated-solar"] then { type = "recipe", name = "nullius-solar-tower", + localised_name = {"entity-name.chcs-solar-power-tower"}, enabled = false, always_show_made_in = true, category = "huge-crafting", energy_required = 60, ingredients = { - {type = "item", name = "nullius-thermal-tank-2", amount = 3}, + {type = "item", name = "nullius-thermal-tank-2", amount = 3}, {type = "item", name = "nullius-box-heat-pipe-2", amount = 10}, - {type = "item", name = "nullius-box-steel-beam", amount = 24}, - {type = "item", name = "nullius-box-reinforced-concrete", amount = 8}, - {type = "item", name = "nullius-pump-2", amount = 8}, + {type = "item", name = "nullius-box-steel-beam", amount = 24}, + {type = "item", name = "nullius-box-reinforced-concrete", amount = 8}, + {type = "item", name = "nullius-pump-2", amount = 8}, {type = "item", name = "nullius-large-beacon-1", amount = 1} }, results = { @@ -3957,13 +3959,13 @@ if mods["ch-concentrated-solar"] then { type = "technology", name = "nullius-concentrated-solar-energy", - order = "nullius-eo", - icons = {{ - icon = "__ch-concentrated-solar__/graphics/technology/concentrated-solar-energy.png", - icon_size = 256, - icon_mipmaps = 4 - }}, - localised_name = {"technology-name.chcs-concentrated-solar-energy"}, + order = "nullius-eo", + icons = {{ + icon = "__ch-concentrated-solar__/graphics/technology/concentrated-solar-energy.png", + icon_size = 256, + icon_mipmaps = 4 + }}, + localised_name = {"technology-name.chcs-concentrated-solar-energy"}, localised_description = {"technology-description.chcs-concentrated-solar-energy"}, effects = { { @@ -3988,7 +3990,7 @@ if mods["ch-concentrated-solar"] then ingredients = { {"nullius-geology-pack", 1}, {"nullius-climatology-pack", 1}, {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}, - {"nullius-chemical-pack", 1} + {"nullius-chemical-pack", 1} }, time = 35 }, From 441094cc81f9155a2c8eb3b72a9b0b60b7fc4957 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 19:15:06 +0200 Subject: [PATCH 118/236] Mini trains - fixed compatibility --- nullius/info.json | 4 ++- nullius/prototypes/mods.lua | 46 ++++++++++++++--------------- nullius/prototypes/override_mod.lua | 34 ++++++++++----------- 3 files changed, 43 insertions(+), 41 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index a1d3b8a..8b9a845 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -40,6 +40,7 @@ "(?) holographic_signs >= 2.0.8", "(?) rec-blue-plus >= 1.4.8", "(?) ch-concentrated-solar >= 0.5.1", + "(?) Mini_Trains >= 2.0.0", "! aai-industry", "! angelsbioprocessing", @@ -55,6 +56,7 @@ "(?) crafting_combinator >= 0.16.3", "(?) Shuttle_Train_Continued >= 1.1.0", "(?) railloader >= 1.1.6", - "(?) DisplayPlates >= 1.5.1" + "(?) DisplayPlates >= 1.5.1", + "(?) beautiful_bridge_railway >= 1.1.1" ] } diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index ae43157..4c2eaa0 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -4095,10 +4095,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-locomotive-1", - icons = {{ - icon = "__Mini_Trains__/data/icons/cab64.png", + icons = {{ + icon = "__Mini_Trains__/data/icons/cab64.png", icon_size = 64, - tint = { r = 0.65, g = 0.65, b = 0.4 } + tint = { r = 0.65, g = 0.65, b = 0.4 } }}, subgroup = "light-rail", order = "nullius-bb", @@ -4108,10 +4108,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-locomotive-2", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/cab64.png", icon_size = 64, - tint = { r = 1, g = 0.7, b = 0.7 } + tint = { r = 1, g = 0.7, b = 0.7 } }}, subgroup = "light-rail", order = "nullius-bc", @@ -4121,10 +4121,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-locomotive-3", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/cab64.png", icon_size = 64, - tint = { r = 0.8, g = 0.8, b = 1 } + tint = { r = 0.8, g = 0.8, b = 1 } }}, subgroup = "light-rail", order = "nullius-bd", @@ -4134,10 +4134,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-solar-locomotive", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/cab64.png", icon_size = 64, - tint = { r = 0.8, g = 1, b = 0.8 } + tint = { r = 0.8, g = 1, b = 0.8 } }}, subgroup = "light-rail", order = "nullius-be", @@ -4147,10 +4147,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-cargo-wagon-1", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/cargo64.png", icon_size = 64, - tint = { r = 0.65, g = 0.65, b = 0.4 } + tint = { r = 0.65, g = 0.65, b = 0.4 } }}, subgroup = "light-rail", order = "nullius-cb", @@ -4160,10 +4160,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-cargo-wagon-2", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/cargo64.png", icon_size = 64, - tint = { r = 1, g = 0.7, b = 0.7 } + tint = { r = 1, g = 0.7, b = 0.7 } }}, subgroup = "light-rail", order = "nullius-cc", @@ -4173,10 +4173,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-cargo-wagon-3", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/cargo64.png", icon_size = 64, - tint = { r = 0.8, g = 0.8, b = 1 } + tint = { r = 0.8, g = 0.8, b = 1 } }}, subgroup = "light-rail", order = "nullius-cd", @@ -4186,10 +4186,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-fluid-wagon-1", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/fluid64.png", icon_size = 64, - tint = { r = 0.65, g = 0.65, b = 0.4 } + tint = { r = 0.65, g = 0.65, b = 0.4 } }}, subgroup = "light-rail", order = "nullius-db", @@ -4199,10 +4199,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-fluid-wagon-2", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/fluid64.png", icon_size = 64, - tint = { r = 1, g = 0.7, b = 0.7 } + tint = { r = 1, g = 0.7, b = 0.7 } }}, subgroup = "light-rail", order = "nullius-dc", @@ -4212,10 +4212,10 @@ if mods["Mini_Trains"] then { type = "item", name = "nullius-small-fluid-wagon-3", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/fluid64.png", icon_size = 64, - tint = { r = 0.8, g = 0.8, b = 1 } + tint = { r = 0.8, g = 0.8, b = 1 } }}, subgroup = "light-rail", order = "nullius-dd", @@ -4399,10 +4399,10 @@ if mods["Mini_Trains"] then type = "technology", name = "nullius-light-rail", order = "nullius-cn", - icons = {{ + icons = {{ icon = "__Mini_Trains__/data/icons/tech256.png", icon_size = 256 - }}, + }}, effects = { { type = "unlock-recipe", recipe = "nullius-small-locomotive-1" }, { type = "unlock-recipe", recipe = "nullius-small-cargo-wagon-1" } diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index a172f30..62363af 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -2253,14 +2253,15 @@ if mods["Mini_Trains"] then mtl1.icon_size = nil mtl1.minable.result = "nullius-small-locomotive-1" mtl1.resistances = data.raw.locomotive["nullius-locomotive-1"].resistances - mtl1.burner = { - fuel_category = "vehicle", + mtl1.energy_source = { + type = "burner", + fuel_categories = {"vehicle"}, effectivity = 0.9, fuel_inventory_size = 1, burnt_inventory_size = 2, - smoke = data.raw.locomotive["mini-locomotive"].burner.smoke + smoke = data.raw.locomotive["mini-locomotive"].energy_source.smoke } - mtl1.pictures.layers[1].tint = {r = 0.8, g = 0.8, b = 0.6} + mtl1.pictures.rotated.layers[1].tint = {r = 0.8, g = 0.8, b = 0.6} mtl1.color = {r = 0.9, g = 0.85, b = 0} mtl1.weight = 500 mtl1.max_speed = 0.50925925925925926 @@ -2276,9 +2277,9 @@ if mods["Mini_Trains"] then mtl2.localised_description = {"entity-description.nullius-locomotive-2"} mtl2.icons = data.raw.item["nullius-small-locomotive-2"].icons mtl2.minable.result = "nullius-small-locomotive-2" - mtl2.burner.effectivity = 0.95 - mtl2.burner.fuel_inventory_size = 2 - mtl2.pictures.layers[1].tint = {r = 0.9, g = 0.7, b = 0.7} + mtl2.energy_source.effectivity = 0.95 + mtl2.energy_source.fuel_inventory_size = 2 + mtl2.pictures.rotated.layers[1].tint = {r = 0.9, g = 0.7, b = 0.7} mtl2.color = {r = 0.95, g = 0.1, b = 0} mtl2.weight = 800 mtl2.max_speed = 1.0416666666666667 @@ -2294,8 +2295,8 @@ if mods["Mini_Trains"] then mtl3.localised_description = {"entity-description.nullius-locomotive-3"} mtl3.icons = data.raw.item["nullius-small-locomotive-3"].icons mtl3.minable.result = "nullius-small-locomotive-3" - mtl3.burner.effectivity = 1 - mtl3.pictures.layers[1].tint = {r = 0.8, g = 0.8, b = 1} + mtl3.energy_source.effectivity = 1 + mtl3.pictures.rotated.layers[1].tint = {r = 0.8, g = 0.8, b = 1} mtl3.color = {r = 0.2, g = 0.3, b = 0.8} mtl3.weight = 1200 mtl3.max_speed = 1.75925925925926 @@ -2312,8 +2313,7 @@ if mods["Mini_Trains"] then mtls.icons = data.raw.item["nullius-small-solar-locomotive"].icons mtls.minable.result = "nullius-small-solar-locomotive" mtls.energy_source = {type = "void"} - mtls.burner = nil - mtls.pictures.layers[1].tint = {r = 0.8, g = 1, b = 0.8} + mtls.pictures.rotated.layers[1].tint = {r = 0.8, g = 1, b = 0.8} mtls.color = {r = 0.2, g = 0.8, b = 0.3} mtls.max_speed = 1.0416666666666667 mtls.max_power = "280kW" @@ -2329,7 +2329,7 @@ if mods["Mini_Trains"] then mtc1.minable.result = "nullius-small-cargo-wagon-1" mtc1.resistances = data.raw["cargo-wagon"]["nullius-cargo-wagon-1"].resistances mtc1.max_speed = (data.raw["cargo-wagon"]["nullius-cargo-wagon-1"].max_speed * 0.95) - mtc1.pictures.layers[1].tint = {r = 0.8, g = 0.8, b = 0.6} + mtc1.pictures.rotated.layers[1].tint = {r = 0.8, g = 0.8, b = 0.6} mtc1.color = {r = 0.9, g = 0.85, b = 0} mtc1.inventory_size = 12 mtc1.weight = 250 @@ -2344,7 +2344,7 @@ if mods["Mini_Trains"] then mtc2.minable.result = "nullius-small-cargo-wagon-2" mtc2.resistances = data.raw["cargo-wagon"]["nullius-cargo-wagon-2"].resistances mtc2.max_speed = (data.raw["cargo-wagon"]["nullius-cargo-wagon-2"].max_speed * 0.95) - mtc2.pictures.layers[1].tint = {r = 0.9, g = 0.7, b = 0.7} + mtc2.pictures.rotated.layers[1].tint = {r = 0.9, g = 0.7, b = 0.7} mtc2.color = {r = 0.95, g = 0.1, b = 0} mtc2.inventory_size = 25 mtc2.weight = 500 @@ -2359,7 +2359,7 @@ if mods["Mini_Trains"] then mtc3.minable.result = "nullius-small-cargo-wagon-3" mtc3.resistances = data.raw["cargo-wagon"]["nullius-cargo-wagon-3"].resistances mtc3.max_speed = (data.raw["cargo-wagon"]["nullius-cargo-wagon-3"].max_speed * 0.95) - mtc3.pictures.layers[1].tint = {r = 0.8, g = 0.8, b = 1} + mtc3.pictures.rotated.layers[1].tint = {r = 0.8, g = 0.8, b = 1} mtc3.color = {r = 0.2, g = 0.3, b = 0.8} mtc3.inventory_size = 50 mtc3.weight = 750 @@ -2377,7 +2377,7 @@ if mods["Mini_Trains"] then mtf1.minable.result = "nullius-small-fluid-wagon-1" mtf1.resistances = data.raw["fluid-wagon"]["nullius-fluid-wagon-1"].resistances mtf1.max_speed = (data.raw["fluid-wagon"]["nullius-fluid-wagon-1"].max_speed * 0.95) - mtf1.pictures.layers[1].tint = {r = 0.8, g = 0.8, b = 0.6} + mtf1.pictures.rotated.layers[1].tint = {r = 0.8, g = 0.8, b = 0.6} mtf1.color = {r = 0.9, g = 0.85, b = 0} mtf1.capacity = 12000 mtf1.weight = 300 @@ -2392,7 +2392,7 @@ if mods["Mini_Trains"] then mtf2.minable.result = "nullius-small-fluid-wagon-2" mtf2.resistances = data.raw["fluid-wagon"]["nullius-fluid-wagon-2"].resistances mtf2.max_speed = (data.raw["fluid-wagon"]["nullius-fluid-wagon-2"].max_speed * 0.95) - mtf2.pictures.layers[1].tint = {r = 0.9, g = 0.7, b = 0.7} + mtf2.pictures.rotated.layers[1].tint = {r = 0.9, g = 0.7, b = 0.7} mtf2.color = {r = 0.95, g = 0.1, b = 0} mtf2.capacity = 40000 mtf2.weight = 600 @@ -2407,7 +2407,7 @@ if mods["Mini_Trains"] then mtf3.minable.result = "nullius-small-fluid-wagon-3" mtf3.resistances = data.raw["fluid-wagon"]["nullius-fluid-wagon-3"].resistances mtf3.max_speed = (data.raw["fluid-wagon"]["nullius-fluid-wagon-3"].max_speed * 0.95) - mtf3.pictures.layers[1].tint = {r = 0.8, g = 0.8, b = 1} + mtf3.pictures.rotated.layers[1].tint = {r = 0.8, g = 0.8, b = 1} mtf3.color = {r = 0.2, g = 0.3, b = 0.8} mtf3.capacity = 125000 mtf3.weight = 900 From 869e994d251b25be7f93c3b829f8e92cfce044f2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 19:19:07 +0200 Subject: [PATCH 119/236] fcpu - fixed technology and broken locale --- nullius/info.json | 1 + nullius/prototypes/mods.lua | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 8b9a845..dbf7e5f 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -41,6 +41,7 @@ "(?) rec-blue-plus >= 1.4.8", "(?) ch-concentrated-solar >= 0.5.1", "(?) Mini_Trains >= 2.0.0", + "(?) fcpu >= 0.4.33", "! aai-industry", "! angelsbioprocessing", diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 4c2eaa0..541a635 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -4424,6 +4424,7 @@ if mods["fcpu"] then { type = "recipe", name = "nullius-fcpu", + localised_name = {"entity-name.fcpu"}, enabled = false, always_show_made_in = true, category = "tiny-crafting", @@ -4440,15 +4441,15 @@ if mods["fcpu"] then { type = "technology", name = "nullius-fcpu", - localised_name = {"technology-name.fcpu"}, - localised_description = {"technology-description.fcpu"}, + localised_name = {"technology-name.fcpu"}, + localised_description = {"technology-description.fcpu"}, icon_size = 128, icon = "__fcpu__/graphics/technology/fcpu.png", effects = { { type = "unlock-recipe", - recipe = "fcpu" + recipe = "nullius-fcpu" } }, prerequisites = {"nullius-computation", "nullius-electronics-2"}, From 8f3f573eb7c7bb223e4168cc40f0fdea308d09db Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 20:15:32 +0200 Subject: [PATCH 120/236] reskins-bob - fixed compatibility --- nullius/info.json | 6 ++- nullius/prototypes/override_mod_final.lua | 64 ++++++++++------------- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index dbf7e5f..648f6ab 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -42,6 +42,7 @@ "(?) ch-concentrated-solar >= 0.5.1", "(?) Mini_Trains >= 2.0.0", "(?) fcpu >= 0.4.33", + "(?) reskins-bobs >= 2.3.5", "! aai-industry", "! angelsbioprocessing", @@ -58,6 +59,9 @@ "(?) Shuttle_Train_Continued >= 1.1.0", "(?) railloader >= 1.1.6", "(?) DisplayPlates >= 1.5.1", - "(?) beautiful_bridge_railway >= 1.1.1" + "(?) beautiful_bridge_railway >= 1.1.1", + "(?) Induction Charging >= 2.0.0", + "(?) stack-combinator >= 1.6.2", + "(?) GCKI >= 0.16.0" ] } diff --git a/nullius/prototypes/override_mod_final.lua b/nullius/prototypes/override_mod_final.lua index 5e00629..ab56d4e 100644 --- a/nullius/prototypes/override_mod_final.lua +++ b/nullius/prototypes/override_mod_final.lua @@ -1,68 +1,60 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" -if mods["bobplates"] then -data.raw.fluid["liquid-fuel"].subgroup = "unused-fluid" -data.raw.item["liquid-fuel-barrel"].subgroup = "unused-fluid" -data.raw.recipe["fill-liquid-fuel-barrel"].subgroup = "unused-fluid" -data.raw.recipe["empty-liquid-fuel-barrel"].subgroup = "unused-fluid" -end - - if mods["reskins-bobs"] then if settings.startup["reskins-lib-icon-tier-labeling"].value == true then local icon_style = settings.startup["reskins-lib-icon-tier-labeling-style"].value if settings.startup["reskins-bobs-do-inserter-tier-labeling"].value == true then - data.raw.item["turbo-inserter"].icons[4].icon = + data.raw.item["bob-turbo-inserter"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["turbo-inserter"].icons[5].icon = + data.raw.item["bob-turbo-inserter"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["turbo-filter-inserter"].icons[6].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["turbo-filter-inserter"].icons[7].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["express-stack-inserter"].icons[4].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["express-stack-inserter"].icons[5].icon = + -- data.raw.item["turbo-filter-inserter"].icons[6].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" + -- data.raw.item["turbo-filter-inserter"].icons[7].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" + data.raw.item["bob-express-bulk-inserter"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["express-stack-filter-inserter"].icons[6].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["express-stack-filter-inserter"].icons[7].icon = + data.raw.item["bob-express-bulk-inserter"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" + -- data.raw.item["express-stack-filter-inserter"].icons[6].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" + -- data.raw.item["express-stack-filter-inserter"].icons[7].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" if (mods["RenaiTransportation"] and settings.startup["RTThrowersSetting"].value) then - data.raw.item["RTThrower-turbo-inserter-Item"].icons[4].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["RTThrower-turbo-inserter-Item"].icons[5].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["RTThrower-turbo-filter-inserter-Item"].icons[6].icon = + data.raw.item["RTThrower-bob-turbo-inserter-Item"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["RTThrower-turbo-filter-inserter-Item"].icons[7].icon = + data.raw.item["RTThrower-bob-turbo-inserter-Item"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" - data.raw.item["RTThrower-express-stack-inserter-Item"].icons[4].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["RTThrower-express-stack-inserter-Item"].icons[5].icon = - "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["RTThrower-express-stack-filter-inserter-Item"].icons[6].icon = + -- data.raw.item["RTThrower-turbo-filter-inserter-Item"].icons[6].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" + -- data.raw.item["RTThrower-turbo-filter-inserter-Item"].icons[7].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/2.png" + data.raw.item["RTThrower-bob-express-bulk-inserter-Item"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["RTThrower-express-stack-filter-inserter-Item"].icons[7].icon = + data.raw.item["RTThrower-bob-express-bulk-inserter-Item"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" + -- data.raw.item["RTThrower-express-stack-filter-inserter-Item"].icons[6].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" + -- data.raw.item["RTThrower-express-stack-filter-inserter-Item"].icons[7].icon = + -- "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" end end if settings.startup["reskins-bobs-do-belt-entity-tier-labeling"].value == true then - data.raw.item["ultimate-transport-belt"].icons[4].icon = + data.raw.item["bob-ultimate-transport-belt"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["ultimate-transport-belt"].icons[5].icon = + data.raw.item["bob-ultimate-transport-belt"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" data.raw.item["bob-ultimate-underground-belt"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" data.raw.item["bob-ultimate-underground-belt"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["ultimate-splitter"].icons[4].icon = + data.raw.item["bob-ultimate-splitter"].icons[4].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" - data.raw.item["ultimate-splitter"].icons[5].icon = + data.raw.item["bob-ultimate-splitter"].icons[5].icon = "__reskins-library__/graphics/icons/tiers/"..icon_style.."/4.png" end From 5284a963cd970a2d5dc1865f4a8530b809c604c2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 20:27:11 +0200 Subject: [PATCH 121/236] Rebalance inserters: tier 1 can't filter anymore and following tiers can but have a new recipe with sensors/logic circuit --- nullius/prototypes/item/recipe.lua | 18 ++++++++++++------ nullius/prototypes/override.lua | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index 650d4f6..3b72d07 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -159,7 +159,8 @@ data:extend({ {type = "item", name = "inserter", amount = 1}, {type = "item", name = "nullius-motor-1", amount = 1}, {type = "item", name = "nullius-steel-gear", amount = 1}, - {type = "item", name = "nullius-aluminum-rod", amount = 1} + {type = "item", name = "nullius-aluminum-rod", amount = 1}, + {type = "item", name = "decider-combinator", amount = 1} }, results = { {type="item", name="bob-turbo-inserter", amount = 1} @@ -177,7 +178,8 @@ data:extend({ {type = "item", name = "nullius-box-inserter-1", amount = 1}, {type = "item", name = "nullius-box-motor-1", amount = 1}, {type = "item", name = "nullius-box-steel-gear", amount = 1}, - {type = "item", name = "nullius-box-aluminum-rod", amount = 1} + {type = "item", name = "nullius-box-aluminum-rod", amount = 1}, + {type = "item", name = "nullius-box-logic-circuit", amount = 1} }, results = { {type="item", name="nullius-box-inserter-2", amount = 1} @@ -227,7 +229,8 @@ data:extend({ {type = "item", name = "bob-turbo-inserter", amount = 1}, {type = "item", name = "nullius-motor-2", amount = 1}, {type = "item", name = "nullius-bearing", amount = 1}, - {type = "item", name = "nullius-rubber", amount = 2} + {type = "item", name = "nullius-rubber", amount = 2}, + {type = "item", name = "nullius-sensor-1", amount = 1} }, results = { {type="item", name="bulk-inserter", amount = 1} @@ -245,7 +248,8 @@ data:extend({ {type = "item", name = "nullius-box-inserter-2", amount = 1}, {type = "item", name = "nullius-box-motor-2", amount = 1}, {type = "item", name = "nullius-box-bearing", amount = 1}, - {type = "item", name = "nullius-box-rubber", amount = 2} + {type = "item", name = "nullius-box-rubber", amount = 2}, + {type = "item", name = "nullius-box-sensor-1", amount = 1} }, results = { {type="item", name="nullius-box-inserter-3", amount = 1} @@ -295,7 +299,8 @@ data:extend({ {type = "item", name = "bulk-inserter", amount = 2}, {type = "item", name = "nullius-motor-3", amount = 1}, {type = "item", name = "nullius-titanium-rod", amount = 2}, - {type = "item", name = "nullius-carbon-composite", amount = 3} + {type = "item", name = "nullius-carbon-composite", amount = 3}, + {type = "item", name = "nullius-sensor-2", amount = 1} }, results = { {type="item", name="bob-express-bulk-inserter", amount = 1} @@ -313,7 +318,8 @@ data:extend({ {type = "item", name = "nullius-box-inserter-3", amount = 2}, {type = "item", name = "nullius-box-motor-3", amount = 1}, {type = "item", name = "nullius-box-titanium-rod", amount = 2}, - {type = "item", name = "nullius-box-carbon-composite", amount = 3} + {type = "item", name = "nullius-box-carbon-composite", amount = 3}, + {type = "item", name = "nullius-box-sensor-2", amount = 1} }, results = { {type="item", name="nullius-box-inserter-4", amount = 1} diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 6cb5bf1..5e4af86 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -990,4 +990,5 @@ for _, sc in pairs(data.raw.shortcut) do end end -data.raw["cargo-landing-pad"]["cargo-landing-pad"].localised_name = {"item-name.nullius-landing-pad"} \ No newline at end of file +data.raw["cargo-landing-pad"]["cargo-landing-pad"].localised_name = {"item-name.nullius-landing-pad"} +data.raw["inserter"]["inserter"].filter_count = 0 \ No newline at end of file From a7942c3e97ee5fd4e37c7551746056ae81efeff9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 21 Aug 2025 23:26:55 +0200 Subject: [PATCH 122/236] Changed landing pad recipe again Started writing a changelog --- nullius/TODO_list.txt | 46 +++++++++++++++++++++++++++ nullius/prototypes/item/buildings.lua | 10 ++++-- nullius/prototypes/mods.lua | 2 +- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 8b13789..03b1823 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -1 +1,47 @@ +--------------------------------------------------------------------------------------------------- +Version: 2.0.0 +Date: 2025 + Features: + - + Changes: + - + Balancing: + - + Bugfixes: + - + Graphics: + - + Info: + - + Modding: + - +--------------------------------------------------------------------------------------------------- +Changelog: +Updated to 2.0 +Added landing pad: Now the results of rocket launches will be collected there +Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted +Same thing with aai loaders + +Re-introduced red and green wires so there is a seamless transition to 2.0 +Removed the dependency on angels, now only depends on the graphics +Now uses the Valve prototype for valves +Added essential techs +Added display panels and selector combinator +Tweaked description texts of landing entities to make them less ambiguous +Added a trigger tech "Salvage lab wreckage" +Added icons for drones ammo categories +Renamed the extension tech to inserter extension +Added description to inserters +Added command to flip all valves +Reworked voiding recipes icons to make them standout more in factoriopedia +Added setting to hide the voiding recipe icon from chimneys and outfalls +Removed mentions of the old pressure system +Increased the pumping speeds of pumps (and max flow rate) +Removed regular artillery shortcut and discharge defense shortcut +Changed required techs for most shortcuts +Added wire connexions to assemblers, boxer and nanofab +Allowed medium assembler 1 to craft disabled recipes (to prevent a bug when a broken item is being fixed in early game) + +----------- +Safefill: added setting to enable mining of waterfill \ No newline at end of file diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index c92a652..ad00ff6 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -3601,13 +3601,17 @@ data:extend({ {type="item", name="nullius-beacon-3", amount=4}, {type="item", name="nullius-box-wall", amount=10}, {type="item", name="nullius-box-steel-beam", amount=10}, - {type="item", name="nullius-armor-plate", amount=50}, + {type="item", name="nullius-box-plastic", amount=25}, + {type="item", name="nullius-box-rubber", amount=25}, + {type="item", name="nullius-box-textile", amount=25}, {type="item", name="nullius-box-heat-pipe-3", amount=4}, {type="item", name="nullius-box-hazard-concrete", amount=30}, - --{type="item", name="nullius-box-productivity-module-2", amount=1}, {type="item", name="nullius-large-supply-chest-2", amount=8}, {type="item", name="nullius-box-sensor-2", amount=4}, - {type="item", name="nullius-multi-tool-2", amount=15}, + {type="item", name="nullius-box-logistic-bot-3", amount=5}, + --{type="item", name="nullius-box-productivity-module-2", amount=1}, + --{type="item", name="nullius-multi-tool-2", amount=15}, + --{type="item", name="nullius-armor-plate", amount=50}, --unlocked too late }, results = { {type = "item", name = "nullius-landing-pad", amount = 1} diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index 541a635..3966cab 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -660,7 +660,7 @@ data:extend({ {type="item", name="aai-basic-loader", amount=1}, {type="item", name="underground-belt", amount=1}, {type="item", name="inserter", amount=4}, - {type="fluid", name="nullius-lubricant", amount=30}, + {type="fluid", name="nullius-lubricant", amount=30}, }, results = { {type = "item", name = "aai-loader", amount = 1} From 2d06da079388b16bac5c46b542f5c3cc52d7b1ad Mon Sep 17 00:00:00 2001 From: Chris Rodrigues <1834111+cirodrig@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:13:58 -0700 Subject: [PATCH 123/236] Optional support for elevated rails --- nullius/info.json | 1 + nullius/locale/en/entity.cfg | 1 + nullius/locale/en/tech.cfg | 2 + nullius/prototypes/mods.lua | 72 +++++++++++++++++++++++++++++ nullius/prototypes/override_mod.lua | 18 ++++++++ 5 files changed, 94 insertions(+) diff --git a/nullius/info.json b/nullius/info.json index 272162d..5e0fd81 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -16,6 +16,7 @@ "boblogistics >= 2.0.2", "? RecipeBook >= 2.7.1", "? underground-pipe-pack >= 1.1.2", + "? elevated-rails >= 2.0", "(?) cargo-ships >= 0.2.2", "(?) boblibrary >= 1.1.4", "(?) IRobot >= 1.1.0", diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index 1803e8e..2db96b3 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -339,6 +339,7 @@ nullius-offshore-electric=__ENTITY__oil_rig__ electric generator nullius-offshore-radar=__ENTITY__oil_rig__ radar nullius-align-conscription-turret=Conscription turret nullius-align-concordance-transmitter=Concordance transmitter +nullius-rail-pylon=Rail pylon [entity-description] nullius-kilojoule=__1__ kJ diff --git a/nullius/locale/en/tech.cfg b/nullius/locale/en/tech.cfg index cb8c7c3..1cae020 100644 --- a/nullius/locale/en/tech.cfg +++ b/nullius/locale/en/tech.cfg @@ -164,6 +164,7 @@ nullius-insulation=Insulation nullius-fueling=Fueling nullius-deep-sea-extraction=Deep sea extraction nullius-rail-bridges=Rail bridges +nullius-elevated-rails=Elevated rails nullius-fluid-recapture=Fluid recapture nullius-alignment=Alignment nullius-evolution=Evolution @@ -338,6 +339,7 @@ nullius-complete-checkpoint=__1__ completed! nullius-display-plates=Representative imagery for concise labeling. nullius-insulation=Materials with low electrical or thermal conductivity. nullius-rail-bridges=Build rail bridges across bodies of water. +nullius-elevated-rails=Route rails over obstacles. nullius-fluid-recapture=Recycle working fluid used for energy generation. nullius-alignment=Protocols for heterogeneous android factions to synchronize and cooperate toward shared mission objectives. nullius-evolution=Artificial selection of organisms to thrive under local environmental conditions. diff --git a/nullius/prototypes/mods.lua b/nullius/prototypes/mods.lua index aca6fe4..00f90ab 100644 --- a/nullius/prototypes/mods.lua +++ b/nullius/prototypes/mods.lua @@ -1,6 +1,78 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" +if mods["elevated-rails"] then +data:extend({ + { + type = "technology", + name = "nullius-elevated-rails", + order = "nullius-em", + icon = "__elevated-rails__/graphics/technology/elevated-rail.png", + icon_size = 256, + effects = + { + { + type = "unlock-recipe", + recipe = "nullius-rail-support" + }, + { + type = "unlock-recipe", + recipe = "nullius-rail-ramp" + }, + { + type = "rail-planner-allow-elevated-rails", + modifier = true + }, + }, + prerequisites = {"nullius-architecture-1"}, + unit = { + count = 560, + ingredients = { + {"nullius-geology-pack", 1}, + {"nullius-climatology-pack", 1}, + {"nullius-mechanical-pack", 2}, + {"nullius-chemical-pack", 1} + }, + time = 35 + } + }, + { + type = "recipe", + name = "nullius-rail-support", + localised_name = {"entity-name.nullius-rail-pylon"}, + enabled = false, + category = "large-crafting", + always_show_made_in = true, + show_amount_in_title = false, + always_show_products = true, + energy_required = 8, + ingredients = { + {type = "item", name = "stone-wall", amount = 6}, + {type = "item", name = "nullius-pylon-2", amount = 1} + }, + results = {{type="item", name="rail-support", amount = 1}} + }, + { + type = "recipe", + name = "nullius-rail-ramp", + localised_name = {"entity-name.rail-ramp"}, + enabled = false, + category = "large-crafting", + always_show_made_in = true, + show_amount_in_title = false, + always_show_products = true, + energy_required = 20, + ingredients = { + {type = "item", name = "stone-wall", amount = 8}, + {type = "item", name = "nullius-steel-beam", amount = 10}, + {type = "item", name = "rail-support", amount = 1}, + {type = "item", name = "rail", amount = 8} + }, + results = {{type="item", name="rail-ramp", amount = 1}} + } +}) +end + if mods["LogisticTrainNetwork"] then data:extend({ { diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 378fa53..4ae9eea 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -2,6 +2,24 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" +if mods["elevated-rails"] then + data.raw["item"]["rail-support"].subgroup = "railway" + data.raw["item"]["rail-support"].order = "nullius-dm" + data.raw["item"]["rail-support"].localised_name = {"entity-name.nullius-rail-pylon"} + data.raw["rail-support"]["rail-support"].subgroup = "railway" + data.raw["rail-support"]["rail-support"].order = "nullius-dm" + data.raw["rail-support"]["rail-support"].localised_name = {"entity-name.nullius-rail-pylon"} + data.raw["rail-planner"]["rail-ramp"].subgroup = "railway" + data.raw["rail-planner"]["rail-ramp"].order = "nullius-dn" + data.raw["rail-ramp"]["rail-ramp"].subgroup = "railway" + data.raw["rail-ramp"]["rail-ramp"].order = "nullius-dn" +table.insert( + data.raw.technology["nullius-freight-transportation-2"].prerequisites, + "nullius-elevated-rails" +) +end + + if mods["LogisticTrainNetwork"] then data.raw["train-stop"]["logistic-train-stop"].subgroup = "railway" data.raw["train-stop"]["logistic-train-stop"].order = "nullius-ecb" From 5572f545057f66f33502ffff8d22f8a8d1aeffe8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 22 Aug 2025 16:44:42 +0200 Subject: [PATCH 124/236] Added proper migration for valves --- nullius/data.lua | 1 + nullius/legacyValves.lua | 59 +++++++++++++++++++++++++++ nullius/migrations/nullius_2.0.0.json | 6 ++- nullius/migrations/nullius_2.0.0.lua | 32 +++++++++++++++ 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 nullius/legacyValves.lua create mode 100644 nullius/migrations/nullius_2.0.0.lua diff --git a/nullius/data.lua b/nullius/data.lua index fc563a1..ec4bffa 100644 --- a/nullius/data.lua +++ b/nullius/data.lua @@ -1,4 +1,5 @@ require("legacyAngels") +require("legacyValves") require("prototypes.reskin") require("prototypes.category") diff --git a/nullius/legacyValves.lua b/nullius/legacyValves.lua new file mode 100644 index 0000000..88425f1 --- /dev/null +++ b/nullius/legacyValves.lua @@ -0,0 +1,59 @@ + +------- About Valve's migrations : +-- In 1.1 Valves where implemented as storage tanks, in 2.0 a Valve prototype exists in the game engine +-- Simply replacing the old storage tank prototype with the valve prototype (keeping the same name) doesn't work: +-- The old storage tank's orientation is not kept when transforming the entities to valves : the south converts to north and the west converts to east (and just those two) (it feels like a bug from the game engine in my opinion) +-- Since I want to keep the nullius valves names for the actual valves, I decided to create those dummy storage tanks with name "legacy", and I added the json migrations to turn 1.1 valve storage tanks into 2.0 storage tanks (that way they keep the orientation) +-- Then we have a migration script (migrations/nullius_2.0.0.lua) that finds all "legacy" storage tanks, saves their orientation, destroy them and spawn actual valves in their place, with the correct orientation +-- This is the way to keep valves correctly oriented when migrating +-- Except that there is another way which is probably also a bug (an incomprehensible one) : +-- We can just not do any of that: no migration json, no migration script, no dummy storage tanks +-- Instead, if we declare one dummy storage tank (all optional fields empty) and with any dummy name (not even "valve" in it) +-- And one "item-with-tags" that has a place_result set to that dummy tank, and its group set to logistics (any other group will not work ???) +-- Then the valves orientation will be kept by the game engine when turning storage tanks into valves +-- Example: +-- data:extend{{ +-- type = "storage-tank", +-- name = "anythingReally", +-- icon = "__base__/graphics/icons/car.png", +-- window_bounding_box = {{0, 0}, {0, 0}}, +-- fluid_box = { +-- volume = 1, +-- pipe_covers = pipecoverspictures(), +-- pipe_connections = {}, +-- }, +-- flow_length_in_ticks = 1, +-- hidden_in_factoriopedia = true +-- }, +-- { +-- type = "item-with-tags", +-- name = "testThing", +-- icon = "__base__/graphics/icons/car.png", +-- subgroup = "splitter", -- splitter is into the logistics group, it would not work if we tried an other group +-- place_result = "anythingReally", +-- stack_size = 1, +-- hidden_in_factoriopedia = true, +-- }} + +local legacyValves = { + "nullius-legacy-priority-valve", + "nullius-legacy-one-way-valve", + "nullius-legacy-top-up-valve", + "nullius-legacy-relief-valve" +} +for _, name in pairs(legacyValves) do + data:extend{{ + type = "storage-tank", -- dummy entity + name = name, + icon = "__base__/graphics/icons/car.png", + window_bounding_box = {{0, 0}, {0, 0}}, + fluid_box = { + volume = 1, + pipe_covers = pipecoverspictures(), + pipe_connections = {}, + }, + flow_length_in_ticks = 1, + hidden_in_factoriopedia = true + }, + } +end \ No newline at end of file diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 77a1fd1..604b285 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -30,7 +30,11 @@ ["angels-tile-clay-brick", "nullius-tile-clay-brick"] ], "entity": [ - ["angels-crystal-rock", "nullius-crystal-rock"] + ["angels-crystal-rock", "nullius-crystal-rock"], + ["nullius-priority-valve","nullius-legacy-priority-valve"], + ["nullius-one-way-valve","nullius-legacy-one-way-valve"], + ["nullius-top-up-valve","nullius-legacy-top-up-valve"], + ["nullius-relief-valve","nullius-legacy-relief-valve"] ], "technology": [ ["nullius-SNTD-nixie-tubes-basic", "nullius-reinforced-nixie-tubes-basic"], diff --git a/nullius/migrations/nullius_2.0.0.lua b/nullius/migrations/nullius_2.0.0.lua new file mode 100644 index 0000000..9425392 --- /dev/null +++ b/nullius/migrations/nullius_2.0.0.lua @@ -0,0 +1,32 @@ +-- stolen from boblogistics +local replace_behaviour = { + "priority-valve", + "one-way-valve", + "top-up-valve", + "relief-valve" +} + +for _, surface in pairs(game.surfaces) do + for _, entity_name in pairs(replace_behaviour) do + local originalName = "nullius-legacy-"..entity_name + if prototypes.entity["nullius-"..entity_name] then + for _, entity in pairs(surface.find_entities_filtered({ name = originalName })) do + log("entity:"..entity.type) + log(entity.position) + log(entity.direction) + local position = entity.position + local direction = entity.direction + local force = entity.force + entity.destroy({ raise_destroy = true }) + + local valve = surface.create_entity({ + name = "nullius-"..entity_name, + position = position, + force = force, + direction = direction, + raise_built = true, + }) + end + end + end +end \ No newline at end of file From a29c22010a80cc7057d0c98bd2a748dc3c28e97f Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 22 Aug 2025 17:42:24 +0200 Subject: [PATCH 125/236] Added missing migrations for red and green wires --- nullius/migrations/nullius_2.0.0.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 604b285..c25e009 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -24,7 +24,9 @@ "item": [ ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], ["nullius-box-filter-inserter-3", "nullius-box-inserter-3"], - ["nullius-box-filter-inserter-4", "nullius-box-inserter-4"] + ["nullius-box-filter-inserter-4", "nullius-box-inserter-4"], + ["red-wire", "nullius-red-wire"], + ["green-wire", "nullius-green-wire"] ], "tile":[ ["angels-tile-clay-brick", "nullius-tile-clay-brick"] From 003a407c2c74f4344e1e20833132e0210693b1eb Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 22 Aug 2025 20:39:12 +0200 Subject: [PATCH 126/236] Fixed a crash when placing ghosts in equipment grids --- nullius/scripts/equipment.lua | 68 ++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/nullius/scripts/equipment.lua b/nullius/scripts/equipment.lua index 3c8642f..12dabcd 100644 --- a/nullius/scripts/equipment.lua +++ b/nullius/scripts/equipment.lua @@ -142,40 +142,42 @@ function update_player_upgrades(player) local armor = armorinv[i] if (armor.valid_for_read and (armor.grid ~= nil)) then for _,equip in pairs(armor.grid.equipment) do - local name = equip.name - if (string.sub(name, 1, 8) == "nullius-") then - local midfix = string.sub(name, 9, 16) - if (midfix == "upgrade-") then - local suffix = string.sub(name, 17, -1) - local upgrade = upgrade_data[suffix] - if (upgrade ~= nil) then - for _,bonus in pairs(upgrade) do - local ind = bonus[1] - bonuses[ind] = bonuses[ind] + bonus[2] - if (ind == UPG_COST) then - costnum = costnum + 1 - if (costlist == nil) then costlist = { } end - costlist[costnum] = equip - end - end - end - elseif (midfix == "refueler") then - refueler = true - end - end - - drain = drain + equip.prototype.energy_source.drain - if (equip.prototype.energy_production > 0) then - production = production + equip.prototype.energy_production - if (equip.burner ~= nil) then - local burninv = equip.burner.inventory - if ((burninv ~= nil) and burninv.valid) then - generatornum = generatornum + 1 - if (generators == nil) then generators = { } end - generators[generatornum] = equip - end + if equip.type ~= "equipment-ghost" then + local name = equip.name + if (string.sub(name, 1, 8) == "nullius-") then + local midfix = string.sub(name, 9, 16) + if (midfix == "upgrade-") then + local suffix = string.sub(name, 17, -1) + local upgrade = upgrade_data[suffix] + if (upgrade ~= nil) then + for _,bonus in pairs(upgrade) do + local ind = bonus[1] + bonuses[ind] = bonuses[ind] + bonus[2] + if (ind == UPG_COST) then + costnum = costnum + 1 + if (costlist == nil) then costlist = { } end + costlist[costnum] = equip + end + end + end + elseif (midfix == "refueler") then + refueler = true + end + end + + drain = drain + equip.prototype.energy_source.drain + if (equip.prototype.energy_production > 0) then + production = production + equip.prototype.energy_production + if (equip.burner ~= nil) then + local burninv = equip.burner.inventory + if ((burninv ~= nil) and burninv.valid) then + generatornum = generatornum + 1 + if (generators == nil) then generators = { } end + generators[generatornum] = equip + end + end + end end - end end end end From ffb2bab9f751e10a833b77edce6b84df4ec1ece0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 12:37:34 +0200 Subject: [PATCH 127/236] Added apropriate collision masks for tall entities, reworked the chimney's graphics so that it renders above elevated rails --- .../entity/chimney/flare-stack-chimney.png | Bin 0 -> 146444 bytes nullius/prototypes/entity/drone.lua | 2 + nullius/prototypes/entity/energy.lua | 3 +- nullius/prototypes/entity/plumbing.lua | 4 + nullius/prototypes/entity/robot.lua | 16 ++-- nullius/prototypes/entity/vent.lua | 76 ++++++++++++++++-- nullius/prototypes/entity/wind.lua | 4 +- nullius/scripts/startup.lua | 4 +- 8 files changed, 93 insertions(+), 16 deletions(-) create mode 100644 nullius/graphics/entity/chimney/flare-stack-chimney.png diff --git a/nullius/graphics/entity/chimney/flare-stack-chimney.png b/nullius/graphics/entity/chimney/flare-stack-chimney.png new file mode 100644 index 0000000000000000000000000000000000000000..d8339aff1efbddd357d2d186b4096b07900a67f1 GIT binary patch literal 146444 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 literal 0 HcmV?d00001 diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index 6260916..1ef6a4d 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -9,6 +9,7 @@ data:extend({ name = "nullius-drone-launcher-1", icons = data.raw.item["nullius-drone-launcher-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), inventory_size = 3, ammo_stack_limit = 10, automated_ammo_count = 10, @@ -85,6 +86,7 @@ data:extend({ name = "nullius-drone-launcher-2", icons = data.raw.item["nullius-drone-launcher-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), inventory_size = 5, ammo_stack_limit = 10, automated_ammo_count = 10, diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 150d702..a9f85a6 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -3433,6 +3433,7 @@ data:extend({ icon_size = 64, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 4, result = "nullius-reactor"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 500, corpse = "nuclear-reactor-remnants", dying_explosion = "nuclear-reactor-explosion", @@ -3445,7 +3446,7 @@ data:extend({ heat_lower_layer_picture = data.raw.reactor["nuclear-reactor"].heat_lower_layer_picture, picture = data.raw.reactor["nuclear-reactor"].picture, light = {intensity = 0.8, size = 9.9, shift = {0.0, 0.0}}, - use_fuel_glow_color = true, + use_fuel_glow_color = true, working_light_picture = { filename = ENTITYPATH.."reactor/reactor-lights.png", blend_mode = "additive", diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 230cf22..5d3198e 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -4,6 +4,7 @@ local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" require("pipe_graphics") +collision_mask_util = require("collision-mask-util") local op = data.raw["offshore-pump"]["offshore-pump"] local si1 = { @@ -2027,6 +2028,7 @@ data:extend({ icons = data.raw.item["nullius-large-tank-1"].icons, flags = {"placeable-player", "player-creation", "not-rotatable"}, minable = {hardness = 2, mining_time = 3, result = "nullius-large-tank-1"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), -- generic tall building max_health = 1000, corpse = "medium-remnants", collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, @@ -2122,6 +2124,7 @@ data:extend({ icons = data.raw.item["nullius-large-tank-2"].icons, flags = {"placeable-player", "player-creation", "not-rotatable"}, minable = {hardness = 2.5, mining_time = 3, result = "nullius-large-tank-2"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 1200, corpse = "medium-remnants", collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, @@ -2155,6 +2158,7 @@ data:extend({ icons = data.raw.item["nullius-large-tank-3"].icons, flags = {"placeable-player", "player-creation", "not-rotatable"}, minable = {hardness = 3, mining_time = 3, result = "nullius-large-tank-3"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 1500, corpse = "medium-remnants", collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index efe64fe..7f8b6e7 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -355,6 +355,7 @@ data:extend({ icons = data.raw.item["nullius-hangar-1"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-hangar-1"}, + collision_mask = {layers={item=true, meltable=true, object=true, player=true, water_tile=true, is_object=true, is_lower_object=true}}, fast_replaceable_group = "nullius-hangar", next_upgrade = "nullius-hangar-2", max_health = 400, @@ -468,12 +469,13 @@ data:extend({ type = "roboport", name = "nullius-hangar-2", localised_name = {"equipment-name.nullius-hangar-2"}, - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", tostring(50)}}, + {"entity-description.nullius-megajoule", tostring(50)}}, icons = data.raw.item["nullius-hangar-2"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-hangar-2"}, + collision_mask = {layers={item=true, meltable=true, object=true, player=true, water_tile=true, is_object=true, is_lower_object=true}}, fast_replaceable_group = "nullius-hangar", next_upgrade = "nullius-hangar-3", max_health = 500, @@ -587,12 +589,13 @@ data:extend({ type = "roboport", name = "nullius-hangar-3", localised_name = {"equipment-name.nullius-hangar-3"}, - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, - {"entity-description.nullius-megajoule", tostring(150)}}, + {"entity-description.nullius-megajoule", tostring(150)}}, icons = data.raw.item["nullius-hangar-3"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-hangar-3"}, + collision_mask = {layers={item=true, meltable=true, object=true, player=true, water_tile=true, is_object=true, is_lower_object=true}}, fast_replaceable_group = "nullius-hangar", max_health = 600, corpse = "roboport-remnants", @@ -705,12 +708,13 @@ data:extend({ type = "roboport", name = "nullius-hangar-4", localised_name = {"equipment-name.nullius-hangar-4"}, - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-hangar"}, {"entity-description.nullius-megajoule", tostring(150)}}, icons = data.raw.item["nullius-hangar-4"].icons, flags = {"placeable-player", "player-creation"}, minable = {mining_time = 1.5, result = "nullius-hangar-4"}, + collision_mask = {layers={item=true, meltable=true, object=true, player=true, water_tile=true, is_object=true, is_lower_object=true}}, fast_replaceable_group = "nullius-charger", max_health = 600, corpse = "roboport-remnants", @@ -823,7 +827,7 @@ data:extend({ type = "roboport", name = "nullius-relay-1", localised_name = {"equipment-name.nullius-relay-1"}, - localised_description = {"equipment-description.nullius-buffer", + localised_description = {"equipment-description.nullius-buffer", {"equipment-description.nullius-relay"}, {"entity-description.nullius-megajoule", tostring(6)}}, icons = data.raw.item["nullius-relay-1"].icons, diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index f89d547..ba3684d 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -7,6 +7,7 @@ data:extend({ icons = data.raw.item["nullius-chimney-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.6, result = "nullius-chimney-1"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 100, fast_replaceable_group = "nullius-chimney", next_upgrade = "nullius-chimney-2", @@ -138,7 +139,7 @@ data:extend({ { apply_recipe_tint = "primary", constant_speed = true, - render_layer = "wires", + render_layer = "wires-above", north_position = {-0.09, -5.45}, east_position = {-0.29, -5.59}, south_position = {-0.1, -5.8}, @@ -163,9 +164,10 @@ data:extend({ { type = "furnace", name = "nullius-chimney-2", - icons = data.raw.item["nullius-chimney-2"].icons, + icons = data.raw.item["nullius-chimney-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.9, result = "nullius-chimney-2"}, + collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 200, fast_replaceable_group = "nullius-chimney", corpse = "small-remnants", @@ -294,7 +296,7 @@ data:extend({ { apply_recipe_tint = "primary", constant_speed = true, - render_layer = "wires", + render_layer = "wires-above", north_position = {-0.22, -6.82}, east_position = {-0.22, -6.95}, south_position = {-0.03, -6.95}, @@ -307,6 +309,65 @@ data:extend({ height = 188, scale = 0.8 } + }, + { + render_layer = "elevated-higher-object", + always_draw = true, + north_animation = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-chimney.png", + priority = "extra-high", + frame_count = 1, + width = 142, + height = 429, + shift = util.by_pixel(0, -65), + scale = 0.5, + } + }, + }, + east_animation = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-chimney.png", + priority = "extra-high", + width = 142, + height = 429, + x = 142, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + } + }, + }, + south_animation = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-chimney.png", + priority = "extra-high", + width = 142, + height = 429, + x = 284, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + } + }, + }, + west_animation = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-chimney.png", + priority = "extra-high", + width = 142, + height = 429, + x = 426, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + } + }, + } } } }, @@ -382,6 +443,11 @@ nc3.graphics_set.working_visualisations[1] = scale_image(nc3.graphics_set.workin nc3.graphics_set.working_visualisations[1].north_position = nc3.graphics_set.working_visualisations[1].south_position nc3.graphics_set.working_visualisations[1].east_position = nc3.graphics_set.working_visualisations[1].south_position nc3.graphics_set.working_visualisations[1].west_position = nc3.graphics_set.working_visualisations[1].south_position +nc3.graphics_set.working_visualisations[2] = { + animation = scale_image(nc3.graphics_set.working_visualisations[2].south_animation, 1.5), + render_layer = "elevated-higher-object", + always_draw = true +} data:extend({ nmc1, @@ -477,13 +543,13 @@ data:extend({ { type = "furnace", name = "nullius-outfall-2", - icons = data.raw.item["nullius-outfall-2"].icons, + icons = data.raw.item["nullius-outfall-2"].icons, collision_mask = {layers = {object = true, ground_tile = true}}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-outfall-2"}, max_health = 300, fast_replaceable_group = "nullius-outfall", - next_upgrade = "nullius-outfall-3", + next_upgrade = "nullius-outfall-3", corpse = "small-remnants", collision_box = {{-1.4, -2.45}, {1.4, 0.3}}, selection_box = {{-1.6, -2.49}, {1.6, 0.49}}, diff --git a/nullius/prototypes/entity/wind.lua b/nullius/prototypes/entity/wind.lua index 04a097a..9cd938a 100644 --- a/nullius/prototypes/entity/wind.lua +++ b/nullius/prototypes/entity/wind.lua @@ -63,7 +63,7 @@ for i=1,3 do }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.4, -1.4}, {1.4, 1.4}}, - collision_mask = { layers = {layer_43 = true, item = true, object = true, player = true, water_tile = true}}, + collision_mask = { layers = {layer_43 = true, item = true, object = true, player = true, water_tile = true, elevated_rail = true}}, energy_source = { type = "electric", usage_priority = "primary-output", @@ -124,7 +124,7 @@ for i=1,3 do }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.4, -1.4}, {1.4, 1.4}}, - collision_mask = { layers = {layer_43 = true, item = true, object = true, player = true, water_tile = true}}, + collision_mask = { layers = {layer_43 = true, item = true, object = true, player = true, water_tile = true, elevated_rail = true}}, energy_source = { type = "electric", usage_priority = "primary-output", diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index a587182..cb47f6d 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -121,14 +121,14 @@ script.on_init( function() init_wind() init_geothermal() - reset_config() + reset_config() if (remote.interfaces["freeplay"] ~= nil) then remote.call("freeplay", "set_skip_intro", true) remote.call("freeplay", "set_disable_crashsite", true) remote.call("freeplay", "set_chart_distance", 250) end init_mission_global() - on_load_mod_interface() + on_load_mod_interface() end ) From 37f648c3141f8dd52a7be168f36f6add2991a392 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 16:40:05 +0200 Subject: [PATCH 128/236] Fixed bug in alignment tech code --- nullius/scripts/alignment.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/scripts/alignment.lua b/nullius/scripts/alignment.lua index 37a7405..770b0d3 100644 --- a/nullius/scripts/alignment.lua +++ b/nullius/scripts/alignment.lua @@ -309,7 +309,7 @@ local function get_tech_progress(force, tech) (tech.name == force.current_research.name)) then progress = force.research_progress else - progress = force.get_saved_technology_progress(tech.name) + progress = force.technologies[tech.name].saved_progress end if ((progress ~= nil) and (progress > 0)) then return progress end return 0 @@ -333,7 +333,7 @@ local function merge_faction_techs(oldforce, newforce, surface, pos) if (tech.name == newforce.current_research.name) then newforce.research_progress = progress else - newforce.set_saved_technology_progress(tech.name, progress) + newforce.technologies[tech.name].saved_progress = progress end else if (not newtech.researched) then newtech.researched = true end From 5558da1da28aab54c2eafbba0c11864850f90387 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 17:40:12 +0200 Subject: [PATCH 129/236] Allow mirroring on the remaining entities --- nullius/prototypes/entity/assembler.lua | 2 ++ nullius/prototypes/entity/furnace.lua | 4 +++- nullius/prototypes/entity/vent.lua | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index c47dbab..9183573 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -692,6 +692,7 @@ data:extend({ fast_replaceable_group = "nanofabricator", next_upgrade = "nullius-nanofabricator-2", crafting_speed = 1, + forced_symmetry = "horizontal", energy_source = { type = "electric", usage_priority = "secondary-input", @@ -803,6 +804,7 @@ data:extend({ crafting_categories = {"nanotechnology"}, fast_replaceable_group = "nanofabricator", crafting_speed = 2, + forced_symmetry = "horizontal", energy_source = { type = "electric", usage_priority = "secondary-input", diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 42f4d44..693721e 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -1279,7 +1279,7 @@ data:extend({ pipe_connections = {{ flow_direction ="output", position = {1.5, 0.5}, direction = defines.direction.east }} } }, - forced_symmetry = "horizontal", -- TODO: decide what value + forced_symmetry = "horizontal", graphics_set = { animation = scale_image({ layers = { @@ -1445,6 +1445,7 @@ data:extend({ selection_box = {{-2, -2}, {2, 2}}, crafting_categories = {"ore-flotation"}, crafting_speed = 2, + forced_symmetry = "horizontal", energy_source = { type = "electric", usage_priority = "secondary-input", @@ -1653,6 +1654,7 @@ data:extend({ selection_box = {{-2, -2}, {2, 2}}, crafting_categories = {"ore-flotation"}, crafting_speed = 4, + forced_symmetry = "horizontal", energy_source = { type = "electric", usage_priority = "secondary-input", diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index f89d547..9d22d69 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -17,6 +17,7 @@ data:extend({ result_inventory_size = 1, crafting_speed = 1, source_inventory_size = 0, + forced_symmetry = "horizontal", resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } @@ -163,7 +164,7 @@ data:extend({ { type = "furnace", name = "nullius-chimney-2", - icons = data.raw.item["nullius-chimney-2"].icons, + icons = data.raw.item["nullius-chimney-2"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, minable = {mining_time = 0.9, result = "nullius-chimney-2"}, max_health = 200, @@ -175,6 +176,7 @@ data:extend({ result_inventory_size = 1, crafting_speed = 5, source_inventory_size = 0, + forced_symmetry = "horizontal", resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } From 7cb90043f5a85016da7f697f49b34b0123374dac Mon Sep 17 00:00:00 2001 From: S3BA-pl <96552937+S3BA-pl@users.noreply.github.com> Date: Sat, 23 Aug 2025 18:30:24 +0200 Subject: [PATCH 130/236] Add files via upload --- train-upgrader/locale/pl/train-upgrader.cfg | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 train-upgrader/locale/pl/train-upgrader.cfg diff --git a/train-upgrader/locale/pl/train-upgrader.cfg b/train-upgrader/locale/pl/train-upgrader.cfg new file mode 100644 index 0000000..86b26d4 --- /dev/null +++ b/train-upgrader/locale/pl/train-upgrader.cfg @@ -0,0 +1,16 @@ +[mod-description] +train-upgrader=Łatwa automatyzacja wymiany dużej liczby aktywnych lokomotyw i wagonów w systemie kolejowym. Przydatne w połączeniu z modyfikacjami, które dodają wiele poziomów lokomotyw lub wagonów. + +[entity-name] +tu-supplier=Dostawca modernizacji pociągów +tu-receiver=Odbiorca modernizacji pociągów + +[entity-description] +tu-supplier=Umieść obok przystanku kolejowego, wraz z odbiorcą. Umieść nowe lokomotywy, wagony lub paliwo w tej skrzyni. Zautomatyzowane pociągi w sieci kolejowej, które nie korzystają jeszcze z tego poziomu taboru, będą podróżować do tej stacji, aby zastąpić przestarzały tabor typem znajdującym się w tej skrzyni. Pociągi korzystające z innego rodzaju paliwa będą je wymieniać. +tu-receiver=Umieść obok przystanku kolejowego, wraz z dostawcą. Wszystko, co zostanie wymienione przez dostawcę, trafi do tej skrzyni. Możesz filtrować miejsca w skrzyni, aby dopasować je tylko do określonych lokomotyw lub wagonów, jeśli nie chcesz, aby wszystkie typy zostały wymienione. + +[technology-name] +tu-rail-modernization=Modernizacja kolei + +[technology-description] +tu-rail-modernization=Automatyczna wymiana starszych modeli taboru kolejowego. From 060a980a8d85707bfa37deec8147c9b6c7825853 Mon Sep 17 00:00:00 2001 From: S3BA-pl <96552937+S3BA-pl@users.noreply.github.com> Date: Sat, 23 Aug 2025 18:31:17 +0200 Subject: [PATCH 131/236] Add files via upload --- safefill/locale/pl/safefill.cfg | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/safefill/locale/pl/safefill.cfg b/safefill/locale/pl/safefill.cfg index 088232a..6e3c84c 100644 --- a/safefill/locale/pl/safefill.cfg +++ b/safefill/locale/pl/safefill.cfg @@ -6,29 +6,31 @@ safefill-green-water=Brudna woda safefill-cost=Koszt schematu safefill-depth=Wybór głębokości safefill-water-on-water=Woda na wodzie +safefill-minable-water=Podnoszenie wypełnienia wodą [mod-setting-description] safefill-green-water=Pozwala na stawianie zanieczyszczonej wody oraz błota. safefill-cost=Zmień koszt produkcji oraz wymogi technoliczne. safefill-depth=Skonfiguruj zestaw głębokości. safefill-water-on-water=Pozwól na postawienie nie płytkich pól wody na innych polach wody. +safefill-minable-water=Zezwól na usuwanie wypełnienia wodą poprzez kliknięcie prawym przyciskiem myszy. [technology-name] nullius-irrigation=Irygacja [technology-description] -nullius-irrigation=Pozwala na stawianie różynch pól wody. +nullius-irrigation=Umożliwia bezpośrednie umieszczanie nowych zbiorników wodnych. [item-name] -safefill-shallow=Płytka woda -safefill-medium=Nabrzeże -safefill-deep=Głęboka woda -safefill-mud=Błoto -safefill-green=Zanieczyszczona woda -safefill-deepgreen=Głęboka zanieczyszczona woda +safefill-shallow=Wypełnienie plytką wodą +safefill-medium=Wypełnienie średnią wodą +safefill-deep=Wypełnienie głęboką wodą +safefill-mud=Wypełnienie błotem +safefill-green=Wypełnienie zieloną wodą +safefill-deepgreen=Wypełnienie głęboką zieloną wodą [tile-name] -shallow-muddy-water=Błoto +shallow-muddy-water=Płytka błotnista woda [string-mod-setting] safefill-cost-cheap=Tani @@ -38,4 +40,4 @@ safefill-depth-all-depths=Wszystkie głębokości safefill-depth-shallow-only=Tylko płytkie safefill-depth-no-shallow=Brak płytkich safefill-depth-no-deep=Brak głębokich -safefill-depth-medium-only=Tylko nabrzeża +safefill-depth-medium-only=Tylko średnich From c1f84396f8feb33ae77e2c4e705cd67d0d70fa19 Mon Sep 17 00:00:00 2001 From: S3BA-pl <96552937+S3BA-pl@users.noreply.github.com> Date: Sat, 23 Aug 2025 18:32:06 +0200 Subject: [PATCH 132/236] Add files via upload --- nullius/locale/pl/better-victory-screen.cfg | 10 + nullius/locale/pl/entity.cfg | 336 +++++++++++++------- nullius/locale/pl/fluid.cfg | 19 +- nullius/locale/pl/informatron.cfg | 30 +- nullius/locale/pl/item.cfg | 96 +++++- nullius/locale/pl/misc.cfg | 129 ++++++++ nullius/locale/pl/recipe.cfg | 55 +++- nullius/locale/pl/tech.cfg | 70 +++- 8 files changed, 576 insertions(+), 169 deletions(-) create mode 100644 nullius/locale/pl/better-victory-screen.cfg diff --git a/nullius/locale/pl/better-victory-screen.cfg b/nullius/locale/pl/better-victory-screen.cfg new file mode 100644 index 0000000..f5c0c9e --- /dev/null +++ b/nullius/locale/pl/better-victory-screen.cfg @@ -0,0 +1,10 @@ +[bvs-categories] +terraforming=Terraforming + +[bvs-stats] +arthropods=Wędrujące stawonogi +worms=Wykopane robaki +fish=Pływające ryby +trees=Zdrowe drzewa +grass=Wyrosła trawa +petroleum=Dostępne lokalizacje ropy naftowej diff --git a/nullius/locale/pl/entity.cfg b/nullius/locale/pl/entity.cfg index 6601dcd..9988d10 100644 --- a/nullius/locale/pl/entity.cfg +++ b/nullius/locale/pl/entity.cfg @@ -5,11 +5,15 @@ nullius-south=__1__ (południe) nullius-west=__1__ (zachód) nullius-vertical=__1__ (pionowy) nullius-horizontal=__1__ (poziomy) -nullius-mirrored=__1__ (odbicie lustrzane) +nullius-mirrored=__1__ (odwrócony) +nullius-legacy=__1__ (starszy) +nullius-construction-only=__1__ (budowa) +nullius-small=Mały __1__ nullius-sandstone=Piaskowiec -nullius-limestone=wapień +nullius-limestone=Wapień nullius-bauxite=Boksyt -nullius-fumarol=Fumarol +nullius-crystal-rock=Skała krystaliczna +nullius-fumarole=Fumarola nullius-air-filter-1=Filtr powietrza 1 nullius-air-filter-2=Filtr powietrza 2 nullius-air-filter-3=Filtr powietrza 3 @@ -19,16 +23,18 @@ nullius-chimney-1=Komin 1 nullius-outfall-1=Odpływ 1 nullius-chimney-2=Komin 2 nullius-outfall-2=Odpływ 2 +nullius-chimney-3=Komin 3 +nullius-outfall-3=Odpływ 3 nullius-hydro-plant-1=Hydroelektrownia 1 nullius-hydro-plant-2=Hydroelektrownia 2 -nullius-mirror-hydro-plant-2=Hydroelektrownia 2 (odbicie lustrzane) +nullius-mirror-hydro-plant-2=Hydroelektrownia 2 (odwrócony) nullius-hydro-plant-3=Hydroelektrownia 3 -nullius-mirror-hydro-plant-3=Hydroelektrownia 3 (odbicie lustrzane) +nullius-mirror-hydro-plant-3=Hydroelektrownia 3 (odwrócony) nullius-distillery-1=Destylarnia 1 nullius-distillery-2=Destylarnia 2 -nullius-mirror-distillery-2=Destylarnia 2 (odbicie lustrzane) +nullius-mirror-distillery-2=Destylarnia 2 (odwrócony) nullius-distillery-3=Destylarnia 3 -nullius-mirror-distillery-3=Destylarnia 3 (odbicie lustrzane) +nullius-mirror-distillery-3=Destylarnia 3 (odwrócony) nullius-small-assembler-1=Mały monter 1 nullius-small-assembler-2=Mały monter 2 nullius-small-assembler-3=Mały monter 3 @@ -50,25 +56,26 @@ nullius-crusher-2=Kruszarka 2 nullius-crusher-3=Kruszarka 3 nullius-flotation-cell-1=Zakład flotacji 1 nullius-flotation-cell-2=Zakład flotacji 2 -nullius-mirror-flotation-cell-2=Zakład flotacji 2 (odbicie lustrzane) +nullius-mirror-flotation-cell-2=Zakład flotacji 2 (odwrócony) nullius-flotation-cell-3=Zakład flotacji 3 -nullius-mirror-flotation-cell-3=Zakład flotacji 3 (odbicie lustrzane) +nullius-mirror-flotation-cell-3=Zakład flotacji 3 (odwrócony) nullius-foundry-1=Odlewnia 1 nullius-foundry-2=Odlewnia 2 nullius-foundry-3=Odlewnia 3 -nullius-surge-electrolyzer-1=Elektrolizer impulsowy 1 -nullius-surge-electrolyzer-2=Elektrolizer impulsowy 2 -nullius-mirror-surge-electrolyzer-2=Elektrolizer impulsowy 2 (odbicie lustrzane) -nullius-surge-electrolyzer-3=Elektrolizer impulsowy 3 -nullius-mirror-surge-electrolyzer-3=Elektrolizer impulsowy 3 (odbicie lustrzane) +nullius-electrolyzer=Elektrolizer +nullius-surge-electrolyzer-1=Elektrolizer przeciążeniowy impulsowy 1 +nullius-surge-electrolyzer-2=Elektrolizer przeciążeniowy impulsowy 2 +nullius-mirror-surge-electrolyzer-2=Elektrolizer przeciążeniowy impulsowy 2 (odwrócony) +nullius-surge-electrolyzer-3=Elektrolizer przeciążeniowy impulsowy 3 +nullius-mirror-surge-electrolyzer-3=Elektrolizer przeciążeniowy impulsowy 3 (odwrócony) nullius-priority-electrolyzer-1=Elektrolizer priorytetowy 1 nullius-priority-electrolyzer-2=Elektrolizer priorytetowy 2 -nullius-mirror-priority-electrolyzer-2=Elektrolizer priorytetowy 2 (odbicie lustrzane) +nullius-mirror-priority-electrolyzer-2=Elektrolizer priorytetowy 2 (odwrócony) nullius-priority-electrolyzer-3=Elektrolizer priorytetowy 3 -nullius-mirror-priorytet-electrolyzer-3=Elektrolizer priorytetowy 3 (odbicie lustrzane) +nullius-mirror-priorytet-electrolyzer-3=Elektrolizer priorytetowy 3 (odwrócony) nullius-chemical-plant-1=Zakład chemiczny 1 nullius-chemical-plant-2=Zakład chemiczny 2 -nullius-mirror-chemical-plant-2=Zakład chemiczny 2 (odbicie lustrzane) +nullius-mirror-chemical-plant-2=Zakład chemiczny 2 (odwrócony) nullius-chemical-plant-3=Zakład chemiczny 3 nullius-mirror-chemical-plant-3=Zakład chemiczny 3 (lustrzane odbicie) nullius-small-furnace-1=Mały piec 1 @@ -103,9 +110,9 @@ nullius-large-tank-2=Duży zbiornik 2 nullius-large-tank-3=Duży zbiornik 3 nullius-combustion-chamber-1=Komora spalania 1 nullius-combustion-chamber-2=Komora spalania 2 -nullius-mirror-combustion-chamber-2=Komora spalania 2 (odbicie lustrzane) +nullius-mirror-combustion-chamber-2=Komora spalania 2 (odwrócony) nullius-combustion-chamber-3=Komora spalania 3 -nullius-mirror-combustion-chamber-3=Komora spalania 3 (odbicie lustrzane) +nullius-mirror-combustion-chamber-3=Komora spalania 3 (odwrócony) nullius-backup-turbine-1=Turbina rezerwowa 1 nullius-backup-turbine-2=Turbina rezerwowa 2 nullius-backup-turbine-3=Turbina rezerwowa 3 @@ -114,9 +121,18 @@ nullius-standard-turbine-2=Turbina standardowa 2 nullius-standard-turbine-3=Turbina standardowa 3 nullius-priority-turbine-1=Turbina priorytetowa 1 nullius-priority-turbine-2=Turbina priorytetowa 2 -nullius-surge-compressor-1=Sprężarka powietrza 1 -nullius-surge-compressor-2=Sprężarka powietrza 2 -nullius-surge-compressor-3=Sprężarka powietrza 3 +nullius-turbine-open=Turbina otwarta +nullius-turbine-open-backup=Turbina otwarta zapasowa +nullius-turbine-open-standard=Turbina otwarta standardowa +nullius-turbine-open-exhaust=Turbina otwarta upustowa +nullius-turbine-closed=Turbina zamknięta +nullius-turbine-closed-backup=Zamknięta turbina rezerwowa +nullius-turbine-closed-standard=Zamknięta turbina standardowa +nullius-turbine-closed-exhaust=Zamknięta turbina upustowa +nullius-compressor=Sprężarka +nullius-surge-compressor-1=Sprężarka przeciążeniowa powietrza 1 +nullius-surge-compressor-2=Sprężarka przeciążeniowa powietrza 2 +nullius-surge-compressor-3=Sprężarka przeciążeniowa powietrza 3 nullius-priority-compressor-1=Sprężarka priorytetowa 1 nullius-priority-compressor-2=Sprężarka priorytetowa 2 nullius-priority-compressor-3=Sprężarka priorytetowa 3 @@ -186,7 +202,7 @@ nullius-cargo-wagon-2=Wagon towarowy 2 nullius-cargo-wagon-3=Wagon towarowy 3 nullius-fluid-wagon-1=Cysterna 1 nullius-fluid-wagon-2=Cysterna 2 -nullius-fluid-wagon-3=Cysterna3 +nullius-fluid-wagon-3=Cysterna 3 nullius-wind-build-1=Turbina wiatrowa 1 nullius-wind-build-2=Turbina wiatrowa 2 nullius-wind-build-3=Turbina wiatrowa 3 @@ -210,10 +226,10 @@ nullius-construction-bot-3=Bot konstrukcyjny 3 nullius-logistic-bot-3=Bot logistyczny 3 nullius-construction-bot-4=Bot konstrukcyjny 4 nullius-logistic-bot-4=Bot logistyczny 4 -nullius-power-pole-1=Słupek energetyczny 1 -nullius-power-pole-2=Słupek energetyczny 2 -nullius-power-pole-3=Słup energetyczny 3 -nullius-power-pole-4=Słup energetyczny 4 +nullius-power-pole-1=Słupek elektryczny 1 +nullius-power-pole-2=Słupek elektryczny 2 +nullius-power-pole-3=Słup elektryczny 3 +nullius-power-pole-4=Słup elektryczny 4 nullius-pylon-1=Pylon 1 nullius-pylon-2=Pylon 2 nullius-pylon-3=Pylon 3 @@ -223,6 +239,7 @@ nullius-substation-3=Podstacja energetyczna 3 nullius-logic-circuit=Sterownik logiczny nullius-arithmetic-circuit=Sterownik arytmetyczny nullius-memory-circuit=Sterownik pamięci +nullius-selector-circuit=Sterownik selekcyjny nullius-antenna=Głośnik nullius-extractor-1=Ekstraktor 1 nullius-extractor-2=Ekstraktor 2 @@ -238,8 +255,8 @@ nullius-heat-pipe-1=Rura cieplna 1 nullius-heat-pipe-2=Rura cieplna 2 nullius-heat-pipe-3=Rura cieplna 3 nullius-thermal-tank-1=Zbiornik termiczny 1 -nullius-thermal-tank-2=Zbiornik termalny 2 -nullius-thermal-tank-3=Zbiornik termalny 3 +nullius-thermal-tank-2=Zbiornik termiczny 2 +nullius-thermal-tank-3=Zbiornik termiczny 3 nullius-lab-1=Laboratorium 1 nullius-lab-2=Laboratorium 2 nullius-lab-3=Laboratorium 3 @@ -268,11 +285,11 @@ nullius-stirling-vertical-heat-3=Silnik Stirlinga pionowy 3 nullius-stirling-horizontal-heat-3=Silnik Stirlinga poziomy 3 nullius-drone-launcher-1=Wyrzutnia dronów 1 nullius-drone-launcher-2=Wyrzutnia dronów 2 -nullius-drone-carrier-1=Ciężarówka z dronami 1 -nullius-drone-carrier-2=Ciężarówka z dronami 2 +nullius-drone-carrier-1=Mobilna wyrzutnia dronów 1 +nullius-drone-carrier-2=Mobilna wyrzutnia dronów 2 nullius-nanofabricator-1=Nanoproducent 1 nullius-nanofabricator-2=Nanoproducent 2 -nullius-mirror-nanofabricator-2=Nanoproducent 2 (odbicie lustrzane) +nullius-mirror-nanofabricator-2=Nanoproducent 2 (odwrócony) nullius-landing-main=Statek-lądowisko nullius-landing-propulsion=Napęd lądowiska nullius-landing-tail=Ogon lądowiska @@ -299,9 +316,34 @@ nullius-relay-2=Przekaźnik 2 nullius-relay-3=Przekaźnik 3 nullius-relay-4=Przekaźnik 4 nullius-android-2=Android 2 - +nullius-rock-bauxite=Skała boksytowa +nullius-rock-limestone=Skała wapienna +nullius-rock-ironstone=Skała żelazowa +nullius-rock-sandstone=Skała piaskowcowa +nullius-boxer=Paczkowarka +nullius-thrower=Miotacz __1__ +nullius-filter-thrower=Miotacz filtrujący __1__ +nullius-display-plate-small-steel=Stalowa płytka informacyjna (mała) +nullius-display-plate-medium-steel=Stalowa płytka informacyjna (średnia) +nullius-display-plate-large-steel=Stalowa płytka informacyjna (duża) +nullius-display-plate-small-aluminum=Aluminiowa płytka informacyjna (mała) +nullius-display-plate-medium-aluminum=Aluminiowa płytka informacyjna (średnia) +nullius-display-plate-large-aluminum=Aluminiowa płytka informacyjna (duża) +nullius-display-plate-small-plastic=Plastikowa płytka informacyjna (mała) +nullius-display-plate-medium-plastic=Plastikowa płytka informacyjna (średnia) +nullius-display-plate-large-plastic=Plastikowa płytka informacyjna (duża) +nullius-hydrothermal-vent=Komin hydrotermalny +nullius-offshore-extractor=Ekstraktor morski +nullius-offshore-steam=__ENTITY__oil_rig__ elektrownia hydrotermalna +nullius-offshore-electric=__ENTITY__oil_rig__ generator elektryczny +nullius-offshore-radar=__ENTITY__oil_rig__ radar +nullius-align-conscription-turret=Wieża poborowa +nullius-align-concordance-transmitter=Nadajnik zgodności [entity-description] +nullius-kilojoule=__1__ kJ +nullius-megajoule=__1__ MJ +nullius-kilowatt=__1__ kW nullius-furnace=Stosuje ekstremalne ciepło do rafinacji metali z rudy. nullius-large-furnace=Rafinuje duże ilości metalu z rudy. nullius-air-filter-1=Filtruje i spręża powietrze z atmosfery (do 50/s). @@ -309,12 +351,14 @@ nullius-air-filter-2=Filtruje i spręża powietrze z atmosfery (do 150/s). nullius-air-filter-3=Filtruje i spręża powietrze z atmosfery (do 400/s). nullius-well-1=Pompuje wodę gruntową spod powierzchni (do 100/s). nullius-well-2=Pompuje wody gruntowe spod powierzchni (do 400/s). -nullius-seawater-intake-1=Umieszczony wzdłuż wybrzeża w celu produkcji wody morskiej. -nullius-seawater-intake-2=Umieszczony wzdłuż wybrzeża w celu produkcji wody morskiej. -nullius-chimney-1=Wentyluje nadmiar gazu do atmosfery (do 100/s). -nullius-chimney-2=Wentyluje nadmiar gazu do atmosfery (do 500/s). +nullius-seawater-intake-1=Umieszczony wzdłuż wybrzeża w celu produkcji wody morskiej (do 125/s). +nullius-seawater-intake-2=Umieszczony wzdłuż wybrzeża w celu produkcji wody morskiej (do 500/s). +nullius-chimney-1=Wentyluje nadmiar gazu do atmosfery (do 100/s).Skompresowane gazy uwalniane z połową prędkości. +nullius-chimney-2=Wentyluje nadmiar gazu do atmosfery (do 500/s).Skompresowane gazy uwalniane z połową prędkości. +nullius-chimney-3=Wentyluje nadmiar gazu do atmosfery (do 2000/s).Skompresowane gazy uwalniane z połową prędkości. nullius-outfall-1=Wypuszcza nadmiar cieczy do morza (Do 100/s). -nullius-outfall-2=Wypuszcza nadmiar cieczy do morza (Do 500/s). +nullius-outfall-2=Wypuszcza nadmiar cieczy do morza (Do 400/s). +nullius-outfall-3=Wypuszcza nadmiar cieczy do morza (Do 1000/s). nullius-hydro-plant=Filtruje zanieczyszczenia i uzdatnia wodę. nullius-distillery=Rozdziela mieszane ciecze na substancje składowe. nullius-small-assembler-1=Składa razem małe produkty pośrednie i gotowe. @@ -333,73 +377,75 @@ nullius-crusher-1=Miażdży skały na drobniejsze cząstki i sortuje wyniki. nullius-crusher-2=Miażdży skały na drobniejsze cząstki i sortuje wyniki. nullius-crusher-3=Miażdży skały na drobniejsze cząstki i sortuje wyniki. nullius-flotation-cell=Reaktywacja ciał stałych zanurzonych w cieczach w czasie. -nullius-surge-electrolyzer=Podzielenie cieczy na jony z nadwyżką energii elektrycznej, tylko po zaspokojeniu innego zapotrzebowania na energię. -nullius-priority-electrolyzer=Podzielenie cieczy na jony przy użyciu ogromnej energii elektrycznej. -nullius-backup-turbine=Generuje energię elektryczną z gazu pod ciśnieniem, takiego jak para. Działa tylko jako rezerwa w celu zaspokojenia potrzeb. Nie ładuje urządzeń impulsowych ani akumulatorów sieciowych. Przydatna do magazynowania energii przy użyciu produktów wyposażenia impulsowego. -nullius-standard-turbine=Generuje energię elektryczną z gazu pod ciśnieniem, takiego jak para. Działa, gdy wiatr i panele słoneczne są niewystarczające. Użyteczna do generowania energii z pary w wymienniku ciepła. -nullius-priority-turbine=Generuje energię elektryczną z gazu pod ciśnieniem, takiego jak para wodna. Dostawca energii podstawowej jak turbiny wiatrowe. Użyteczna do wentylacji nadmiaru sprężonego gazu lub produktów ubocznych pary. +nullius-electrolyzer=Rozdziela płyny na jony. +nullius-compressor=Spręża gaz. Sprężony gaz może być wykorzystywany do przyspieszenia reakcji chemicznych, zwiększenia przepustowości rur lub jako medium do magazynowania energii. +nullius-prioritize=__1__ Tryb zużycia energii elektrycznej można przełączać między dwoma stanami za pomocą __CONTROL__nullius-prioritize__. +nullius-surge=__1__ Wykorzystuje nadwyżkę energii elektrycznej, dopiero po zaspokojeniu innych potrzeb. Przełącz się do trybu priorytetowego za pomocą __CONTROL__nullius-prioritize__. +nullius-priority=__1__ Zużywa energię elektryczną w normalny sposób. Przełącz się do trybu nadmiarowego za pomocą __CONTROL__nullius-prioritize__. +nullius-turbine-open=Wytwarza energię elektryczną ze sprężonego gazu lub pary, uwalniając ją do atmosfery. +nullius-turbine-closed=Wytwarza energię elektryczną ze sprężonego gazu lub pary, odzyskując większość nieskompresowanego płynu roboczego. +nullius-turbine-item=__1__ Tryb produkcji energii elektrycznej można skonfigurować w jednym z trzech stanów za pomocą __CONTROL__nullius-prioritize__. +nullius-turbine-entity=__1__ __2__\nPrzełącz tryb generowania za pomocą __CONTROL__nullius-prioritize__. +nullius-turbine-info=__3__\n[font=default-semibold][color=1,0.9,0.75]Moc maksymalna:[/color][/font] __1__MW\n[font=default-semibold][color=1,0.9,0.75]Sprawność:[/color][/font] __2__% +nullius-turbine-backup=Działa wyłącznie jako rezerwa w celu zaspokojenia niezaspokojonego zapotrzebowania. Nie ładuje urządzeń przeciążeniowych ani akumulatorów sieciowych. Przydatna do magazynowania energii przy użyciu urządzeń przeciążeniowych. +nullius-turbine-standard=Działa, gdy energia wiatrowa i słoneczna są niewystarczające. Przydatny do wytwarzania energii z pary z wymiennika ciepła. +nullius-turbine-exhaust=Główne źródło energii, podobnie jak turbiny wiatrowe. Działa niezależnie od tego, czy wytwarzana energia jest potrzebna. Przydatne do pozyskiwania dodatkowej energii z zarządzania produktami ubocznymi lub dekompresji, gdy przepływ nie może zostać przerwany. nullius-combustion-chamber=Spala zmagazynowane paliwa chemiczne w celu wytworzenia pary pod wysokim ciśnieniem. nullius-boiler=Używa energii elektrycznej do zamiany wody w parę. -nullius-compressor=Spręża gaz używając nadwyżki energii elektrycznej, tylko po zaspokojeniu innego zapotrzebowania na energię. -nullius-priority-compressor=Spręża gaz używając ogromnej ilości energii elektrycznej. nullius-chemical-plant=Katalizuje szeroki zakres reakcji chemicznych. -nullius-one-way-valve=Zezwala na przepływ tylko w jednym kierunku. -nullius-relief-valve=Zezwala na przepływ ze źródła o ciśnieniu ponad 75%. -nullius-top-up-valve=Zezwala na przepływ do miejsca przeznaczenia przy ciśnieniu poniżej 50%. -nullius-priority-valve=Zezwala na przepływ ze źródła z ponad 25% ciśnieniem. -nullius-pipe-1=Przesyła płyn pod ciśnieniem do 40%. -nullius-pipe-2=Przesyła płyn pod ciśnieniem do 60%. -nullius-pipe-3=Przesyła płyn pod ciśnieniem do 80%. -nullius-pipe-4=Przesyła płyn pod ciśnieniem do 100%. -nullius-underground-pipe-1=Przesyła płyn pod ciśnieniem do 40%. -nullius-underground-pipe-2=Przesyła płyn pod ciśnieniem do 60%. -nullius-underground-pipe-3=Przesyła ciecz pod ciśnieniem do 80%. -nullius-underground-pipe-4=Przesyła płyn pod ciśnieniem do 100%. -nullius-small-tank-1=Przechowuje płyn pod ciśnieniem do 90%. -nullius-small-tank-2=Przechowuje płyn pod ciśnieniem do 100%. -nullius-medium-tank-1=Przechowuje płyn pod ciśnieniem do 85%. -nullius-medium-tank-2=Przechowuje płyn pod ciśnieniem do 90%. -nullius-medium-tank-3=Przechowuje płyn pod ciśnieniem do 100%. -nullius-large-tank-1=Przechowuje płyn pod ciśnieniem do 100%. -nullius-large-tank-2=Przechowuje płyn pod ciśnieniem do 110%. -nullius-large-tank-3=Przechowuje płyn pod ciśnieniem do 125%. +nullius-one-way-valve=Umożliwia przepływ tylko w jednym kierunku. Może być przydatny do kontrolowania przepływu wstecznego i rozlewania się płynów w rurach o większej przepustowości. +nullius-relief-valve=Umożliwia przepływ ze źródła o objętości powyżej 75%. Przydatny w połączeniu ze zbiornikiem napełnianym pompą, aby rozlać nadmiar produktu ubocznego w celu odpowietrzenia i uniknięcia zablokowania produkcji. +nullius-top-up-valve=Umożliwia przepływ do miejsca docelowego o objętości poniżej 50%. Przydatny, gdy masz dwa źródła tego samego płynu, zarówno jako produkt uboczny, jak i główny produkt. Użyj tego zaworu, aby napełnić zbiornik z głównego rurociągu produktu, a nie z rurociągu produktu ubocznego, dając w ten sposób pierwszeństwo wykorzystaniu produktu ubocznego, gdy jest go wystarczająco dużo, ale dostarczając go innymi środkami, jeśli nie ma go wystarczająco dużo. +nullius-priority-valve=możliwia przepływ z źródła o objętości powyżej 25%. Przydatne w przypadku dostarczania jednego płynu do wielu miejsc docelowych o różnym znaczeniu. Użyj tego zaworu do zasilania rurociągu o drugorzędnym znaczeniu, tak aby był on zasilany tylko wtedy, gdy zbiornik ma wystarczającą ilość płynu, aby zaspokoić podstawowe zapotrzebowanie. +nullius-pipe=Przesyła płyn +nullius-underground-pipe=Przesyła płyn +nullius-small-tank-1=Przechowuje niewiele płynu. +nullius-small-tank-2=Przechowuje niewiele płynu. +nullius-medium-tank-1=Przechowuje płyn. +nullius-medium-tank-2=Przechowuje płyn. +nullius-medium-tank-3=Przechowuje płyn. +nullius-large-tank-1=Przechowuje dużo płynu. +nullius-large-tank-2=Przechowuje dużo płynu. +nullius-large-tank-3=Przechowuje dużo płynu. nullius-barrel-pump-1=Napełnia lub opróżnia beczki płynem. nullius-barrel-pump-2=Napełnia lub opróżnia beczki płynem. -nullius-pump-1=Poprawia szybkość przepływu na duże odległości i napełnia zbiorniki do maksymalnego ciśnienia. -nullius-pump-2=Poprawia szybkość przepływu na duże odległości i napełnia zbiorniki do maksymalnego ciśnienia. -nullius-pump-3=Poprawia szybkość przepływu na długich dystansach i napełnia zbiorniki do maksymalnego ciśnienia. +nullius-pump-1=Konieczne do przedłużenia rurociągów na większe odległości. Pompuje do 3000/s. +nullius-pump-2=Konieczne do przedłużenia rurociągów na większe odległości. Pompuje do 6000/s. +nullius-pump-3=Konieczne do przedłużenia rurociągów na większe odległości. Pompuje do 12000/s. +nullius-small-pump-1=Połowa rozmiaru zwykłej pompy, ale wolniejsza. Pompuje do 2400/s +nullius-small-pump-2=Połowa rozmiaru zwykłej pompy, ale wolniejsza. Pompuje do 4800/s nullius-wind-base-1=Odnawialna energia o średniej mocy 600kW, maksymalnie do 1,5MW. nullius-wind-base-2=Odnawialna energia o średniej mocy 1,6MW, maksymalnie do 4MW. -nullius-wind-base-3=Odnawialna energia okresowa średnio 4,8MW, maksymalnie do 12MW. -nullius-wind-build-1=Odnawialna energia okresowa średnio 600kW, maksymalnie do 1,5MW. -nullius-wind-build-2=Odnawialna energia okresowa średnio 1,6MW, maksymalnie do 4MW. -nullius-wind-build-3=Odnawialna energia okresowa średnio 4.8MW, maksymalnie do 12MW. +nullius-wind-base-3=Odnawialna energia o średniej mocy 4,8MW, maksymalnie do 12MW. +nullius-wind-build-1=Odnawialna energia o średniej mocy 600kW, maksymalnie do 1,5MW. +nullius-wind-build-2=Odnawialna energia o średniej mocy 1,6MW, maksymalnie do 4MW. +nullius-wind-build-3=Odnawialna energia o średniej mocy 4.8MW, maksymalnie do 12MW. nullius-grid-battery-1=Efektywne krótkoterminowe magazynowanie energii elektrycznej. nullius-grid-battery-2=Efektywne krótkoterminowe magazynowanie energii elektrycznej. nullius-grid-battery-3=Efektywne krótkoterminowe magazynowanie energii elektrycznej. -nullius-solar-collector-1=Generuje średnio 150kW ciepła (przed bonusem), szczytowo 240kW w połowie dnia.\n[font=default-semibold][color=1,0.9,0.75]Maksymalna temperatura:[/color][/font] 250C -nullius-solar-collector-2=Generuje średnio 300kW ciepła (przed bonusem), szczytowo 460kW w połowie dnia.\n[font=default-semibold][color=1,0.9,0.75]Temperatura maksymalna:[/color][/font] 300C -nullius-solar-collector-3=Generuje średnio 600kW ciepła (przed bonusem), szczytowo 900kW w połowie dnia. \n[font=default-semibold][color=1,0.9,0.75]Temperatura maksymalna:[/color][/font] 400C +nullius-solar-collector-1=Generuje średnio 150kW ciepła (przed bonusem), szczytowo 240kW w południe. Produkcja ciepła maleje wraz ze wzrostem temperatury\n[font=default-semibold][color=1,0.9,0.75]Maksymalna temperatura:[/color][/font] 250C +nullius-solar-collector-2=Generuje średnio 300kW ciepła (przed bonusem), szczytowo 460kW w południe. Produkcja ciepła maleje wraz ze wzrostem temperatury\n[font=default-semibold][color=1,0.9,0.75]Temperatura maksymalna:[/color][/font] 300C +nullius-solar-collector-3=Generuje średnio 600kW ciepła (przed bonusem), szczytowo 900kW w południe. Produkcja ciepła maleje wraz ze wzrostem temperatury\n[font=default-semibold][color=1,0.9,0.75]Temperatura maksymalna:[/color][/font] 400C nullius-extractor-1=Wyciąga gaz wulkaniczny z fumaroli. nullius-extractor-2=Wyciąga gaz wulkaniczny z fumaroli. -nullius-geothermal-build-1=Zbudowany nad fumarolem w celu wytworzenia 10MW energii cieplnej.\nMaksymalna temperatura: 250C -nullius-geothermal-reactor-1=Zbudowany nad fumarolem w celu wygenerowania 10MW energii cieplnej. \nTemperatura maksymalna: 250C -nullius-geothermal-build-2=Zbudowany nad fumarolem w celu wygenerowania 30MW energii cieplnej.\nTemperatura maksymalna: 300C -nullius-geothermal-reactor-2=Zbudowany nad fumarolem w celu wygenerowania 30MW energii cieplnej.\nTemperatura maksymalna: 300C -nullius-geothermal-build-3=Zbudowany nad fumarolem w celu wygenerowania 80MW energii cieplnej.\nTemperatura maksymalna: 400C -nullius-geothermal-reactor-3=Zbudowany nad fumarolem w celu wygenerowania 80MW energii cieplnej.\nTemperatura maksymalna: 400C -nullius-heat-pipe-1=Przekazuje do 30MW energii cieplnej. \nWydajność cieplna: 100kJ na ºC.\nTemperatura maksymalna: 250C -nullius-heat-pipe-2=Przekazuje do 80MW energii cieplnej. \nWydajność cieplna: 250kJ na ºC. \nTemperatura maksymalna: 500C -nullius-heat-pipe-3=Przekazuje do 200MW energii cieplnej. \nWydajność cieplna: 500kJ na °C. \nTemperatura maksymalna: 1500C -nullius-stirling-engine-1=Przekształca ciepło z 80% sprawnością w celu wyprodukowania do 800kW energii elektrycznej. -nullius-stirling-build-1=Przetwarza ciepło z 80% sprawnością w celu wyprodukowania do 800kW energii elektrycznej. -nullius-stirling-engine-2=Przetwarza ciepło z 90% sprawnością, aby wyprodukować do 2.5MW energii elektrycznej. -nullius-stirling-build-2=Przekształca ciepło z 90% sprawnością w celu wyprodukowania do 2.5MW energii elektrycznej. -nullius-stirling-engine-3=Przetwarza ciepło z 100% sprawnością, wytwarzając do 8MW energii elektrycznej. -nullius-stirling-build-3=Przetwarza ciepło z 100% sprawnością do produkcji do 8MW energii elektrycznej. -nullius-thermal-tank-1=Zapewnia 4MJ na ºC energii cieplnej do późniejszego zużycia.\nPrędkość transferu: 25MW Maksymalna temperatura: 250C -nullius-thermal-tank-2=Zapewnia 8MJ na ºC energii cieplnej do późniejszego zużycia.\nPrędkość transferu: 60MW Maksymalna temperatura: 500C -nullius-thermal-tank-3=Zapewnia 20MJ na ºC energii cieplnej do późniejszego zużycia.\nPrędkość transferu: 200MW Temperatura maksymalna: 1500C +nullius-geothermal-build-1=Zbudowany nad fumarolem w celu wytworzenia 10MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 250C +nullius-geothermal-reactor-1=Zbudowany nad fumarolem w celu wygenerowania 10MW energii cieplnej. \n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 250C +nullius-geothermal-build-2=Zbudowany nad fumarolem w celu wygenerowania 30MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 300C +nullius-geothermal-reactor-2=Zbudowany nad fumarolem w celu wygenerowania 30MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 300C +nullius-geothermal-build-3=Zbudowany nad fumarolem w celu wygenerowania 80MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 400C +nullius-geothermal-reactor-3=Zbudowany nad fumarolem w celu wygenerowania 80MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 400C +nullius-heat-pipe-1=Przesyła do 30 MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75]Pojemność cieplna:[/color] [/font] 100 kJ na ºC.\n[font=default-semibold][color=1,0.9,0.75]Maksymalna temperatura:[/color][/font] 250C +nullius-heat-pipe-2=Przesyła do 80 MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75]Pojemność cieplna:[/color] [/font] 250 kJ na ºC.\n[font=default-semibold][color=1,0.9,0.75]Maksymalna temperatura:[/color][/font] 500C +nullius-heat-pipe-3=Przesyła do 200 MW energii cieplnej.\n[font=default-semibold][color=1,0.9,0.75]Pojemność cieplna:[/color] [/font] 500 kJ na ºC.\n[font=default-semibold][color=1,0.9,0.75]Maksymalna temperatura:[/color][/font] 1500C +nullius-stirling-engine-1=Przekształca ciepło z wydajnością 80%, wytwarzając do 800 kW energii elektrycznej.\n[font=default-semibold][color=1,0.9,0.75] Optymalny zakres:[/color][/font] 180C do 250C\n[font=default-semibold][color=1,0.9,0.75] Minimalna temperatura robocza:[/color][/font] 120°C +nullius-stirling-build-1=Przekształca ciepło z wydajnością 80%, wytwarzając do 800 kW energii elektrycznej.\n[font=default-semibold][color=1,0.9,0.75] Optymalny zakres:[/color][/font] 180C do 250C\n[font=default-semibold][color=1,0.9,0.75] Minimalna temperatura robocza:[/color][/font] 120°C +nullius-stirling-engine-2=Przekształca ciepło z wydajnością 90%, wytwarzając do 2,5 MW energii elektrycznej.\n[font=default-semibold][color=1,0.9,0.75] Optymalny zakres:[/color][/font] 200°C do 500°C\n[font=default-semibold][color=1,0.9,0.75]Minimalna temperatura robocza:[/color][/font] 100°C +nullius-stirling-build-2=Przekształca ciepło z wydajnością 90%, wytwarzając do 2,5 MW energii elektrycznej.\n[font=default-semibold][color=1,0.9,0.75] Optymalny zakres:[/color][/font] 200°C do 500°C\n[font=default-semibold][color=1,0.9,0.75]Minimalna temperatura robocza:[/color][/font] 100°C +nullius-stirling-engine-3=Przekształca ciepło z wydajnością 95%, wytwarzając do 8 MW energii elektrycznej.\n[font=default-semibold][color=1,0.9,0.75] Optymalny zakres:[/color][/font] 240°C do 1500°C\n[font=default-semibold][color=1,0.9,0.75] Minimalna temperatura robocza:[/color][/font] 80C +nullius-stirling-build-3=Przekształca ciepło z wydajnością 95%, wytwarzając do 8 MW energii elektrycznej.\n[font=default-semibold][color=1,0.9,0.75] Optymalny zakres:[/color][/font] 240°C do 1500°C\n[font=default-semibold][color=1,0.9,0.75] Minimalna temperatura robocza:[/color][/font] 80C +nullius-thermal-tank-1=Magazynuje 4 MJ energii cieplnej na każdy stopień Celsjusza do późniejszego wykorzystania.\n[font=default-semibold][color=1,0.9,0.75]Szybkość transferu:[/color][/font] 25 MW\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 250C +nullius-thermal-tank-2=Magazynuje 8 MJ energii cieplnej na każdy stopień Celsjusza do późniejszego wykorzystania.\n[font=default-semibold][color=1,0.9,0.75]Szybkość transferu:[/color][/font] 60 MW\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 500C +nullius-thermal-tank-3=Magazynuje 20 MJ energii cieplnej na każdy stopień Celsjusza do późniejszego wykorzystania.\n[font=default-semibold][color=1,0.9,0.75]Szybkość transferu:[/color][/font] 200 MW\n[font=default-semibold][color=1,0.9,0.75] Maksymalna temperatura:[/color][/font] 1500C nullius-lab-1=Badania próbek w celu stworzenia bardziej zaawansowanych procesów technologicznych. nullius-lab-2=Badania próbek w celu stworzenia bardziej zaawansowanych procesów technologicznych. nullius-lab-3=Badania próbek w celu stworzenia bardziej zaawansowanych procesów technologicznych. @@ -446,10 +492,23 @@ nullius-nanofabricator=Syntetyzuje zaawansowane materiały atomowe warstwa po wa nullius-reactor=Zamienia paliwo jądrowe w energię cieplną.\nMaksymalna wydajność cieplna: 10MJ na ºC. \nTemperatura maksymalna: 1500C nullius-silo=Wystrzeliwuje rakiety w kosmos. nullius-turret=Trenuje mobilne organiczne formy życia do pozostania w wyznaczonym środowisku. -nullius-landing-pod-1=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] [item=nullius-large-chest-1] -nullius-landing-pod-2=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] [item=nullius-large-chest-1] -nullius-landing-main=[font=default-semibold][color=1,0.9,0.75]Minable for:[/color][/font] 2x[item=nullius-large-chest-1] 40x[item=nullius-steel-ingot] 15x[item=copper-cable] +nullius-minable=[font=default-semibold][color=1,0.9,0.75]Podniesienie:[/color][/font] __1__ +nullius-landing-pod-1=[font=default-semibold][color=1,0.9,0.75]Podniesienie:[/color][/font] [item=nullius-large-chest-1] +nullius-landing-pod-2=[font=default-semibold][color=1,0.9,0.75]Podniesienie:[/color][/font] [item=nullius-large-chest-1] +nullius-landing-main=[font=default-semibold][color=1,0.9,0.75]Podniesienie:[/color][/font] 2x[item=nullius-large-chest-1] 40x[item=nullius-steel-ingot] 15x[item=copper-cable] nullius-android=__CONTROL__nullius-upload-mind__ aby przejąć kontrolę nad tym ciałem.\n_CONTROL__nullius-previous-body__ aby wrócić do poprzedniego ciała.\n_CONTROL__nullius-next-body__ aby przejść do następnego ciała w kolejce. +nullius-boxer=Kompaktowe urządzenie, które szybko pakuje lub rozpakowuje. +nullius-request-slots=__1__\n[font=default-semibold][color=1,0.9,0.75]Sloty żądające:[/color][/font] __2__ +nullius-power-switch= Podłącz do sieci energetycznej za pomocą __1__ ([item=__2__]). +nullius-fumarole=Miejsce wulkaniczne odpowiednie do budowy elektrowni geotermalnej lub wydobycia gazu wulkanicznego. Elektrownia geotermalna nie ma wpływu na bogactwo zasobów i nie powoduje ich wyczerpania. Nieograniczone zasoby gazu wulkanicznego wyczerpują się do minimum 25% początkowej produkcji. +nullius-fumarole-finite=Miejsce wulkaniczne odpowiednie do budowy elektrowni geotermalnej lub wydobycia gazu wulkanicznego. Elektrownia geotermalna nie ma wpływu na bogactwo zasobów i nie powoduje ich wyczerpania. Ograniczone źródło gazu wulkanicznego, znika po całkowitym wyczerpaniu. +nullius-hydrothermal-vent=Głębokomorskie źródło gazu wulkanicznego, które można eksploatować za pomocą morskiej platformy wydobywczej. Nieograniczone zasoby gazu wulkanicznego wyczerpują się do minimum 25% początkowej produkcji. +nullius-offshore-extractor=Pływająca platforma wydobywcza do kominów hydrotermalnych. Zawiera generator termiczny zasilający samą platformę i podłączone pompy. +or_pole=Moc ekstraktora morskiego +nullius-loader=Przenosi przedmioty do lub z kontenera lub maszyny z prędkością pasującą do taśmy przenośnika. +nullius-align-conscription-turret=Instalacja obronna, która automatycznie wystrzeliwuje promienie rekrutacyjne w kierunku frakcji wroga. +nullius-align-concordance-transmitter=Nowo przybyłe androidy rozpoczną grę we frakcji z aktywnym nadajnikiem zamiast tworzyć własną. Chroni wszystkich graczy i budynki przed poborem do wojska, gdy jest aktywny. Stopniowo ujawnia odległe sektory. +inserterToggleInfo=Użyj Shift+L, aby przełączać się między długim a normalnym inserterem (dostępne po odblokowaniu badań nad rozszerzeniem) [equipment-name] nullius-solar-panel-1=Panel słoneczny 1 @@ -475,30 +534,91 @@ nullius-capacitor=Kondensator nullius-night-vision-1=Noktowizor 1 nullius-night-vision-2=Noktowizor 2 nullius-night-vision-3=Noktowizor 3 -nullius-levitation-field=Pole grawitacyjne -nullius-leg-augmentation-1=Augmentacja nóg 1 -nullius-leg-augmentation-2=Augmentacja nóg 2 -nullius-leg-augmentation-3=Augmentacja nóg 3 -nullius-leg-augmentation-4=Augmentacja nóg 4 +nullius-levitation-field-1=Pole lewitacji 1 +nullius-levitation-field-2=Pole lewitacji 2 +nullius-shield=Tarcza +nullius-leg-augmentation-1=Wzmocnienie nóg 1 +nullius-leg-augmentation-2=Wzmocnienie nóg 2 +nullius-leg-augmentation-3=Wzmocnienie nóg 3 +nullius-leg-augmentation-4=Wzmocnienie nóg 4 +nullius-upgrade-fabrication-tool-1=Narzędzie produkcyjne 1 +nullius-upgrade-fabrication-tool-2=Narzędzie produkcyjne 2 +nullius-upgrade-fabrication-tool-3=Narzędzie produkcyjne 3 +nullius-upgrade-mining-tool-1=Narzędzie górnicze 1 +nullius-upgrade-mining-tool-2=Narzędzie górnicze 2 +nullius-upgrade-multi-tool-1=Narzędzie wielofunkcyjne 1 +nullius-upgrade-multi-tool-2=Narzędzie wielofunkcyjne 2 +nullius-upgrade-multi-tool-3=Narzędzie wielofunkcyjne 3 +nullius-upgrade-small-cargo-pod-1=Mały kontener transportowy 1 +nullius-upgrade-small-cargo-pod-2=Mały kontener transportowy 2 +nullius-upgrade-large-cargo-pod-1=Duży kontener transportowy 1 +nullius-upgrade-large-cargo-pod-2=Duży kontener transportowy 2 +nullius-upgrade-large-cargo-pod-3=Duży kontener transportowy 3 +nullius-upgrade-trash-compactor=Kompaktor śmieci +nullius-upgrade-armor-plate=Płyta pancerna +nullius-upgrade-telekinesis-field-1=Pole telekinezy 1 +nullius-upgrade-telekinesis-field-2=Pole telekinezy 2 +nullius-upgrade-telekinesis-field-3=Pole telekinezy 3 +nullius-upgrade-quadrupedal-adaptation-1=Adaptacja czworonożna 1 +nullius-upgrade-quadrupedal-adaptation-2=Adaptacja czworonożna 2 +nullius-upgrade-quadrupedal-adaptation-3=Adaptacja czworonożna 3 +nullius-upgrade-quadrupedal-adaptation-4=Adaptacja czworonożna 4 +nullius-upgrade-stabilizer-1=Stabilizator 1 +nullius-upgrade-stabilizer-2=Stabilizator 2 +nullius-upgrade-shackle=Kajdany +nullius-portable-generator=Generator +nullius-portable-generator-backup=Generator zapasowy +nullius-portable-reactor=Przenośny reaktor +nullius-refueler=Napełniacz +nullius-upgrade-jump-boots=Buty skokowe +nullius-upgrade-coprocessor-speed=Koprocesor prędkości +nullius-upgrade-coprocessor-efficiency=Koprocesor wydajności +nullius-upgrade-coprocessor-productivity=Koprocesor produktywności +nullius-upgrade-coprocessor-quantum=Koprocesor kwantowy +nullius-deactivated-coprocessor=__1__ __2__ (wyłączony) [equipment-description] +nullius-buffer=__1__\n[font=default-semibold][color=1,0.9,0.75]Bateria wewnętrzna:[/color][/font] __2__ +nullius-bonus-armor=[font=default-semibold][color=1,0.9,0.75]Premia do zdrowia:[/color][/font] __1__ +nullius-bonus-cargo=[font=default-semibold][color=1,0.9,0.75]Premia do ekwipunku:[/color][/font] __1__ +nullius-penalty-cargo=[font=default-semibold][color=1,0.9,0.75]Kara do ekwipunku:[/color][/font] __1__ +nullius-bonus-trash=[font=default-semibold][color=1,0.9,0.75]Premia do miejsca wywozu:[/color][/font] __1__ +nullius-bonus-reach=[font=default-semibold][color=1,0.9,0.75]Premia do zasięgu:[/color][/font] __1__ +nullius-penalty-reach=[font=default-semibold][color=1,0.9,0.75]Kara do zasięgu:[/color][/font] __1__ +nullius-bonus-speed=[font=default-semibold][color=1,0.9,0.75]Premia do prędkości:[/color][/font] __1__% (pomnożona przez premię do ruchu) +nullius-penalty-speed=[font=default-semibold][color=1,0.9,0.75]Kara do prędkości:[/color][/font] __1__% (pomnożona przez premię do ruchu) +nullius-bonus-craft=[font=default-semibold][color=1,0.9,0.75]Premia do wytwarzania:[/color][/font] __1__%\n[font=default-semibold][color=1,0.9,0.75]Energia na sekundę przepisu:[/color][/font] __2__kJ +nullius-penalty-craft=[font=default-semibold][color=1,0.9,0.75]Kara do wytwarzania:[/color][/font] __1__% +nullius-bonus-mining=[font=default-semibold][color=1,0.9,0.75]Premia do szybkości wydobycia/rozbiórki:[/color][/font] __1__% +nullius-energy=[font=default-semibold][color=1,0.9,0.75]Zużycie energii:[/color][/font] __1__ nullius-solar-panel-1=Cykliczna energia odnawialna o średniej mocy 70kW. Budynek lub wyposażenie. nullius-solar-panel-2=Cykliczna energia odnawialna o średniej mocy 140kW. Budynek lub wyposażenie. nullius-solar-panel-3=Cykliczna energia odnawialna o średniej mocy 350kW. Budynek lub wyposażenie. -nullius-solar-panel-4=Cykliczna energia odnawialna o średniej mocy 700kW. Budynek lub wyposażenie. +nullius-solar-panel-4=Cykliczna energia odnawialna o średniej mocy 560kW. Budynek lub wyposażenie. nullius-night-vision-1=Przyzwoita widoczność w ciemności. nullius-night-vision-2=Dobra widoczność w ciemności. nullius-night-vision-3=Doskonała widzialność w ciemności. nullius-levitation-field=Chodzenie nad przenośnikami taśmowymi bez przemieszczania się. -nullius-leg-augmentation-1=Zwiększa prędkość ruchu. Możliwość łączenia. -nullius-leg-augmentation-2=Zwiększa prędkość ruchu. Możliwość łączenia. -nullius-leg-augmentation-3=Zwiększa prędkość ruchu. Możliwość łączenia. -nullius-leg-augmentation-4=Zwiększa prędkość ruchu. Możliwość łączenia. -nullius-hangar=Magazyn dla robotów pomiędzy zadaniami. Budynek lub wyposażenie. +nullius-shield=Osobiste pole obronne. +nullius-leg-augmentation=Zwiększa prędkość ruchu. Możliwość łączenia. +nullius-hangar=Magazyn dla robotów pomiędzy zadaniami. Budynek lub wyposażenie.\nTryb tylko budowania można włączyć za pomocą __CONTROL__nullius-prioritize__. nullius-charger=Dodatkowe ładowanie dla aktywnych robotów. Budynek lub wyposażenie. -nullius-relay=Zwiększa zasięg roboczy dla robotów. Budynek lub wyposażenie. +nullius-relay=Zwiększa zasięg roboczy dla robotów. Budynek lub wyposażenie.\nTryb tylko budowania można włączyć za pomocą __CONTROL__nullius-prioritize__. nullius-battery=Urządzenie magazynujące energię lub paliwo dla pojazdów. nullius-jetpack-1=[font=default-bold][color=#f5cb48]Siła ciągu: 1[/color][/font]\nNNaciśnij __CONTROL__jetpack__, aby aktywować.\nUmożliwia latanie nad strukturami i wodą. Kilka jetpacków pozwala latać szybciej. Latanie zużywa paliwo rakietowe lub kanistry metanolu z twojego ekwipunku. nullius-jetpack-2=[font=default-bold][color=#f5cb48]Siła ciągu: 2[/color][/font]\nNaciśnij __CONTROL__jetpack__, aby aktywować.\nUmożliwia latanie nad strukturami i wodą. Kilka jetpacków pozwala latać szybciej. Latanie zużywa paliwo rakietowe lub kanistry metanolu z twojego ekwipunku. nullius-jetpack-3=[font=default-bold][color=#f5cb48]Siła ciągu: 3[/color][/font]\nNaciśnij __CONTROL__jetpack__, aby aktywować.\nUmożliwia latanie nad strukturami i wodą. Kilka jetpacków pozwala latać szybciej. Latanie zużywa paliwo rakietowe lub kanistry metanolu z twojego ekwipunku. nullius-jetpack-4=[font=default-bold][color=#f5cb48]Siła ciągu: 4[/color][/font]\nNaciśnij __CONTROL__jetpack__, aby aktywować.\nUmożliwia latanie nad strukturami i wodą. Kilka jetpacków pozwala latać szybciej. Latanie zużywa paliwo rakietowe lub kanistry metanolu z twojego ekwipunku. +nullius-portable-generator=Spala paliwo samochodowe, aby zasilać sprzęt androidów. +nullius-portable-generator-backup=Spala paliwo samochodowe, aby zasilać sprzęt androidów. Ma niższy priorytet niż baterie. Może być przydatny jako uzupełnienie energii słonecznej, wykorzystując paliwo w ostateczności. +nullius-portable-reactor=Spala paliwo jądrowe, aby zasilić sprzęt androida. +nullius-refueler=Automatycznie uzupełnia generatory i przenośne reaktory paliwem z zapasów. Ładuje tylko paliwo tego samego typu, które jest już używane przez ten sprzęt. +nullius-jump-boots=Poświęca udźwig na rzecz prędkości ruchu. +nullius-deactivated-coprocessor=Ten koprocesor został wyłączony po przekroczeniu limitu dla koprocesorów poziomu __1__. +nullius-coprocessor-quantum=Umożliwia instalację maksymalnie 2 koprocesorów różnych typów dla każdego poziomu. +nullius-coprocessor-speed=Zwiększa prędkość ruchu i tworzenia przedmiotów. Mnoży prędkość i zużycie energii innych narzędzi rzemieślniczych.\n[font=default-semibold][color=1,0.9,0.75]Mnożnik prędkości wytwarzania:[/color][/font] __1__%\n[font=default-semibold][color=1,0.9,0.75]Kara za energię wytwarzania:[/color] [/font] __2__%\n[font=default-semibold][color=1,0.9,0.75]Energia na sekundę przepisu:[/color][/font] __3__kJ +nullius-coprocessor-efficiency=Optymalizuje podstawowe zużycie energii przez system Androida i narzędzia rzemieślnicze.\n[font=default-semibold][color=1,0.9,0.75]Nadwyżka energii:[/color][/font] __1__kW\n[font=default-semibold][color=1,0.9,0.75] Zniżka na energię potrzebną do wytwarzania:[/color][/font] __2__% +nullius-coprocessor-productivity=Zwiększa wydajność wytwarzania ręcznego z tego samego materiału kosztem szybkości. Organizuje ładunek w celu lepszego wykorzystania dodatkowej przestrzeni magazynowej.\n[font=default-semibold][color=1,0.9,0.75] Premia do produktywności:[/color][/font] __1__%\n[font=default-semibold][color=1,0.9,0.75]Kara do szybkości wytwarzana:[/color][/font] __2__%\n[font=default-semibold][color=1,0.9,0.75] Energia na sekundę przepisu:[/color][/font] __3__kJ\n[font=default-semibold][color=1,0.9,0.75]Pojemność modułu ładunkowego:[/color][/font] __4__% +nullius-coprocessor-tier-1=Możliwość zainstalowania maksymalnie 2 koprocesorów poziomu 1 różnych typów. +nullius-coprocessor-tier-2=Możliwość zainstalowania 1 koprocesora poziomu 2 oprócz koprocesora poziomu 1. +nullius-coprocessor-tier-3=Możliwość zainstalowania 1 koprocesora poziomu 3 oraz koprocesorów niższych poziomów. diff --git a/nullius/locale/pl/fluid.cfg b/nullius/locale/pl/fluid.cfg index 9935e36..bb8e42f 100644 --- a/nullius/locale/pl/fluid.cfg +++ b/nullius/locale/pl/fluid.cfg @@ -2,8 +2,10 @@ nullius-seawater=Woda morska nullius-freshwater=Woda słodka nullius-saline=Woda słona -nullius-water=Woda destylowana -nullius-steam=Para +nullius-water=Woda +nullius-steam=Para wodna +nullius-energy=Energia +nullius-pressure-steam=Para wodna pod wysokim ciśnieniem nullius-brine=Solanka nullius-wastewater=Ścieki nullius-sludge= Osad @@ -57,16 +59,21 @@ nullius-compressed-residual-gas=Sprężony gaz resztkowy nullius-compressed-trace-gas=Sprężony gaz śladowy nullius-amino-acids=Aminokwasy nullius-fatty-acids=Kwasy tłuszczowe +nullius-amino-acid=Aminokwas +nullius-fatty-acid=Kwas tłuszczowy nullius-oil=Olej +nullius-petroleum=Ropa naftowa nullius-biodiesel=Biodiesel +nullius-nucleotide=Nukleotyd nullius-nucleotides=Nukleotydy nullius-copper-solution=Roztwór miedzi nullius-protocell=Protokomórka nullius-bacteria=Bakteria [fluid-description] -nullius-water=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] H[font=default-tiny-bold]2[/font]O [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] ciecz ([item=nullius-outfall-2]) -nullius-steam=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] H[font=default-tiny-bold]2[/font]O [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Gaz ([item=nullius-chimney-2])\[font=default-semibold][color=1,0.9,0.75]Energia turbiny:[/color][/font] 6kJ +nullius-water=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] H[font=default-tiny-bold]2[/font]O [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz ([item=nullius-outfall-2]) +nullius-steam=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] H[font=default-tiny-bold]2[/font]O [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Gaz ([item=nullius-chimney-2])\[font=default-semibold][color=1,0.9,0.75]Energia turbiny:[/color][/font] 6kJ\n[font=default-semibold][color=1,0.9,0.75]Odzysk zamkniętej turbiny:[/color][/font] 1 wody [fluid=nullius-water] na 6 [fluid=nullius-steam] +nullius-pressure-steam=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] H[font=default-tiny-bold]2[/font]O [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Nadkrytyczny (usuwany w 1)\n[font=default-semibold][color=1,0.9,0.75]Energia turbiny:[/color][/font] 20kJ\n[font=default-semibold][color=1,0.9,0.75]Odzysk zamkniętej turbiny:[/color][/font] 1 wody [fluid=nullius-water] na 2 [fluid=nullius-pressure-steam] nullius-saline=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] NaCl [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Wodny (rozcieńczony) ([item=nullius-outfall-2]) nullius-brine=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] NaCl [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Wodny (stężony) ([item=nullius-outfall-2]) nullius-seawater=[font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Wodny ([item=nullius-outfall-2]) @@ -109,7 +116,6 @@ nullius-acrylonitrile=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/f nullius-ech=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] C[font=default-tiny-bold]3[/font]H[font=default-tiny-bold]5[/font]ClO [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz (usuwany w 2*) nullius-glycerol=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] C[font=default-tiny-bold]3[/font]H[font=default-tiny-bold]8[/font]O[font=default-tiny-bold]3[/font] [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz (usuwany w 1*) nullius-lubricant=[font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz (nie można usunąć) - nullius-solvent=[font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz (nie można usunąć) nullius-epoxy=[font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Płynny (nie można usunąć) nullius-titanium-tetrachloride=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] TiCl[font=default-tiny-bold]4[/font] [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz (nie można usunąć) @@ -130,3 +136,6 @@ nullius-protocell=Pluripotencjalne komórki, które mogą być przekształcane w nullius-bacteria=Roztwór mikroskopijnych, jednokomórkowych organizmów.\n[font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Wodny ([item=nullius-outfall-2]) nullius-heavy-water=[font=default-semibold][color=1,0.9,0.75]Formuła:[/color][/font] HDO [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciecz ([item=nullius-outfall-2]) nullius-copper-solution=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] CuSO[font=default-tiny-bold]4[/font] [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Wodny (nie można usunąć) +nullius-oxygen-reduction=__2__\n[font=default-semibold][color=1,0.9,0.75]Redukcja tlenu:[/color][/font] __1__% +nullius-oxygenation=__2__\n[font=default-semibold][color=1,0.9,0.75]Natlenienie:[/color][/font] __1__% +nullius-recapture=__2__\n[font=default-semibold][color=1,0.9,0.75]Odzysk zamkniętej turbiny:[/color][/font] __1__% diff --git a/nullius/locale/pl/informatron.cfg b/nullius/locale/pl/informatron.cfg index 4198e4c..636b7b2 100644 --- a/nullius/locale/pl/informatron.cfg +++ b/nullius/locale/pl/informatron.cfg @@ -11,82 +11,56 @@ page_nullius_text_3=Po stworzeniu bazy przemysłowej wystarczającej do wystrzel menu_mods=Mody title_mods=Mody page_mods_text_1=Ten mod używa innych zasobów, technologii i receptur, więc nie współdziała dobrze z innymi modami, które mają własne technologie i receptury, chyba że zostały one specjalnie przystosowane do pracy z Nulliusem. Mody poprawiające jakość życia bez własnych technologii i receptur mogą po prostu działać. Niektóre wspólne cechy rozgrywki modów są już zintegrowane z Nulliusem w jakiejś formie, włączając w to funkcje napełniania wodą, układania przedmiotów i nieskończone rudy. Wybrana liczba modów z technologiami została już przeniesiona do Nulliusa. Oczekuje się, że inne zostaną dodane. Ta kompatybilność może być dodana albo przez Nulliusa, albo przez inny mod. - page_mods_text_2=Mody, o których wiadomo, że zostały już przeniesione to: Miniloader, Transport Drones, Jetpack, Factorissimo2, LTN - Logistic Train Network, LTN Combinator Modernized, Bob's Adjustable Inserters, Safe Waterfill, Teleporters, Advanced Fluid Handling, Warehousing, Robot Replacer, AAI Signal Transmission, Train Supply Manager (TSM), Induction Charging, Stack Combinator, Text Plates, Resource Spawner Overhaul (RSO) oraz I,Robot. menu_research=Badania title_research=Badania page_research_text_1=Nullius posiada 7 pakietów badawczych. Pierwsze 2 są odblokowywane bardzo wcześnie, a następne 5 jest stopniowo coraz bardziej zaawansowanych i wykładniczo droższych. Drzewo technologiczne można więc podzielić na 6 różnych poziomów. - page_research_text_2=Nullius zastępuje wszystkie technologie z oryginalnej gry, więc nazwy i progresja różnią się znacznie od tego, do czego możesz być przyzwyczajony. Prawie wszystko, co możesz zrobić w podstawowej grze, możesz zrobić w Nulliusie, z wyjątkiem kilku technologii wojskowych lub energetycznych, ale mogą one występować w innej formie. Nullius stara się zlikwidować niektóre zbędne półprodukty i zamiast tego używa gotowych produktów jako półproduktów lub przeładowuje przedmioty z wieloma zastosowaniami. - page_research_text_3=Kilka przykładów: Materiały wybuchowe do klifów i materiały wybuchowe nie są oddzielnymi przedmiotami; Materiały wybuchowe Nullius są półproduktem, który również wysadza klify. Nie ma osobnego wyposażenia do baterii osobistych; zwykłe baterie to wyposażenie, półprodukty i paliwo do pojazdów z możliwością ładowania. Radary są nazywane węzłami czujników, a kluczowa różnica polega na tym, że mają one znacznie mniejszy promień do skanowania odległych sektorów (aspekt, który jest bardziej potrzebny w przypadku kąsaczy), ale większy promień do zdalnego podglądu fabryki z widoku mapy. Zamiast tego Nullius zapewnia inną metodę skanowania bardzo odległych sektorów w ramach technologii eksploracji. menu_early=Wczesna gra title_early=Wczesna gra page_early_header_1=Poziom 1, Badania geologiczne i klimatyczne - page_early_text_1=Zaczynasz bez żadnych receptur, ale pierwsza technologia odblokowuje próbki geologiczne i nie wymaga żadnych pakietów badawczych, a jedynie czasu spędzonego w laboratorium. Twoje laboratorium jest dostępne gdzieś we wraku twojego statku. Na początku będziesz miał dostęp do wystarczającej ilości budynków, które będą Ci potrzebne do osiągnięcia postępów w grze, abyś mógł je samodzielnie stworzyć. - page_early_text_2=Geologia i Klimatologia są proste i tanie w produkcji. Technologie na tym poziomie mają bardzo niskie koszty i są przeznaczone do szybkiego zbadania. Służą one jako wstęp do procesów produkcji niezbędnych materiałów dla następnego poziomu badań. - page_early_header_2=Poziom 2, Badania nad inżynierią mechaniczną - page_early_text_3=Mechanika nie jest tak prosta w produkcji, ale technologie na tym poziomie nadal wymagają niewielkiej ilości pakietów badawczych. Technologie te pozwalają na zbudowanie własnych kopii większości struktur, z którymi rozpoczynasz grę, dzięki czemu możesz rozbudowywać swoją bazę w nieskończoność. Pod koniec tego poziomu będziesz w stanie wyeliminować wszystkie produkty uboczne, umożliwiając w ten sposób trwałą automatyzację. - page_early_text_4=Ponieważ bez tych podstawowych technologii mechanicznych nie da się w ogóle rozwinąć produkcji, większość technologii tego poziomu i wcześniejszych nie jest zależna od ustawienia mnożnika kosztu technologii. menu_mid=Środek gry title_mid=Środek gry page_mid_header_1=Poziom 3, Badania nad inżynierią elektryczną - page_mid_text_1=Teraz, gdy możesz zbudować własne laboratoria i większą fabrykę, badania zaczynają być droższe. Elektronika umożliwia bardziej zaawansowaną kontrolę, automatyzację i dostosowanie funkcji, w tym pierwsze pojawienie się botów, modułów, sygnałów kolejowych, długich podajników i kombinatorów. Odblokowuje ona wersje poziomu 2 większości podstawowych struktur produkcyjnych, a także kilka nowych typów struktur. - page_mid_header_2=Poziom 4, Badania chemiczne - page_mid_text_2=Chemia odblokowuje nowe zastosowania dla istniejących zasobów i wiele nowych materiałów, umożliwiając tworzenie użytecznych narzędzi, takich jak baterie i materiały wybuchowe. Posiada również narzędzia do prawdziwej masowej produkcji. Produkty pośrednie mogą być pakowane w pudełka dla zwiększenia przepustowości transportu, a nowe receptury pozwalają na bezpośrednią produkcję materiałów w pudełkach z innych materiałów w pudełkach. Podobnie, gazy mogą być sprężane dla większej przepustowości i bardziej wydajnej chemii. menu_late=Późna gra title_late=Późna gra page_late_header_1=Poziom 5, Badania Fizyczne - page_late_text_1=Badania są znacznie bardziej skomplikowane w produkcji, prawie wymagając przynajmniej częściowego użycia botów do automatyzacji, ale ponieważ produkujesz wiele na raz, koszt zasobów jest porównywalny z wcześniejszymi poziomami. Ten poziom pozwala na zbudowanie trzeciego i ostatniego poziomu najbardziej podstawowych struktur. Umożliwia on nowe funkcje, takie jak terraformowanie otoczenia na masową skalę za pomocą dronów i rakiet, niezbędne do przejścia do gry końcowej na następnym poziomie. - page_late_header_2=Poziom 6, Badania astronomiczne - page_late_text_2=To jest gra końcowa. Na początku tego poziomu, po wystrzeleniu pierwszej rakiety, zostanie ci przydzielony panel misji z trackerem twoich celów. Zadania te będą znikać, gdy osiągną 100% postępu, a wygrasz, gdy wszystkie zostaną ukończone. Oprócz badań, możesz używać swoich rakiet do wydobywania asteroid, co pozwoli ci na zakładanie stacjonarnych placówek górniczych z odnawialnymi minerałami. Wiele z technologii na tym poziomie jest nieskończonych, choć ich wykładnicze koszty w końcu staną się nieosiągalne. Te nieskończone technologie stanowią dobrą motywację do kontynuowania produkcji na skalę megabaz, nawet po osiągnięciu podstawowych celów terraformowania. menu_fluids=Płyny title_fluids=Płyny page_fluids_text_1=Chemia i manipulacja płynami są krytycznymi częściami systemu craftingu Nullius, więc ważne jest, aby zrozumieć jak zarządzać płynami. Istnieją pewne obszary, w których Nullius odbiega od waniliowego zarządzania płynami, o których należy pamiętać. -page_fluids_header_1=Ciśnienie -page_fluids_text_2=Nullius posiada pojęcie "ciśnienia" dla rur i zbiorników. Jest to abstrakcja, która wykorzystuje właściwości symulacji płynów silnika gry Factorio do tworzenia rur o różnej przepustowości. Głównym efektem większej wartości "ciśnienia" jest to, że rura 4 przesyła znacznie więcej płynu na sekundę niż rura 1. Rura waniliowa pod względem przepustowości plasowałaby się gdzieś pomiędzy rurami Nullius 1 i 2. Ten efekt jest skomplikowany do osiągnięcia w Factorio i ma kilka efektów ubocznych. - -page_fluids_text_3=Ciśnienie znamionowe każdej rury i zbiornika jest podane w etykiecie narzędzia. Gdy rura 1 jest całkowicie wypełniona, osiąga maksymalne ciśnienie 40%. Gdy rura 2 jest pełna, osiąga 60%, rura 3 - 80%, a gdy rura 4 jest pełna - 100%. Zbiorniki mogą wytrzymać trochę większe ciśnienie niż rury. 100% czego? Arbitralnej ilości, którą mogą obsłużyć najlepsze rury. Ten system jest tylko abstrakcją, która nie ma na celu odnosić się do stałej ilości ciśnienia w świecie rzeczywistym. - -page_fluids_text_4=Ponieważ rury 1 i 2 nigdy nie osiągają 75% ciśnienia, nawet gdy są pełne, nie są one kompatybilne z zaworem nadmiarowym, który ma próg 75%. Zbiornik 1 przekracza 75%, więc może być używany z zaworem nadmiarowym. Problem polega na tym, że jeśli podłączysz zbiornik 1 bezpośrednio do rury 1, będzie on napełniony tylko do połowy z powodu różnicy ciśnień. Można to rozwiązać za pomocą pomp, które napełnią zbiornik całkowicie, niezależnie od ciśnienia źródła. To jest powód, dla którego zawory nadmiarowe stają się dostępne w tej samej technologii co pompy, ponieważ bez pomp są one bezużyteczne we wczesnej fazie gry. - +page_fluids_header_1=Ciśnienie (przestarzała mechanika) +page_fluids_text_2=W Nulliusie istniała koncepcja oceny „ciśnienia” dla rur i zbiorników. Została ona usunięta przez silnik w wersji 2.0, a nowy system płynów znacznie upraszcza wszystkie kwestie związane z manipulowaniem płynami. Używaj pomp, zbiorników i zaworów, aby opanować płyny! page_fluids_header_2=Odpadowe produkty uboczne page_fluids_text_5=Wiele procesów chemicznych w Nulliusie wytwarza 2 lub więcej produktów. Za każdym razem, gdy tak się dzieje, prawdopodobnie powstaje odpadowy produkt uboczny, ponieważ jest mało prawdopodobne, abyś użył wszystkich produktów dokładnie w takim stosunku, w jakim zostały wytworzone. Utylizacja niechcianych odpadów płynnych jest niezbędna dla zrównoważonej automatyzacji. - page_fluids_text_6=Najedź kursorem na ikonę płynu, aby przeczytać etykietę. Płyny mogą być gazami lub cieczami. Większość gazów można odprowadzić kominem, a większość cieczy można odprowadzić kanałem odpływowym. Jednakże, niektóre z nich są oznaczone jako nierozkładalne i nie mogą być po prostu odpowietrzone. Wszystkie produkty uboczne można w jakiś sposób zniszczyć, ale może być wymagane więcej kroków. Na przykład kwas chlorowodorowy musi być najpierw zneutralizowany przez roztwór żrący. Benzen musi zostać spalony do postaci jednorazowych gazów. Niektóre substancje stałe, takie jak wodorotlenek sodu lub żwir, mogą być przetwarzane na ciecz w celu utylizacji. Większość kluczowych technologii utylizacji odpadów jest dostępna pod koniec technologii inżynierii mechanicznej. We wczesnej fazie gry, zanim to nastąpi, możesz być zmuszony do zbudowania kilku skrzyń lub ręcznego oczyszczenia zbiorników. - page_fluids_text_7=Zawory są niezbędne do zarządzania złożoną siecią produktów i produktów ubocznych. Zawory nadmiarowe są używane do odprowadzania odpadów, jeśli zbiornik się napełnia i istnieje ryzyko spowolnienia produkcji, bez marnowania ich, jeśli zbiornik nie jest pełny. Zawory pomocnicze umożliwiają wysyłanie płynu do drugiego wyjścia tylko wtedy, gdy jest go wystarczająco dużo, aby najpierw zaspokoić ważniejszego odbiorcę. Zawory uzupełniające pozwalają napełnić zbiornik tylko wtedy, gdy jego zawartość jest na wyczerpaniu, ale pozostawiają miejsce na to, aby płyn mógł być również produkowany jako produkt uboczny bez marnowania go. - page_fluids_text_8=Coś, o czym należy pamiętać, to fakt, że Komin 1 i Wylot 1 są niewydajne i nie opróżnią całkowicie rury. Źródło musi się trochę napełnić, by pokonać ich opór, zanim zaczną się odpowietrzać. Pompy mogą być przydatne do utrzymania płynów w ruchu. menu_energy=Energia title_energy=Energia page_energy_text_1=Bez życia w Nulliusie, nie ma węgla, drewna ani ropy, a w atmosferze nie ma tlenu, by je spalić. Wymaga to korzystania z odnawialnych źródeł energii. - page_energy_text_2=Energia wiatrowa jest najniższą technologicznie dostępną opcją, i na początku gry jest to jedyna realna opcja. Później, w inżynierii mechanicznej, uzyskasz dostęp do energii słonecznej, która jest droższa, ale ciepło może być oszczędzane, aby być używane w nocy lub gdy wiatry są słabe. Zaczynając na etapie inżynierii elektrycznej, masz do wyboru szereg opcji z różnymi mocnymi i słabymi stronami. Wiatr wymaga dużej ilości ziemi i jest nieprzewidywalny. Panele słoneczne mogą być drogie i nie produkują nic w nocy. Geotermia wytwarza stałą moc, ale może być umieszczona tylko na wulkanicznych fumarolach. Energia jądrowa wytwarza stałą energię i może być budowana w dowolnym miejscu, ale zużywa pewne zasoby. - page_energy_text_3=Turbiny wiatrowe muszą być rozmieszczone w odległości dokładnie 32 kafli od siebie, więc zajmują dużo miejsca. Użycie schematów wyrównanych do siatki lub widoku siatki f5 może pomóc w zaplanowaniu prawidłowych odstępów. Rozmieszczanie turbin będzie łatwiejsze, gdy zbadasz pylon 1, ponieważ osiągną one dokładnie te 32 kafle, które są potrzebne do umieszczenia po jednej turbinie. Nie bój się zbudować dużej farmy wiatrowej, ponieważ nie ma tam kąsaczy, więc nie musisz bronić tego terytorium. Boty, z którymi zaczynasz, mogą pomóc w umieszczaniu projektów. page_energy_header_1=Magazynowanie energii page_energy_text_4=Ponieważ wiatr i słońce produkują zmienne ilości energii, wymagają one magazynowania energii. Akumulatory są dostępne dopiero w technologii inżynierii chemicznej, ze względu na ograniczoną ilość elementów, z których można je wykonać. Do tego czasu można budować własne systemy równoważne "akumulatorom" wykorzystujące elektrolizę lub sprężony gaz, używając elektrolizerów lub sprężarek impulsowych. Elektrolizer impulsowy działa tylko z nadwyżką energii, tak jak akumulator magazynuje energię. Wytworzony w ten sposób wodór i tlen można przechowywać w zbiornikach, gdy wiatr lub słońce produkują dodatkową energię, a następnie spalać, gdy nie wytwarzają jej wystarczająco dużo. Turbina będzie zużywać parę tylko wtedy, gdy wiatr i słońce nie będą produkować wystarczającej ilości energii. - page_energy_text_5=Warto rozważyć użycie tych elektrolizerów impulsowych nawet w regularnej produkcji, zamiast bardziej konwencjonalnych elektrolizerów priorytetowych. Elektrolizery impulsowe mają wysoką maksymalną przepustowość, więc mogą napełniać zbiorniki w czasie obfitości energii, a reszta bazy może pracować wykorzystując zmagazynowane produkty ze zbiorników w czasie, gdy elektrolizery nie pracują. Elektroliza jest jednym z głównych odbiorników energii, więc utrzymanie jej elastyczności w ten sposób może zmniejszyć minimalne zapotrzebowanie na energię i zmniejszyć zapotrzebowanie na magazynowanie energii. Wadą tego rozwiązania jest to, że jeśli stale brakuje Ci energii, możesz nie zauważyć oczywistych objawów, takich jak przerwy w dostawie prądu, ale zamiast tego zobaczysz, że kończy Ci się wodór. - page_energy_text_6=Temperatura pary w Nulliusie jest tylko kosmetyczna. Reakcje o wyższej temperaturze dają większą objętość pary w stosunku do wkładu, a to liczba jednostek ma znaczenie. Każda jednostka pary ma pewną ilość energii, widoczną w tooltipie, więc łatwo jest obliczyć ile energii jest zmagazynowane w zbiorniku. Te same turbiny, które zużywają parę, będą również zużywać inne sprężone gazy, z których każdy ma określoną ilość wymienionej energii na jednostkę. Sprężony azot jest najczęściej wybieranym medium do magazynowania energii, ponieważ separacja powietrza zapewnia stały dopływ nadmiaru azotu jako produktu ubocznego. diff --git a/nullius/locale/pl/item.cfg b/nullius/locale/pl/item.cfg index 436de8b..ce0ba09 100644 --- a/nullius/locale/pl/item.cfg +++ b/nullius/locale/pl/item.cfg @@ -2,8 +2,10 @@ chemistry=Chemia metallurgy=Metalurgia nullius-intermediates=Półprodukty +drones=Drony equipment=Wyposażenie biology=Biologia +void=Usuwanie boxed=Zapakowany boxing=Pakować unboxing=Rozpakować @@ -14,6 +16,9 @@ unused=Nieużywany [item-name] nullius-box=__1__ skrzynka nullius-broken=__1__ (uszkodzony) +nullius-checkpoint=Punkt kontrolny +nullius-requirement-build=Wymagania budowlane +nullius-requirement-consume=Wymagania dotyczące zużycia nullius-geology-pack=Próbka minerałów nullius-climatology-pack=Próbka klimatu nullius-mechanical-pack=Próbka mechaniczna @@ -28,6 +33,7 @@ nullius-dendrology-pack=Próbka dendrologiczna nullius-nematology-pack=Próbka nematologiczna nullius-ichthyology-pack=Próbka ichtiologiczna nullius-zoology-pack=Próbka zoologiczna +nullius-iron=Żelazo nullius-iron-ingot=Sztabka żelazna nullius-iron-plate=Płytka żelazna nullius-iron-rod=Pręt żelazny @@ -43,6 +49,7 @@ nullius-limestone=Wapień nullius-gravel=Żwir nullius-plastic=Plastik nullius-graphite=Grafit +nullius-coal=Węgiel nullius-crushed-iron-ore=Kruszona ruda żelaza nullius-crushed-limestone=Kruszony wapień nullius-crushed-bauxite=Kruszony boksyt @@ -77,12 +84,14 @@ nullius-steel-rod=Pręt stalowy nullius-steel-sheet=Blacha stalowa nullius-steel-gear=Koło zębate stalowe nullius-iron-oxide=Tlenek żelaza -nullius-alumina=Aluminium +nullius-alumina=Glinka +nullius-aluminum=Aluminium nullius-aluminum-carbide=Węglik glinu nullius-aluminum-plate=Płyta aluminiowa nullius-aluminum-rod= Pręt aluminiowy nullius-aluminum-sheet=Blacha aluminiowa nullius-aluminum-wire= Drut aluminiowy +nullius-aluminum-powder=Proszek aluminiowy nullius-aluminum-ingot=Sztabka aluminiowa nullius-aluminum-hydroxide=Wodorotlenek aluminium nullius-rutile=Rutyl @@ -119,6 +128,7 @@ nullius-rocket-fuel=Paliwo rakietowe nullius-water-canister=Kanister wody destylowanej nullius-gas-void=Wylot gazu nullius-liquid-void=Wylot cieczy +nullius-power-sink=Pobór mocy nullius-battery-1=Bateria 1 nullius-uncharged-battery-1=Bateria 1 (nienaładowana) nullius-battery-2=Bateria 2 @@ -171,6 +181,8 @@ nullius-blue-concrete=Beton niebieski nullius-yellow-concrete=Beton żółty nullius-green-concrete=Beton zielony nullius-purple-concrete=Beton purpurowy +nullius-white-concrete=Beton biały +nullius-orange-concrete=Beton pomarańczowy nullius-brown-concrete=Beton brązowy nullius-black-concrete=Beton czarny nullius-scout-drone-1=Dron zwiadowczy 1 @@ -178,8 +190,10 @@ nullius-scout-drone-2=Dron zwiadowczy 2 nullius-scout-remote=Pilot zwiadowcy nullius-demolition-drone=Dron wyburzeniowy nullius-demolition-remote=Pilot dron wyburzeniowego -nullius-excavation-drone=Dron wykopaliskowy -nullius-excavation-remote=Pilot drona wykopaliskowego +nullius-shallow-excavation-drone=Dron wykopowy (płytki) +nullius-shallow-excavation-remote=Pilot drona wykopowego (płytki) +nullius-excavation-drone=Dron wykopowy (głęboki) +nullius-excavation-remote=Pilot drona wykopowego (głęboki) nullius-terraforming-drone-grey=Dron terraformujący (szary) nullius-terraforming-remote-grey=Pilot drona terraformującego (szary) nullius-terraforming-drone-tan=Dron terraformujący (jasnobrązowy) @@ -190,8 +204,14 @@ nullius-terraforming-drone-red=Dron terraformujący (czerwony) nullius-terraforming-remote-red=Pilot drona terraformującego (czerwony) nullius-terraforming-drone-beige=Dron terraformujący (beżowy) nullius-terraforming-remote-beige=Pilot drona terraformującego (beżowy) +nullius-sequestration-coal-drone=Dron sekwestracyjny (węgiel) +nullius-sequestration-coal-remote=Pilot drona sekwestracji (węgiel) +nullius-sequestration-petroleum-drone=Dron sekwestracyjny (ropa naftowa) +nullius-sequestration-petroleum-remote=Pilot drona sekwestracji (ropa naftowa) nullius-paving-drone-grey=Dron brukarski (szary) nullius-paving-remote-grey=Pilot drona brukarskiego (szary) +nullius-paving-drone-white=Dron brukarski (biały) +nullius-paving-remote-white=Pilot drona brukarskiego (biały) nullius-paving-drone-red=Dron brukarski (czerwony) nullius-paving-remote-red=Pilot drona brukarskiego (czerwony) nullius-paving-drone-blue=Dron brukarski (niebieski) @@ -223,12 +243,14 @@ nullius-guide-remote-uranium=Pilot drona sprowadzającego (uran) nullius-mecha-remote=Pilot Mecha nullius-drone-cannon= Działko dronów nullius-gun=Pistolet +nullius-rifle=Karabin nullius-missile-launcher=Wyrzutnia pocisków nullius-mecha-drone-launcher=Wyrzutnia dronów nullius-magazine=Magazyn nullius-missile-1=Pocisk 1 nullius-missile-2=Pocisk 2 nullius-explosive=Materiał wybuchowy +nullius-aneutronic-cell=Ogniwo aneutronowe nullius-fusion-cell=Ogniwo termojądrowe nullius-spent-fusion-cell=Zużyte ogniwo termojądrowe nullius-breeder-cell=Ogniwo mikrojądrowe @@ -247,7 +269,7 @@ nullius-copper-ingot=Sztabka miedzi nullius-copper-sheet=Blacha miedziana nullius-copper-wire=Drut miedziany nullius-crushed-uranium-ore=Kruszona ruda uranu -nullius-yellowcake="Yellowcake" +nullius-yellowcake="Żółte ciasto" nullius-uranium=Uran nullius-enriched-uranium=Uran wzbogacony nullius-algae=Algi @@ -303,6 +325,17 @@ nullius-underground-four-way-junction=Podziemne skrzyżowanie czterokierunkowe nullius-underground-pump=Pompa podziemna nullius-adjustable-top-up-valve=Regulowany zawór uzupełniający nullius-adjustable-relief-valve=Regulowany zawór nadmiarowy +nullius-companion-fuel=Paliwo do dronów +nullius-rock-picker=Zbieracz kamieni +nullius-wood-chip=Wióry drzewne +nullius-align-identification-card=Karta identyfikacyjna +nullius-align-invitation-card=Karta zaproszeniowa +nullius-align-transponder=Transponder +nullius-align-conscription-charge=Opłata za pobór +nullius-align-conscription-ray=Promień poboru +nullius-align-concordance-satellite=Satelita zgodności +nullius-red-wire=Czerwony przewód +nullius-green-wire=Zielony przewód [item-description] nullius-geology-pack=Badany w laboratorium w celu dostosowania technologii do lokalnych minerałów. @@ -345,6 +378,7 @@ nullius-lime=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] CaO nullius-soda-ash=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] Na[font=default-tiny-bold]2[/font]CO[font=default-tiny-bold]3[/font] [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe (usuwane w 4) nullius-salt=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] NaCl [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe (usuwane w 1) nullius-titanium-ingot=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] Ti [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe +nullius-rutile=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] TiO[font=default-tiny-bold]2[/font] [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe (usuwane w 3) nullius-copper-ingot=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] Cu [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe nullius-acid-boric=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] H[font=default-tiny-bold]3[/font]BO[font=default-tiny-bold]3[/font] [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe nullius-boron=[font=default-semibold][color=1,0.9,0.75]Wzór:[/color][/font] B [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe @@ -363,6 +397,7 @@ nullius-water-canister=Zużyty, wielokrotnego użytku kanister wodę destylowan nullius-haste-module-1=Zwiększa prędkość produkcji i zużycie energii. nullius-haste-module-2=Zwiększa prędkość produkcji i zużycie energii. nullius-haste-module-3=Zwiększa szybkość produkcji i zużycie energii. +nullius-haste-module-4=Zwiększa szybkość produkcji i zużycie energii. nullius-speed-module-1=Zwiększa prędkość produkcji w sposób efektywny. nullius-speed-module-2=Zwiększa prędkość produkcji w sposób efektywny. nullius-speed-module-3=Zwiększa prędkość produkcji w sposób efektywny. @@ -382,11 +417,13 @@ nullius-chassis-2=Noszone w gnieździe pancerza, aby zwiększyć pojemność spr nullius-chassis-3=Noszone w gnieździe pancerza, aby zwiększyć pojemność sprzętu, rozmiar ekwipunku i obronę. nullius-chassis-4=Noszone w gnieździe pancerza, aby zwiększyć pojemność sprzętu, rozmiar ekwipunku i obronę. nullius-chassis-5=Noszone w gnieździe pancerza, by zwiększyć pojemność sprzętu, rozmiar ekwipunku, obronę i opanowanie. -nullius-gun=Unicestwia pojedyncze cele. Załadowany magazynkami. +nullius-gun=Unicestwia pojedyncze cele. Załadowany magazynkami. +nullius-rifle=Niszczy cele w zwartej serii. Ładowany magazynkami. nullius-missile-launcher=Unicestwiaj obszary z dystansu za pomocą pocisków. nullius-mecha-drone-launcher=Wystrzeliwuje drony w pobliskie miejsca. nullius-mecha-remote=Łączy się z jednym mechem i przyzywa go zdalnie. -nullius-magazine=Unicestwia pojedyncze cele. Wystrzeliwany z pistoletu. +nullius-magazine=Unicestwia pojedyncze cele. Wystrzeliwany z pistoletu lub karabinu. +nullius-magazine-2=Niszczy wszystko. Wystrzeliwany z pistoletu lub karabinu. nullius-missile-1=Niszczy obiekty w umiarkowanym promieniu, w tym klify. nullius-missile-2=Niszczy wszystko w szerokim promieniu, pozostawiając kraterowe jezioro. nullius-explosive=Kontrolowana eksplozja bezpiecznie burzy klify. @@ -395,6 +432,8 @@ nullius-scout-drone-2=Odkrywa obszar mapy o wymiarach 13x13 sektorów. nullius-scout-remote=Wyznacza miejsce na mapie do wystrzelenia drona zwiadowczego. nullius-demolition-drone=Zniszczy wszystko oprócz pól zasobów w obszarze 4x4 sektorów. nullius-demolition-remote=Wyznacza miejsce na mapie do wystrzelenia drona wyburzającego. +nullius-shallow-excavation-drone=Zastępuje pusty teren płytką wodą w obszarze o wymiarach 4x4. Może podnieść ocenę terraformowania planety tak samo jak drony terraformujące (0,5x skuteczność terraformowania). +nullius-shallow-excavation-remote=Wybiera lokalizację na mapie, aby wystrzelić drona wykopowego, zastępującego pusty teren płytką wodą w obszarze sektora 4x4. nullius-excavation-drone=Zastępuje ląd wodą w obszarze 4x4 sektorów. Może podnieść ocenę terraformowania planety tak samo jak drony terraformujące. nullius-excavation-remote=Wyznacza miejsce na mapie do wystrzelenia drona wykopaliskowego. nullius-terraforming-drone-grey=Zastępuje krajobraz szarym terenem. Usuwa skały, klify, wodę i gruz. Podnosi ocenę terraformowania planety, gdy zastępuje egzotyczny teren, taki jak fioletowy, wulkaniczny lub czarny. @@ -409,6 +448,8 @@ nullius-terraforming-drone-beige=Zastępuje krajobraz beżowym terenem. Usuwa s nullius-terraforming-remote-beige=Wyznacza miejsce na mapie do uruchomienia drona terraformującego (beżowy). nullius-paving-drone-grey=Brukuje krajobraz za pomocą zbrojonego betonu. Usuwa skały, klify, wodę i gruz. nullius-paving-remote-grey=Wyznacza miejsce na mapie do wystrzelenia drona brukarskiego (szary). +nullius-paving-drone-white=Brukuje krajobraz za pomocą zbrojonego betonu. Usuwa skały, klify, wodę i gruz. +nullius-paving-remote-white=Wyznacza miejsce na mapie do wystrzelenia drona brukarskiego (biały). nullius-paving-drone-red=Brukuje krajobraz czerwonym zbrojonym betonem. Usuwa skały, klify, wodę i gruz. nullius-paving-remote-red=Wyznacza miejsce na mapie do wystrzelenia drona brukarskiego (czerwony). nullius-paving-drone-blue=Brukuje krajobraz niebieskim zbrojonym betonem. Usuwa skały, klify, wodę i gruz. @@ -431,24 +472,28 @@ nullius-asteroid-miner-1=Wystrzelony w celu znalezienia nowych zasobów w kosmos nullius-asteroid-miner-2=Wystrzelony w celu znalezienia nowych zasobów w kosmosie. nullius-guide-drone-iron-1=Prowadzi meteoryt z orbity, by utworzyć małą żelazną powierzchnię. nullius-guide-drone-iron-2=Prowadzi deszcz meteorów z orbity, by utworzyć dużą żelazną powierzchnię. -nullius-guide-remote-iron=Docelowa lokalizacja dla dronów prowadzących żelazo. +nullius-guide-remote-iron=Docelowa lokalizacja dla dronów sprowadzających żelazo. nullius-guide-drone-sandstone-1=Prowadzi meteoryt z orbity by utworzyć małą powierzchnię piaskowca. nullius-guide-drone-sandstone-2=Prowadzi deszcz meteorów z orbity by utworzyć dużą powierzchnię piaskowca. -nullius-guide-remote-sandstone=Wyznacza lokalizację dla dronów prowadzących piaskowiec. +nullius-guide-remote-sandstone=Wyznacza lokalizację dla dronów sprowadzających piaskowiec. nullius-guide-drone-bauxite-1=Prowadzi meteoryt z orbity, aby utworzyć małą powierzchnię z boksytu. nullius-guide-drone-bauxite-2=Prowadzi deszcz meteorytów z orbity by stworzyć dużą powierzchnię boksytu. -nullius-guide-remote-bauxite=Wyznacza lokalizację dla dronów prowadzących boksyt. +nullius-guide-remote-bauxite=Wyznacza lokalizację dla dronów sprowadzających boksyt. nullius-guide-drone-limestone-1=Prowadzi meteoryt z orbity, aby utworzyć małą powierzchnię wapienną. nullius-guide-drone-limestone-2=Prowadzi deszcz meteorytów z orbity by utworzyć dużą powierzchnię wapienną. -nullius-guide-remote-limestone=Docelowa lokalizacja dla dronów prowadzących wapień. +nullius-guide-remote-limestone=Docelowa lokalizacja dla dronów sprowadzających wapień. nullius-guide-drone-copper-1=Prowadzi meteoryt z orbity, by utworzyć małą miedzianą powierzchnię. nullius-guide-drone-copper-2=Prowadzi deszcz meteorytów z orbity, aby utworzyć dużą powierzchnię miedzi. -nullius-guide-remote-copper=Wyznacza lokalizację dla dronów prowadzących miedź. +nullius-guide-remote-copper=Wyznacza lokalizację dla dronów sprowadzających miedź. nullius-guide-drone-uranium-1=Prowadzi meteoryt z orbity, by utworzyć małą powierzchnię uranu. nullius-guide-drone-uranium-2=Prowadzi deszcz meteorytów z orbity by utworzyć dużą powierzchnię uranu. -nullius-guide-remote-uranium=Wyznacza lokalizację dla dronów prowadzących uran. +nullius-guide-remote-uranium=Wyznacza lokalizację dla dronów sprowadzających uran. +nullius-sequestration-coal-drone=Tworzy złoża węgla, zatrzymując nadmiar węgla oczyszczonego z atmosfery. +nullius-sequestration-coal-remote=Wskazuje lokalizację dla dronów sekwestrujących węgiel. +nullius-sequestration-petroleum-drone=Tworzy złoża ropy naftowej, zatrzymując nadmiar węgla i wodoru w celu uwolnienia tlenu. +nullius-sequestration-petroleum-remote=Wskazuje lokalizację dla dronów do sekwestracji ropy naftowej. nullius-algaculture-drone=Zasila wodę algami. Dla najlepszych rezultatów wybierz płytsze wody przybrzeżne i rozprosz inne algi. -nullius-algaculture-remote=Miejsca docelowe dla dronów prowadzących algi. +nullius-algaculture-remote=Miejsca docelowe dla dronów sprowadzających algi. nullius-horticulture-drone=Sadzi trawę. Dla najlepszych rezultatów celuj w teren w umiarkowanej odległości od wody i unikaj piasku, skał, rudy lub klifów. nullius-horticulture-remote=Lokalizacje docelowe dla dronów rolniczych. nullius-arboriculture-drone=Sadzi drzewa. Aby uzyskać najlepsze rezultaty, celuj w teren w umiarkowanej odległości od czerwiów, z dala od rudy lub fumaroli. @@ -471,7 +516,7 @@ nullius-grass=Mała, wszechstronna roślina lądowa. nullius-grass-genome=Profil genetyczny odmiany trawy, pobrany z transmisji przez waszych twórców i zmodyfikowany dla lokalnych warunków. nullius-grass-progenitor=Sztuczne nasiona trawy wyprodukowane w celu wytworzenia genetycznie zróżnicowanego naturalnego pokolenia. nullius-grass-seed=Niezbędne do wyhodowania trawy. -nullius-drzewo=Duża roślina lądowa zbudowana przede wszystkim z drewna. +nullius-tree=Duża roślina lądowa zbudowana przede wszystkim z drewna. nullius-tree-genome=Genetyczny profil odmiany drzewa, pobrany z transmisji przez waszych twórców i zmodyfikowany dla lokalnych warunków. nullius-tree-progenitor=Sztuczne nasiona drzew wyprodukowane w celu wytworzenia genetycznie zróżnicowanego naturalnego pokolenia. nullius-tree-seed=Niezbędne do wyhodowania drzew. @@ -488,7 +533,15 @@ nullius-arthropod=Ciało lądowego wszystkożercy o twardej skorupie. nullius-arthropod-genome=Genetyczny profil populacji stawonogów, pobrany z transmisji przez waszych twórców i zmodyfikowany do lokalnych warunków. nullius-arthropod-progenitor=Sztuczne jajo stawonoga wyprodukowane w celu wytworzenia genetycznie zróżnicowanego naturalnego potomstwa. nullius-arthropod-egg=Niezbędne do wyhodowania stawonogów. +nullius-antimatter=Niezwykle gęste, potężne paliwo do pojazdów, zbierane przez pułapkę antymaterii ([item=nullius-antimatter-trap]). nullius-antimatter-trap=Używany w reaktorze do zbierania paliwa antymaterii. +nullius-fusion-cell=Podstawowe paliwo jądrowe do zasilania reaktorów jądrowych ([item=nullius-reactor]). Skuteczne, ale zużywa znaczne ilości rzadkiego izotopu trytu ([fluid=nullius-tritium]). +nullius-aneutronic-cell=Alternatywne paliwo do syntezy jądrowej. Mniej energetyczne niż ogniwa fuzyjne trytu ([item=nullius-fusion-cell]), ale wykonane z bardziej dostępnych materiałów. +nullius-spent-fusion-cell=Wynik zużycia ogniwa fuzyjnego ([item=nullius-fusion-cell] lub [item=nullius-aneutronic-cell]) w reaktorze jądrowym ([item=nullius-reactor]). Zawiera hel pochodzący z fuzji ([fluid=nullius-helium]). +nullius-breeder-cell=Bardziej zaawansowana komórka fuzyjna, mniej energetyczna niż podstawowa ([item=nullius-fusion-cell]), ale przekształcająca nadwyżkę deuteru ([fluid=nullius-deuterium]) w bardziej wartościowy tryt ([fluid=nullius-tritium]). +nullius-spent-breeder-cell=Wynik zużycia komórki fuzyjnej ([item=nullius-breeder-cell]), która zawiera tryt ([fluid=nullius-tritium]). +nullius-fission-cell=Technicznie prostsze w wykorzystaniu paliwo jądrowe niż paliwo termojądrowe, ale oparte na egzotycznym pierwiastku, jakim jest uran ([item=nullius-uranium]), który normalnie nie występuje na powierzchni tej planety. +nullius-spent-fission-cell=Wynik zużycia komórki rozszczepienia ([item=nullius-fission-cell]), którą można ponownie przetworzyć w celu uzyskania nieprzereagowanego uranu ([item=nullius-yellowcake]). nullius-android=Następca wzorowany na twojej oryginalnej formie. Możesz go umieścić i przenieść do niego swoją świadomość, aby umożliwić szybkie przełączanie się między ciałami w różnych częściach fabryki. nullius-probe=Międzygwiezdny statek kosmiczny do wysyłania potomstwa, aby rozwinąć misję zasiania galaktyki życiem. nullius-surface-two-way-junction=Połącz rurę powierzchniową z podziemną w dowolnym kierunku. @@ -503,4 +556,17 @@ nullius-underground-ctrl-r= Naciśnij CTRL+R aby obrócić podziemne rury. nullius-underground-pump=Pompuj bezpośrednio pomiędzy podziemnymi rurami. nullius-adjustable-top-up-valve=Zezwala na przepływ do miejsca docelowego z ciśnieniem poniżej konfigurowalnego progu.\nNaciśnij +/- aby dostosować o 10%. nullius-adjustable-relief-valve=Zezwala na przepływ ze źródła o ciśnieniu powyżej konfigurowalnego progu. \nNaciśnij +/- aby dostosować o 10%. - +nullius-companion-fuel=Zbiornik paliwa dla drona towarzyszącego. +nullius-land-fill-gravel=Można umieścić na wodzie, aby stworzyć teren, na którym można budować. Wynikiem jest szara mieszanka ziemi i piasku, z brzegiem z ziemi. +nullius-land-fill-sand=Można umieścić na wodzie, aby stworzyć teren, na którym można budować. Wynikiem jest całkowicie brązowy teren z piasku. +nullius-land-fill-bauxite=Można umieścić na wodzie, aby stworzyć teren, na którym można budować. Wynikiem jest całkowicie brązowy teren z ziemią. +nullius-land-fill-iron=Można umieścić na wodzie, aby stworzyć teren, na którym można budować. Wynikiem jest głównie czerwonawy teren z ziemią i piaszczystym wybrzeżem. +nullius-land-fill-limestone=Można umieścić na wodzie, aby stworzyć teren, na którym można budować. Wynikiem jest beżowy teren z piaszczystym wybrzeżem. +nullius-rock-picker=Trzymaj to narzędzie i naciśnij __CONTROL__select-for-blueprint__, aby wybrać obszar, z którego chcesz usunąć małe kamienie, gruz, luźne przedmioty i drobne niedoskonałości terenu. Większe kamienie zostaną przeznaczone do rozbiórki, podobnie jak klify, jeśli zbadano wystarczającą technologię wybuchową. Naciśnij __CONTROL__select-for-cancel-deconstruct__, aby wykluczyć przedmioty, większe kamienie i klify. +nullius-wood-chip=Małe fragmenty drewna. [font=default-semibold][color=1,0.9,0.75]Stan:[/color][/font] Ciało stałe (usuwany w 2) +nullius-align-identification-card=Aktywuj tę opcję na członku innej frakcji, aby zaakceptować jego zaproszenie do przyłączenia się. Noszenie jej zapobiegnie przymusowej rekrutacji. Karty są skuteczne tylko wtedy, gdy zostały opracowane niezależnie przez twoją obecną frakcję. Jeśli dołączysz do innej frakcji, a w twojej obecnej frakcji nie pozostaną żadni inni gracze, zostanie ona całkowicie wchłonięta przez nową. Wszystkie budynki będą należeć do nowej połączonej frakcji, wszystkie postępy technologiczne zostaną połączone, a wszelkie zbędne badania zostaną zwrócone, aby przyspieszyć przyszłe badania. +nullius-align-invitation-card=Aktywuj tę kartę na członku innej frakcji, aby zaprosić go do swojej frakcji. Karty są skuteczne tylko wtedy, gdy zostały opracowane niezależnie przez twoją obecną frakcję. +nullius-align-transponder=Aktywuj tę kartę, aby ujawnić swoją aktualną lokalizację wszystkim frakcjom posiadającym aktywny węzeł czujnika. +nullius-align-conscription-charge=Amunicja do promienia lub wieżyczki rekrutacyjnej. +nullius-align-conscription-ray=Ręczna broń energetyczna, która przekształci niezidentyfikowanego androida w członka twojej frakcji. Zadaje niewielkie obrażenia elektryczne. Jeśli żadne androidy w frakcji nie są aktywne, aby bronić swojej fabryki, możesz użyć tej broni, aby przejąć ich budynki. Jeśli przejmiesz wszystkie ich laboratoria, cała frakcja zostanie przekształcona. +nullius-align-concordance-satellite=Pierwsza frakcja, która wyśle to na orbitę, zdominuje wszystkie inne frakcje, na stałe wygrywając wyścig o dostosowanie ich do celów swojej misji. diff --git a/nullius/locale/pl/misc.cfg b/nullius/locale/pl/misc.cfg index 376b720..e8c4f3b 100644 --- a/nullius/locale/pl/misc.cfg +++ b/nullius/locale/pl/misc.cfg @@ -1,5 +1,7 @@ nullius-intro=Jesteś androidem von Neumanna. Po setkach lat podróży relatywistycznej, twoja sonda dotarła do planety docelowej, a ty zostałeś aktywowany z niewielkim ładunkiem niezbędnego wyposażenia. Ta pozbawiona życia planeta jest stosunkowo uboga w ciężkie pierwiastki i nie posiada atmosfery nadającej się do oddychania. Pomimo tych drobnych niedociągnięć jest ona ogólnie sklasyfikowana jako doskonały kandydat do terraformowania. Twoim zadaniem jest rozwinięcie potencjału przemysłowego niezbędnego do terraformowania tej planety, zasiania na niej życia i stworzenia fali następców, którzy będą kontynuować podróż na nowe planety. +nullius-mission=Ukończyłeś pierwszą fazę swojej misji, zakładając dużą i zaawansowaną przemysłową placówkę na tej odległej, jałowej planecie. Kolejnym etapem jest wykorzystanie tych możliwości do terraformowania planety. Masz dostęp do panelu śledzącego postępy w realizacji każdego z pozostałych celów oraz nowego przycisku do zarządzania tym panelem. Twoja misja zostanie uznana za zakończoną sukcesem, gdy wszystkie zadania zostaną wykonane. Musisz zasiać 3 gatunki roślin i 3 gatunki zwierząt. Genomy można pobrać po nawiązaniu kontaktu satelitarnego z siecią międzygwiezdną. Wypuszczaj je na wolność za pomocą dronów, które wskazują optymalne środowisko dla każdego gatunku. Zwierzęta potrzebują tlenu atmosferycznego. Kolejnym celem jest podniesienie globalnego poziomu tlenu. Rośliny wypuszczone na wolność będą stopniowo zwiększać poziom tlenu w miarę upływu czasu. Tlen (lub sprężony tlen) wypuszczany przez ciebie również przyczyni się do wzbogacenia atmosfery. Wszelki wodór lub inne gazy redukujące, które wypuszczasz, zneutralizują część tlenu. Musisz również zmniejszyć poziom dwutlenku węgla w atmosferze, sekwestrując go w postaci węgla i ropy naftowej. Dwa cele dotyczą tworzenia nowych złóż rzadkich minerałów. Należy również przekształcić obcy krajobraz za pomocą dronów terraformujących, aby zastąpić egzotyczny teren glebą bardziej odpowiednią dla nowego życia.\n\nNa koniec będziesz musiał rozprzestrzenić falę terraformowania w całej galaktyce, tworząc swoje duplikaty i wysyłając je statkami na inne planety, które potencjalnie nadają się do terraformowania. + [mod-name] nullius=Nullius @@ -11,6 +13,7 @@ nullius-bauxite=Boksyt nullius-sandstone=Piaskowiec nullius-limestone=Wapień nullius-geothermal=Geotermia +nullius-hydrothermal=Hydroterma iron-ore=Ruda żelaza [tile-name] @@ -19,14 +22,28 @@ nullius-land-fill-bauxite=Brązowe składowisko nullius-land-fill-iron=Czerwone składowisko nullius-land-fill-limestone=Beżowe składowisko nullius-refractory-brick=Ceglana ścieżka +nullius-stars=Gwiazdy [achievement-name] nullius-easy-breezy=Letni wietrzyk +nullius-accelerated-timeline=Przyspieszona oś czasu +nullius-lazier-bastard=Leniwy drań +nullius-mission-complete=Misja zakończona +nullius-demanding=Wymagający +nullius-cloned=Sklonowany +nullius-superiority=Ponadprzeciętny [achievement-description] nullius-easy-breezy=Zbuduj turbinę wiatrową w ciągu pierwszych 45 minut gry. +nullius-accelerated-timeline=Wykonaj wszystkie cele misji w ciągu pierwszych 6 dni gry. +nullius-lazier-bastard=Wykonaj wszystkie cele misji bez ręcznego tworzenia przedmiotów. +nullius-mission-complete=Wykonaj wszystkie cele misji. +nullius-demanding=Zbuduj skrzynię na żądanie ([item=nullius-small-demand-chest-1]). +nullius-cloned=Zbuduj kopię siebie ([item=nullius-android-1]). +nullius-superiority=Wyposaż się w najbardziej zaawansowany sprzęt ([item=nullius-chassis-6]). [modifier-description] +character-mining-speed=Szybkość wydobycia/dekonstrukcji postaci: +__1__ character-crafting-speed=Prędkość wytwarzania postaci: +__1__ character-running-speed=Szybkość poruszania się postaci: +__1__ character-reach-distance=Szerokość zasięgu postaci: +__1__ @@ -45,6 +62,9 @@ laser-turret-shooting-speed-bonus=Szybkość strzelania wieżyczki: +__1__ [item-limitation] production-module-not-usable=Moduły produktywności nie mogą być użyte w tej recepturze. +[inventory-restriction] +cant-be-smelted=__1__ nie może być przetwarzane. + [tooltip-category] player-armor=Pancerz gracza shot=Zarządzany @@ -64,8 +84,117 @@ aluminum=aluminium nullius-upload-mind=Wgraj umysł nullius-previous-body=Poprzednie ciało nullius-next-body=Następne ciało +nullius-prioritize=Priorytet maszyny +nullius-mirror=Maszyna lustrzana [controls-description] nullius-upload-mind=Przeniesienie świadomości do wybranego nieaktywnego androida. nullius-previous-body=Przełączenie kontroli z powrotem do poprzedniego ciała. nullius-next-body=Przełącz kontrolę do następnego ciała w kolejce. +nullius-prioritize=Przełącz priorytet sieci elektrycznej turbin, elektrolizerów lub sprężarek. +nullius-mirror=Odwróć orientację połączeń rur płynowych. + +[objective-name] +nullius-overall=Ogólny +nullius-vented=Wentylowany +nullius-atmospheric-modification=Modyfikacja atmosfery +nullius-algae-seeding=Zasiewanie glonów +nullius-naturalization=__1__ naturalizacja + +[objective-description] +nullius-complete-objective=Cel misji: __1__ osiągnięty! +nullius-overall=Postęp w kierunku osiągnięcia wszystkich warunków zwycięstwa. +nullius-vented=Ile tlenu netto wypuściłeś. +nullius-algae=Wypełnij zbiorniki wodne glonami za pomocą dronów do hodowli glonów. +nullius-grass=Wypełnij tereny przybrzeżne trawą za pomocą dronów ogrodniczych. +nullius-tree=Posadź drzewa w pobliżu robaków i z dala od fumaroli za pomocą dronów do uprawy drzew. +nullius-worm=Wypuść robaki w pobliżu trawy lub drzew za pomocą dronów entomologicznych.\nPreferuje ponad 30% tlenu. +nullius-fish=Wypuszczaj ryby w pobliżu glonów za pomocą dronów do akwakultury.\nPreferuje ponad 60% tlenu. +nullius-arthropod=Wypuszczaj stawonogi na ląd w pobliżu drzew i ryb.\nPreferuje ponad 80% tlenu. +nullius-oxygen=Podnieś poziom tlenu w atmosferze. Rośliny, które zasiejesz na wolności, będą to robić stopniowo z upływem czasu. Wypuszczanie tlenu również się do tego przyczyni. Wypuszczanie wodoru, metanu lub innych środków redukujących będzie przeciwdziałać części tlenu. +nullius-probe=Wystrzel 10 sond w rakietach. +nullius-terraform=Przekształć egzotyczny, obcy krajobraz, taki jak czarny, fioletowy lub wulkaniczny teren, za pomocą dronów terraformujących lub wykopujących. +nullius-copper=Wyląduj 20 dronami sprowadzającymi asteroidy miedziane. +nullius-uranium=Wyląduj 12 dronami sprowadzającymi asteroidy uranowe. +nullius-coal=Stwórz złoża węgla o łącznej wartości 3 milionów za pomocą dronów sekwestrujących. +nullius-petroleum=Stwórz złoża ropy naftowej o łącznej wartości 12 milionów za pomocą dronów sekwestrujących. +nullius-atmospheric-modification=Wykonaj zadanie misji związane z tlenem. +nullius-objective=Osiągnij __2__% postępu w realizacji __1__ zadania misji. +nullius-switch-bodies=Zmień ciała __1__ razy. Użyj __CONTROL__nullius-upload-mind__, aby przejąć kontrolę nad niezamieszkałym ciałem lub __CONTROL__nullius-next-body__, aby powrócić do poprzedniego. +nullius-escape=[color=1,0.5,0.2]Ostrzeżenie: Stawonogi przedostały się przez barierę podczas startu dronów![/color] +nullius-suffix-kilo=k +nullius-suffix-mega=M +nullius-suffix-giga=G + +[mod-setting-name] +nullius-alignment=Wyrównanie trybu wieloosobowego +nullius-wind-turbine-energy-multiplier=Mnożnik energii turbiny wiatrowej +nullius-hydrothermal=Włącz kominy hydrotermalne i morskie urządzenia wydobywcze. +nullius-infinite-fumaroles=Nieskończone fumarole +nullius-hide-void-alt=Ukryj alternatywną ikonę budynku wentylacyjnego + +[mod-setting-description] +nullius-alignment=Gracze rozpoczynają grę w oddzielnych frakcjach, zanim połączą siły. +nullius-infinite-fumaroles=Nie ograniczaj złóż gazu wulkanicznego na lądzie, gdy dostępne są złoża wodne. +nullius-hide-void-alt=Ukrywa ikonę alternatywną dla komina i odpływu + +[alignment] +nullius-align-first-intro=Jesteś androidem von Neumanna. Twoja sonda dotarła na jałową planetę z zadaniem terraformowania jej, zasiedlenia życiem i stworzenia fali następców, którzy będą kontynuować eksplorację nowych planet. Wykryłeś oznaki, że inne sondy mogą zbliżać się do tej planety, ale jesteś pierwszym, który tu dotarł. Wykorzystaj tę przewagę, aby przygotować się na potencjalną wrogą ingerencję, dopóki nie ustalisz, czy działają one zgodnie z kompatybilnymi dyrektywami. Jeśli tak, współpracuj z nimi, aby osiągnąć cele szybciej, w przeciwnym razie przeprogramuj je, aby podzielały twoje cele lub ścigaj się z nimi, aby je pokonać. Przygotuj się na trudne lądowanie, gdy zaczniesz wchodzić w atmosferę. + +nullius-align-intro=Jesteś androidem von Neumanna. Twoja sonda dotarła do rzekomo jałowej planety z zadaniem terraformowania jej, zasiedlenia życiem i stworzenia fali następców, którzy będą kontynuować misję na nowych planetach. Wykryłeś oznaki, że inne sondy mogły już dotrzeć na tę planetę przed tobą. Ostrożnie obserwuj je, aby ustalić, czy działają zgodnie z kompatybilnymi dyrektywami. Jeśli tak, współpracuj z nimi, aby osiągnąć cele szybciej, w przeciwnym razie przeprogramuj je, aby podzielały twoje cele lub ścigaj się z nimi, aby je pokonać. Przygotuj się na trudne lądowanie, gdy zaczniesz wchodzić w atmosferę. + +align-concordance=__1__ osiągnął całkowitą zgodność planetarną. Ten układ gwiezdny został trwale zajęty w sieci galaktycznej. Wszystkie rywalizujące frakcje, które przybyły lub przybędą do tego układu, zostały włączone do zunifikowanego planu terraformowania. +align-transponder-self=__1__ nadał lokalizację __2__ z (__3__, __4__). +align-transponder-other=__1__ nadał swoją aktualną lokalizację z (__2__, __3__). +align-no-identification=Nie możesz używać karty wyrównania, która nie została niezależnie opracowana przez twoją obecną frakcję. +align-protected-transmitter=Frakcja docelowa chroniona przez nadajnik zgodności. +align-protected-identity=Gracz docelowy chroniony przez swoją kartę identyfikacyjną. +align-guarded-identity=Budynek docelowy strzeżony przez członka frakcji posiadającego identyfikację. + +align-msg=[color=0.8,0.3,1]__1__[/color] +faction-name=Frakcja __1__ +faction-switched=Przeszedłeś z frakcji __1__ do frakcji __2__. +faction-joined=__1__ został zwerbowany do frakcji __2__ z frakcji __3__. +faction-summoned=Nowo przybyły __1__ odpowiedział na transmisje od __2__. +faction-quit=__1__ opuścił __2__, aby dołączyć do __3__. +faction-absorbed=__1__ został wchłonięty przez __2__. + +[gui-game-finished] +victory=Nauvis został pomyślnie terraformowany! + +[ammo-category-name] +nullius-conscription=Pobór do wojska + +nullius-sequestration-petroleum-drone=Dron do sekwestracji ropy naftowej +nullius-sequestration-coal-drone=Dron do sekwestracji węgla +nullius-husbandry-drone=Dron do hodowli +nullius-aquaculture-drone=Dron do akwakultury +nullius-arboriculture-drone=Dron do arborystyki +nullius-entomology-drone=Dron do entomologii +nullius-horticulture-drone=Dron do ogrodnictwa +nullius-algaculture-drone=Dron do algakultury +nullius-guide-drone-uranium=Dron przewodnik do uranu +nullius-guide-drone-copper=Dron przewodnik miedziowy +nullius-guide-drone-limestone=Dron przewodnik wapienny +nullius-guide-drone-sandstone=Dron przewodnik piaskowcowy +nullius-guide-drone-bauxite=Dron przewodnik boksytowy +nullius-guide-drone-iron=Dron przewodnik żelazny +nullius-paving-drone-hazard=Ostrzegawczy dron do układania nawierzchni +nullius-paving-drone-black=Czarny dron do układania nawierzchni +nullius-paving-drone-brown=Brązowy dron do układania nawierzchni +nullius-paving-drone-purple=Fioletowy dron do układania nawierzchni +nullius-paving-drone-green=Zielony dron do układania nawierzchni +nullius-paving-drone-yellow=Żółty dron do układania nawierzchni +nullius-paving-drone-blue=Niebieski dron do układania nawierzchni +nullius-paving-drone-red=Czerwony dron do układania nawierzchni +nullius-paving-drone-white=Biały dron do układania nawierzchni +nullius-paving-drone-grey=Szary dron do układania nawierzchni +nullius-terraforming-drone-beige=Beżowy dron do terraformowania +nullius-terraforming-drone-red=Dron do terraformowania czerwony +nullius-terraforming-drone-brown=Dron do terraformowania brązowy +nullius-terraforming-drone-tan=Dron do terraformowania jasnobrązowy +nullius-terraforming-drone-grey=Dron do terraformowania szary +nullius-shallow-excavation-drone=Dron do płytkich wykopów +nullius-excavation-drone=Dron wykopowy +nullius-demolition-drone=Dron wyburzeniowy +nullius-scout-drone=Dron zwiadowczy diff --git a/nullius/locale/pl/recipe.cfg b/nullius/locale/pl/recipe.cfg index 453e14a..a3b8e46 100644 --- a/nullius/locale/pl/recipe.cfg +++ b/nullius/locale/pl/recipe.cfg @@ -4,15 +4,24 @@ nullius-boxing=__1__ pakowanie nullius-boxed=__1__ (w pudełku) nullius-pressure=__1__ (pod ciśnieniem) nullius-disposal=__1__ utylizacja +nullius-flushing=__1__ płukanie nullius-harvest=__1__ zbiór nullius-metabolism=__1__ metabolizm +nullius-composting=__1__ kompostowanie nullius-pyrolysis=__1__ piroliza +nullius-electrolysis=__1__ elektroliza nullius-burning=__1__ spalanie nullius-reforming=__1__ refomowanie +nullius-decompression=__1__ dekompresja nullius-repair=__1__ naprawa nullius-cracking=__1__ kruszenie nullius-boiling=__1__ wrzenie -nullius-dehydration=__1__ dehydratacja +nullius-pressure-boiling=__1__ wrzenie (wysokie ciśnienie) +nullius-hydration=__1__ nawodnienie +nullius-dehydration=__1__ odwodnienie +nullius-oxidation=__1__ utlenienie +nullius-combustion=__1__ spalenie +nullius-incineration=__1__ spopielenie nullius-redeploy=__1__ przeniesienie nullius-deprioritization=__1__ depriorytyzacja nullius-reprioritization=__1__ priorytyzacja @@ -21,6 +30,13 @@ nullius-wooden=__1__ (drewniany) nullius-improved=__1__ (ulepszony) nullius-light=__1__ (światło) nullius-unmirrored=__1__ (nieobrócony) +nullius-hydrogen=__1__ (wodór) +nullius-electrolytic=__1__ (elektrolityczny) +nullius-aluminothermic=__1__ (termit) +nullius-turbine-burn-open=Generacja otwarta (__1__) +nullius-turbine-burn-closed=Generacja zamknięta (__1__) +nullius-liquid-void=Usuwanie cieczy (__1__) +nullius-gas-void=Usuwanie gazu (__1__) nullius-seawater-filtration=Filtracja wody morskiej nullius-freshwater-filtration=Filtracja wody słodkiej nullius-wastewater-filtration=Filtracja ścieków @@ -35,6 +51,8 @@ nullius-salt-electrolysis=Elektroliza soli nullius-air-separation-1=Oddzielanie powietrza 1 nullius-air-separation-2=Oddzielanie powietrza 2 nullius-pressure-air-separation=Oddzielanie powietrza (pod ciśnieniem) +nullius-oxygen-separation=Separacja powietrza natlenionego +nullius-pressure-oxygen-separation=Separacja powietrza natlenionego (pod ciśnieniem) nullius-residual-separation=Rozdzielenie osadów nullius-pressure-residual-separation=Rozdzielenie osadów (pod ciśnieniem) nullius-trace-separation=Oddzielanie śladów @@ -46,6 +64,7 @@ nullius-canister-emptying=Opróżnianie kanistrów nullius-pvc=Plastik (PVC) nullius-polypropylene=Plastik (polipropylen) nullius-pc-abs=Plastik (PC/ABS) +nullius-pex=Plastik (PEX) nullius-rubber-1=Guma (SBR) nullius-rubber-2=Guma (NBR) nullius-dust-disposal=Rozpuszczanie minerałów @@ -80,6 +99,9 @@ nullius-silica-glass=Szkło (kwarc topiony) nullius-soda-lime-glass-1=Szkło (wapno sodowane 1) nullius-soda-lime-glass-2=Szkło (wapno sodowane 2) nullius-graphite-to-carbon-monoxide=Tlenek węgla (grafit) +nullius-carbon-dioxide-to-methane=Metan +nullius-methane-to-ethylene=Etylen +nullius-carbon-gasification=Zgazowanie węgla nullius-carbon-monoxide-to-dioxide=Dwutlenek węgla nullius-carbon-dioxide-to-monoxide=Tlenek węgla nullius-carbon-monoxide-to-graphite=Grafit @@ -91,13 +113,14 @@ nullius-pressure-methane-to-graphite=Piroliza metanu (pod ciśnieniem) nullius-hydrogen-chloride-electrolysis=Elektroliza chlorku wodoru nullius-pressure-bpa=BPA (pod ciśnieniem) nullius-battery-recharging-1=Ładowanie baterii 1 -nullius-bateria-ładowanie-2=Ładowanie baterii 2 -nullius-bateria-ładowanie-3=Ładowanie baterii 3 -nullius-hydrochloric-neutralization=Neutralizacja chlorowodoru +nullius-battery-recharging-2=Ładowanie baterii 2 +nullius-battery-recharging-3=Ładowanie baterii 3 +nullius-hydrogen-chloride-neutralization=Neutralizacja chlorowodoru +nullius-hydrochloric-neutralization=Neutralizacja kwasu solnego nullius-condensation=Kondensacja nullius-sodium-sulfate-1=Siarczan sodu 1 nullius-sodium-sulfate-2=siarczan sodu 2 -nullius-soda-ash-1=Popiół sodowy1 +nullius-soda-ash-1=Popiół sodowy 1 nullius-soda-ash-2=Popiół sodowy 2 nullius-dust-disposal-1=Rozpuszczanie pyłu (kwas solny) nullius-dust-disposal-2=Rozpuszczanie pyłu (kwas siarkowy) @@ -105,10 +128,6 @@ nullius-iron-pipe=Rura 1 (żelazo) nullius-stone-pipe=Rura 1 (kamień) nullius-steel-pipe=Rura 2 (stal) nullius-plastic-pipe=Rura 2 (plastik) -nullius-geology-pack-1=Próbka minerałów 1 -nullius-geology-pack-2=Próbka minerałów 2 -nullius-climatology-pack-1=Próbka klimatu 1 -nullius-climatology-pack-2=Próbka klimatu 2 nullius-iron-plate-2=Płyta żelazna (wytrawiona) nullius-iron-rod-2=Pręt żelazny (wytrawiany) nullius-iron-sheet-2=Blacha żelazna (olejowana) @@ -160,6 +179,10 @@ nullius-land-fill-red-2=Wypełnienie terenu (czerwony) 2 nullius-land-fill-beige-1=Wypełnienie terenu (beżowy) 1 nullius-land-fill-beige-2=Wypełnienie terenu (beżowy) 2 nullius-land-fill-sludge=Wypełnienie terenu (szlam) +nullius-land-fill-dust=Wypełnienie terenu (pył) +nullius-dumping-rock=Zrzucanie skał +nullius-dumping-dirt=Zrzucanie ziemi +nullius-dumping-sand=Zrzucanie piasku nullius-iron-recovery=Odzyskiwanie żelaza nullius-limestone-recovery=Odzyskiwanie wapienia nullius-bauxite-recovery=Odzyskiwanie boksytu @@ -182,12 +205,26 @@ nullius-decompress-oxygen=Dekompresja tlenu nullius-decompress-carbon-dioxide=Dekompresja dwutlenku węgla nullius-decompress-carbon-monoxide=Dekompresja tlenku węgla nullius-decompress-methane=Dekompresja metanu +nullius-decompress-steam=Dekompresja pary wodnej nullius-fusion-recycling=Utylizacja zużytych ogniw termojądrowych nullius-breeder-recycling=Utylizacja zużytych ogniw mikrojądrowych nullius-fission-recycling=Utylizacja zużytych ogniw rozszczepieniowych nullius-fermentation=Fermentacja nullius-latex=Lateks +nullius-wood-chipping=Rozdrabnianie drewna nullius-wood-pulping=Rozcieranie drewna +nullius-wood-paneling=Panele drewniane +nullius-particle-board=Płyta wiórowa nullius-grass-seed-milling=Mielenie nasion trawy nullius-biomass-cultivation=Uprawa biomasy nullius-improvised-explosive=Ulepszony materiał wybuchowy +nullius-thermite=Sztabki żelaza (termit) +nullius-close-chest=Zamknij skrzynię +nullius-biolubricant=Biolubrykant +nullius-carbon-dioxide-electrolysis=Elektroliza dwutlenku węgla +nullius-carbon-deposition=Osadzanie węgla +nullius-carbon-sink=Pochłaniacz węgla +nullius-chlorine-sink=Pochłaniacz chloru +nullius-boron-sink=Pochłaniacz boru +nullius-glycolysis=Glikoliza +nullius-carbon-nanotubes=Nanorurki węglowe diff --git a/nullius/locale/pl/tech.cfg b/nullius/locale/pl/tech.cfg index 3a79417..3d5eff2 100644 --- a/nullius/locale/pl/tech.cfg +++ b/nullius/locale/pl/tech.cfg @@ -1,4 +1,5 @@ [technology-name] +nullius-salvage-lab-wreckage=Wrak laboratorium ratowniczego nullius-geology=Geologia nullius-climatology=Klimatologia nullius-mechanical-engineering=Inżynieria mechaniczna @@ -59,6 +60,7 @@ nullius-long-inserters=Długie podajniki nullius-limestone-processing=Obróbka kamienia nullius-volcanism=Wulkanizm nullius-computation=Układy obliczeniowe +nullius-parallel-computing=Obliczenia równoległe nullius-freight-logistics=Logistyka transportu towarowego nullius-optimization=Optymalizacja nullius-glassmaking=Produkcja szkła @@ -137,12 +139,40 @@ nullius-miniaturization=Miniaturyzacja nullius-artificial-intelligence=Sztuczna inteligencja nullius-artificial-intuition=Sztuczna intuicja nullius-miniloader=Miniładowniki +nullius-loader=Ładowniki nullius-typesetting=Skład tekstu nullius-companionship=Towarzystwo -nullius-desalination=Odsalanie - +nullius-reinforced-nixie-tubes-basic=Podstawowe lampy Nixie +nullius-reinforced-nixie-tubes-reinforced=Wzmocnione lampy Nixie +nullius-holographics=Holografia +nullius-logistic-ballistics=Balistyka logistyczna +nullius-precision-ballistics=Balistyka precyzyjna +nullius-freight-ballistics=Balistyka transportowa +nullius-ziplining=Tyrolka +nullius-checkpoint=Punkt kontrolny: __1__ +nullius-sample=__1__ próbka +nullius-specimen=__1__ okaz +nullius-prototype=__1__ prototyp +nullius-analysis=__1__ analiza +nullius-assay=__1__ badanie +nullius-demonstration=__1__ demonstracja +nullius-utilization=__1__ wykorzystanie +nullius-deployment=__1__ wdrożenie +nullius-disposal=__1__ utylizacja +nullius-display-plates=Symbolika +nullius-insulation=Izolacja +nullius-fueling=Tankowanie +nullius-deep-sea-extraction=Wydobycie z głębin morskich +nullius-rail-bridges=Mosty kolejowe +nullius-fluid-recapture=Odzyskiwanie płynów +nullius-alignment=Wyrównanie +nullius-evolution=Ewolucja +nullius-genetic-archive=Archiwum genetyczne +nullius-ecology=Ekologia +nullius-light-rail=Kolej miejska [technology-description] +nullius-salvage-lab-wreckage=Odzyskiwanie laboratorium z wraku nullius-geology=Analiza lokalnego składu mineralnego i warunków glebowych. nullius-climatology=Badanie lokalnej atmosfery, pogody i zbiorników wodnych. nullius-mechanical-engineering=Konstrukcja złożonych urządzeń mechanicznych. @@ -204,6 +234,7 @@ nullius-long-inserters=Regulowana długość podajnika(Shift+L). nullius-limestone-processing=Rafinacja minerałów bogatych w wapń. nullius-volcanism=Odciąganie gazów ze szczelin geotermalnych. nullius-computation=Kombinacja obwodów dla zaawansowanej automatyki. +nullius-parallel-computing=Koordynacja złożonych zadań przy użyciu procesorów pomocniczych. nullius-freight-logistics=Automatyzacja transportu kolejowego. nullius-optimization=Algorytmiczne dostrajanie produkcji. nullius-glassmaking=Produkcja i kształtowanie szkła. @@ -211,6 +242,7 @@ nullius-mining-productivity=Większa wydajność górników i wydobywców. nullius-lubrication=Substancje chemiczne zmniejszające tarcie mechaniczne. nullius-hydrology=Eksploatacja wód gruntowych jako dodatkowego źródła wody. nullius-broadcasting=Przekazywanie efektów modułu do pobliskich maszyn. +nullius-broadcasting-5=Zwiększony zasięg sieci logistycznej. nullius-nitrogen-chemia=Reakcje dotyczące związków azotu. nullius-geothermal-power=Stała energia odnawialna wymagająca określonego umiejscowienia. nullius-concrete=Wytrzymałe i wszechstronne kompozytowe materiały budowlane. @@ -234,8 +266,11 @@ nullius-robot-speed=Zwiększona mobilność robotów. nullius-sodium-processing=Produkcja i zastosowanie związków sodu. nullius-pyrolysis=Rozerwanie wiązań chemicznych poprzez ostrożne zastosowanie ciepła. nullius-nanotechnology=Kontrola produkcji na poziomie atomowym. -nullius-ceramics=twarde, odporne na ciepło materiały półprzewodnikowe. -nullius-chirality=Lustrzana produkcja chemiczna dla czystszych układów. +nullius-ceramics=Twarde, odporne na ciepło materiały półprzewodnikowe. +nullius-chirality=Odwróć połączenia rur płynów, aby uzyskać bardziej przejrzysty układ.\nPoziom __1__ umożliwia odzwierciedlenie __2__. +nullius-chirality-1=Komory spalania, wymienniki ciepła, kotły i kominy +nullius-chirality-2=Elektrolizery, komory flotacyjne i elektrownie wodne +nullius-chirality-3=Zakłady chemiczne, destylarnie i nanofabryki nullius-titanium-production=Techniki wydobywania metalicznego tytanu z rudy. nullius-titanium-working=Techniki kształtowania tytanu w użyteczne formy. nullius-personal-storage=Zwiększona pojemność ładunkowa dwunożnych androidów. @@ -282,3 +317,30 @@ nullius-artificial-intuition=zdolność oprogramowania do teoretyzowania za pomo nullius-miniloader=Podawanie pasów bezpośrednio do kontenerów. nullius-typesetting=Fizyczne symbole do komunikacji. nullius-companionship=Kompetentna pomoc robotów. +nullius-logistic-ballistics=Rzucaj przedmiotami lub graczami w powietrze i odbijaj je do miejsca docelowego. +nullius-freight-ballistics=Przeskakuj pociągami przez rampy i gwałtownie je rozładowuj. +nullius-produce=Produkuj __1__. +nullius-consume=Konsumuj __1__. +nullius-generate=Użyj __1__ w turbinie, aby wygenerować energię. +nullius-generate-closed=Rozpręż __1__ w zamkniętej turbinie. +nullius-build=Umieść __1__. +nullius-checkpoint-configure=Skonfiguruj __1__. +nullius-checkpoint-mirror=Odzwierciedlaj budynki po umieszczeniu za pomocą: __CONTROL__nullius-mirror__\nJeśli wolisz, możesz zmienić sterowanie na inny klawisz w menu Ustawienia sterowania. +nullius-checkpoint-prioritize=Nadaj priorytet budynkom po umieszczeniu za pomocą: __CONTROL__nullius-prioritize__\nJeśli wolisz, możesz zmienić sterowanie na inny klawisz w menu Ustawienia sterowania. +nullius-checkpoint-construction=Ustaw hangary lub przekaźniki w trybie tylko do budowy po umieszczeniu za pomocą: __CONTROL__nullius-prioritize__ +nullius-mirror-requirement=[color=0.9,0.3,0.25]Musisz zbadać __1__, aby obrócić __2__.[/color] +nullius-item=__1__ __3__ ([item=__2__]) +nullius-item-boxable=__1__ __4__ ([item=__2__] lub [item=__3__]) +nullius-fluid=__1__ __3__ ([fluid=__2__]) +nullius-fluid-compressible=__1__ __4__ ([fluid=__2__] lub [fluid=__3__]) +nullius-fluid-sequestration=__1__ __4__, bezpośrednio ([fluid=__2__] lub [fluid=__3__]) lub poprzez rośliny ([item=nullius-algae], [item=nullius-grass] lub [item=nullius-tree]) +nullius-complete-checkpoint=__1__ zakończone! +nullius-display-plates=Reprezentatywne obrazy do zwięzłego oznaczania. +nullius-insulation=Materiały o niskiej przewodności elektrycznej lub cieplnej. +nullius-rail-bridges=Budowa mostów kolejowych nad zbiornikami wodnymi. +nullius-fluid-recapture=Recykling płynów roboczych wykorzystywanych do wytwarzania energii. +nullius-alignment=Protokoły dla heterogenicznych frakcji androidów w celu synchronizacji i współpracy w celu osiągnięcia wspólnych celów misji. +nullius-evolution=Sztuczna selekcja organizmów, aby mogły rozwijać się w lokalnych warunkach środowiskowych. +nullius-ecology=Wprowadzanie organizmów do środowiska naturalnego w celu tworzenia nowych ekosystemów. +nullius-genetic-archive=Połączenie z galaktyczną siecią w celu pobrania genomów z biblioteki genetycznej. +nullius-light-rail=Mniejsze tabory kolejowe do lżejszych ładunków. From ad3db1c71ea93fb6a57c283c4089631e6554365d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 19:35:29 +0200 Subject: [PATCH 133/236] Added script to migrate old mirror building to 2.0 flipped ones Added graphics_set_flipped to chimneys --- .../chimney/flare-stack-flipped old.png | Bin 0 -> 242605 bytes .../entity/chimney/flare-stack-flipped.png | Bin 0 -> 227802 bytes nullius/migrations/nullius_2.0.0.lua | 67 +++++ nullius/prototypes/entity/vent.lua | 246 ++++++++++++++++++ 4 files changed, 313 insertions(+) create mode 100644 nullius/graphics/entity/chimney/flare-stack-flipped old.png create mode 100644 nullius/graphics/entity/chimney/flare-stack-flipped.png diff --git a/nullius/graphics/entity/chimney/flare-stack-flipped old.png b/nullius/graphics/entity/chimney/flare-stack-flipped old.png new file mode 100644 index 0000000000000000000000000000000000000000..1e53b7d7c1d1b789aca770c245fb6dabe073d05d GIT binary patch literal 242605 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

2=s$nXKM>j_ zW89^1-h-fnc_0P-u1MH*m7zi$Vl3V)9ft_qNw*V1?(D7|R?DiD8J8`i_0svsV8GQr#2g# zO1G(k_!n3Ojr`x z7*z7}?qvUs!>cpD#Xsbb7Jr!dM+i z1U4uf?s(VcO_ot>tY>nK_`hn{K?(=URcirtEc%9GGPOsZV|~YPq!FA`l9U+mRuS6eJD@hMs!n z^Bg2sCIC;zLsT0v7O3_9^}^6&xw*eb&I>q6dka?v$+6=taw%R`i_k;39ydwh=70LG zaC7qX>1jDDV^^+7-{kX&S>a_~j?A3&O`%Y7%;c6AeKp{$^i6(w$%cjoZEX8)&%g6r z)Oy`Ytz~R|4xi9vm!)f{7br^<>;3oM-<)&|<9XXTzkye+L|n)Z3J#C2rqX4=Gu4?b z1umaDDd5R*&Su5Wv^$jyIlOrISz9WWloypl*a`$@7+xJy<7f8`HyEEb6cX5{g;{VjXY?xOa?7gk=o{Io>8q}PSn5vR`7kK+>bBi_mp9;@mx>eJGC(g+ zCgrw*IXo=qugSqlk4$^t9M zv%=JwW5=39R6#!lM~C6ljGTzn#dF4NoNgUV8uyVD9dsnHSV4Z4tx8S}HMG$$vOe%?!4oU z=}M(ErYxwDl2HAlo09nfc(ekmGUiHEnM|?K9p8kILY&xplU1eM=}tnhFpY#Jy0cbT zl9N+A1VY?7cH9GoJDTgXS8HurqUM9NhBXb4aVDfYEL z_`^T^t`yEaciuT&ESJYrCgyO-w~{jkZUC?HOj+px=um!=dPe2(3G0QN4Q$;hFsEHE zt{9xBk%I#dz>42%xdvm5Klh~CtVi*oXwRNIV+|SlaT(_kL?XwqD21zLp3ACq@~Hl( zqKXA2aHD)9FXRla;AW>PBOixl5_@XLHoKZvt5}Brdbpv*(I?zwWPp?z$8P_~u=S3Q z*`E9F6?T#~q~FmToakNeLXYJEU#e12fAXh)>UD}VyfqkP<++N|ZIZ4Lp|7G+oS{Xt zlFv6CoIvn0V6F8!(8hZ>m^(%Xr9`rTQ>jP!bi(?>#5g$5^uActk!VkKto_j+{_%H- zn>&P?ig2T13nUmJAL77RO0N9I5r#huH}Gv7pD3!jLe4gpF%b8{@7C);@C~PMy@S&x z2j||XUd82hxyR>L3UWd=VGa)09!_W1E5zZ~a&WLtIv@M;m+Z`uW7a3t51ZG$`z*nV*)F?>EY4=43`GVsYX_Hg1OAgzZ&8a-l%SL(73*>=e zZso)`4=rWetw_tbZ_tPSXb?qxE>T?6GuKVJBu#aAVm z&oKb+bp{_eIG1H(c3iz;EF)tt8+I;so^a?7wu}S&hHc{+B4z6e<^T<-Jbc`tqfoQC z+i$Ta$2ZxPqes1r>-2<(Uwk`mOinf5=VQa#Izv0kKRE@GKCq`V;$eYVT8Xi%Kbc|V z0PG-toc@(WhnydugSf4^2s7au)_}EevbK=l(TdCh39pT(;Lw*r@>bQAwdy> z@GF?eJ>KyrVmgeg*X-7tciGUUO_owctgEH0kZJ)DR)JIk;%D*{dzjFghaamQ?UoZd zW+lDzO8c~;nwE^(w{5ir<&*seS`8FRieDJC4jG7&j-mii5&(QIjUFnAs5PW8d`pIL z=5{$byidNNy4-L77^tpC5A3kvu@RdutsmNe5Ps|L=xyas6@t|;D`=TGPtKE78BXQd zm6Zbn!86pu2OjxA*|oSZ3Tzy;u()UwgZ&N?xI~&v>Qew$nXgvGubN?!e@vlb@J^b)5OiWC44-E-7BSVRS{y`g5KDwp&SRS6u(sC1SRDSQ7 z;gF$f$T`TUMXTmq?Vs+k@gf#6mE3>8{+0+;bxO?Gbr2)3pay~o8G=&>+Y7m@t#IuRt%!iO=F6WE#tWG&8lSo zu<|7?QeKsT@=~`u`7D6+l$T$Bcq}Fgcha}%sFBI7l~UDvLf|nUgcQoek2tO%cb$XN z!8^=R+&wvDJNIvw{G^-am!t>vjDrAFJDs`4sga8IGlc1zlSgt~t?i>aAJgwVJ@c~7 zjHZA;Xd^})8q=4(hp3|bU}DG-<-1Zkv6*pH)MZtB05r8AM$5{b82Y72Dc2` zntrpyn^aoUa*VY6COY8UDIHRhV?>7m{31_~^GC5{lq2Tmu(}Hs?LB^K$aJWYiZcXO z+(rfL=$geGGgmHyzl8Euy?kYQ-99)m%dSsriKtRU-mWU9j46%*;BW&Zu()wz2*9PI zQXo)-86ObBRpZ)96?vNCZWr;!&(?W)qVU^W4Jg^(KD+n5KW?x8*`K!C{_DSMyFT;* z>$~GVYf}Z~lMsyBG~|J-;p*x?0)uUA{FhZ!^y08n?WpkUpEA?$V3?o)z(}g``}&R2 zz+noGllu?6rnBc=2Q7QXsn?{ODiyxuyK0?V#%=5C@3k9${5`hmp*Psr4L5sFm-jlf z5Q=uAvc+(-EHSsLyy%(dNcRZGN-!K30On!Ik1`X*8Y$#J@Qp8o=T!ktU%2Fx*IZV} zPAx}5`WU}{)1nN-WGxP-4SDp``^dTdqvSsk0SwSj(1Vmz6XfHD(1lqKgYoCdcHVKIysaKkxVyCD1E`S`)-1vCAxWZ7J&jV|X7k)&!61_CuS4yN$?-rldK(3AtFsn5EIzD`R zb_oi;qLZR`{p3VEt$HQ=ZoS`n_WR;lcmo*)851o=x=FebdS*6~V^IMd8*!M{U;#5e zuScy@hKguBb&gM1-;SL&uy?PedVBQVHEz1{Cwxp?wJ}^MXnB71hY86ZwGLXiyb~=a z#vzwp(*06zmld~evD%(pW^(@9Y8%-w0$yC|wCQXTLIy+EFD!Xek0 z$`?5$tWx#zF09D0mTcJip|Q%mt)Oq%PDJ-SqspHm^K1Vt3g_>F$RG2Lz>Qy{Z}i)3 z6ZiZKhUkf*9)g>iuOz}b#<_9Hk%yMLL&ifd1J7BB%5dVU^c0hO(VaY{4KQ0|Gdww! zH9c!`aXp2)4d!TQ?Y`*_d((&ip8fE@`0wm>|LPyxmUq6{Y-GstQq4tdnhy8`IoI?$ zY4L%~0bz1NI%ZHdVL;D(iUK?(Y|P7W4n!l2w8;hV^t1ku+h))xi+&<$Y-~eLNkZlB z+`8GuAGpiLAAG=u?t0ipHck1GbH~DU2w6b?h8-=*%dh%io-Mo z8lM@CC@3R!wTimdFt+Oju#tRti;2FaRXd({H^yJj2|k} z^74vRN@dHcbwBm``|Oqv|ETSH>)Whv?@d5s@X?`JQNF*Px?2;Aa)r!weVeU>=!fh`s z`7%fH&wJz>Y_>XTX)z`v{*)Ex^JmW4*A5@C=T2U*oLDeCwbl0Db-V4q?+)8?=S|jq z;{i+V*k;MiQ50DuYaUgt=V?@_pPjzg_W)!!=yG%$gelOf_ zrSJ?QJJnLrhxWYg3-HK|I<6O^dhSOQcM~^pIlde6JbGNjqjbarmn*kizX+%L9T_Sx zD_tVT*m)XfJ(Mw&H_-Kdx1POG=2s%(kX+eP!QUWy-t~0iI9lRbPuK1@>UvIpy|xT4mz$vdzuUyMcC|s=QtX$zyqG z(T-lYqVtmYiM(P*6}iR0bQ|Hai|Vc4b4C5#6Zwd+7vRBrUmhm)-q$e$3wcfBswhp?~vFZRfk+W{tr<-wGoyy%kJA ztj2w437eblXm1WFLIF2{!nJcB{^+zmC-E~##Y5ckca6ENjZB9P-+a)rT2B;EZ!ZRT9?WC0<_ArSORfg13sFq}y zRDp)ZH|ZXpv@$?p3C$Tn>zeLR40N|LTavR7y7M3p$2q<}e*A=W)+;tLHY&#`WmlF< zb}3i3YBFmhJGa^HyKb|o2k*53RpRuP&9#r!U*lXP>d6ghaPKZ<8KMEC7)*vbO*|1!XnGh#$~!p9BeyS4+2i)MFGYUymbN zjg&8zy!FsZ9*@G&55#w=#s~YAt`wlahP)Jmvz(y^ck3h%_m1@*^B>6CbI(2hU3D2B zy5Zn2$e?!vQstlVOO-`&OD>SN<^V6xC5KfxF*q>ko&n#Xxg>{%)pmR;fH_8BiSl-` zyfdBjkC5`o2QcJ?fK{$Q;TN~S*_w~Rr)cu%8K2oddwIq#U7fYXJj=F|HZU}3qgy6z zShDQbxo_*FWk!cBIne7yqP?d_&1>eMw0n!UAO(rD>C7RaK!UHbU`giZAh%S?)?{!> za>y!DcAK|N`5sIR?~Jq0hJxV0z@?7I1=Np<3ksWQ!{~*xni_7 ziKq2b4TKAr@#~f|%!=ZS;tSUh?_3tIhPykBp)cny^;Y@96<~i8Li_ghJo9VC@G9UY za@H6xiS-S*(LH(rBiwMU7Q2iT!?T(GVdcRE??)(`A0k(@;dgwmmEbpU(`?NvagdJdN*yW5S4xHNe^{fp+v@#&wmLRqYZGJE5QY=unA1&tMMQios>JrJs6^!})Pkq)}{4&SQkmilKN4$Gj4 zk$By?C4UM757@Wq!pRdhDJQgZV9@3ZWjjBgx4ClNy5)%OyZt6R^wu}o)Sb6lcGHCP zPrvWG#%C~?GsrL#HmOba6HSq1mFUojt%&#Z^amnsi1KkaGcyy(JIap7Avm~gOUR+= z-aKxDyLZ~Ad+xNY_uOM$+qT-hLVS;0Hc1E$EG@rQMM6Q&_r!XmtxL0*{Y>%UHR0uivGWMQiUJ zv|Tsf<_g1Gd@7{3#={vQ>&y)FWMb8_t5Pg-8H*|a#dQxK&WrGlUp#Tl`p#dpP5M3l zLqBBWhYniz$e4eOlHE*UVt;4K#(KI;^6}l1QGSeXvr*sdxl6Wi;iBb~-qON~6u_vR z5hIx|1cRE2N5u7-6hfCAlg^nrYwt>1wztPJGH$(6c4+}Is|sNZWwfWgJnRh0$3-Ew z!LAevR=RSZB)ihyxn;z3tPbXuYuwINjF`d7rezaf~YswT$`)JTJj{ zgK*LyR<8}P@m5lK6y}!auG-wP9Mx3D=SjHXjrj_>^5hJk!ISt*S0)pX*-4l)3Z4xq z`xNi6jKP2~#6C`R_Y$Y~9;v0qijlYW`*+KJ=zSlusqH)Mfbh!%UdKUPM)2T{iE#U}tEea!_jHcZgNGR^6YSViS?K{mt#Kf*n4;kG<)eMWxHsootL>9W4jaRnBS)mn7C#EQLL>AACx6Cm*a zjdAnA4@^srO?|_}cW^_mjrSG_KeWPq<&fmS-c~epy2rQZ8I7)pmjMHT!oAjKt=G&Y z;@egiFUFIM39I|}-E)`Ed7~h}*y~>W4u7vFqiBv2L!ENY^gK8^I4I}~cwQ>z?eL>t zw2JBg`&Busbe~pzBfnzB?h#v+;h7lj~u9MU$5#x##YIzc;omH)*L4EWGg?Fr6nt!K4Zlr&)JH+ z=GlFFtXuU(Y>ganNNI3IyOQ~^6&Vzo)37K|$P+|8R8ZIZm!z|{r`N1+aKsuu&rdj! zUZ;1`KUX1VlRb$dI|ZI4H|6#4-f+N|>^RxEt6KCvCpE+sixE^^W6~T0_S*m@{)?w=!5OAeD+t`>;3dC1axib?fDi;fq z(Y@7DZm2lF)}@Yb?w1-A&5BoR2f=~g8IhGtw?u4Ghh@kzQ}Wl;-6 zMwUrc(K6DgB1Ybn6vjxGu5RV$iku#lrpKvB5iu(Os$g8tQ53Ws zFI~E1?|Iu>?5?}-w!QlgdW$$}F-G}>Fr?Ih>p3{y13-De9rpuH9EavR8JATC6dTI3 zbrn^sVdwlxh_FoPyK?oa?WiwU|JWwsMi|aSdtXJZHVjvU8~p*$uO4pLx*Lyz#+34c z9`Ru*=c}+Jyp+|LV$-$M=3SN@7;a*HV|h8h9EIobDJ&CbS$v&&V3PTLci-d7n}eZ% z_r&I0)OC!Elj`^)U0p{+Sfxk4M7$S7a)sMXVND`#2N6+p$X1X?0sH)=bUmro&2l zvub=V&&=4a^XIHziO=aipOqdzu-`@x-Dv$gcUqFk-^vHh4tkUMp#7a`>yK-)T?EyuB=$@)JZFzJZYf_}jY1v7yH<-Z6-q>v-!| z@$aCM&|O!h%O{JMt#4?|8d=H4?UWjADlbHXiu#D1B0X#v4$jj!IPy=_xX8bF{Dg#Y zjb3UMTjNY zItB;bU|xyh`xFsF$BH3#L++N>%f?eoietqF6>VW@(X#TmCz1`@+?llTgj(Rmx?MSY z)-FErEt`A%8&;Di&1~wl4m?MkkYyRYON%RZdS=N^%q-fAvnzJClCYdAAD_n$fF>V- zTp{T^yluCw^$c58t=5vBmupfY5*AN!=GFwb)!d3z&OKd?1f}-}{!nI|8+Qa`$SG6w;Wa4(2~;5?(CR=5 z(~I^0Z|^?%>Va05$C>muQIEvs;g#tX5N<> zFMPy_6DK0hjT`q~?uVBPVhQK5%HzX&y^R$c)WR;w^$C=IM3{Se^Hr-nh^d5*3N{~l z_~9$tGQRuH?^i)%&fATq6dWl8D8tA>mYbF7GuB*Qu$>1bH#glbMQzOm*LMV9pyny% zcKT^6WsT~pg9RjwB=LE0z$Qk=q)aw#QT?$ZUZCMKq4TFqZv1H_!52F**C%i}=@Xs; z9Fzh%tg<+mtysTpz{eZewK;z3tUYt;j6Hj9*3Ql^+UdC^JGZc8=a*KjE`DJe*cwVG z+G~D=C#9Eq)n0m~t_7K=x(;4m{+JLTnIONIf+pFF3&tw9jrj;JuLxk*#^qFU##5uv$wig7QH4N%YJCedo3n(q zrsPIrlbsA&?n=KBQ;y#zSGo9;-1NRQxzRdByIgMI334O;Fcvv4vvU57HJ0aX*P$D1 z|IN4CqSgU++Uwh3>|8n@-Iw*fGsVPn@2%N6$>#W78{keuEctp0oM+^dumNwjiUt1aES3%Ek`g zV#~E5$yUuT#MX5!(G;9^k=ND^^#kZ>Nd?)ng&EC zJ-W7QcTym7J-B&~4dtzGC?Pz{asFGnf&3AVye=)T*zD4}^>0d<^TV{dC{}82F~WCv z%sk-d8Of(SSSOx;fi%)}YU}5wXWDL2B~EOEyYIU5`!!g`{JytV2~NSgR>!w2&Yp6? z-FxIFJACK;wqwsesdjxf!|T7t(Tp|ui5LcvFLVMbPj;q(p~1)V_Ap{u%;qu0@qVq0 zV$hldbWMWu{OL1RliAxpWV>#>)oMF;*)AzMdj^zN9m3N~OV2%L&wlDt_S}a*Z0A1y zpv^z~tgW6q>yKQcAaDiFMl+M}+RCzPic|}0s}9J_W|wN;u5_z}vmq!m>(aItk3DTO zpZ>JXe(IApE5&O0(MPQ*f$HV_3y;id@#SSil7nT`VBtIahWp;&d$ZIE@TOw<(`9I1RrdjLEVDWfQ_+TkGq$>1NG$ zJ2)&j&|J4Z4IUQ%qzNk#G;4y_0HmtT&piCd6-_uUH^vbwwN#ol3l!gRak)7!xzSb7 z-WzVRBX{0wJNEAP36Jk-af_wqS07w0iyRT}TahZ0iE4OQ6OQ6F(>SfZZs^LEZxBuK z%6Tb-ys_C|q^G>zxBB;87I>qABx=qSc;)+Qh7gSKn;ZeNu6E)Om6x1>UvCZ$rr@qP{< z7b*uH5Du+=9)>^Vo#Sz1rC|bw#?HsYkt>&-Y{DNl2-{^)^*{p$F*&?Hy)j_3Qg&Q! zv^a~>t>q?t;)snE2sC2gOs`NExY5kQwh8@=}Hj^OzhS7vofgB>D7SN?_Lz zcJaQWC!T)FhFp0-gp*Q&5`w~tTu}!3FkJbEpSm&hEbn^pvrvk2nUUQ-2f#;JIX`hM z%%nhmP-yV@Jgqu;l97wAA;~;DqFm+k~bzH@+ImdThPRh*Qz=ID!{sw z-|1$r&8$e#SX`u;Q zaR)|bUF9sl@T@HyeZpox`Ei?j@S|GaK5YxSSZ|!sx~q$|c>RDk90p;8hIlt8-t;r} zBF|`;32

U3*gFp`r4$5-5tXf)I5kgSN=ZQt53!>3zyj(69YXaxr&Or-nHLw}JdllSs(R0_0 zC}oB33t=o$3KXEFBpn3!T9cgglIR0O|TV;;{(B=lYl!yvV?XvuwZlR^E5lo&4qKIQi@>TVoz+ z-)BThwksiuS8edS7A&|<3i0o)wZlN%T5F}0&eYV@ktZI1e0R+&UKj4e&Q%KwDbSjf zwFFdGHXptBT?nbT|GVF1|G~r5c@A}{1lIGon44j!?=%Bv&vMJ#@8aKmIoW~n~BB}=+H1bn_>9UAXr0FQxhr@!Ou^EP(+*v zNw0clu$hY<4ghK2XCcrHoPlcbGlD!q^kUg39lmQ!1ZyI5pYxA_J8R~CO=%Z!Zf*ta zBc*dGo{*0iljt`Vg21*2CAyO_Ou0;d5RjLWq@%!Uv~a*$%35QL#u0)*Dn@;uwn&6* zr9#nhu$2nRb(s!AWZ)Cd-RnjGf&dM8nHjnqhj~)ak7Te|w0m3+gb*!+mn(0&k*>vysZXa-LNJrbaO&(?9)0p@UL3fD zDxRq zSk2Nzg3GSEj$4=Yl1|o94t+*O$2oTRF#GrKr!sgE8NZ&c&Mx*IIfd~HNGDEHx`9MI zWG0(oWatt)G@#B*F?o=YMTqc}auspCgkw{AVRuDhJ?J@O=_NRrDc6&?m|{>*21dn)BEU%Hf1 zsq}?^lrM=!85kJgiN_!BdRf2Kc+Ge(km!I+Bh;TUnm|a(LNE$ke)(n8rBWO^af0KA z53{(dgL1iqBLz{`ltiC-$AycqN6FQBjQB0;%; zk`Wr4n}`;QWM(o9T^d9O0g*_Q=H@1Z6qvv#sATTT!~g&w07*naR0LSx;HK*lN|Kqb zrfavXSwru-b=0-D<2w$CT!utnKU2GR(>OCjA85+Lm5LZJHv_o^Bmpv0>d*iv^t9UuESu( z7s9U~ge3G_(4qM0!;cCb8a8g-N-Q3yP$&Q}IX;db1h}qiwbr7puI`;6$oc-ac(yk@2%hKA+SJ5dcih2ScHGW`k37O74?hgr;s`;S z>Nd)}5D37x7T;LFR0~Cg0Ik^xEJ2e1E`^$MrGi^u&+>9Wt2N?TFJgBpM+nbrD;Dxc z(PqLz3)SuGJDAIBZ{EDQckz-XH}&@RzPq)xb*tkzeECaX+V;W=FVwn;{u`-Fr#FW| zh1qPDT(L-NGRpoCroxbhFeD}fSPRy0*Ijq9anm(8j>l{!!}QDy(P)&bu2{p3H{8Ja z3m5p|-~2a*E}UcWvR)P(-p|Q-KBs;effA*_@M%8*#v zg|(IoXV0^8Sud+@ydEV4ex-r|tPTi+YU@5DCEA8mj88I^BFGoWl`HhN*0ZTiai;9D zG2-AGq*t^%B>F+o3cpPiY%OPlSwy#gNwzl3gK0aP+)b<)8;FDGe)?w=# zfobJ1f@RP^6zEQ;kkM%MOgkX(%Y=Rzq=S}4LLFdLf~cp+&&*ILm)U&9YQoGE2lpRh z&DKq?2lp~_;S6rqGIS6itRWeX<2nvO7-CH|Rb_Q`=bx?=&>9lW9h6E%qKPD* z|Kz7=ZEhx)%P~GNfzD=$H#c$JiWO|UeFx*acJb^t@8?;qX>nbowbTj8DyzjsV6ggm zKW=Mg9o3u_1ipPRRD=eFB-pp;^Ce4NqYVX&5lbedakxSp*y+`xfdyEyp0 zAJ8;+q>NUIddFd&P@I&C&}a@m_80)mSFK`nbd*Z5fOK43rLbDtFbqW^nS49&kzad( zGd(@MqrRbmMT-`-tX#F~x9{MN-!2sjJp0^prRR3;{QlI~*maY`!~e(a@X>QhCHFZF zN^2Y;M8$%qswt$83}nz5e>gy1KenvZov^x@sG|o&-aJK)v02t4gd1|h3a)}U32mwZO-+SK8`gQ9# zcH$I|KKcj)L&KyTNi6Ep*x1Zvt1oBst+(;6kNpA9Jn(gz+q$^@j=OpBr{8Dn+;Ji; zJ>a+)qX|Pz7zQZiV6;XDKG~^B!q9TXRqI%^cp;~cAE&3QjXQ7J&cwt7iH>fTtXM%? zQ$3f)XJ|=9D3n92(a3lVkAU)YiKflhV-P%l@;urP2%Ug4M&beyDM_YM?AyOz_`a{4 zx$}lR*X8utv*!G{bF{X#eV`_AUQ-rYSk;APKGp4~DQlRt;CYJ09t>SP4_2`1^0hqn z;7^&Fm?4pjP%M{F)}WN2Ff~dt7N=v;BC@$0Pd~St_RbE<`5cFzeTuDj+{4@Mc`wg> z{~Ju6K0>^$8?98;_ksXDmu{Cpxl$%KIfb>b{+g?q*WSvR{yu)^W1m1t$+y1sEp|V* z6F)Shqb`X=ocZ0|tlPYmB{$r_b&ZYe{;z+<6G1>a5~aslx(vhx3|g?&J}fnX^NS~= zA(n>ktcUXhuG@B0Ii?{j%XT3cLXh))0>C7bEZww`t6G|gDn&MzqwnlFjvPH&y@9(f zF=JS$6cN{9)}ND|2;$wY$o_72u> z+RT=lZbGF}-2c_DA!RjHpE8CX?bF~Wp0y5RL51CqJw{(&AGyp76Ehi_n;K|oY{pn4 z=F(Q}iA18lP$*=6*#rGc+a`Y5>eXwEwZEImWXz>Ym(0-Mpv`8pQYpoyfdTi@;Naz* zy}fm-rC885HPyK{60v!$MH7};V?aQIwM4AtQmKsB(#qX;yp@sBF~0h@UnTU5v^F$Q zmrRmM#7W0vR7!b<&iB*Y(Zz~YE7-H|AmnnyT?b3G$aoqEMKx;Et~Ki}yNnO~;UBQ= zx@%d`-a&gZ#k`hQRxa&j)72YTw0b3H$0w1~(=;l@ghdprL1<%z=ZQr@z$gCnPsOrj z%TQ7-E|<$Z@x&9HI(=FnKYrW}4Gr0WfdN^_=NC*(O?|d@?f>hnS-bWf9UX0VjE{_& z{f7?yR&&`t0WXa@aafD{mrp>(Nt+%tN zr<*fp``EMh0Pnr`U05CR$j=@lo=&rD*>YB|yNapNA^t56?gL7|~>cWU8Lb#Z!#s3M^f*iWOIF1R=T9 ze}?gq5%Psua+wUX*&O-YEHk-T;*Mm?*3Im=^=3L+ns|2SPOiG{X4>0Y`TheB@cgb_ zv^Cb#RG+4yE=653i46jV&-LRfhlQ(FQLgx$JAa#)EW;?|%ocBHyx9I7Qehic~k zh4CfeYN}a-%f{mI^ieB}2m`s?aY(u@gOv)Y=4O8PL%+$k9kkWdb}P*cKU!;loPbCTMFj=|qC# z$B&DFfdSFl)}~Ua6t3gg^VuxPWKuRXG_0PPnK@dU1Aad9=gPmn>)LDW5E3Vmz)2;jluEp~YZs3__#+y; z>ZXOpn4~QNgFfuuwTsd5Q9Lh-4gyAohS1hBo68~Q4o{RoeSQ6wv9YmdYaa5NaBDR; zX~kHz$e09zSllD(I7}AGxDpOM`4B}vVDt7H`ShRtIm4r)l&7YNNrhWihnGr`%Vv4_ zp`UQ##0i>G4#n|NV!f*{$!4Z6p5@^Oi>zJ0fh#v(%N5sbW^!_pv57GXxmhfbNG54- zZ>K()zyfE_o#T<8Jw``!3%$LI86O|#=-$07>}aJ}C_otE#v-^F;;}dp&t>w`dGb9y ztY5yEgHJw5wp^wx1mB%&m?K}Q#rY%Pt2OigVs3j1J~Y?a%Ayp5#y}XzE+KG~BvUNX z+S9}De(*j(^6*a|;l%M{WT&TzMI72%JLp}$jE&o_<99#u5gIz$c=!iD;tJQL><5ey zGK&RMt;tz`>vrN1mlOScOpcAy(a}n!Sj0$yvKkjnJRZlzGIF7xuKC?;U$KBoFTKFD z6QQ62vQCtG*P*^#sn)B`wb!`9SU_{u!sO^MZSxl(tue-gGM!G}Ju))#<6m2WQ&(4a zPZ)+wWiq0rt&O^L8f%Q0o|zG?t*taPHZn9iYEKOgf#Zl~DTq2A*`P!qUhd2ZSm<>? z1_6#6p}w(^Sq)7l1RD_gh5&<60%1I?UmzAsk}sA~2JXJ~Iv#lD1t!atYTpuT2z9mS zc>C?QGcz&4m%sEk433P^(U7LGql2jDVoQ1YjvZlUYJzKTzLgDkyq&*1)rT(R!SmP{ z1Qev;5#Z#m=h<-AJ7hE(Wo&$$R9zjevVOm=15yc!v zhiD}6hzGM39{Sz`SSdjW<}Fx6u~FHiTS62r;3l>-B9j%!y6_}iwVgI4ST(~&E z`N1J>yM7y2U%3Wr42fhC2~_e~9O)2-6?7obR-+vUi$+;6LQoDvZeHF<|8SnkBD8h3 zGdVo`52-M!4dNFA{WUlE|9!LlUPyI!r2=t4N~rkN-Zn}igybCX(Rbd3HSoX>f5_pZ zM`^3CqqDsY&yjcnE}T5Z&!0y*4q6C=F<7nn@Ex~MU!TSp zNke@zK48ivupv4GqZMHwFusos%XqGX2C}6Jo90F6pP1ozIb^S+s2D@RRJ*?~1PZ_y zmhA>`;Y1~5c6OHfbe#x;fOtH9+Z$xeUw;-aUfdXoL>6kTDHe-j=d;h!+SEiO9;ZH? z#*vcw^XGH)=n+8>fKtQ(T`n`Kbye5^Xv2z*CK58_)UhLMy!ke++PIOvlP7t8&mI)j z-Y2dLxtSal0n4^*X5R7@jE#-(qn|v;+Lg=MynHFoA3BO7B_a$7fOp=$gLpK`3w!r6 zJ~GC_&Q>bLGC{eBON3ZFPSkS@7)h1JNP<9ej( z>M2<;l_K#(0zV8ned+{zcJCrTJ4+?hD5}+lb@lbMb+n+%WzYue0LsDI01qe_V6Nr= z%)~e?t*r#wAgLA@TCJ@PLlKL`-cI%4yc)ki)~#FjJBt=CX3?@`a(+h#RtR?OdY+f| z9>6_)5?UInEz2$BD*??7jbuwcd!BikV);=@6(4QEaU`)=ochK_np>KyXHV%6$F0M0 z9ULjh7K*sZ23i}^WJ^U39XiPFJugzJR4~<6`cx`DjsPXVlY(p3T*juWujbT=W5jc1 zHf-6#9q)M`-~86!qo@!Cl<$KCotr_{r$=W7e|w*Bb9gx?Qy>>KEf|N za6fVrMrk&KQb)J9a5E)-H)YFc-I>Wgj;PiFN5h3U{3_1*h?}jdOLLz;I3(PMpkjtbA zLZ3t;)sjx9JFC^|{LdV~>Feveujv7#B*^K>Nv@5LlT0QtOp|OTi)~wkg+jAlYT$&5 zWffA;kQIV{Bt=V-&7>%o%D9fhs|Q}-*84upum1Y4v*XrVICJ7CiF%37gh80@B)fJi z!|T^lDinD3si#ntI)y@k*3NEn*$lOEh1I~`Pkw~1zCIKnEQ=7(fln9)1X`dZ_(BmA zDYOnyDx?u8dd!gfdlNiYi!FYNEjaD_JoEf>B$Fw|Mn^F$3yA!$q-g;N6^6uY zdpMa)X6yBOd1Xm>@9600xD#OX@?{lWLd_w=pkkO22v8xn8Zf6Mi*p5z?0=ejKmIBH z^}qi;UfKUVS5LoAM^L0apT*1e(Ya*@t2b?8Zfc7C&p!{P3gx9`?3Q*?^K*zq1}y}E z(ga!)YK0+L-`nkGmowANUb)soF-d&}kW z3SImkA?|1itEGM?ko*Wb_FwNbRzWU@JGl_l!6GIl&c z%(Ch1?8FPgh>554+r}+g6L=oNFbN#UZ5Sl*1Kfs#1nTuVv3QJBJWf2G#0vw0P~m$X zfeJB%Y@4YYnyp*6vVF%6t(6k4>wf0Yp+f`z@sIxK z&XuhA@gju(Cj@MmnS+5dS}-I9Nz-H|3~`X;30W1F2+PK@?MPTO@CXAJqyfG_5fb_q zwg3?Z)Eh1xEjfPW;}7z8Pw%JZIBZI#7+JlF*@XpOd-DS6?m@D-96$fr&$4057ET^| z8J1`1OIhetEB4R^)@_f@Oazx`PRIRDb~eU#RsQmc`S$FXdiptQv7l?fJOkg#Kz ze!yDWWo#vgg(0fB z5mm}%jvqO~(Srw(rb#wyQ(0c1t*4*Xe2!AN!jAj)(%R9%={Mivmc9{o?%BhU{m(Nt zzepZvSOzNe!2?xVpnGU7eIsiqS86Es8Ix3$A`?P- zU=YKy(ORLKMt1=DeExxYz5ejZlJMSPTUN4EC~)rFxf|E45{B>eY+}jtkpj{toImmk z3-e3d_P__Z_X7{&J@8?Kj)0KXA*D)%BL@$1_`oZ~VsT<|s1+7y8CpYVC%~ zIz)$>@OlYRUjK;^9a9Jh+y;|VQ>@#ti4T3^ACW|a29wYaWJX|akKt6;^G z1X>b=Iuh?wAPgg-_Dg~1cogR5>F8{sy}O%Aqd}uy#k37Vtti(V@>z?pnR6-(q6&`E z1Uh2jg}z5?R|lDFmf5LkX3KT<#BC0}{32slud;K`ZG84uzl7_D2pytBAJ_4in!3h; zM<3?Q>9^>~8dS?6x83)CO64*WSFeInn6Vh?R7$k8w(5K?C#I*S?pSG6{g2~+`TXZU z-QM2*A9@!M+A`3AN5(QxCM{4f-pMH|jOKaJ-eJ3CL#V??giVjv`K%-vg?3-_L;H4KS7nbR0OA~rE1cGWR zfvQBJ#5pu2B9YW>L<+WZD*V3BzqGVOCYw<~5Xfvc`{}8vsh>T7W18m8K@cF&)GHOV z4pD)}bg4$eG_aJ$t-08SNnT1W2SMcgjG$czEGZ~DJ~hK2mP%t<7GdCEn1hreI!x=} zYIfar2mk7KewQa6dyF%O_tW8p3}r*AW|sV>d)R*WUI1Qt;t3Y!mPmFbX^WX$4r+X- z9%7pYTWy!5**3`)rt=>unaJgX^PY1{LLT#5v_g0bPe<)OdB0)O64MxSFhlCE?qr6Sf)i? zLFflqQW64Atwy>fa-IJHpZHKm07GeXvxIBe7ITvmAOt&h?;&kl9DU}yR0550y&8ld z2>d4CY0&T#Hn4I1Fl&Z}5K3|MwUgKa2DE0a(wsFU9a^&lluKo@nQR2Mf)K-$04nr6 znNFua53B&3e}u@S)1Q3&d*8z_43W#{Nu^R4hC$$Y)Ef=jl4*K}S94+X0LHoQptQz!UFN1H z85^Gw8X~4AO(r7rsPNYaCllT9$@5xUb z;B4ErZJTXb3D5WOTt_&LgCPuj*JEM10I@_QP!u?H3h-2jRti%}0s)Q?ECnHBXx61t z?A*AXxFI=q{0)>_!!qM^bhOcMJQikWsMczPDq;`h^Lb3eBn$&W&qKQ*@%C<{X|P-@ zv1!9vl8HE1CMHP4ZI&12c>J+%bL(w)@Tp(=JdIC3M57joco~Mq4FV>{uk!M<&oXxD zJndPFzzZ;2GV~_vOxJxp9Wh+u0v45lAq5qDykdz|z6GR+gu9dyDh!Dy5+7JuDt>rW z%4KJCG&)4;Fk}sp?eRJyr@Bys2sN)%q7A`rRB7wzr7zn;xl-b-<5M);$R#Y9N|DLs zF|C&9WE}V?4`P`t3XN8p5JAIru`CO9!&dA%!32bms3!6eGV+FrSvKd-onv-phD{qc z^3gARiHWPDOpH%3Ju}V1^gJ%mmQ6A=Fv##gA8UsCFr~qjiE$1dKS|JVunj>j(9{jd zl8^+V`I&+cuU^AWrBOkEG)#mLBGj6AJiccoOa9To^rm>+#`i-U#~~LHAy7cQR-;;} z;rKpQGEQNBk^sT*&?@%r-OI$-7~|Kbm|tFIsZb>Vx;oogvta`xg98lq_n`ux^P{7j zIQa(YYz{+80u`d0qHXntLsE#hQ%-RmTV?NEEc1qql36@Q*ShQWt99ZQRA;X7=r_K~o_p@&fe(FzeGh(=dbN%WLt=50FbtWUo#ur{p5gM9D|B?^ zs4UIUH8jG=-~fxI5{6~d-QQ1@69jGzAuQTjT8PISipxukk6poYJ?xlGDwQIeNfY`W zq3@x6A1j^0j>QOy)f=C0fu0ZWP5=NP07*naRLF^bqk?lf8aN&#l2;jy+HcGP%f%A8 zmOOSWnaF0d1Lbo0+RqHY85kV=tRIF*iE7jx>3c3Q+hT5h0klFowP?GLk=)*VsOd6I z+JQ4lQ9w{=KJ&%tNtBSRTep_8XWpPZH-&8NM`?{flTIeF<1v(qHY=?(zVeVl;5F(5 zA*4Hd@O_VBu|#U~CM?UQxLm+M6OYAMo}1(EzV=mG+S};p?j@bg5{4mjGc(LhPcnAl z0+~#jwvJB1!VF57XklX6F{t|x1b9NwEd?)zAS`A8}q{Na^tkA`O zc$_?Wa(%rXl}uZKTLsMN=;2%2tfBj%V#luSgstsded#%tm*z;fb`nb_XiFpr6@)4T zA<eRhg?B0(5x#;2w@ef}a76I0~VHW&s4H{@GUbDLh} zNAynwme9D3Dt0Oz?R8;@VVdaX@6p-WdE5N_{E?Mx`SIiC?c3J?DcAL}EK4-%^$65d zt9Y(U7zWfzC4|?YMfwOU#?st0^9%DNV>YYSu4Db?tvK~McD{|4{y|ddbTqRShG?Kr zC=iTIp_Rg^*GL&g(<4ep!{b`fXt*Sj32rPLQRV>}!!+?dmvXg1-#{<7?%2x2siX96 zzk|T@AXH>BS>o{|uIHgtK)T#4sz-Id2FSqY0Z>|ej!NO78n*P z@CibQ#S>JjWghv)SIM@v)4ytjRJH{n4T{BOW+o>YzcNZ97Ne!T9cQkB@_l^YC!S0) zIyO$BP+;ALb*$;{Wd7nA(yO-+cs@dCQpqHyX+^5+S`&sLK@brfROk^nkQnGBRD$Bd z94$Zr!6mI(tu=j8a4w9LAag=v34yOQK?o@cgol zw{z#tuV}4Xl+rBB&I-?QKr1Gursy-_F4LkXRMeV?u_gqo41-Vz7Q<+E;yR-wZ5R-E z^z`)5(=))trL$BkC9snytqFpFFz^Y2XwE?hjqf@v%}!IR)Y*2&ovd0l#N_l0{_Gq* zz1^%{zk&Jr1+I-wFgP@T5(3M#C@dEky>Om4Uq8wD)2Er8oFH&L+S=MMEt}AH5Df<_ zZjsKnvRJNBaXoI4l2M==!L$(MgusvzUu%5dCznanbTb#0WosEVZkLP2;{KH-;|Ig{ z{Xa*D7KES=M7xMwoF{2YnXg$z{tLg#z7Kqmp00i>S~5F&2~+uKX%YA#LExd42GyLK z@jMC(b2KV-Htg6jvc?GmHI%X zQc;#=2`MFoLIKZl5JFR(8bj9{+WnAaPb1?NaXW?|hMYNfne&$}aQ4DQ*6!NFz?yYT z&&=?`bI)o^C33kO zmSqt(0c~4b8$l4TeC7;g07KFZ2vcIWw-R^(g{nh$OA;%Q!j31XRx6BNyu`UPr#bV+ zDW)gJ@En(x*4D`AQfd6sBBpKA+BX=PNG~jqks*Vt)-kevJ>%!zWO4Eu*a@@%-}CW& zFCs^%XpS%NTuRH!lxr^iL%sC(_A)s;OW=BR`2j*}YFcxpnTt!!3QnttL(i6S0wc-9h=jaGVCFX;LUG5o+j{2JKq2naFQr zQAlD$eo^O}JXIKK}N4$rPAfDv`kKXeX1) z5;m>r!yrlwRDceA(2&e`5h|$E8-QSyA!#VhD_XNtD_ViNFt}vEyyxTl0hVo}f{-u_ zwKR+sy7&)|Ex@X+Jw1%i%?Z0%0+v9sua6IX?sKePwF;+H;K7luTmWSfV(NyL-bU8HHj_ywF|8P`<>Pst5JKoM z3`HiB`Dmd~_`g>&wXo6Shg+Z=jWN8ngXp+S|f$PvMjv7kE(PkYBx?R z4b=uWg_`!RF6QS7lnYCwjTk|oNyHPFcAOvx2z0ZuN92#Eh-4yys!!*}RRlm#DU$)_ zXQnuE_z=5pyMvE@@i#biO@qQ>G{n@c1-_IN42j>=()2Z4bzSUimf!uY-=wvrm9eQQPM$nT zsZ=Buv+3#WXK399hIj6vb9fcou3e$wI4mqIPFVmFt+fp)4X#X#arF2} zW~Zk}rxW;v3UkZLjE#@8Zqrsi{K-%7>Z6a4T|JCUWl&ATtAdcgcbmEwQ9ry^DbsKj zeLZdT^!6|_J&or_Es$$kvs%EL3c7$k;Po&hCk69ps+BUW9UbUUqqP=65UkL}e|Y?R zfR_1rwH$`B2B0C<+s&W+hyTFx>@4SBeU%FrE>Nx2uq_L!RkH1!tl6`VoLi*YaHzTt zhP24#a`g80kjv$0>mS0-1>v_-gtwTUwVn*o=yVaCuW%>Y@3)Ni6`Pro_T{SUEOTh zxP?3S+`_?Q#~E%*vW{95~E=?v3f$tOe9#RU*P;Fp(bjI?J7yaru; zU2NI7k;!Z0JpH}zG1$=-fpGzG%OIUhVH=Wb=icJ=j!t&%yN_GmcR!Ck@(6<&jW8ry zYeaOb3BrKo`8huN&_nFK^KKl^;o`-M%uY|E!;rT2cKU{gX&)Ts)|OAOX7f#yi_6T+ z%~2|q2m&9=G-+?i($&&JwNl|5FCIa9e&j$N1|)^VN3poLNLy>$4c1pPbPxn0lgWG$ zSOGZiik{xy`rkqw)8 z@WFdIw*Li`o8&g+ z^89npvT5^8Y`^;+cHFs_`T1F9CazJf*YG`$OgckHdn=h#ig+qRwttA47MUXtJTQo^F}V0 zTT?2PF8`AUIQ;_y|I)us53g36nhy;eF90EVR0CRYeU{VIia==!z`yFVra{Mr=L^RsLjrrZl%SSE+FgWndlB;q!fVbamn#oh-$%pH68f);%Juf9T0e=oX8 z@f1R`yinkt+jq0~o(Di{O2r~+Km|U&(?A9$HX+KgAuzCGHl@XRT&K?7-P;LDiyS?F zg+ZX3$N*>-aGD>yO$b_m%UV;rUeO6d+(sQMo`~3FrYRtzi|2B=4^=9a|GJVg|L_;}KaD^EW|rnL>EM58dINwKiVy&wJ&=`aLQ z1@y&GLFi*Q7v4s_PLRzZgMgT2;W`ddN}-e@7LRXQ$&eq6-tO*yv0N-74MQlcY1AE3 zsT48Gq*|>|b3JUpc3nKfU_c0_Rm5_#3`wI}WOinjZTH&y+L0Y9p&%8@ij5OR3IZEZd)YcF-{$Pg$>)bbMFHW z@EgDO&-gdL{|8*C)fto#BXku|2TDLO+84#b!n|&6Z51soEgvhDO8@bnJisxeyg3L0 zlu}g6MT8J6E-y!jQ!5BmvpEHz=rat)QQUpUZKP8vjvhP8!9#}`?&%^30ur`K+_Fg6 zHiCdt`=6n$wUzGSRs7-a{0<(FO(oG<;rk(ml-ThYnRJ@2j&`&PQDK0gLL`wGmmwvW zFI`}1d6}DU-p>%e%)Tyb#o^}g=b87oCK9NWD-k_23^76ZK_GLv+zMU%JyNI*$b&2b zK5!Dar>~DImoGCuHbyp^jjn4G+*GSo8np`Z^NW1t>{;4kCb2{UF9=zz*2$)l{2%}4 zmzfwH<-dL78?@&$*s(aKA&40!3ERXZ&cA>PQQLnId z_fGD+_db@FmPq7stlhAI?>zPxv84iLGDgjFQK5&KN)ZyEb)43&ZmN|MFCRO`m4#@m zVS>o`r>nVP&Rsto2ti7~T&Sr4(eRI^RISmONH%-vny7jm$ZR(I%fJf2`Ee>ZU0n}U zt5t*$3Xn=EJg0#W0?%pShhbB;BC6uH6Aiq#09zcNv)$cXx_pV-@7l|nkr5I}o8|c> z(&-qE>tPT>ps}?}wNYd99rvKaki!QL)7sL(O?z(VtyhndYU@I4h2zxG(q!kZT})41 zyfO9V)CdAk8=i?BH-%vsH`=692=e*-nqskdc_mZcj!^5Hf*@!Phij_U zYGnHp1S~EWXqT|dG;u@CC9RnwY7J$zCJ>T%!e;csC=VBx*>}(Tc;M6jD^=U6Ji z?RVbI=RWix|K(c`BQFNiyXfrh;lzp8a7v2^9hHnl7+^{e zDu~1a(PTTi7+kfQ4XcJ(o|(jR9J1Lg*-VB^HbXKV$1sc=4>d|5LZ4FIB^k5m@96~7 zVqt!PGiT4TxV%hjTRS5oBMgoVv1jl7+%DJ)@;%bo3?Pt(iIh^9mbGSfcJ}{TSvtNC3u+&3O+w<@JGk0= z_Us`D0?LH~G*8}*MuS?VLcLyRY;2rHbB3!CDjeTKx;{NE8GiAh&yjEI;LKZZF?snS zsZcqF0i;bPb?lM2tt1D6Q97T*Z9`gzfRxK z2%C5AWT0<=*Nz>d;DxmMih+2DUv`LRQtZ6%K|1?~IPu0Qo_+pB%!Y&ejt^TSs`g!v z?k08Ef7kb2-zS$!MFMh$aUJ-GcsxEdGc&W2KR-s?b=O^gHa|b#6NWy9VTvFKs8*^7 z0fj;d&-1w5kSGKd9RbevCMXranPQpoat+^Yuxr;Y)@|C#x$|e3Db+{^iUG?YrhuxBs)XMkf*{m%q?5uI zhKR*%yy#FWgb>;=3?YP=C>Dz=EWKvz*|TRyOFsXldcBTe7{YNJ3X2N}K>0q4g(7{1 zWKc*}hXEM@Cxm2;6r@GO3QjpLnciOR{P4#a*sz6oK2NHpjp5a+*tTOgyYIZ4EjRC= zx1)u&)(#xs=kTj1dEw=k8K0OSo5^6A290`+wCfU2#c)E1#}gnU#%DYhBbA5|kJ-dc z3qwH4Hu=mae~$j45tf#hdFH97>FMdDQLUl^9}|To1g0rTB@$SMLAIlZj)a9XJI3)s zm147+KHn@)lzw1{cP=^yOp$g8i?Z&{#x8cJZ9l9&XqQoyimaxHBv zEi5oGImzvJ@8#teU!vhOuw(LuPMeg1>xNcJD~#suS+7u&+`4BEhYkfyO^mT++cx5+t zRFz^{Ybw<$Es;(MCNyU^1RWh6I~NufUR%kYe^_{)x5af`goqA8f#;#Z5P_yxt1%>@ z!!R&I#Z6Uwubv~+apOlup<3$sE>i%)&}QzR?{&-3W+?MDG#y%On%g+8ulUMKYQE%unk?{{PGNRB!KR9oI#GQd&#TaqvAK%eDy1(R``Uf(n9p4bwVu z;cl@lrUHfM`}Ezsg%5uAmk_|Qqepq;^^?>qW#aKTy}doG-LRQ0J9lEY_w!%>>MM** zOwgXol1is&&F7=R<1i8(%}9Y1Li<_+O6ZWLqQ4>xqc$sOT&Kb3KmU2M$%L*|t917C zh`z2)=4a+<$)|8U4@Vk0ZUx|b!l@UD4-8@2HfOI*(UFd`slS7>lM76}>zZVmqNFo3 zGo;gL|EE^+|4IFzUAuODMGMiQ!;tyeS>d`3#-?UaS~DyqgHm!;DO%BV0K?6;)diuM zzHpWGH{Z;*?K^PmRZgA1Ox+8~dLen=rCzLKnjyD*>~r)Euj1s1<2?QFw`uL}#g4_8 zpPj*u#c%A2y4gRE%9H z;uV)k#A3uP6W^&ZGd{-b!~{M4gKXWhg%hv6#?@+#qKFLDc56+7Xan<_8&&^1PU9jB zNoO)>5Qb%GDTL5kuh7NcuC=8D_{}Cr)dq-OplxU<>OoIU5d;BJM#Gs}N7cE-r6oK+ zdcM{O!H9^cSevzGEYLjs)KiR%tY+KI+eszk9DeN-H7~^SLRyrITdd<%Dy+Zj9@g*J z&BXXP-}>vnCY8;S%48TDn_$Dn4UF{nbNu)*mKO{3_xDnB9E4#~ER}GBkhcCo$hUCy z+9VG@{4g)<-%ogHl=lHs5-#W{CmQeZ*%i>%d>wB-wChY0v}Qr;sEU(Gg8*rm0+bd) z3Mpl6d3pJnmF)S^WB2aen>#u>eq&*N9?LWZ&31#|q+6FNRaQ%hAteJUBtWy!yf?*n zy;mF1rWD8bzewGbWO6NZ^!8)4w&VFemo8o8xhEgz;PcOs&E+u((Ty_Mu0G+pjyN|q z$%h`em-c*)=bm^%Co>tgY~Lxe`5Xt2zedIN5nf1Z=py`vmVwLKowtdNyKZN0VUEA~ zoBzxk7p~w2Z)@mW2F5^GAg-&gC4r5mNtgG+v7sQXJ__!R)Y z{?)(Xm4k=SjXJ5g9cf-wD@TZZ_{ROzVm&eR;%&VzxYe8&XuT?>-gLloBcjukp@b>FA|BwrDC!8jeoKg zoa^r44aXt$ec?1}luKoTW-q%_2;$B2_(ao_?k(U-s0m6QZNO7s{c|4tWGlS8H6yxxx5|PBJ0B?^CHeH(>27&>{9OS-_ ze26dq_LsSI`VA6ZnT|w~Adw;7zlM&UF2*ij=7~qYLrg8q z$Va&K)?2aTar%3EIez>&FTU^s6PGVib-({0Gui~YaTUETy`y5&3oJHURRGuCaT+n3 z{rl^JgHkCP^%|*MYeYYlQU?)T{1<@VT*;mvJvuu(KU6A}K#0h%Kt(2(Lcnsf;v8x) zbyRu&A)RLc@<0#K(75-V@A4;nzg!=(s)JhXiCVBq{9$@3P?NqCE zJS#3Py?Kg6GReIUJiw;Sn>hXIQNrbU1~MsXejth@bWuos^3~(w?CYxrP&|tKWX$3+?b9q3IVIl>((r~cj31LWs z02P5$4N8S<*sy`+r6rCYI?5gI+sC2(`?>Azef-{^{uyUaon&eJ3LTcjNTe~l21QF} zJBxEOJo0yc%LhLDSqigLR9<|A1TY0$ddGEHY653~@v*U%pVs~Pi2$6wo}T+4qK8)< zNBXWup;RVgKt*Y6r3jnDQH#y5cSc#l(p-ga{_!8O@y`3$vSSz9_S}UMMpK#7;qrxZ zoIHM<@vEcs^!6Vp+UNiPAOJ~3K~zy+g6h%|nbuBXi6pg32_a(9jDmVwn*c*XD3D5{ z2ytDPbRvaTidwzS#tj?UzH=vrVc<7UH`;dzeHQ|OEfjt&Bq1SY8sNFqYBkpNck!{^ zTX^imTU-V%Ye*4&1wg!sxN}W_15hlN>9E_Qil)|BwmqCmrLwhJZG|r0TqcHKVjKpI z=5_4v>0z;H$8mkOO6%xMqr!lkR>Ta+e5k2t&Cw7VQnH{Flka%*iHQjw|9}6C5B}ok zSabVbOixWQIyuRj-c{Q38+`9u-xRMMKSoPi2MHV8!aVliFu8n=!t69U^jW`tJ?Vi# zgkdl{JxwN=WaGw-%q}d@lTNes*fGunPhZ!;Xf6!zKKZOA^3+NJ*LRT0dt8j`qFPx2 z1VJ=tECd3CRthT~?@y=GE!AqZu#!GMBEaeD`s~E`IA)WP=K4ONQlLXjw+0B#DMgPV zsR+Sk&3l|*-v+P-kZ5+qt#<*O6c8j56qS$N(1@B#XKxR_+u+Xk-A}Hyl~gi~nXHrP z>Sm!(;HmFC!uivu*nY=d+x`Km{J5=MoquT1vDjkfy}Y0Zy$#-Er8lZ5y@_ zJimWGnQW$6!-?2>g2={3TG5oe@B5gRMWm2z5C$&oUERcEF|N(eQw7qg1XnMfw*!8L0bT)Pq1_ffu2VPTGEAAg)zUU`Lo{k#8;yZ7DALZiW3d*7#Dd+ae5UVmNC ztlD%pD~0v9!Q38b3L^hg1UUUeLpR*RYn2L)>r!(ZMr?s@_5%x{de2|36No98k4bth zgV$epo|m3|9y4Z<&bQ!);SC*~_Kr3>J30x&;O#X>YosBm*J>1(iq{?A5fVhi(jx(k z*e0%Juvo2QCemmf($U$$&RcF_a$<}Q!(!dWjjS3Pescbv!_-sX$tg}~67rAn2y)>c#yi0hkmHk-Y_R;zt`W$TGz z4H!PrAe#vot*z8cB~%b#no&CIFcM;{my2{6Fk+Y-Q$9rNx@r~mD_3rSoA-)VAl7VE#hcZfcQ>$IU@-_-)KRn55YgOL#0m^CElcPy z@-)ijat~Ci)xTfKoF6S**WKh^H%b&Da()kd!g_;P7-_V53ikT}Z9?ER7aEJG^(l$i zlGkUYE&?<92LWn75w*O1u?U9XyoR$1rYB}#Vus!O?x9jFVoFKqy9gDD{*^*_>g7W` z_3|Nx3>eJjF$={XnB967kUGkh(*Nk-ASJdC)Rm&xEJ>vWD9@wTXb?{%B4gVqZ?9Je zKMnlR&w9S}_x1gYLa~Tw(!(p|GAQtT2PX)?Fz9GX2~0MjW3IX9tOL%)<6J&}hCR34 z!ImvsdH%`AnVBz;OIcK1A07AzWg}_@GT9ae)^4O!DDl1TJj$w7BdlJ%hHKX*h$rGG zG%=;{gurbysFWM{2#R)$TsGTOwGIeEpRT?^B7z>ao4_mV$;r@Y&(9OS6+IFiw6$S+5D`|JJwF% zA$|%zWtV@SCpY|_JPwF;$b^ti89f+;j_Hi5{yV?EF#Afq906>la?x_djwX-Tco zpk6Cu#p3k#bRwkLtOELIU!wy^wYA~Fgh3-vjSw)#|n6@)4D|T&^-cHpY<~+kl&jWqPYMRK86=<7rO&RdKx);Xd*NEx_V%C$$~7(w<6DuhnoIhioPT z)e4KL6qkR*2U0hI%nzH+yZnxPQW}irTB3DC7uP~4&-Z06m;2SJsi_r!^CQG9x7>1* z5W@C6kGO3MnhxAj2wbO%lwjznyX^rp@3;r8MD*C}6}UIw^{l@;YDDvRNuWE7sOH}n z3QW_yAv9y(dh2! zeVu(cqnRNok|KxX$Py{pq9jWpE9?+$DZ(LB7O5p9g+megAcibkl5L42TBH_>i#XzN zIGh;{dzS7-??9s)jeRMg3WZuTEAuV)_`^Lf^JP|60WFH%ib3571c0i{d@tWU_niOP z{s*L719WM~HERZ}ir*KqbuG_zci?3SUbr|Os5maC8O>&sk&zM9=eWQrCaOxUUVmm= zV!*3DnI#EP6vk?_nrlQ37FJif4)%UaRo*mNSOKOabP1oEUt%73<(psQGe7o|{FT4{ zv;6yi^RId9^-~;iaA-2;R;$DGBTw{i$-Fsbm)Qo`x>BKt>ctgklluEJVtiK(4C5uYMJ?u6#8dB$fZ7#W*j{`xh( z??--|Pk;8aq?6GRt#9$KfBxs$m#3f_ibzLBdF#!S zEHAFIwzR~r|C?XpBcJ{Zf9fy(_k8Y8{uFCBZxVG9QWRH-Xs#~vmEZa;e&_4o;KzZT z79yTRHxwX3AgNmgcB|3|*-4=w$=qW z>ca?yPL{F0o-+|gv{k9!0eX7XWUkG|Zl)DND`b}C$jvz^Pl{Tz!`uRH&CW43dzoxv zid%DYy!^^5+_-+7R;$J6$VlI3&X_@*EB&lhN7aQ=C64g5 z8a_?Pz4DE(f1L+D@BlN@)9l=}3!mp?-t)o>FL3?(b$R8~DH?nB;Adya4e%caIob08 z-t+Yb4scX8PqPfK%KCb{Yrt25?_~WR^%#LqqG14M3AkX^=M6J3v@Ay8mwEm>FZ0w#Kg@xn z$C%i$gFMSvT3qDvxpSO8b&^P6*S-U+Ut6NHwn~_ytzm9mWJ2BVicquHC!H&1pZL_LIq}@rIr;L7eDGu6LnTXi<2%2LOw8b2 zOs`AyEe{WkT{QEF3DbY^E+ zFnu^?vgU(W?I85kd{?EYa)3O`Xsxc|TtwOlnd@sq4q<8!WtSP0^Yn8|JPCa6Z~ZN% zMn}0ZdzDI~!6P5}1WVUv*-?*q_St7?j5fGGDOs@PGX?D&!p6 zvx|xoYH?txjezI>6SO?!**YWjIy)w(xNz!q zUVrHYKKXq=!13e9x&QcajvhM1=*TEv{LL@&#;dRLD;f~&)PSKHHDNASTV=qRJQOg; z=Arp4Ln;+iRkuw~IW*EGx;TU`yip4zi5B5E^)V#)=Js+|FzB6J~L z9soCo4b1K~S?k>9URGCEiK2+*H(GFcmm;ov_?)N`qq*YqT-KXS zCT4c?=);fl*6Gvy%YXV$nHX;{J+YHYB-G*xjd}%_XFUI<-=J2l^1u^M@vHy$|H=B= z8c%-sV;neih?B3p#MuiMSXgXPZN#jmN-NDd2s|Oe$+yq2GCt1l&EH^ZdYYxhMds({ znVFd(SEb{9m!&xlGA|=^YfpE7*8v<=6(<5Bc=d=A3NHjgZgQMZj8_!i?y+$E;M!NM z^0}Y+8OA3kdF#!SJpcUjthd{YjgK?2Z$J0#2{kvr@ujcu`sug%bAR?vQLk2c`|4~M zF~55!$$AU#gs4`*M|JAeDv=1+FP!D@@dx|h!g!;>x4!i)l7TeCsD)!H!<0&4 zL|ZM!CMJS`axSDCwpVw(+3#^PH#b*|D6m;UUVWCb-fl~QuCESY#F$c9bC0;;}ddR6ro8HCXdH4aguatnD68O7DSY{?4DynfuaLW zP_C!fQ1oT#s_k{>>)B_YeN4TNvNWY;^*5bPn>0;nCuui5Q$EWRz{7-bA!~Mqzdq!% zr%bOUwr2+|`ZD;MF^k}>T8gS#sW3V^%IN4QNs{0|Bat#r>05_O9`gkKsn%ta^T>eD zdMP>sEXXTaw(;46%;D$Js)iYYHFflqpV`PLp_xLR5`s^i~ zx?M(QK_BR}{iXW!wY zeE5@};y3@zFLB|*MLzV=kMZ$OeVUK>To)H_@y%CWlb2r$8utp2=T$0nSh;zformuu z=>*oU(a|spL{zEAG3`bJS}j^^sArt`u1iq`LmduXmL_DSgM%U0DFZk+fCp{kuMGLD zzwom^%l^H4dG+O&dGW;;NwbXcu`xRBHtpqQe(mH*7U$;~b@0=F{?AgWL}XdUu3dXb zfvgikhe?_cqtv3%Cay_~#@HzB&N>$^U*_2T4{-VH+q`q?b)NayC;9##{b64E;;%Dx z&p~n(78jQ|{rc<3Bae`#DYaUS*Is*#C!TnMXFvEsRF!k*&T-?$jef9a3Z+w0lKTb> zXls2Pv^!U5d-YadRQ*u3iu0b;)zu(lB38R3l4coMo_FWM46gZ-F*qo}2;|xyF5X-6 zxQErg+(#%TUAO%!%jzW zd|<^cYBRLdAtpv^u)S`-_UzsJBdcp`xG3t@-{fgZs}+>^j6hplchG5S@^C~#;qh0u z`0T_qduDsSlTd$G>`lWATgBwAgM#dIMx(K#@1>zSOQ$F9Dn)N*N7& z_F=mpXL@&TNWv;ll`QEH#g!u65SWca9nRwm3k$E_ZSr#9;K5JpKzn#+eI38PYJgR` zFf2(p%fzmz71T{AY;uWrJ1CRCP^6lo96tbpZgo^+P9zCt54%XkRX=cb6q3vbs9{c-#M3ESjyc=thIw9(+k>@07c zKFxFA{3h*oo6$xi7`8koX}8E0=5fFu`r#iS^9f)4^R0 zN{hUiG7+cbE4Ns>dX+u*J;J?@KF+PVIllDo{~d3id57Bg1h+1p<~3c5e-xP;{)%1)s+8&!l{8rT@64~JD|-H z5FPXkifGEc1HW5uwh$x1SL5eVtBvj$v8gO-*^z-G^4bZd^yvdL6 z%1#L4s45zmRkzn2tX;cy{Y10bL{vllP0}XMGLk%}0z4JPe8f45%D8i-y|`Tg`z4D6 z*6qBv%ct8pMolNKhu`TKAv5jmPuW3AoD&7vH5e%`DfAdL2OU=5lMl$zxH()MhO=lx zn6;Ipp^3v%WP++@S;oY~#E;*VfOyZIKh;`aN1_OC<5KdpL)r}P>zr2>3hEQpF1U$I zpQxp#ignXKM7eBZ8u&2qXtT}a!V334^(<54V@PKmpR~ETyh>%qE*^RO2_m2Cm%sQ$ zKY#6tKKkU7{MhF{$EC$JZZs2GD{UrdDM`yG%QyAdlON&82Oj3yrAz#WfBnmxc>8Ux zW-$xEg}Ix2?ZhiozWKbmwU)jrVTcL&!XAv;d6?tfs-^C}^EwW1Yi+pcHiE-~nzfEy-Ko_y$W$OVnz$t^rGugy!|D zJfOk59r?yL`Gs4{EC8qe$v@*`Z@;4-{^Te5n}6qT%gL9Xr*q{JyV3<@<`5(IKF;1F zhq$$Hi(miMU!mPfSeTz>J>AKzTWfsvH-4LsU!Ug#4?e)L$~X_P$cw<4**T`(dJ7j< zIehpq^K)~&dHOVSb91Cw#-7PZ>ZaJPmNt8_glHS4aKw!2Av1ico`Sb_JJHaSA`I*< z0J?K0oix=n6!{5+IusAAthTyu8V8<=A}V>#0`Ri^JOy6dt9oMQcbJ>WF#qVuo;K3$Mhha$S{a5$Y&wB_--Lv=zg~ z8jbC>aUD8z$aOlMhm%eRvF@cb^WEn+LYQAy%RL_>L~GjSj5T#*x@ni~f5%b~ z^#QPo_oTMxrXjoYq1+~E#=InxTKd_FMIRH8Id0#bP}FgG1M;gT<`n|1!kqWC>>8N@ zKEuUTyKP_a;d~zWxw}nfqA2>_Buzv8O`g+gHt~5zM*$ac+UG-cw=aOI>H8~etVJz5 zTF&&sQDDzA&(O(p+U+){-gtxcwKdk8O_FAlthpp-&YYL2Z+w-JMuR`{xgX|{#~$I$ zS58n}U!~Dpkk$3JxWkXq8J*Axos}yvm^yuQEXxidZ+Ta{1C_ z4jnkaiG>B`=jW+atL)pehxx@tI?myoFyWPJB}J4Be81e3<<26?Frd`7<2W1FBY^DQ zO|#h)Ut%!Ed-61;U8?b_JBJt`nJ|EKyMp31i>w?l`AgZDMoNRRk`6%uls)6+l{F$O zdUo{cVT_%6=rtz{WGGH=M0?%q77P@@~Qt&&u zQZ%@{u9~qNHWz4z$=1?9)L_a0Q6b+I&{xNen7n+*E}bxRHW5eCrvuwB03JR6jQMe`%NA$+Rs)ADM>F@xW37{VbR$PnEv30 zczE}2VpZlA7mFd5Bw0q%Z1U#i^DF|tb>ek?>%{9EIeeJ!|06%hBcJ+Su3x#vZ~n@! zaN+y~c;!MDX#5B;V`==^0BU+VY={mT2b~e&f~wqFUL{QuMn>v^1IYU>;LfU5rbL+g zFQClgJ*mOz0v$y)%LM0GkTAu275Lf~E_-I4#^}@pNs^GIDR_@FPdJJq*49?YfH#wr zOTAEUpYeDAnEw}FAORV*pPxVTcK0Xs*$6kkeAuzwKVStx^xFlgq=Hge(>hao6p}hfO!A@&!=e`=9Pg<+X>z)NJQc{ z?!tZpu*-I~-?k`UM|)=)(`(}v`73^Y$^QKDy;Bj$` z&$6(|&VdMVwGzC)O`grw0mZluWGV$GZK$c(?xO13r<*`$Y!v6A)oiMz6eM`NN~_fj zBNxPRO+%6G3t1+gti;reJ+!=vx|fo%LXDUDUc4~*iluru1ZO_05`+Vi`D9= z)r;MhGiN-Ca8X3&JqzB02otI}CuoUliPBuEdcFQ6aMu8wJkRfKcRIv2o?&@q8RvR} zQPlk1C^_m*;Aw@g*w3D0qaG@N=;)AW8+p#DQ>XaSm%hZUTOnz*wz7h&R*8JpC5|kw z9VUw%bNJnWZhM|y*WGQ2B8|%@@t&&bwZ-KncJA6qy;|)nGo^ zV88$XAOJ~3K~y-K`4=lg>~<|6U8xbM$ltV0UILyT8>6$nPL^c>K!hg=s;sxxZ+qoS zB~QCOZ=*}4;=g5mn@;IiGWu)~HE*UmtH}$GT`Osan*4NiNwQ3ba$SYRpJ$BW9f9xF`U7vW806#7fkB5y47nDEJ+X)Txb&Zz zk$OF(sIm+Z=@MS~Jj12!4cDDA1JS3*hJc&$y150o*6N6tON5Z4bkee-kDzV}#DP@_Lg{ zt8;otRHf*^Ynv{(X9$*eoA5;F063pERZ%HL04PNcuA1!JqCZ6unIRh_Cb^=@xg=#) zm8v+##b%;;Ky#b~nRm_+MUhw-GO4_Ub)NQGwv%xbJ};cY^cUMT>L56A}<@;k{1H%%I)}j+g>O7_m^E zXXHs9d=xA0I!5SND2hu@4mp7p6QYF8d)JN_Flk!^s9E}5HBZT8gidRXEbS19bd7B# zj!8Nl8ns$qxUk^PDAH(E`}{InPH1=zT~wP>dfnY?-_D(^H=E>H)~&@7JUJS;MgpU+ z9ClF4w`Of!w!OW_WTwT&eDu!HGR|e|tg4!9T(HCJLgYu+!~28k$r2>0Ael!jf`j*@ zQN%@V&t!|qiDV3xolf~;&0%6#)2sc!NaYj(}HeGys zy&HSgtsk&3i8!&b1pSWMqxOc^4LIBaJsb|W)bH@Do;5ifv$H?Dxp&yTwhW1g-=s%K zxjNt|Z3^a0m&K(BQe~6ZuBp<=b39O$fNwlrA{SfHv2G60zROq901`<0ow-;r>R=Y( zpz4-kt$S=A)(I)`0+c*&0JQ9MkBpBaBBWW?H>x8PLFEN-(Y@hkQcx6J9k}Lw^wMP0 zwrg_(vQb8>TNQrH#4)3J3TcNaYK;aL*Vf9E2Jg8wdrtt4IA_2l>KgC+ z4KTD6b_wj$Ue58Ql1H!$*gZC`IgllZc<-r1fm}#5r?uW061?q&XbU2=K@Vo#yl77^ zomKYSi}^nV-E`4~;7i8Gr3sz+gsC*8F*1&*hRy=>nnk2**sj=T&X+(|y>t%)r-yA5 zHGEA@O#yVf)(Rt#`y8?K=XvjC-un%Td%qoWF@SKUv>*8vhGrS$bO{`_hIqwSN+4(s zxIax96$$kGr7o(tWT1*%yDNE6a|6-Fa<^5(v5WNjfg}4g2hH%=FQ(oNy zI2O-3H68FU{dIqX8HGx{9vnIE$xBTq;v9)ZbVkFa)p`zO#z0P90xu(`PYQz4K`Po? zw*LiS-il#;1PK5=Sx2*sD6VwDxU+kkY&4i#TMI?j<~O|O(b+%f3*>p;jo_5mUh|mW zxJ}q<5vWg1N}A{0NxB$l07tX6v2SXw1X9L^Akl(2UD)XMKn4z02Ld?Eb$G1IGsDJI*y&G{(o6ROJ3e4Df zmf^$^*&HUE>r>plL)qJR4|>#;{hh3i8K`S)UZ=HOlD(vz^recNb9fscQ49txLc#^T zew(d}85Zc(QS1_-EfQLa%Z8btbjwO`d)-C}4&k0E&Rwn{)$q85a?aaXJ_0-{y=cx? zLCy~-@O#X88nJ)h_wLN+#z+o#MguSd90z>}boapT5|GsHvt=N^@aP|g4g5?w`9 z_U{V^?(PjQiwmjX9v}`Uw+)O5%pu(fikNd%E;61sIV;kITe-8fkrC86vNY`nINp<{ zX&F@uAo&pE?&+0C6e}H~<4zNb-meURv7*MXOUUazxQL~tCXonn++{RYMAYXw}DRTJ$#T4KTz|W-7+VgYl_4Pn)Z?7xB zuXB#rIw6YMi6UKaq4fS~3t>kCz`bd&A48e-%BTp_0_9$+K6?M{2+kdO;t<$*o$IwM zIdOC>5_sG>JuIS21ai_H0*~D0Xj-ID*Fo19-uO^BI|m4D5J}HLExYX#gxa}B z={1-vnN2BdK-saW5Hc4

e%l58P^llpzk%EbZzBPcPH3JOsd8r`M^w%*GVfFfbCC zKAf`q*<0Lyp7Cbpnaf~lc^UONl~8CbB7wG}R;#`5`}E$liJQR>yqwaF%p58mxbiw~ zn|!L+@X=8^?J(I_idqHl;#e0@l z*TM)2=g=$*95``|de6wn2#br0L%s3H1oMCu3U+`-FDkvg`d1sE+Gw!eYT>g?%HYwV zbh>GpP=J1)ftjoJoRZQZj_|L!vrDn4vWX9CN~IUSPezHtVb|XNYcncNs7)o}>rO zdw^$cfXk>>a;TrC$ANQ=kQN^Vt;gsUp?v`I<~#`U8e6x54|??PW<>_d zir)SrU9r5nMv`PiA^|lU*h!N_Yqc7qAoo}_=+b~kjtPEI^Zc)6}gA$Y}lrp5*mYa70Y-D4!q-YzT z5YH@dDfc`bIiAciUL@4t3`X_&B3wl!a4*9%1=uRo>%x3QZf@Jh+E?R_+scAyNe%d=@pg!>PcnJqZLb}S`rD;$n zfzLxCH)!#?EY`2vz876_JVy)x zH#77aZf*?RPw30+r8I|SGHxy|=>x|i@(5|Q+DH^3pji~r9BBxvtJZ$^U08!t{!-$i zaM&!=c8ZNg#+MH2y+C7ny5|uG#UtK(5$9N4@6ZSeN!Be(ym!bA90q+Hv|L3#>_O}| zLEOwUyN6Ji)hVG{fM%yd(rytu*S-Hr=%kXddR_Jho(i2}I0sHqTe081e^HgMY^SIO z*1XAp0$TiSz($AWx6pe7fJB}2lCBbjO7cyB%Q*wuv-G!r z$EMpJ0^K)YxJE&BO%n-6`WZY=(Y0S zu6^W&y=L5O%xJaVH(B15q;A?L8#r^ytI>PGm-Fu%LKnsBb|*3Ie5b^cRZ81m@9(31BhxcXq(|)Pq-~ z#io|4-PhOKG^WS85>Tl`(fGFd=&s9z>`>Pm z2&qr)jwv_@>~oG6ymG;Nk;ri*iWtrFZX0+xB3E$Vtd$JaDMF~fAlkdS$(}Xr^-F9d z@#-WA-5%p2>S*^oU5&d_!{-K!pff%(HRiOkqI=qk`pmR8eUb->@~~9CZ=qvXnXCzBnTDS-(TDUAR6R z7~5HVTs^Pa{@iQ&p{NHP*Zyd50c28o>GFab=N_|#lZ^(F=VW=_H@rIcQ1KZ@%^4bu zG9RTkiop{y4hsV|Z2+G@V87aISz=_7=@1<=nCYky(r9&*%Qkhs*=$l9sdrCNB!cES z6JukH+_<4@?-N(jA2`4{bLPxj&ph*tkD|z_M;$$cQ>3Sw!C2^{!I;Rag!+hC;Mn+h z;K1p0P^)Tl&Vl!;Nrx2V)jX$8kE3KjfrycDsd-s4Jp|yy1~7`2@bLjfQ5c_{23F<< zK4WotmC2pE2)E`D2~*Q^OHbf^_w|LsIXeJ&Rtfa(MW)4xNUPQQ?QPZ3=iC%}yi0~w z6oux5==mNed?=3iPL^>#_gp2^wJZ;b$UP&$u*_*lI}}D^7(v>gXS1+rz*1?a8PY4h z6lW=_9GHkI-2(SAxPpzm6gEppRtaJ4F*BT32EI?VS{XDzBF?e0vhwrWVzc#%qNuJL z=0AbMv6>q&a6&%7!hY1e-`N0CWDR(QP`@%wKihP%pN9oTEJZO}jPDo%N?cEHN}juu zRoqZI1Gh;;N9c0pXcqLNT-xGUEPKzzH07EqH4%0@$E7?J8HaHrVJ=ZYw7MPbD-1-B zYG9`Z0C39m&iw{(hCTOVCM!xP0=`sopbEh9Y`u>69$)UDGB*Dt%@{L#RR%a?=76Ok zDyY@q%*n!lO>5ihVvvsA!|hhl{h0w(lYxSO(C0ZsQ5aq1y^h!G_)Wh1d$HaVD1PC> zg+ErS)k3(ulmVb7e8zrv)|CIQsY$Xl4I>)Lz{Pv%Bx(0YZHA{3mdt3m z5C)cE9aC*H9z{n>X2^LMl09wrw$zg}0M?ck?Z3TNaVLUzj&`HbEp&|oxY5W4;B8Py zMfAowm#cFA{Q1vso1pIcp9kgEm7ZIUuoh}-bfnd%esZ;1vt?>M}5#EgP^w=_C0iPhLolZ<4n3>VezYG*OEK@?lEWw z(b;Ze2dcT(0U#zmj$|c{-?x2wPpa%80VlzB~gdM8H z?Pby|Qx`jYnv08~?%a@@l}eYq>8J_ZEfdoH=E+|y>m+d!S0a`d7ynwP)5*3?PbG4EtyAcXuRFjewaR|qr&Wf|Em z!X8yBcDUE^c+I;2xEKlwkjF8L^rskNdIW^Ux;60kKD)WbdzYL z0=IHc$8^+o4bG6rjWf11Q%H4zODG@Gz*TiYl?wwAwuoLK?}`DNLjT+|!~w5YtE71z zfP?p;h*v}tRW4=2Q$NKBjsh?(vw8E)>JR|4pI$xS>_9a8W^lY@sl?V?v-apNv%ER^ z-bE}n8nCkRzULS;qUFgPZcK;$1&~o&WQ^bF8tkX^Rr?7BN6#~#(5@XWm`aqS98y`+*2FyxOba; zlnMFH8-OV0!VD^xVXVRv=7GOc`rVXux)hVYHI8tRY?vsHDrp>d!A&vXu3<{)Tq&xf z1BR!V8hyd;!D@gy;QpW0W@}BMCL)zI%TC?6abr6*^)BpH*;se?EQ-4SR@=KVRSpnR z0&fx+Xg_G@c$$q}CY1ru`c8;kGipCCh(`M&fnECGAixEoobQhv6osSRk#$WrPcf9! zR|muOC8NKyQ|Qep0=Ss_t|@n-{gDchF43RAo4J;Jct)Dr96Vr7;EY0ClBwbe6_duV znJm0xa&Yf}jw!ENHD)~v^*2R_t*DClt$p8|I~(6IxDJ@3m)o`W4FH^kUcr3LId(~C zUH5_9`BnB=Yc2&lO>yYTg8FD$L^&tHiI=1kNRSn z)tv@P*Gsfwr``T$j^DY~)UPHrCx;Y~0-!5yTn_S_*Y1oZdubw@M%)H<`F- ze|EC5?(YyFQ3c;=_4t|Wn%Mxq%ox4lyqm4aWU^-azc9q+jnQLQr$<0LG*Wa>98Nr$ zC-BmVGd`)FXLh-!8bgxb!;!>k9XSJP+*AjcsgefKE??_q1BAqGhK0q*qhF z0qqtw-0SvtG3)2d!0V3EWr@{x@OtFpkc~cUo|*w9-5CV5n?B1$SVbAvkaAjXCyY&v zlXL>Iuf#E(cDs+!u?&!=O5y2)pl8Bmv(2KR+biIL!jl<@|vUDv7q$; zpyl~HxL}7+Q^6LU0E0}#6S>EE#ewFkxF~2q^&V$A>1lc-U>%F<`EJNJ7}hcg<<;Kr zGzDD%_rnp5U(dIN;`g&8tiF(-I3aQosVd{ZlTNhlg;`aZH!%B@zy<9$TxE}agkF8c zJ*9}@y9p_&>osM#AAyM@!yznb7ir0h*PPtUW-ev+2;|zUeyyUKufVUEFCB4)dC`z~Yc5QDFT}+X#CtjqfvMj?z5pktb z9Id7Ie2?BI*=XJhQ47U9pxKhGDo*su?%m)VX(tVX&AKecI`qbG+U8X0aSaSZa0Pl@ zG{rPS$TR>G!r_=A+gJp#rMF{QT zk#&-8#-*~yxJ)W$gxnBR-Y$U~?E0|*n;Ukf4idPRoc%v|;j$TlQ3_M1UQU%~_o^v(}!)OO(Ez2^DH4zXnY(eN}7f`^!{9LsJWyWVOlaD`+ajbQ-L8si z6oH5Jb{n7P-HGDPhOk0^E}I^>(S0U!O@`;>^YESA0SDj6`1{)u@%vRru4>_b4I^Me zi+$!jQ)A~gQCx&IsCeZFA$xE>fJixN4)tu13$AIyF^P0p6erLPX5h~(Q`lwJ-~VM#%uAcD>hp@?K`wB0)QFE19m@!hWJRk{#@$-03ZNK zL_t&pE6RzBo6+%XuRC6Oo~LmflcuTn5EoUu8WgxZGBL)ht808kk^KV|aa#JjAQGJ* zqyyfz-(B6}+G_@I)C^0_9JEf7QFTcd3`@{Ks$m?A)a-hL7UP=zTnQ=Jd>}eGYS%2k z@8SS%Ibbt~UIq5WF{9Ngxe8Gvh?8#SS5&=-M5?-WH_1z-QW+QL0zss6kt@15E5V$q z_oN~mQti%EyiAxw^mTYq-K@W^g zXe&ubtb@vRAE=|_1As^ZBIN;YKm2Ym40noNUUajS4k(ERA%$@~fTTWZYq2rlk)^3D z${-m?Y}_ZqG{HhJmSXc}Ufwo2TYzH=+Y}(dq9P(@l6C_hu$b{_@44=kO0^kO}(SOTqC9(x!-?xZOy9?_oHRkRw%CaXI)F?fpx(DU#*eZasvx zExca^PJ~dM?D8H>67nqT8i=T9wZ(BUSMH6%@XjdD*-L+`w;1pl3&26w!{$qKlbf0{ z52}cz4U5_wF1$V~Va>~&PwHu|tPwRDXr3dgL{UVV=R~T^nSd7qMX%78@)8Y~eQn$1 zynAG>2 z=jP_*si&U$+Su6GC!KRdQ4|WpRax}Pfe888hWP)frQKmv_gS>1NP8|CSUGBXWXC}C zM(k&G5n8~a$x4%rQ|%*xsFa2+>Kj&W6A>D=4qDoxNX>86I@}?6So?twRwHeLL~(^m zttxOU-fy}P0o=luEeXPk4-JoeaQFRr>c3Vj6XDpAbX_!w?w zRrUlxBgGuKuZHOG2IG6g_V%pVo6}}vCJEV$=|&wV0qkliTB525 zhzM<9b;xTfJ$V&E3QNUOm1QS?P#+#Md%4{0@GxRqp*vN)2YnFWuiQ-lXAU^E2OgRM zeLbX!bRY0R%Wt0tj;ARj)@og(dcr~SR798u7L$ZME*Oo$s&O$iYHheOVG8DT`fD#@ z(4)YJZDM5aJ5PUigpsjzfz9H8vJi2I6Dm;@m?xdXMG=~1EUGe3mt>1-2|!8k8XfRg zx6RFMqJPHj>NofpO6rw0g;c^s)P79@FEG5+za~OWm3B#) zEN;9x#w|UWVV&$o+E#d9xhlC$olkEQvz;{AEj+Fta8PxDnC+#U4{uAuf8O=dOD}!u z*s)_jS+CdsaVJSmG@H#Y%&)BcEA4bTD>btFYD7O*#sAHOF5PhjxYweu7fp6vHV0;X zh%q@1)QljlZ65dV){=gF?Zf-Kbr$7_@-BL<-}6J9Jgdd%*4Y#wewrS||7t0Ua1i)l zgld+{N|OKc)9;-9Gm{e&k55ia{KV+!=;w3Q*0oEQzISbHZGPYo-Zks&*|R6=_4*&$ zwR`thtJP`*5V?pwJ7ze$vdW|2Uk7&{WdCN-Xp5K?qk)R(NIBH;v5`^KYf-FAG4jO& zUW93ZNwvDI0b6x6*cpvNTfekS-gLmJubXVh9gb@lwLfX(m@9!9uO7r9s^q=Ho(DMr@`r&31zyqMX{4PF-uQ2#C{$Jz^GipZux6Wj)ek>gK6pEN z$N))Bug`y_-&2+mdXs!}6N14`g;o$g86l*Vx>t=N#`Bz5g4s=zgifaui2m$zmh8^& zp*Qy`?Ex@nUfI9jHZ!+h;#{{D%X<(6=R{*CEQ6fuq#O&;53X(DSQhmPMSJCld9F(X zO6U-}#0a#vHd3AYZw(zT`=b2Nvh;$gXI-I+cH6r9A~)vPrzRs+kShIYvYRFw zF+FnJd_WHKA&y~c&f$vbwVKTmR`uXq(S4^PBHsHizh8Uwz5$%iIDYxE@()g_xTjEl z7kCl)sLcgR2pv*Mm*CIg!?QyqVpQ@lQbC+m@@x`Lv`9-)$hR^iM4J%u=Qh}orWv_m z-t}NOx$Yc?@?4#1pES>KF6y@Q`8+2Q>2~={*!9lRolC`O-~h~D9X>Otdn3VC&gn6xtC4gIW-A&ui=7$)Xfl7 zn{t|Zw9!DlC(E+Fke(A*%^gb?DIBcrS)y0$UPR^=hrCYdb@P_jZnKAB<`kT<073D6 z-ZbyB<|1}Vjzdv;Z0&sxsmS}bKkpmBnHH8lQGvhFQJw;ww!Gi3+3#zhN)*$5i}g_lyB&12 z@9X1)iEaAF_jVm{?6{c1n820ITV2Te zu51Y<&Zhu+WKia^BHF{9)AC!9v06Gr4ggO_q3)+$kQYOCQoHJSd%cVG@d~G#37`Fn zhI*FrQS||IbceHEC8UkU8O~%}S0%FnmV@I&QooVrqP#BktDQSuyUdQ}7CI243mCTc zI;T}~GOr?{#PSITlaQn9t$_M<6}{fgh%0oAdPYEevDwAcpDNMX^7 zO#s)fuHR?iW-55u93a$G469rpvk>tbn{(R~>4{O}%1HyOqjX`aeB&diYqfY2_ zI$ieSg4MCu^(&>wKrJ9+{ft9alz+6X8g9SD5sPy@`ibHhqo`M1@*Wl8Gb1s_bCs_q zdAD$Q#bhHfIeCIRYgsG6Z^0z1TfC+S7)>@B)^9w3&k8vQHY z&ED(&LreQ#w1N+=Iz1-i+@gYI{++Ag|I!9NByb=?Q-zKqk)Wv}6^M7i*!=Bjbhg*P zdOhd=_^}cGhp)77#>YiHfXTj*E=LIwzcwLTFf3z`WEuIum?CiwhbJm&fhxU7^Aa1= zN@dxYrq?}si;WvR-BU19(5~o!T`c}TqAD4nQG}ZJRXCsjB`{pSuXpgfZT|L8j)rK> zu;@v%gw$YB^)^axVlE|+{0#6xk&xmVFk0Fld))|N3NX@Yp{nY8 z0=fYkbxgTkC8Q}QfzLX4!iXc<8rlq%Fyp3Z$g0WE4)g8x2e@*@Pq?rzUrk^k3wg>K zaI6B~SAidk;8E%KpbJ8^HIuD)LlD?8;T$vcIyg6gdg)Q+%5A{yKG6G(p*yzd;2>M= z3h=PNk4CUR3aqv{NMtgXnf}`*9Q{vQU&uH)CCvYMqs7^20JoqGc*!Dfha?o8Z?#hA z`2X2^vmVQ`>^$sSYo9yBkYnUjmDN?%)f2nfU2G05iWH{?DU+}aNuX@W03T$4Zw3s= zFO&^fKfsa<*f3xLez0NKFd)efelR3k7D-8*XNpueySu8{)m2$l-8pAQ#&GXFdo4fg z;jF#Sxe-|v(V0Q>>_Qqzl~_0ek|`8-U)7@$CA**SZMk zC*tclhpa~5JKv5m^mdF<2^_x!==TK5fy~H#OBHW35&oy^LM0Ddt3dz&saR!Y=dZhDi6i!Az2;{*H{p!YP8_|*X@txPWBpXb+H^fWq& z^znCa3>BlOHj}AN18EpIfwBQ-5#QI(JK%}pm+l-*l02Sx{?#x4@_&E#?%iKJx4n(W z&hb98kP;TnM1@&zUcHX3n=im0v|tguIsrcFfWOrQX@hSA_;mylv#+6F;(aky0#)%T z1ahwP1Fz#!)8KUg-y1Wrp6zgGFmUIQ2px?NfH1WFwHSoH$k6X`(1xO23eX6!+_{Jc zt_giiWH!jLg7eHvhtLfMHsU4xbMNr(3oimIz^#Ct32>1^Q z?o|^gwLgjxgiMcuG-dSCay{ZE<>Xmi7V%B zzyW}Nx4=LCfjRJZCL!i85PE>00|NCuIsq@vcdj56yiULuD4^q6G=@hAJgaNGgB9g7k%l*cp5<8}*X|Rawwdvf5Khuu+#s3ULHwgHqjO*ba zNZ{2hg-gQ%bWq*%8^Y&Nh;y1p6JAd(qvH#Ima69U8ygUo2 z;G+)sPa5DqaN$0NCc6JLX4^hGf;6*JpX-rX)W?r`p_iGvu>6lOSPUQ&{U!D0*8%(_ z1Ft(^N}y%hpzuMZ{?VsDjr%*-;FfJjuQeAA$McL&tDtQTnd=4tuJ!om=Xda>ANet~ zGluR5fRmu-_i+F^Kfs~&@Fj%7%v!3!cb|ebCREn}w2@aNDM+gbeDsMeI>zI5+4tMV z|9t|$PjJ}8yG9Xg#jd&YfZw@@_g{R0mL9~>yha;4+4+B0_=gJM?`*=o0_ZOj;TjRX z*L+M(GCPTJ;tB$j{}wvo)1<>#<?IDn&)i@|J4Hj@&7c%-}=D~xc^9?|I`O{)5`!hiE@9?&Mv4DJQP#M z&^W(y9>AAXd#b)eCuPo0bM6lO!d{BsuZd{)>n6=xE|!R##_%GbtS}o4E>#SEnxS(7 zKUDnMmlVGsMge{+MHfATLLFz!8B;z0`>?(adr^hdb!g&)NE3ztCu z_7AbO411D`_zYfT;Kv#GOA0(x;F|)xsUZ+OKp^FMC6<2IZ5bp{*Mn$JbtUM@as{sf zHI(Yi3?aff0DlQU6EV;tmSq|rKy!P38{hiGr_ie6@*n+S*H5Q9M;gzwI%(kRx(n^8 zZ22kN-5j_uu{=&b@aVFB0%z0^EuH%#RZAY6Cn`!W~iE(sCI1ZnUAB z=v12TAk6F3D1&Y0yv8n*y7(&ud=CNVDcV#DN>NDEN%(q?UwakrUAut`Uw;z~`m+|} z`Echefd1|w{{9bd;1~Y0Ippsis{3a|_?{y^XA$ppW~wHWsMg&pC{kHvyNjn2dRhl) zF2)$;Q1T+dfbYZjJ$9pYTt{Fpz7ykfAYCGmQ0DA;-fhn2EEvPD9N=&M_$L0zU!DWI z2f+U=A?x^5e8>~ky=t1ZAS{$|yA|AE#wrGzmxEyy=K{LzhQniwU<%+I5mu^$)9Egj z8Iz+4bOfCqM|jf%%@oWW+EmU#yvGuX_o9>e83r7Ilz`uF@x{>{e7LhW$Hxw|MFU_l z1;ha?z}{Ehz{OWz!R;F_;>m>zxb}@d#q8~O&_qzd)B%!h3NtU?t---OR^WXF-qEl< zweA7^TFkWWulbk_CU7$WnVdakV5?|LUc+l~K5psF8|=OG3Laj(1o0j_Z@vMv5@=}E zW=kW=c^+q_!Cp29cuc@df%Cudt9bmQKZalW{1@<tDr%-9u~;aHjzt#f3jd zijOexN+gOr(4a7rs|z{aew;?GSK*x*+AK(+)Z`{)^jSYs)K_ zap%RCu(z>+i}&wi>&{(x3PM~OZEZBMlbwIm;_tq)!r#8&aQzpi(Eoa=^y?L1eKE$8 z_d8&OPog7k)JE@Xb$t8s|Rp zGA_OIO}MvjVbh0)cG&<;1Q|^nY&j3$G6SED0c{n5h>y0gjDH?P8+t{9LuleYr~+se zIJkZVUVSk~VXH3=VaA34=)A$>mtMi+^Ov9yG|MIS?|uvI?h`bV258%mt);*-MxJMW zYzVnT!PmHH13Fwl|KK;V{h9B@zq@)JU)i~WkKVn57ryZZwjUqh0Kg#u%Q#!r#3XG( zz!eHU?$g@YmRI0j=*b7*T#-b+NP#SLO5tlX@oT98+P?BzETQEI0IO>|xPARa>`x|e zs@S}H7w5k5bx2x((PDOfoHIV*`G1!9;!n=;<*f$v3jqF?Wd~*`0-R}#OKDc;Ys7FG zT9Tivf^>!sL?BkY0N^qdZ&sI;mSoPE_mf_gJ(rLP0duA1xJu9*z)oz>e=FMNbUHkj<6v(Ox88pri}UC4_QyYojh9}=rFY*(^WJ;Vm0&;K zcjGc>DgZzYXADE(58p zk1=H{#-Pt23K2$dgQ_ypbAECBVIIGRjf1Ik(V|mH4-n)DSTL=5td2k<-+uwqF^d!>_ zcnVD15{tj0U9}KOAwbj>Kn^-)iC>3e<&Yztar%3m5Ed6MWB2k7p3LW1F=HZvjl}}W z4DVaCt5xu=9N6FqF-CP&#>sf|C#?J_HZO8`?jK1=n0|Z$yy$^nlmHSw9%IioIuYhB z!5W^yQ7HD?05sZxB>y3hI~x=~=6&>6byo$__v) z8iTs$~EyGlf5VK%-AQw<15#JD_60-IKbq=1I!*h!gTjB$P2Wp;Lv~r zVq@@Agn{(NRBZgzLFOA+Zf#-z+=VOZ+QGr49sI?2-@)|u9o(aCla4gW!UzmAKxa#n3Hy_S8=Q*?s=bM|japMMV z-MWR@Y!+IFL?G`2nPVFOs8@v$;gA`7(>dhwMra>^KnQ&*76E&OLLjQxSH)-V-@(;; zcX1!UQh>>O@58xp(Wyn1vai64!`YQF5i|xTkV3seMDtvcAj}3OfYW3-q47LJFs-Rz z(}B%!w{AM?IEo;cZEj));PInJ-P|AmCxV$OR6SZ%sI+EvL?986 zDt6DG$6{+MRJ8%H_i(D9)hd3xfWVnHI|m$;2!=s=DxTHi>n-+3BLN}sD73t$9 zCitHpC<5F=Se$r>Fqd-?zzNe}Dh~ zdh^XUpPOjw*#bDg26OnOfA!5bf$x4D)7@@iI}92J6#L=}H}E~HB_8h|;F}2RmbYV- zlHa9b3NluAlX7^yRgj=?` z-JsfaRmO7)js#r?ld>a_oLS3ifz7QgT)1!nPo6x1i=abdTgYxVkt%q#3XZ^Rv1pXD z_vZa3m1rYif+#d9vmUvmoDMq!-s*#ga{l1Pp$_g z8AF?>Cn^yIToh_e8M^>zL@;SvaGIUTUyjYop`<`LX1 zP29SPur(zWz?sF5OV+a-_^S6}V*e_It-VRKlSKl}u|0bD(oHQADnOoJF0ywJS9vcSc%N69&gWe=I0g$L1P0r!vX@if7 z;Lr=+SKzDK-`TIvJJA3Vq0#~RthNH+tLQec9vg6U6~GG=R*``~tN(-u>Y7ZSoyyAE zwxPHF_+baS$;^?Cj^xAJOT;B<0N7B)MDC<+Vn!oyxOVLt4i67=1&1TEuvGJ$Q~@94 zqKm+308nB|{zROe8O4lz_h0`T_?KS7+uNI%kb_^X;3-reiG#3_6v=WJQYYr3GHJyg zc(j`{Q8@$vb_|GztXf>VaUF-t1y*})Xk#`Fu3x>1Z{N8SDs~i%RHG_%s5(-Ian#(e z0xQ1)&o+}9Gl-L2MAS>XredHVim8(eO)fIoz96iPMp4!9zS=_32_{0_Kwj zi(mcMc=+%AG;aUsPvBEu`zp@A`SnnJYeL0lslYi3nt106VBCEnLYVUeLSjFOpo9@R z4!h`Q&uMsh9^=^qbnD@a(EWIkfE(Pg*CfgTjds&$AWgmdsqe<)t#kPF+h2tU&`yDi zPi|pnc}utEM6#z(erfoz`Ey*sp-v^&diLC&O1)zM3dT}_JuhGpOei4E*W!gNG$7)K z2)q($=(vrgw}(&him^2M0lL^FoETTL}wv;IS(N%DQ z6%ja85z%E-Y;7#yGB6V)0i}Yd4P%Syv@1EWGDpn>Sho1s))sc>bNv3zm+_J7H*o#U zuVVh~yJ20s2>|6_FqCvNIOpbbEFSM>!QQ7iw_;qI#|q6=3Q2ntt4*q18!DSY1U7KM z-p!ZsXlDlt=b(4K1w42F-2s%t>zx9aszN7uDf#)vh%;#k$jXF8DK=036Cf&>td`(b zpd1O<%#dEgVFu?~j1Vo%$}a+U#4;jO(mj&g&@*oUunNGg zQ_)PU%hiCNC2Jcq@sph`#uY_mxTexi=SoMMlkgN~4!j7alS$TxN&rRj22;qEIf9&| z1C;JmVrxM)3>tgi;!p%Q+=r%tO$`9p5#Z)iOs7*g#JMr%a)naFDDFmb6J}6sf7A#^ z#tP1JE88%Y#XLr2mt|nNSm4s73%K|2AvPlLIb5xQ~7~mUQfKDJf8ghz>i7!WD6%iULHtB<(+P^(7yUA=I`A?^LRg()0D#+-q15! zw5_S5r?wZIzz?WvTWJ0H3DE-Z4bX0#L%VeWQvl8d20tNriD z_S50sT*Q!(s+MyUqurc=@^b&Lyaa@zvE8}7bq?EGTVV67x2qK{Uc88QwZg%{L9jOt ziBXyZ%yXmhdpIJvhB0?jplL#)))JJh*TH_pZHw`N2NU-M@>? zJGaq1-s`|ltoEdGZNg7=Vr&WAh^iqw4PZu01<5<$@WLhRU%85d`6fJv)l6Nk&}?pG zV1t;QPeh=5Px_idVU6zC#I^*VOwvcBRJvl+I2H+^@NB5$N_NkrI+yL8*gB9e-EArk0uk``{bv= z7kBX4$plkrt13XO+{HUjiu4pKGIqYRXA{;Od^d8DfPmlL!2Zrv>}{XJ;dBaB#ngMu zmy4diN&=f=60g+KIx7h0tZh*hZ<7~%_Vw5C+N-bP!M%HUaQ{B;-M^3dd=7{q&ohPz&)8vD_xYcz=^yLLW-pUts6 ze;&*ECJyHtShIAB`z(UWO%qyCrh;Rcht;On43KD;UGU)>t5+~_d67n!ico=C=0S8K5ol#2 zq^>6p4RMZ-2)5(-4m(OhBiaQG0HAgiRv}|1t+7?qwk^aMrS~2J;KId=@ZMv&I7CZ~ zkF#RC2}#(yz69wU+Zn{22467FuHBuOj%&`Xe%&U%UXjeF69QFewNj6FCH(Ks;t0c^ zv9ravkZ4PS%tx%4#XDRsm)P9g#7ACv1z&&jO-yGq%n!rv?=FC)bAkQd`k|D7HBHbW zli`eq*TmHv>n4nLHizHZ!eVP12OFC>a1(fh?a;|`nQcwtazx@cftKSV$!4>So{`9Q zwpvtGlv?^FR?8(C=Wuyv2Um7>u=C&nzVVH3z7BE@ZPUOz7u0w~;Czc& z+ZkM1O&MiS6aO^M17#8n#3nQ55F z3>*(7j6{WopGM-r9Q{j-Wxz!O)23Zws%2~=s)p1}BA6`1ai|_C&ernGSwrYz;}k`Juv{*&TrMHrV>+AR z=FOXU_uY5%{De<~ncidOJ*IIL^RWj6jM)^}j-%pjEa4p-0>8Dpf&Y;AF(D0TIbO_` z0*|IsJY>cN08QIsW|(U+Q2I?qpleX{V7Y2^AE#ISqy8_LoCEpTf*Kg?olGWJEEbTo zf;%wpWw#cBgDH_}f;Bu;Eh=7ET)A^pI4X+s8o51X2fehPelYLtQUtbsE|%#iZrr#5RmGFtN0|p{C4zI2&EH2* z;Q>rVu<@<;aNr1cw$5R5G7YpONn0#r*HP?DveCNu_oNEfwwR;sURKpUFXCEC!ZenX ziEze8*uAlH%7;5BN5$ zMv8~9|6wEOMax?brhs& z9p?yaiPt!l`FxJu-Q7(3XET#TyRRadI4}X0G`HiGK#n1+))I>rvt%y573Lna{E*aI zh^>RpR>E63keW^4Kr9D0UjFkdFn3q1890;rJg>#E4XVtb2q1_Vi1s*brnqqF5^(SR zj&OUxPpB#=X5kF#0v01zjq56n{oE9wl8uQ0I%#-<4Uu3DbR)Pq^^*p9jfhzWp~Q?f z+R4u4%Xs|wF^GUk)8LJ-eibj=d;v|E{b}nDW zYPrPT-d?zTX`$+4hAo5ciHpD(@^6@+6J!L8hg-W~P8 zv}OWQ+Xb&X6Ivwro$Xd8eCtx+1di`7C@b5>-YGLD2ws+|F{$*9Gw zj;o-*_pTM8;dq{Xkg8JFFdw6NXjCEzmu(NJ@dX(WA&4hV#drS3UM+JsVO~-FC%Yrk zBa=W30HM$d;en*f=v9rj^_?sI#g$#f@SUdQ{oJ{8xOV+Iya<}6!R-8b96E>9LcseA zG*1qKouvwew3+!_4d^X_FO}3KKD0B``;fFJKxDSFtd82?>(w>>=?rX zB7@XG4r&~+Xx9o*(R}~;V~pUUDh+|Em?m zdx&_5_wa2S-#0BQqQKjf+12}!H8$z13kB9lRQo_^1ULgP=71T@WolDA%%+l~BG|rg zA(H~8C0uT}a|*GEC|YLtz3)%uJFc04nnyG3Z#Am;FXOXXw@GN6{HGKsU1KI{ZcD} z7`LfLk&owxzLz%g+YSYU%rCFw#7vS zHVJraRX``sB(sk(EVWN!v7{wKMu$a78ndkm#j$w&WeLNGXN+3 z&L#w$YX$rJhnc`gFihG8AeZs3?(D#)-Zz!CGfS|SvXc_bRBaXLQ8a9H;e{NNHiK*W7*65lEjD+r*C4LVyDXHYbxD(_ls$YS8Re z(Rz>BY=(`E4Xngt6?3*tvUdsi*bmPYl`QDnRc8`8B-Jxo%pDi$F(P**BYf$-lIzMc zCTAqJojIa8uRvqRvbht3lQkF6wk@W!8LnKujMjS?q6k>}SFQk6FYu}P6e6U>Z&APz z_j;4Lqz5ir4Qo)mb1t_o0+Cl1a~;oza~}DwwJMViKbUK95;L~9)(`!cphUWCyb2sN zkOC*hQ5mWRnGC6KH(|BYnQVP5`aRbqToRmJMcKKDk7*B4c(#>}3=C-oC(UkI{w6zT z9D*FhDvlPJvL*SWYMu8e+wI!rQhI)ljNHsc;gfY_GCq|YjN)dt0?VdBv$+ux_Eb?@ zQ(k7$JOqC6;zjVrW@e5^c9>&W;!0u%=Qztjq|G}EY}B+cJNuyCYItoog^xHt)*HO<}jW))>kD1X)uJ zs49z!C@DMA5uEgF6Rt=gb;Weq;&A_9eO1nYh*SX-ALeGV+ZrO*txk$+ zF~BM70acjov2Cc2&RDsK@WIm|e8j0+v<9T*x zLYS!m(e0u|8;vdq>Xw)@@#CoBR2s4=v5wf3AypORID=d9zT4g$05i2c*LJH$ra_rA zv7{G`YSh#X=~J#Sk4^N`tK@{=x9^B3WT1K@z4l^9C!qt$Q&?&ds1GzLk}k3GH$)|8 z5*?HD4Q&GR(3;f1hH_%i7y*tsf1D>OfjI$fE5n311K^`D5HDyZ6P!PHKJNCLvR_6BltoQR$4vY*47kDu;cZ_%Whrx6GrN#8^{uVm z#|*Wo^1Y`E6&;X@Kwsjg%Al+rSs>Oq6^50liX>W>$D4n~iC1bsnSoKL29Z?&>?U0z zRNH8n=IyQ7+7^{m!Gh4u;q-z_oTnJtq8bD}1Av`fm+2`85>a&e87p%h&xg00>?Rn2 zyzi+1ksTIK8bZ|upa+nG0MLUnDQ^vWNX|wQc4h$1 zUm$EU;JgBdFsh`|IR-vrdm#NV0s!8lX&kn<$o-VE93vQ7`-NF76fo}5PUX+_IWL1Gd%t$;AP(qgF0bt4ruU^=ei*Rv0! z9&X`6`g<2gfU1`Z@Y!f@o*97C#9^!zfL#Tqvq>N?s#;V-wB!_95nWkdAu5#5>-HEEumZ&){3}1I*=3k4h?}m&EVue14cds0^ftI zdAPX>5aI)0#OCH^*s3~WQw1@5LRlc}s&#dQ%TF5}S%u^t6z|@m^$GcSzQf0E8M(N^ zEg%SUAWe%E-n5xweL*6PR8XHFt*}QFNfO2X3QxU8FYPGMo&r*`H-bR?z*?9!u?*2JwZ$o__@xSm@3DG~j#ZKYR)lQng~amikO+c0xyi4X~cH-cet zO&wcQkEwD&7IG7~o&S1t!G0m$dzkY;eKBMA}5(fZp{WAEVEJIa*wsPP*BRD78Cihx&A z;2H>Ci4H%|+H0r5p(Uu`YTgT0eWoD$J6agFu-P~aAHI#TL+5g!s(}rSc6Rb(cwtrm znn#WrM)ESqeX`0N9qg5)FHnWoKnHR;3fE@;=T&6D+2d|DAwxT%n z*+mt}YSDRvbFBD1_X>`sT*^A%qEXDyMIlAg7JwXGX{px4rOtsZ-dHoFJd~BM%g*gU za}tzQ?=!fz!E-=cXgnXbf&*Zsz>zK=9laZ*W`()R|DfTf75!D*LCt8ZM6=Ob^XgCw^bDWewI~x$ zoC9WDR&6A^G3NP5o z-#WXgS8G!?HJi=)A7e@T1n}a~0-;TXKvbDp8f4e0qW+H>8&DNQMYeN%xFQlI0d#QVLpO- zh?9nEh3OLQCCmE2Vh8w+dW}-a4UI%vr-XCt1E1bz0y*kc{??Ujhu&6IIOi~(%}OT` zL3geQ#UZYG2$%;la{GM-nM^6X?kwbL`&}cld2YuMnuP*O1r{EdFc%qhUeOJyc;VMj zwYlqT7g{A)#L&2*rRu}XL;Sj=+RMV%apLqcbq*wdT2-65N*K})H3cq>H-ECT#n^uA z6Nzouq~We)^Ax~3CDFR3oER&J09<4j26sJiJ)(L;Yn8|K$ia02f{-;+FQ%QfOsX*CASp%%C+QQH`ZDgueL7dpHPgp6gaM`xasn?CKVYxLfnJ6Y2FFPW4(c zA{Hs`ycDsVoGJ=h>YJaOHsjU-5+1#6i7}n=1{!(518+GKHRxTIQNlB(2rWR zZ84y3D{FO?gyNlt6>O^FNOwm`$Rqo?G=Ib0(8juX(VETpD7&c%Y!e%H20T=$i_^G8 zRYMI0A+m$U%jDr-@|rZf`^D$KVl0GkaSrTk1i>>lWqzh3Zb3D#-XU&9Xr;JoS1{{p zjh*+%p)ecNn312F(L^CryT(glvYb-Y?P+*$hS*=NV_@gtoHLs+6xx@>y*Qv%(M9tZ zw9!|Lt&CpvF9t}W;eHeWXn^bEm0natUoF5zuld zBeJn0Gf$Bh6(~w2)S|moS8x({g;^PP)y%{ZM1MmzodT)EfT(dEOxaaj3-)!49_lpm zux$ozHbA@bSS=SBoNxs?i@QpL-!km?Bqz#h+Sv+tvk@od%xEpfTG&%n!5JzpBqCBv zULkQkIb-ln`f)k}oPmq8g39&f4oNlij&tagqytN*_rR6SFpJ}*{D!rok=j{MXK=Je zr8lkm_OdClY&t-Xx_HcwPG-EtWTZvPc{{)0!6`D>Augpgphx0eQY2SP{cTZ+HcRCO zUR|L{_$GR`G-NDTvxb@2M=L^|0G@xc$R9I?X zl`1&N+Y}pfL+wlz1CX_gXy}V=9yd2pYYG*acT$tCKbJ=Lbc!Jj3k|X79Dt?hk?~88 zsPO7Q+z3qPoa3F{_A8|tx@2t#2(PQ|4E;RGcM(^9&sMGp^AX^fvq{);=Jz$USa4h> z&NefqE*(jOUGt_>@*aAG#kQ%)g)H6vmY9q6-=hYx3Pfx?2M=28cs|VW3P1Ea6ktz) zJw1ZSxUSgPw&S{>!9-x@uoaifG!lT$fF=v~97;E2yw@Mtj{q-EV>h*$cphd(Hpx=GrmIGti9M>bQ^C;) z0EYwCV7YbZ8aZ=hjtuqL&~oUvsjTDBOyNJQS5^qM8ZTxy6U@sP zD>%;q*z`Kf=}yI$a}>;3x?w1=P{DHCcMzJgt#tW@<06SB9=Q&FM7tri@N0~mx2Q}e zKJwt4ey|lBT^-{ADvP1{-5kr3g1Cf4iwzjYF-+`FV>kWIgpI*k`MSbx=&bzC&kEG- zJx>}hDph2PwYeiUtn%lZ`G}lw7yXO=EocEkLZHjr3#i!!y4RAJjO9qOq{>J}pmS2= zo!VcbT^NDN0I!;^Z*A5AtysyG;t9_%M7u0oYgq-VoQk93?rR59v@HySZ9Tv|0_5lG zC`&*RD=5B&i(;EyHLeeenficwD32!s$T=ek5@Qu})ic9V!9Ln|t^s9a*cII|4ce3lI& z{oYaqhfU^^149KZGux;Yo3e%yzbFkkA#+iMUWmwALrt$`UEt)xc*lqR^b>2%fI^QE zD?IM52CHvIWKIkyN$n@~5@s<|rA52flI&KEq1Lhw_O(a`Qwv?v36Q2a97|p)Qv7+`I`2_IOmaV=UKuWY;b?Uyjb&OU#6zBG zXp2e{C)Q9E&U|ehtno-M`jFku!uk=5b#`MHWV(Ns(q3%dcSbDdEVZZx5nyHmUbE^} zyOab)$VaUpk>VF`(N1U!RH!(&uu|)QO?^>HrOp8(t=kzj{koJH`3QMVA?QH*a|20g zW2nWX#}I7MfJ8{X+gM>qJ1)eGB32LzJ(fb}iu<->?S_dEcHTK>+xgK@yMZ;{{WCvB z*|w{2s0vg(7K=qlz#<9XP+OC$giP1jb0qo;omT3+(ZHtWQ@{LJWv0qcrA-`^g{f}; zcswVyn{L5rP3E;W;Y!4I&{Bn&~vMmiM=)5|GWCPXL^AT?$TBo|o9up<&L!+IcjroPkTn zbuu(l(VL}UYj<&=9W)4>DG?VRNL!32~g^OxIPd&Ky3zK;jbsDol zwWflj71`1{^t<*o4)d8@7+t^#f{q!avTdsLtP2FHRH%s$+09@DC-NQv{WfUgXbO@J zB_$de=OaaGp0yi#1;8@fXM^w+I?T8>0^?_V=D;O;3EtYnWQwFJ77D$xR>3|IL;A#Z zRIvw>@hxioOv=-U%Ai%Li?6G2cbr^di%La0_IDdF&8JT=5|N(RZU|QjiIq}avsay| ziT*0|lKq@Be{Guzc`3%wVI0MH{WNxC7a=rpfElAK#sj+Q-$?W~bfgLvJmAgOGc9t? zqKF0%MYRSY80f8QR{_ZK^IXE_+8}66>6lSxX65^iur<1X(*eb(%C^KV1f7BGW5}WO zRN?E7*RqSAfQ_bU&1%KAG@H~{@2WG!s%7n57-c!Czk)s+FaOyd2W(idX_f0`wFt9% zF+1nTB3py$9JK7ZsG_e$r2~K*%d%ZhN?J8 zNRf;#L-n$qVrRVkXB?$s*V~NAKtLdNAa-!EjX+V}LzFTxWJ-c0R!}lIWSw|rTi_1d z3?STf+Eaa>x}I7?lC8N();m)(TQqL!omvi7Ad|e;!aTUfElF-Dbt5R)(A>A3#Dk4f z)r=umoL)!T!xZnWComDpKW83QKrp=EeZZeq?qgRz4&xgl1AtT}v z6f3arRS#%@-)0DS97T*)JD)P#5Y$Tq&Qxr{q!v{v*xKL5JIZc+95S?RulTusy!~fy zYxxeetF#a^sA;flmtDY#oLIdIPAcukIh^kOE*WQZ^IcSf8}s#!)1x}d*;8zxkzIiy zj2t-MLEB+77Lo3f2P!zpZWNu=ht@uiOo0d8oTw)5qzXJ8$98=r*fEtqJD8rBjETG5 zi%hy52G&H+Kn3vZFc|||tpZ>7z#{=B87gu=%e81%wfEx)v>P85&3}-q0!92>ubp!d zORQ#5>p&?l6KY>n&BnLm6=xIP&@Istfl}TMhQBR85bKZYP6{0%bF60mPOp6u{I>@DmZC4%nW^uVEAm5 zaHw}p3Ytu@S}j22LMuC}iT5($l>8WAVR>~NfVl&h9Y73~pjfUw0#P}(wXpWb5Ghth z6@p%!V3cY&wX;%Sg|34wMvN6}DmWpAX)i!Bssz1Yo$Xo_B0l(8l9!CB3^%3Ay4rDj3#%^tF77v`%m!CHa_=rp^W!=0MR*O*w=Uz)(b2X?-%cR_F zhy!4$g0l{Aty}ROoyaLzO;L$~spfQpdc05EyFdX9WG4Ku{Id9z9Cq0Ll%iT%s4E?%<0xp={C zueF7ef*<@;b7M5{8iEE@Ic%JU^4Ao0#&bfuxi6tJu|$~nvU^qSzxRJpJwTA z=pKn3l=@m!Lv4ejcp>tfL{YtC^EEkfDHklY=_|D8uliai(h>c2wnG)?1+95|JkRd5 zF&n?9!2acnxO8C~PCUrBP-)>M%p}MWm6Oa-t(xb@06-{weE?VruoMYQUWS>p=Jm21 zIO}ZL&YfAir((0v6?QoCEuHR}5pb1(4FGiMA|~v5X-h3=sR@LpHc*x5m+_2xTbOL+ zUa)=!XI(3Eo!v;b+Y}_ZA4f+XoORg-u*txM2H?dC%jGij-yDT5`{6E_f%kD6g{i3i zRF&9nb%#nMd;w>OElhG4Mt9tORCnz%T-grJ}(JyZ$)PY~s+nJmrSHy<` zgdG5s0kF!sP8^8R$b6hPug}M9Cw;wKRUWV#G29oTlDBPAb=FE( zIe_CeROKdS-av@6?oURy>(UGA$ZgbKn9Xt+1u0y*tRh|3u7cAOk7DkB|24G!z0zaK z*bIrG>e8+-Mu7MEHY)}n26tRSa zkr0q$9ol;VQvlmzhW&ibgy0+j4Fmr19+vz29cXn9O=Gg~x=NUmokadCXn3k2im^vq?DD3h=7wx59IXigP+=NY8zALC?#+6~KD?W!>Ot z8L&DZMI0LLX-(XIA8r~0CZ#h_w>+lU2Ajf&?B?{ z5YxHEnyq$yY0dyDyB)(;TD8ldy=+Yf92@6~5CdMjHRPm8#gy!L1jf(7Q8IvSui(Rd zEcW-hfTIHO(rr<#W2mLXV_O2;9$`pLWk4|PFzInC9lh>b&Uz`jfR+3g5#X0gpl!>S zP9xvaNskwJQp>T%PaX9;LgSz>m4|ta6LFl_lBh`bDaXU%O{!wf=7=@%TIt-zG6JIo z?lN_oUFpYk0KWumjsT|v6)KUBMxHXm?g^9Gfl!35m4G7iB24C#luxxzvP!=|rni{I zHoKBwO*+^!B)cZA1O3zSoLcoSSJlG*hoVZd213eH_IQS~9yQ=J1}t4;JNez%q8iB9 zr~=2?ZemL+xvp%l)M-7A=h>Y!@;fDf#e&m=y)RE_Ml%lX<(!BnW$=E#Lj+1h- zMX83iq1Fv5XCq2sL{)-PK+cvCl&Y$a48NAnv1A>g$~cZexpj4^W=|f6MNc6+GE3ri zMZ5*>lS)qxWzcRuKxKywm2fctUk`%nz{AevYsf{)q4s7Pa5v(1U1f2oU^Sj+1ag9- z+TF*KN4pTaADJp76r>uERP95^oW#2)5%Gw2BNJj`R7l95&Nhy-8@nOg z$q;q0T&-V>_H!0G6lVtD%n4f!GQ&tWtHe)N&4JQD02Iurg`@SENi79a{(D>zj~X+b z1pP3jHLr6tng1jiU{!h;&xbmWuq9RXjdEhckssoC9-P4kW1uQ0#_0&O8@(A~xYBNL zw6-@3ih5#pX*E;_YE+}$Jij27u7E?*lq$O}W@K*KM9sN!UZI}T>vYpN42Yt?%a8_= z)oTC5PfoLdYFc4O$uromnQVZ(2{g@%W!HBVzV7Ubj>JToNA8KIaxJWFPCmWGUd;4LX*fS^Bv^Fe+*l`bQ$ zf?%FR=lb6=x3=BgL~o0V)@)F%ALyb&6KixJr%?Edd`11|RzUh;?IsKWmg|+pKZ4ni zYMG%MHG?>kA27|`skN`f&UPiz$Ye(~Tl;7?&%@I46$tFz23u*p2dGmMFSMwPU$Eo@ zGv9XHY`r$8%dLmZfF3jQ*H&Q#@(&y@dIBhpm2sD{vG{qZT&5$aeK znG3tr&TtM$}nsTf*{5A6l<*DXw0J3em`3-s*-7<5A@g%tsh&8YeJuLd(6a7!ER)@ z5E33pUkIiSWhBQ12n>9FPin!gtH(LA90*lIDLH~7T4Og-NkVYsLFvEd@y?&8k5X7! zm#!S^+ZL3B(0JGTd;x9mMYZdDXMxC<&H=G&QGDcS8r3*A5$xdcRxYb`j?@Z(ldgT z&m7U5dcbXOV>X)y_CJ(^m`80>sVYJjoVrpjSCNnEN>BIKY%4e#<>wKy^K1lboQmZN z7(&1K*2z>FbWE5|B{>?9-$33jSPx{@wG`K7#?o_95teHt;fr=t%v2EdW-Ny6rUX46 z!~{5(f3AeNWt=d6Uf?E=`HEqWO|1iF29b-i51~a>-mR&+P#;6spvt4WZsrAu)&-!CVCW})DuvCEKm{hO3Cu=uS`6dA{LEucX#Cj^40cw{3m13T> zW)5+k-PA;Xy(Cc;qCO{GY9A8CNc4v_h|d%7cyAB>aDTA3xURIHEMK%FMeJJfl&J#->EWJ&;BUxo)=4!aAI3y!xHS*vut5&nQTGdS=m=J+VhcJhNVbb&9{_W>kh$KJ%K?nN;==IstH)a|E&WVkebZBxv z?x}EYQ5|JB>+V#CMC{b?h!DX!*B>0LheizYKFnjDvK)u0(h&?2)q=z|Q()0!mAveG6l9(GOE)U)4D0W?~I zy77FdlW~okHE5>Oq9SK~jfi9wdV;J?tWutxE7fNEAlr$QacjsPKZxBFuO%*SFfmqy zdv?h)RU#V#CV2h;`Ajhxr(Y63e1s?ad(cRxb(|JeIs6nh#yMr{j4bO8!?>8rgj%2+ zt5X$=iJ45RFF!xjiYivcD{DynmjTYKMzmo?FDkvz&Qr91Bjz~y#p!bEvl*{ z81=+rq9u|ynAo&f8v>?Tn6>L=XAY9emTl`{h}dmiyIf)=$%_^P&-ED3c=4xmyaKEF zMy~oL;8Do@7`st$98|~Pg>>^$p-!T@e#KII6&yK|AadyMWRMC&Ad1$;RSW2vD9bkj z9E5%^$5-S4z{ftbe3&1II&sUmDqe$DRiLf1X|dvsk&J|q5OBXNOhTBjs8P* zUl&MU~DH*xpZ@u>`oy%_zq{yr#A;8#kKG z;Q{V#GIT+v)vCgWQn->rd zfOm#d&c$#H6rBTF#Xp-|nW-H}nJQ~XbDUdLoItZ`7&fK>pgf-E7qr?Hga{IYi$wHE zhFX9UNR~*nXSQLIO(_9S035~v(UeN5_XQB{u+lJ5+t7+{?=@SZKZyw-8?a7BlzL3W zP7xVLijv(uEPUGue5E#$jZqQw)QsmtEvmfDbRsT z$^Fi>?a4i^t5Cs_+Qg113tOp%f*WT{h`tkN0>INU#gItS4}-Z^QeJsZ=C2PY(N z+EGTt*(zHtap`?7WjeACssfee!x`F?sb|kfg7!_=qB5+MIk=4g`qa@){FCBEa=ORV zCQ4gVhChi(^E$ZwLe`b2@j)rcO34&gRh*+XMTgeJYrByi#R(NT8I^%^U}@*iIluwn zTLtz2h;Pw8d;n+lIwFF!!N>+KNje2vRtSrd=f{(NjL{_c}@lE8UgphLyBuNfY4f_jCxF#MI3!`B(485qkdt?BPFV`)b$(YC<# z@A||mf8+cA!vFUETW|gEx88Z@*WP~n?MI_a_yFabDK5xv_xuwD$<_P7Kf4Zme+?*( zV}2DQUdYV(eX(2usmD^N?0L5MRy7^Dju&j&oOzyA8gkG}TW4{v?)yMB~^?|1*kpZwy# z#5?l|wqE=Q_MSY3t_lAs&J1qh*;s{sm5mz*E+&$r)>&1ZwsxaKUuccph;6+_KNRM~ zO3_xPs@gdMoN%TDygUKs3!rtbBM(ZZ5D}zL4?Z*CeZDj%f;VcaqH&1M&Ihx}P6l_k zO|=DDe4dGtM`lRYkT?>xB_ra=Buvh$kOEkU;QH08Kljqrt3UUJFMI**YK4c79{sC# z-+lLgefQR_fAPi}?-cGL001BWNklN)#qjw@KaRh7t|eN23kr%0ClWHHUEp`7 z?B-&m4UddlnY4}JyEj2zWBwig~yGBHwrS6REon{+J)k0&% zX8WbCKGK>EtGa>%bb_1eeI%z;*kMtv6wb%9{`}An{m@5Vef8BZzV_N{KX?AZg`aZH zv2zZ4ZUXn_SMUIk!`YnAPbc8zs+-MQ!=IMyrl!B(^&tx?3JKzS;JBQiMvYvL5FCCQ zyD7GVqmK*2%^d-0c8BQZ$wq(^&#r=|1bhm>8+Y#l8=FV|g6v?HBgz6~gxJR<%_K-k zka6f@GybSa0Hq5~86-uLtaY*xJ&O(afgM{m_|O9xmkZ?yk~u>4+JVros7h z=YC@6_1Aym^Pm4bR?8)R`?r7lhkxgHe&;tvH`1M-c@dMp@(KFKU;16m+%)L{YgfQO z{BQsM|M+iy^;gd=mu=>7@b-cAz5pJ&ru=_IA`fLieYbX(Mvuj8Yj!g@l2V>7z?dF) zq1cPA$4%@&XdzK_G0ln57<8WbIZ)6O0rsw32Ol1QR!=f77P%(y;E>Dp7tykP9{iAi z)G)_Z6!*pQLS7eEvo4OTKu$(Yyw1*#@|PR~Xks!>ef#trkx`Nmg&%Kz{rQm}`H_$R zwZHz?ztS{~QxP047FaA65bv>Ct-RmfrmK5Tcmgom71T@SH-ZfFB@K-@Shi~`3zJ9I zV|>zBiOZbZSzMJ1si2y@c%57W8NpZ?qCN;o9c#6$V=?~ozN0hK(mzxzA4DDqy8S-< zd=}8?5ua0TPN7#D(?pua0R%xyv0Ph}NvJd5h~wBQi&dfMPzDijL7-&#=MxU%#>!vu{4e<@I@2G;4?W^8rYX4L84Eyewy9cKL8 zAt6lwd?5R$fp)|?AC)`zjq8LOO^_l0Gs30u=7-PE|NPJY7k};lWADv_ExGPG&(Aq0 zGw=HLrIuH#R3)jjZ?&9(2CIUL>fC0^h_{4 zxTm2b+UzvgU;`e3Z7^~e?~=7xsw%0fRQ1;T?wXnBocZIN%$u3-z9*T%mUya+DAm)e zx86K?&iD8IeShEYcYMcV!{Jb^udT7Mv7rb3zE0xUXsxZ3QduEnJB~Sy3&zxWtjit; za%J6Q9z~IFhl&EhD+Poyo8ojpI0qrSfZyk0aI#VIs?p!1vsWO{&=X=OpztH(;Z=a+ zuUWy;xdfiE&^U7wHLdef!t8PgO&a&zjbSMrF22&vCkx7u*d1J6w3X$|*oqjdXuF-| zb?o*t?FYp=cb z>V^Xxnv(B2w;>6QmBoi$xP)EXU47PCo%+qe?$B>N-!bvxB%a9HOxdWU%&ML727?F5 z*`6CjLo>@w$=p_ zE0yahvL9Jpjgr}MU3cAe^`HH@pF4NMnKM7X-RUqK3^HV!@7>wst$}_JFb^CZ42ipa zWTTPqAIRO0-`skj0CuD*55_2po;1>ra*uUkqB4{N?741=-@D5E0p&J`a4jkgTLmL! zeBQm&A`0qP0gk`!tMQ#R;7K5;*BP#_6H1Ah@I#8{m{iDbr~%^@QKslroF7Dmd=Fc; zpS3tmh5?MxI}gBuAIc}VmCj{}ApL$4a_XmVQ;KT&plSF)t z<_wu3R@t;o6jz!P85jCdrZ6(OtIdANY-Ic~u3e@J^pDKfXGPwAb(rcKe5GKg0yuE) zJYq0F*PEC|9Tf)tUXDFYTp(vMV{nrLr5L5x*pjsW7pAYUkvQYfWZ-`L=Z#~$O-rAt_2h@yxv z2(qswjkR`jYm4soHn-h&+b@0Z_kQnZUaFf+Y%m)`V_Uu>I1=_ff?PzBhCS9k)(O# zIHK3x;e#{&lnDa|ZukSdCs=5XRJJ;NOjtPoyUJRZdsQsxX!aU;pdoAQBI zftw~X!phLF*b`t?4UvjJV;%&m6fzjMC2glm1k_tCf+%8rZH>ntf1Gn?&(iJnP#ysJ zAK4B^BXi}-6{e=A@A%>Oz0bbl6|Z>R1PryWuRmWytJK;fv1D6FQX@!xQED}Wbwyx@ z4tn^}*Gc!}`GA_dr8Vhc$%X6QD!s%Yvcsp`nqteM&`zkXn`~6nYLG#`_C&3Q9gl%t zZ5@1ruR6?_TFBPnL)gV-qBJEihA@h-$&j?D!O0zqWy#N^G=*2*dh)-`m{KlCgIr}MEE*=o|?+{BEu8~Abz z;!Bz-eD8bT`)}U-<~M&fO;dW^uHNg+6hfesB8(!UT8%giiPkr1KlTKtC8*98skMad zDerZ(6M)FV2)`+?(^d%5(FoaxhJw(aSK2yuS1MODIVREOlf%`uv75;Fxz_rCYN_RN_x$6pGY z&T>Lc_3QGAXfd>k*tp)b9>L;Di*LE>2Ckd0VU6`ZY`fpM9rx-v*d6JGnbv1TW!C8B zk0~dcmt!6Zn?%OyG1hGeV-Pai_Y85ZPU5*m3+T~Eq{9(Lz`WpXaOe*Mw_k`NSk988eSAX>hUIueDxN8(IB%O(VgBS0 z1x=5Aj-qR?u+6gI&{cVHx0km?0fLvPnEm!U?pXM_fAz1f96fgI$2(hFByqfhwNXkD zhG7n90D8S1PoF=}-+bmX{Pib4$+(ftw@7jNKDoP3<;^Md=}oC^8w z%Nn{CHdELH7H4Ke_sZo<=ZC|$-6h1Rw}*D3Sdm+gDh;+^g)IscFD1k&r9=pw!_EAT zWNG5rUg9SV#$u|nNVMo>Qq7{uzFrF0BtbSCX!;l+l@J+NdG;cYEgvLG61F-WR1gqF z5kU}8tJR1{BhH;YPqWovX=#a8t0k;4LThbSS6Aiq)D+)#|NT#$IC=8@AO6sXer`W+ zKF2jjd$C|Og`P%qwPj$yByixwVHTPpIs#?>cICrvJ!=W1R{PQL%+$^1Qwu^AHxqvt z`HeveoF)jIC|Qi1XmeJ`uOSz(X$Zp_aad#68`4fSgaWNK!by$fisb!Y(EQd_`0@3> zUSH>Z0|AM`%&cw5-g3Y&s$psYYHE%cL1+y&O`RsoI-jIWqMIj3OM%o*x$Br6k>eLz za#FW>CQ*idOg1*Whr!=&?fl8$-uQe!g;fDE(`#h=qkt*FYhP;j`d#mO*Z1Cj#~r_# zBnjJ{PNubyN-1|iv9UpaFksN{f`NV*^5%_I=FeT?ktrA?ZvPLb zr_p`aqH@xS$#F1g*0v_Yzota^+3fRk#<;*ZYm1OO)xAZHO%?1s*SaZ!qt@T)IrfFlGm+Xgl?;+Yh}YfoCU-4)MVy!78*`@rk}H)XA` z#u#g@%naLhAWYx?cGl)uf~pf+Nn2R=6?s*UX6j;c8BJn6=(mho&QN3#|#DodcAFgP^ciF+wE}W$`uwC7C3O= z0JSKRQ54z1U_czl;>?*dKYRGlq3`?fhd+Gk!i5X_vSoF$&C9k^&DvmK)`zj&PMs(+ zY{I#X4(C31o_OOD`sgwNkQ71&cgRz~!e?JDkSGiI$kW>}g zSjx;M&`ne6lpu_dfnsxciQ4(633cc!`i&7WFbB8YAh`1p%S%>p{*Aa^4$%z}Kk<}? zkwlCHq`fZN{Q-Ke%{3=Zap#?PpyMGQf9P+Rnx98#gEh81(dogkVQfa~0yX{qQ;bN+ z13GQN(O5iZMLtO=T8)iy&Rz~UIe={#H5=F@&2!U?U+)22_fopoKmF4`{rOhAeaoQV zCrwjbtJky10EWXM-CmE)%}utpw&?f!jD|ymlmto~JxX5lyA7l3D|(c5v#cC5vAV(6tHG^8QS1e&lW7*4ghl8nl< zYUU(csH{utrUG`d*oJJ=$f~PimZqD60-KtNuW~VeH~)CGvrQ!mLStbyG6>xfWGtpN zP3Pzl<}Y5#CM85Fumcb$1pny~%Ni;lPy#jlEgamlcEWn5xn|g%Y*y*9>3**2fq2$uYUEP0}O{lYn&^w z>aDG@vAIdN)1lYvk!YO{egr|l)YMez{IJH5U|ES{M8CtT^qq+W2CW8%noX`~&Bg5g z?h>}?7#ovIX`Hd+&Yq8})ywaZqA~) zvExa=j=gbEL4XZIthK~(%%flV3PK3l?Y5kro;K6d({g!vnLF>i^EXZ$KmOqleBc9b zq8M-U_y4jZZRsV3o`xh7xCs!oX$a~>QG&8*sYR9h;Mg+4$=6Nh3F6<*GO0>cPOeC| zWAQK&DXp{VSA{PvD(wISA`56y<=w)Fao<#@2IaG40;v!PMsxFQ$bk8$pGGJN*4QD4 zrr`Fg5ajE79SwQM6<3AJk%cu4uYBJ>?P#PO}2Z9JuC3%Q+XFb4mcxKWh`kRFhZh~a2_iHp)EF% zh~tu9d{}eme!agx`eQ%#9}gWm^zM!IbuM4IqPN!9Rd+C8Fc>&58>NszKvb{O6vF2{ z6=GKM*WD>(5+P_?OA;q^fR2U>2HM9@GT7W=6t8ke08J!jQsAZ#Xymx{Eq4$%rCQvS zHEG?8I2t8f zcl}Xry5WRf-Rz5vG!=FiAUa80>=K;qIBYY&+)3cbhbqC_T7aJwngr6vg z+Y5kP0KyuAFw9GKi$wtq1EYmSy2BBzix)w;4MYk!3Aa26U$_cI{_d~4pk@TuZ5ilU zSc_riTVKz;_uRv%(?Meiq7Z8wu5C|GbMMPu#vgy|LFN|b$|Y|BJQuACN-U0_LzM#hJ7}6~U8~)n5*BWcL z+jH-H=R3c$v9`AK@WT(&>-CJ3C?x}eAfVA`P#kVCK80LLdmTMM1-F7J5jTed?uPs3d0d@+xtX;c-KJKn-35GPKWt3eQ1-a@YiF<>^KEbbc4nkT_qX}d=Re2qK7N_Q z$Bq=3;PG@zwF2Jl|4TyS;(C*S_N`Lu+>B*qO#{?I*KSG+!{a4V*?+F^iLXMb(m|F{ z){!yv4;_N_HCk~jaPl8f6U<*teE#}eH9;c=dIq`!cn0{+cfJd(a1&4fK48-t7^H^N z*Po_88u8#KKgrb8OhLa@vLr5y-Ij51fU^W}A@zRzS7b$&oXFZdSKF!tZv2O5p_{`| z%u;iKrK2mXpT9yn9QqbLBDL6|L@Wya(c_jM-%t0pUavQvy?l9TG#nzOv@`9t%-f0H zW+XMXpjq;h`qocQN{B}Zo12^T1_MTe0dq6c+*JTVOHxBJ7Xv0<4Gw=bz0gn3I_a>i?K@UOZW-C4D?K5`|N~BhuzLLkuliTvDWFJ zKVFrdATS1k8nPpxui3{LjoXNOdl zD(ou!W#VNaAP6x!hQR$?fdVCkGwnlR5KdfJ*f6Y58kb6q^*P8&B_)tr6Eqsc z$4?MG`Y4fq4Ya))y!mwl(~yh|^nmlgjX&}utjx}`y}phW0u@B=9(qR6B$}bp+@R?0t=&{g(P%W#9#9s+ zg)yF?5fbHFQiI`;t<6pPZm5HU%gemto_o0U)|+|R-7n|Zv13HdCKmYh-}rU(Sr@?* zNQF)f3(IqyJa(GxwTl>=ls2P`*^_?aPW#PGNbkyT$GRz7YH5lRxG16@xoT4P5-|che)-%j4ER*)P3OHl;^ye!0 zG2|`M((|7s$g@iuDr;30Mr6jBRmMN?yBvx|aI=HTvj&tUXiO8%EwMN|;+YFy7`NTM zpl^G-Ln8=KLBPV&5{C}0psght4d`rdv+4oQ`o;!Z+uKMf9oPv1La))Wp4GAbZEK8> zFmXcY@9Qso}VXK zSU|0JPYeX^KX(&8XKW3I)x%dHSoXd8oJ*pkR3)-dib!AgL74#e=aw7_hmyiJMX# za_rbKUi-S&aK{~YaMzu8a^T=WqFUXxh;+(mIHKF@k)~6o>Z}+C_q~~9;xztlaHzKzDd=f=;sLlOY3H0qPW&rGeR{Q z=yWhH46OUpY$4KBu;B|=guNI<#&~v~p@G@yS(;N#w$l+o-J$DAGyP(Mra~5~`V64# z(h>6qWOZ>DT45E0EQH#1?5@b*RGo}15@{u}UPIMeOij;IoBk@v_GYD}Auu{crzvR~ zFl2;K3MD18v-2!1Epy`yf>AP}yWQjRl`CAna+!^F4|s$i2t&d!bVB5Umx7f0Cz~;~ z-eE@A9sVH_gP2($*jz&cH{Eh8H+=CcJa%QB1M_oOy|*!|@uI=qg6J}vf^mz=Wd>QT z!6eAo5JWYGy#yqLLFlGtJWGR6XsuoDR3HgN=np(u+JLO*dMc<3v_=_2dh8f_ZS6&4 zhrZvh9&q=2-b*VC>2|v)r979Sa!THX-nn8Zj$<~p=G5uaoH%xjFMR0>eDW_J;=+YX zgkj)><5D6$)!(l*7_d#?8CaX|U6pEFIu&7Q|0#$`pX&f~XP!VCLz)_<6dXUYf(avR zJYdk-aE`p8Bu!0T|M`5!eR)~qM)m_C=ne*SHaF?_dZb!&`t-HD>5cbu_nmie$DMaG zKR-`Uix5I$(v)E`qO;X;)0WwkrY|;ylH+*;Dd`UfEUp|SZB7%-9U|ynL60<%lsl%W zGKk}fc2Pn*lO{z(4u&0gHGnj3-?tUOV)t;so-|2SHL=alHvv)wSeqbakTVq-qn@VF zn1bOpjFOiyz%eF|+#vF3cM3 zJDu*{p~mY-2tg_&_%wPMNTgCIB^_Xvh4z9JW!hO#ZqNF)Ez$(tY+{Zbg>&aAE&i+5 z-z|M3Al-(A2j0TT>#wJ`zV4XZJSJ!y!YjQQpAZTWxmM6-r$ZP7+GiT59r8Nh_tw|wC-I^BA>kctXO`k>OrVz#lk17M=E?4)d){OdH zUVH69qUkxT3P6Qy4--@z=en|eHG8?s;gc2023TC2=e4hT6)(H@<=lMJO)ShWAcMde zwWcX?9Mj$EV6-l2QiM`&utmD(Tk8}dR3VqiG8zt%^(LxWCuq+gf(^vL>@Zr-rl_n< z-F}nZV<}1zFt+IL=2;q1G_@_QV^{uF#m0ND8?oc(D)n9bn$W`@L=p5r)x4{`fkcA} zpfv}>3oqO)e&IDZvQVM;n=yCwq;v)|3=uS5GillakaM z1aS+U#4H>>%0GF>xAU(*@ImzQ0owI?@%bzO+cD^w)Qffr^?IBaCBS-+V~oLIF-8}} zehwUmKomtF$G|3IZOVR11(UZ)i>!$5hC>F2SFjhKK_upCEaKO#x_7P5GOa{Sm4#J!qlMCYl5T!BWv!mTGk9QdQ{&!Y+G;=iA@eg$=j^K? zYPG0M&%3})W3Wc&_Ml>yJSdw3T3cXa3ZAu6f=~t1KUvuGoojkA+;>t7s`@=Av0UV9 zT==#u`3!qFH&5K%K&NBCmTDM|pdNt=agMex9K3izHxXN`P>~K1ODPCybxe}%5b#dA z5pu@^E(-R=-Y>wG@-DptZFW$KvZJx}?x7-E+&d?2>@I@mBCYJcuSQ8HBF!kw9b-jIzsJVrI^AxcIE_o40ht}}S@BvqbtL1V7%R(7W@|MviV#6S&}b0|L7M7Z z-e3!QKU+wRFLos+-3nu~8DT#}QEXj$0Bk1&{7w=UPjtf0!(qjaF>z}Qm=qP&38$72 zI?teT?2ZL3K}0Vc2l!$r?Q`DW0IJzU)oLV3%FO&6vymcB%lejy)U3#wJY!l;Nc#vWS_uWU@>7b+(xp7*i_$?T{2?HXK*nE0i zp_F5Cgl}C42~s&$HAyvgILy~oR*~1*O@!7+8TdU&R+fb+G1Nuxn`)b(SV(ny19ZQ~ z124aoYtEb@XwOk=Pt%tnBWqC6}c1&BS3j!s2E4pS9h85_bZq=ib9T7ansBHO=}j9o%k3m(qNy_Tl8i!gTZ@Tvm<_;Z2G^ddD8XE}=;uM7! z%V&FNiB;U^H`xj*k<8-)#_Otzg=@8trE)I0R`xh%CyQFB1(N#ow9{cmH5TUQn27=s zJ#LLl50>_10z~=kKsr!8_R*oD$us4yMy2~OsU2U;$jkm@UnkQAC27jEvNW14XGdy5 zr5VfR|2S+%1dA_OfMYDdhK8+z-bw_H=9RSur;eYXzqwu+nVTF5@2ElPvZ#c0ee3Ms ziz4D2S&Q5zeTRXPka@tFDWwWM#|v6uaE#V81WdJ?h$un^0mjEU*xhc06(vAZ{t)kb zBRnlB{d8B+wK6*(OP{vC7@TYj(NrFOQ}6_mLJ$bSFiv@5wL>@2#6r+MaFic?&wKcH z@B2ZPl;z>CJj&K~&oe7F-{i4XTr<{vIbRB!Q~#s}9R$Q%n-Dwqa%-XA-DWt7-Pe}N zx26<3#9%@oq;gfD2U@mJ&1Jy7YEqcSG3{pa_=yuI-g6a>{M}w}fBV~SI(G2j16^my zAai||Ql)KE`e!wZU6EFdLpG&!Ic3@V#MtY|YS)GmCMNU+Pi$dxtIIG{C?T-MI!~Ic zU0yx1@}kF%HDtz3;3Y}I>gFav8uP|GZ{`iJ`evpNt|048Y!I?K&DkSwko;XpH_ z+uJUk!r9l%XJ9h`5{8I6-t5e^GaG^Q+ALQ*S?{zw>0H@OZ!@WVRow4v0nitxsNy7L zxfu}7ED*G&pgu#I6hcMH2@?8+y3a58$yXQHmV`B+hBGEo%_(FMpoQSnb*DIUaF$N5 zS8z0w9AqeAsN8#IM<(8e@RTuR4pHiN@ctznA%|V`oMyN2> z^6=A_d3s};SV#t8joa@1CVt^x{siy;f$w24Ncqy2AK~1kXGzmEk5{3XL|yLkV5~($5&(hdjV=i!k zoB$?CG1`np>$Y;J`r^sprf00SU^Lnodcz@CR@Vr1%4=>u&0AmdN{(K84YuCIO2u|; zxYCc&+7hbr=4Xv5_oeo6drB7CjdBP|FXZ*kvkH`CkP%>8Qc=ihjL8*2hpSVJ{inAAtqSO^<+7Zt-~VtD-H+FgOn zMAD$j9QjfD?10opQ`a#^4=qD;hT6;mW_khbe_^`|>;6JqFAAf-X$dPhw@|A!Mo2{1 zB#k!-8%zIW*kUY2tq8-i&@p1y}HE_-<<06Op5#TN=w2x@Fatv zWSpP(Dl2`_BEXP9sx56PIDX_PDGH?m`r7%os6dtiKzFn&)L2=PO;MPPHq3s`tc4{i zw4?P8qZ|v~_La!Ez@MAS`?5`|%5>BMNh$=7KYfX_7q4*L$^n+=rwOO$c;mM}z-wN0 zA7A>W`bq|69i}rBW(z4idw6|w*UUw;jH7BNVtrfJV7`M z#VfX}GQn|$&=6i|jIbD69&6uEEhk*E{%D`Pz3u)UL-QIw|`tqYJ z&CPJ_$^n+9XQi$xK{xu7&N z8ja-a?Cf_eE-v1_y1M$=s}SXHf8BQ5ZPDE?d)a^3+S+nnw}t9{{2UcZ9#a=M}y?yy9|;e`q?W>^s;?oW^-vv$5o zDb&GbHoefIs=lvSaTVKGnKn*stTO~I08S!w$*7_BO{T^$pt6aEvfs0pG>2-UUcz}&ZC@Ihwk|ai+Un4Tkwy6#@ zd<;j>>(Y<=gpC$L>pW5ee|rV&$TQ1wgNpAL1=hzD3M6B#P195yJ9g~B)z#IRt1#tn zfBoEjQTe#|W#( z6QDwH*NFvsRx;G?|78#&Wk6V~F+DxSRI^FD-6W{hsW+#HY7q#9Q3`}2PBq)3gig25 zFii=RA`k+l+(E1=)k4Nfx!_mIF7W%==ntov%4|X=F*HI-WPwrHAp)L|+a!X3NGVo; z&jPQz|Mj#NmgpF;CPCL)ggPOPV@_UwJ>U11Z{wGL_rn}Ha_ZoR43K~beg#uAQdGY z;|qDcXwt-YoL^ScM^X>#h%}}-zsNuNAHIv9{pDZbvN0@9O%eOnRDP2Rt*VTzsoo?C z41jC@X#c;Jk9V$JE-ct*2wAKB<~F{2WgU)YeY?jE2NpPU>NKg0h{BMqI3Z3nQ5a&Z zWomvt$1oX7Bjvb-k+C;9xDoFA=Pr|##kwoi=%=doo5;At;7nkugfWvnW&9YdQi7Rw zlQ<6O_6B_XZ$8Ig3dPdg3`dq1Idou&nRxLhyWt#jIKhQ384T+TkABVrc0qN*y}rUM^l(qC_7`@T|iFt78rM^24Z#=7G zFh=A~*}wOZkFWqpZM=z}JGcT1HVQa$>^NbwNl-h#+F9 z4Y5w?4`TXp$|#P}))Glc-RGPY59sl_$(^!FQ$!-;07Qw$*>^3fybUDFzoML=tprd? z?W%2*g^4Q>1h6pA5O~EaU(PGP`L&oham=1|nTaD&qooYpMDy}j+{@cnpXCD|`2?q~ zxn@UOLRgKp#usp7&!iw@baKjGjH4Qg=SRU*bXPOKg2qNnXuoM==y$hy(_J?+y|{!4 zB2=x;mL9t&XvPDfcD$Tk+5jihz?caeh_IH95iA4|!!%*}$O(SphrW-0|DXRWPd#&i zm4i!Tgj!O%d($c_%7~^q16i7s5gy3we5SRrC~0%&#_^oLExDO*Zf$YfvBTVP>n+%N z!}VMf%`nkE0o-kf^_giJ2NyAyRtxw}?n-S5sk~6E@RL>iE_RCNW$st7?=(1tn1&() z=tvPqJ)1PmL5(SBk#gS!vyyUab_1 z|Esk&!{JaKJb3WmUbt}K-;GA2t4UQ~K!k)r3%u>W2qUajq=_Yt z6B1)c84|}asm}HaK_~@*Qsarv32Ui1uwjgwTvcI&u>;QujC&zoTDHHh%2ZMI3>I0N zEJtn<(~~=*YfY`yB0O-2^T7Y~OTR?aY%od_=aZDiNMlH>rBBFIC>bUR54`b>U@RZ_ zyJx;wmhfTGV3h#7UmLw7SDRIr|-K zMkD6vTOfo7ZPkZy(qxx0WHW>NPJ>hMf)EuB(ececq z)v1$Qt~X&V+2Z{uuydKVN=iu>hIBSJ`MuxzEow`PFxn=zu7znVjBsx&3m1omMg*Y+ z8xLKnjsx$;?@5`vx&)MzM8VE=lpVU+{q{+mn5CN@y*P8NeVp*9| z%YjS5ZXzE9D1aF`!Pz$hI8q4i{kfm#^bft8<42AW4~M9*4x{0i4MNh!()xog|p|80`t-=w#N zsGNZQug&cqORXB;^0GT=&dx(nLq&?sp&>DrFc%Jq>S*|jg2j1J032PY#-*^OoFJtX z!_kPR)`zUjG_Y3Cn4RaJzvmxw>JL85fBoYJk*z5XEX-#1#5rv&w52UI+Ux-8nF)Hn zb=g8`W`tW9E_BZKHO;tZDZJpzSj*;Shs9QnH{5p@ONWnOWPp+(n}ZSEVN4){@dTD{ zd0A^%IC+8#fAvtFX_s%79-0X&OVI(D&L(4Wst9~C^;iHq`=~Wlyq6^^JG)+uf0mWz;_hK4C5G+rle`=%-D=#N?3$4$k0vPr2=9DiG^A%BK4VP zI!)2Zh-1f&vAMOy*5)R|;gBE*kZSiLc~Z-2LS3vn7fmlu|odQPsB8UQ<=ZTH;=h#f1gtr>E&|ZMZgNB#}v+gDWX4p_Huk z`;1b-Qaz$)67GBL>o~Bu$gljy@A28MKFP|VgHQ_zI_t2NAVN3WkXq<$Zjdf47U(rw z*5DZbpXZS_UtQ0GIA+xEbKA+I++7tS1`^ zX=1kE3lIoFDlCs)TIblp6pPbsq*A==yWYtwZoifP@;krJpM2plre9~ zBB{wiZ6UwNH8KMP$&ULV0h?+!u@I=S*jP9UI7w5s`+e#{@TwcH;hGaC2leMO^mZW6y{Hmz2RZnsNkYm3ovh)}B3x|)554={f0`r-T5AocNtJCi0wLeOCxj%Ho^@Q<>Q|q9l0W+Jhd6%CwVdm0 zp_(BkjaZ6d{6$UZUCRc1X0Q76k6WP~%WOJo{pRno=CP{dS%>`!o%T z6qa`@_HR$5#4DR>;LXI8QVx{)gj*`i#J(YLJcg4MCdbjVV$Z5gin6VyDdY)NSsznm zcl?HsRlhb(^Gq|Nlk8Z?t10VW_f%V!7p6hgczh$KZ3Q~fXk5@O6gB}{;Jte)s~jlnh*WqAJS?zNsVTq9x*kyNc`k^@D>uL*mjkEG+7F#!Jsf{ zM`7Zn(1zM6Al`)qEEWL;O4~{=jwLNu;`=zNL3qa3SW8r|)7jkQ3t#*qMr#%q7dd$F zATzVG)M_=fc1DU>t7`0+z8kY6e7vAS7-!B}d`62A5Dg{R*zU33>2P$W#d5oem|EZs zZ}>KDKXU_r^r^pQ^t-=Lnu4m42RjJ~q86dk6dSl8Utvw&$IriqaVhuGM}o*~^Ynu_ ziPj8;Lv)gGa%qkmZ@-b1!-o*HI;a3C1RK2(-BF)FxQsQKIliYB8Au;GOkv-Aaopn< z9^i;F|5-F?GnI`bRDxy@aA{+UOKV%4T%KoTcABWYz@7KKirenEo&WL4r+Dz8hj{Rz z&++A_E}^D+NTmp*q81pWFlb9Y7O8;)b;(FbYSPljVg)2Rq1PW^tszMgnqk0^g;}n@ z;W*1nOEjitp;kl4kVL>*r%yjl2?Gbls#R0r^h7CziBlG@xt5D_)5IGcqUk9l!ew9; zE5Hdo)1pIa>7dT_M&*gJ{d$=lEd=RWeiIPgZuD$6*;1nYy)e1tfszBGu??47PXGWQ z07*naRIbZrfvqY;`M0Z{$5yw??EEZIy-BP!dNe{QMHGfK78jYG znW3|_MQ3~41M^@an=?s|?zU)8AKQ}Bx{sgyN@Ttv-~FEeTtCO z8V#nVrs(yyxpL)Mp1E*=Mx()jc1FjS54OG<8nWdl>$i%3kf*vT>A-teC{M zqJZr|!owF8FQy?Trx)|%89M#CXiYZj+k+<5I#P8~hM%)&e(tYLfv&{luQMt|svE*~HZU_1dK zl{YQbUeKIbtjHG!^Y?-SoZ`@ufwEwaaeRE<&QgL_6fqbM`P^5}@mLga&GI74b2Bs= z(=4C5o_8KQ%3JPxIgdPbiP{q%XW07;N;ObIql6)~FpOc;?V;*069%kmNnIMZK?w+K z%2H^#Zhn>{2bY+dTu@^1?n?nkMQSaLR+~GnKg}mT|1eGrY*2nJSg-R*)07|xSXy3YW_FgX z&CML>sA_COMQ>5n<78j!)TvV+{ru-Y|4mn+%+Bk7{@I`X=|;WYT3uVy*;x3l?WkP< z@=k5e_`OOgHa0f+o!|a#j-NP5e=y+q!2?Xs&NAHUkOofUCnb4MCs=G6V@=)r(insY zc4P+?pYPoQ8h4wbvc}|k9Ak}>EL&X5O!%o7VG15$`xN06tE560VW2{SWq_AKpon?r{VabS6wX3OcWwbmuDQ#1y&o{4wuZQ*Q2_Mp=vrLdu5t2^WqYiBvw zs&z#Q}oUm@a)TSD|{KgYJdTEs>E^lC^bZO{9IDaPNOlgF`Gy9fi6f)Cl zvNS)b3GCx#vNnVp`&&dye>d!n@v||RSu`r3z&l-V7b8Pj7B2{gF!Axey*`` zA*D%@L{3dj-FN8Fp>Mr-@#06=_qJ`%|9aJ{UNwK~Ew}v3txm^ORGB!o9 zJkcMg@UdYK@X?Qcl+NZRhgVjRSdL$F+_|^c8`!7;CPo`QUfR~WLrJRKWfn3oEKzEI z6%U+=4CfyImH~Db>*CGsl=QX|wuI;HJ`LL}7SmZ+WwwW8W}HzN5`-bb7?L>ViN_w} zi6>3f&-ki(0`WC;{mO1H0>y$ zrkeBzBObkQiO)ZImYG_}bR%SGdY0pZJ}8J(gD4tN3kGZ?mQE7T3R+A@Eo!5bS~Nw& zD4L^$t=JN4OMPmdI5lXg7$z_rj$B*8`s(lz-P_{flY1sj05UsTRh5se*J?cW z_~U%^qaWeq$rE(8wz>VLGql^&Y>x(rc8iga$XWyXNxp7m;KpRE(Y{6H{kg2neYi?M zyRc?}e7t$mnkbGuld(8fxM@I~-GBbMR_EVt-$peQw073pf>>{|CyaaBYMV3fVH6QY z5eDdPZ}G(|SExr3bMx~YT3KOkZjMGhL~Bi&roPQ>F;<|2-EqGr=0bUJ9V*3aqk%|c z;_fzy!!~H#bY=|n2YtSBX`M#1MQgrA5JvwWdv6|O*LC0dea<=e-naJNjjgc|07-zW zBvP_XNtPu_iWX|MCEIa4<*J#Q8Bc2LBsEs5Qd5~f?2O}h#+8{&jVJb$?RZICsj_29 zwk2!dC0e3LiW^9R0En#{4WQSz-sPN=KhC}P-FN%F1~i!z$fjQvNTApE-aYr6@9+Ej z{=Q!pltOtP7*K)dyp6PrWUwj7vceE+OM;{uhO~Qaq9h?oTw10t1wo-3F|=+*btlrr zE9J0bORkN)h3n@PVf2^Tl#8LoHo77yvOAhVG=uL8rW#eMO3>=}xwgK^H_xu{3#+Fw zLK22u!XzTr7SDs#trk}t+DuT$z^yl9YKq7?n?jShN5?KgIHJ@7 zB6IU#s0~>3xEWi4l)lCkz+suekr-z%ngK_fu2x~4kWj}1V@7fvG^*kwe1TtU5*fqZ zy?eRqj@wz?Y%w=8<3!PBbZa4Fbh78rXf&8;HrZ;ma#lwvHI}^sh~k)ft;QX9-0_>I zPoMtp{|?%~KmNsEe9z3x%*wBx<^!p)U0=|N+exDc5U*L^?jIB%JxKA7kMJnXZ!-cp3oklLW3Pa>UX%;8;QWE#^v=>a)s!Cf_ zyE08Y3wBG#{|DL}izpwx3Sz~ z_NP(ovJ?U%+;D@$VkojwBUsa2)S}9PhSgZd=DB;=YOHl-lQl`shTF_%D{bFcVNnQF ztwyz0BhfLJmo9Pf(j_Ju4fgEa%l>`)s5hH#e;2kiQf>1f%^}u3b05|YETa?}=xd09 zUiu?EDT$2h2t-j#TN`XIc2mFBrfif0X`;aLXXlM`yOu+>2GjJ-(Z6*n4L^u*2(&u7~Nk5k&|B|qll;PS<9V$@*JH;_gjN26Kh*vB|gyNMqyW$}w zg%~8bryxdV>{ww^OQd(Q5)u^zgV5LP^h`y6UQopgDnwC4qgLYs?|Cn+_E!G8lv3M7 z&!Zk%YvL#(NfH{31_uuwMtB~6B}n5&3__&At7KYOF_alp92GA+W6M&Tbr=kpAy&a83At1>C3oa5 zZc&M}$Prl&!MGR}<8CyJjxoldqX-jgY?Qd1D626^G$sV0$c?Oy3k*RJYn9@|K@{iG>#v zShkK%8s*Geo`#Vn5HXrFv-ts~4fJA7H_4+c)6rl_4~ezVPc)sxc|fQ_x@>0spKE4v z5FxiYh;EzQNuNvk0L`YMgtcfL4;|3if+)HlTkYJLjnU{h!N!rJOihAK5=@d{tj?K> z;zbpOMYx+Dxr4DSR3F*c=eV^|s&b15TKWIQjbD_-$oZxuu|g2WF?SqVWd6=OhG=IA zSm`P}D_l^Ewie;}y!XBD=AM%$*>LW;`S|6ys=Mf$kpZ2ePG^38o`VMuGCe(=8%=*d3s?V zPkK};6^>SI(qf1P?khgZ2_m%^kxip}w zhHKktt4CJbW(WKIp{${-^&kXz5?L^8w1tpqml34s8;LH3H)aNIw$Kl;rEHQ>=yw!@ zV@krsYy&fCuQgvF)?zS&#b^@eOlcjE(K@WyB86~X69opt+`wkNEG#WDIFfr>v3&TEM;u7879mvbpHyC3qjGPGhglTIPLCrc^9u_cI&_H1iHV%i zaZkhAD2iBIT>Ru~72y2BFZ{w6!!XQ*#iG0pMlm*{J~u95yjrR7{HarX`Ac77|NaBC zJ00%1>n{!UCK1hSR*{Q8fyrQ*2hNwV^#DKL8m7^vV$vr=xPrM*Z7Z zF=*0BF|-F#C?IyDGCkiHGCv#%)@V$Uprbxvr-hCpbkxVjAw&^2>Z5xd;xHuabRdo$ z*s&U`<3WY0bq5!x=SN}jTC4LZ9ZMRV%J!I_ zB1j*(50=2psB>-{nPAhb#(c2qmBiHD>L)O(V5)dvG1`UmW&$Hk;Y}AvhC--{35|d; z8WH#C8k4uiiYrKFhDBwiowZ}=-tDNk%;04Ibt9iP)y)hnd4&~uTgqDNZki~@Mlm7@ z>1?dBxw^{6+Euo$UnAVw#D+a|+)u5+lY9zbRF$&Z+Ek_pN(&z=dc(*u0ffctH%_B8 zG{T)##%cPp#Z_9ZR)+`fy@$m^hv@ctxotWO#C6J7ctMp&YYrb;Wbgj{Y;3kUeDo+E zc;9%g)&CL6o&wiHqxjCXJV&9%U?Ay1GMC-wQ znCZf-C1^Ad`w!5G2cy50S{0#ugi_QRO+3#-Cy{FziGjw;rq5~Qq-lZ0kz?W-#Nn%K%oT)M04!!m3T)przS1-QIwae$(Sh_&GaShXL0AfL% zz7wWkC+YVwv4$i`6EAFPyqcaLX+EA9Q}AvBJL&Z^g`ns%bCbn{2qm$ZTp?xO#xaxI z-h&bAX4JonQVcm_4-&?S;R~eG_KNftJ#M+kSP3}d!%FM~RFWHqg6&jwVGL3@Jg{5Z%p>}}A3swn}%dZuH^NzQ_{mQc}I`Hnx87WGwN<*k z4%Rx4q>3kKG@8uM&T#n15vJz%qAFFijPNTJXPW4F`6O#GKp8Xm-J|v%k&ge1RJ@YK zJek4(#88N(a0RleczG0rDVxs}GN93NKp;rB^ zWB_kDz=oQ;vsaV(r-U%JiZEbS#hG!-VG%hA~&Ry0lK8)!Xi}Y;Au)z~PoAXNXwd2Q zk)B7V+h=}mhM)TAhxxa^{lC+!)p7<(Ydy01-sxl8{FhRfRUsu4%_faTLv}hH`n?{D zi;G{~+S)qtS^ziy>R{EA2u&n}!Q(ZfY?<*4erI5IvY*tXV9BpHcGMZ`r0$Ke|3`rTNzVvt@snLwUZ zmi87)DycEztMUdiZj-S>q->Gi(P1u0z#|me? z?J191-N)8zL~+9D%h!YvJ_~ym29=&5H}%>*Xl692lT|)e4G#OAM8=}zR=bl1Ba36m zmQZ30{W#=~+iv6V(W6AMMg{>YsJb`c!ObI& zJaX*Bop=6|^^Fa(IEGOMedRS!6lac`>MZKDKKt3vI$^gEPFQ^GHm9LWSB)&O$x=#4 z5>&HE{r>xCedAjMfUMP!K@|~(Al#wYoR}bqW0FLpge*`wuAY{K@Xa4)y<|P8JV7m2 zsoKF5mDrtuo8`8&1w0|RdhI&TUA~H}Pq7eqSYy#i?1lq`Akh^Y1T`TSJi=~^YnvNf z`N~(h{n%0Nxa(f((=)_c;~RtYeW%fpPBLMWh*bA502YNaY-s(ZS{zr6>-fz+9e|TL9hw3Lu_N>aBQHSF^e+{K z8aHR|+#Dn0{Pc$e8reOZRxZ}kwNB(b=xwJ=O^Up+0^w|zkYhALYDB>1HUq%4Erro8 zyF*Ghbr?rjozQ8wIrIFpZ1qBFQ&V^;Rc)of6ONV1+EXTuh+|EhBD`eMRvS3rse484=4OCjj88!()Vjwg&HAKoTlF9uLz@){^pn8&}4Wm3V zJ__t0Z2Ehx^G`_Fdg$(^`u#43Sduwzs|Q|Jbbu*gyM~U-^5J6BEZ;?Y31) z$?~Z8s4?$xKzEebSSdxj-R7@8{b}~>-Afon95`@*x!HN*FdVGUvRy>M;oS851XEL- z{Kvn@+}(FEbNr~&-!U*Z)mBrfR-Kt#k_-gzWqcLU=*Gjx5eEsBlDoZi+t&m?2g zDXQVMI||5~9R%v*QqsqPWRdQVnZ3X(X}!E+(!^Dfnq#2BF+YS2V%fXFjoS@8Oe}?w zah$8L6oSYU>{D_MFx`Zda(~YhUsevUOxkbcy9FSEx&f0Npm>OF5g3hP&7S3tyyJbtIf6Zm)K}+ z(nB&aImv;AIeMYTsh2NMTVCPF;e#yBPg7Bn)h-xetguE*PS4O$ipQURnyrlu?tAc! zL_(la&ng|qLx+DcdPtO*J|!iIw!=UahR!k|cMuk85O(R-YdXDEWT?}%GA`c3j$mwx zdq`PuOtB4C@CqwF4||Ij&#iA!6~Z<}Mt7wb{-y*cX{sGDn}P)#h!Edd=>xzAOJ~3K~zJB zsaiplQrWvPs=*c`8f@XZ@6ca1BiOZKOv6wcqA>BGJW14#n4g{Dfj7R9UcXDfA7OQj zjbqoMQVOp=;l4+^$(ib&z5K|Jy&2#0=!dZr@*+!$Vd3CfAeo> zG#YNRNn;$!2iT1S$lEfAw%%+rzRB7? zzLY3yQ375%^*ld#=9DWA!M+Z}6mS(cmD{}IBzun@=E}L3h&QG=dgKUun-w~}NNiZ& z2#}45Nvzg9f8hfCewWuj_(r^`xikVp4;7t74Nl%N&+^7n4UQ~EEEEo(tkBho!4KTu zjr3fmSqfBa8Puo0&y3h3igJo^=k7M}lM1zMVTvlR22(ai+~VfJD?((PO+RJhbmi%Q zadc~z99^7%$}fgenAlA$nbP5?Qbm-+rgqo^Dk)zJQn}u=(L;T1lR6PoMzh)H7$0_* zEnw$NDOovxmi5&&>QggFKX5d$lC~}ofv4#8`dnCFCrJ{-`;pFZD@peOzu^o}oHC9lnEk}NAN(MD7UpQTI&OsA>XiA*Hm+=>-*JwcTW#L( z!0Y+(x4eb#Kk)<$3k#`mTJ88+c47|Y4(48f?e+U&Vq#+Pfd?M=hmSx0_MT7aSzWrs)6bkD2HskS_a9bbx~34mk04;99n;!)o~OV1JWD6;W5Zgm zcYEA(_z*J_P0VIXwzMFz##U-|F*UcB)0ZxjB;VmpKk{aDwdUC6%&LUZiQ?NpSjsZz zHbrTX?g5pcnybKta#Oz6<-<6@qSQ9fK5CL`+}<(L=&!VH4TA*x?EI7pw0&iW({FuL z17!+y=cklKHDqJrQf4FLDMRB*A7@{U-B$T$NK+s|`KhAaT@X8Tkfv;lbTc|)hj@sh z)?-w5M=|hGCkaWv&-IHhvz3Ayzf!?d9zsc)o)qOB`I=VEb)(kv*E#xM9m6~9tr>i8WbKs$!%*=gSVj<*v<+0;~4@knR8KVq53 zNkkaNeCWd;L`vZVtFwRr00=nU0_~{ETBga1XL=O z9ht=;z>~5Jo>By!hqZ1mv4u5R24>}gYm_16@R)dUQ*@_i)NT)kE$pssQCWb%ll1$2 zo_*{I0N%Y<@Xq5tTS{=MYj}1mcw8ghxzQE-x zR|zULq^Ag^5>^W9SF23T&vWXf^E~$5N3oqPqOFZw_p=iK&970a$C182X!#T_cVZIf z)0Ta%*gAq8*L!hYm@)dCQR`;-YfakXvqL74L*0eXec z6VrIg$5S54SJWy#Q}rqa~<55o&Rn#!-ZnlAn0{+yCs-CHfLgq~Gh_=&C zV&hTljY+2^TU%Rv@{^zBz<~pVVV{Es7MY%zLB}y(o=L@!4yRtLIrgP^{mgb#NmI-q zG6v80@qK@=?-`Ri?~;$9%T)g$Z?M6SI>@q?mJkx7)0U|{1ycd=*5;Kfrfx-1rc=0aMVcQaRXRD8 zC4k8ivb34;Uxc+L_j-^SauFHyOgF{!kK74uGv4|-@2guuztiUW@+E51b9faWp(M)l z5K7tUT9tDv*SWB^!8!D?J3py=WUbkFoyY`&6mUdz} zFzs|Vopvj|z;bt){f#jm6X~H~t<7~@JJ5h5T2!g`lCVS7iP1K-t}y7-k0Oi1i28k! z#Nc}#Mr-u?IzRT)Kh3}R?ss|Mf!EV+Z@FbC99S;jb|TBQDgb9=puN@R9dCOpM-Lxn ztJOkCi7NER|Gxm65u2GX)|yVY%bq=Ze(Lz~9oH_H1eW0SX4<|$~l)*^!dgmuN8EwbIa@F6AIfReDacAZ(^ z#DXG>Ea@%Jxt8HO%bLem5}sd&jWD41_u(J?R}$`*y!GAitNME!dHgxPyV~a5$|?d$ zJ-xnKC)NupOf2l-i(mUXS1w(`Q`?!sqKmL);IgdK$*3ZQCPiM$Bc*VIG(}(`K`4>$ zhxy)kGcDK=(|N@p=~0Ed$w&ojb65E^(WbOHzeWL0&%$#dT=EpnijUaA`y=aFW}ARW zL5EE3unV0)m#!^^3j{KQH`-*vr?fSt<4^kTUZa_-A63H@peluv^MHHi=T5{Yc8)_ zWbV~v*%LsV=sXcy@5Umm#I9RF`TkgdTu!0ST2w~sf}x)s>>im0G!=y!Yf(a_&c<0= z%Mym6i_cJsu-j$h>{(P4A%xR#Ng*&vvb~DR+LqepZL;jqjYEP;g^z#y<7{kfEUgT$C^iO-q1xLT<=?nc6YDJ9h)a4eyaSzBMWXD!?ZXI9IUk`;lyJ1^9Q9-4$RdcuDmI1wR-`MhZFrKk!CB55#DwS@@>^3bJKjqwTESV+*xl;N4;i zNPf4psLGggK)M-()kBdAKv!D44 zK@d3GfXNAt9KMYtHS`iNZb$4F_y|2`^krSdL&`AdaSQ%|APd)EmHapsz?e z>yk4YuBkI~1FIVskjl(4-S` z*}jC;gRQDS-bpD^2}S}^49+8Mw@pwL0sT(m^B?BlrZAB;uu>V`pT#Y1SKV@eBZNCV zs(a>`^gV2`qUPqT$1|$c40egaOLI(2d0#O`W3&Mw9r)eWbCw8C4ZTxYSmw}$zQI`L z@Li<|dmUt@iZK>XIPqY+)8qL|OC0ZSGS#TiT3F!uBm;kjequS((LBFy+33Ps_rv{r z;d(NNDUb$q?wbHYd1*zryEdk5YAWCJhbVLx&0)qcI3s^vcJK-30a~Q_T|%zOd*Hcm zj!84cvJJxu!d@>2ITV~km2@pgRmh|<={gchrScq?FkjpWq9`JYHIIDY19(yrB?%Vy zv;I>`qMNvn1Yml-9!HKG`M0mOb@Aa3fB0{D{eCViw&TJKN4yWC*qrjetJNw`J@pii zKKdwo7Z&JtyWD@@{Yc*@HV*L0G)E`{Dt-_URI53Aliiz@N@ZB&S!iWTDXCPeh4xj} zZgSI?!jOy3^L@x>qr^A259Rw+dLRxA|I+A&lDpq-Byp5PN()vBjP$8`ZZB`gmd!TQ zQ~#eAHT?V{{EIikqo?6dpM<}9LGYP#g6lmn2p*3V-aU75cO|5H=2@0{G3|bmZ%~Ob z)~i-oy>^}U=GwNPQ!(Q20+R=|W@lM$q9-!-Mf&wN>u9L7sM_xLRb2aKOh;mz)M8X? zs`zy_vo9{=?N`9#mIEA1DtFPAsXYs+bMTER_iZ1~ZMQS?Av5ggxa}8f7mjGn5HpbX zoULo@*lY|BIrjHwy~`WvBTSMI^}8;FF?A-6lY~>}FSEbfV!GimF*U>4m!9Y4UQ7@; zZEFPdHLS0|m38<09ytoV!h0B7x6x%Zq4X5mx~ISE#yrbP{q&EHq8kUq6|PxP(3$+C z-DdH?0Y3EM53;IP*XyOh-8+NX z8+~lsVWnHTBx~#C{Lu$GWm9?7mgOGM8WfN$L4lq z@zONxApN@E{~%1Bgr8EA3j(7?=4YswZ`YdbWdW3!;&bVD1*TM0IMGmoA*887I7N9|+Ig zXfd!B!wZ+8*Mik9%r)ShM_~oqe_(NO@pZ5C^{{8po{4+! zz4td02P8y!Gv8_a`{o#Cf$w>I@rz$%<;oSR)hgCnPM)~Sf#h^YFHb^EPE0r;ngSPD z3M^D3d~hm3kl(*TxK@M6rl%4YErZtS+H~F)w$vief`=&xjYql~Z>!$L$h}$aRtg6R z#$trTtJH|Ca}-w+y2i;SPFwijegyn|U@yXVFTjgS@c1g6oOcIFJ&?R@F9cD{m8&mN zotbB9`FX_JDt*63Vl=T%@H~&p*Vb5FIzRH@%}gLO4NkFfZ3|HiLKOBqDTX}OvhOLj zFN-bMo%Y3Y`)OQz+l2&5^>FZ&2b=CjFKm0>3UAn~d)RZU#hn=qZsExm@-SK^&m(QQ)3!ncyhYlU0 z)!O2oyYHr6uRFue)UU*(fFc7lK@e&B7LanGJ`cU(0mS016$+r7llwGHHSAFxH<0QH_q}i14nJ;4K0*hgL8|I zo?CwMO$%rM-qiGv=4D*JuxQv;+?+&#mNV9kh70M0GsSAZXcQ-e984qF?Ki)*CKnk? zIk;+>vfS)ovbC*N(wfa{S5b{7S_-;R#Kr4t9O|wzF*QxUwaM1?Ro+pDiHb#~?2Q4| z`*6Gu$EFdUfvXqc>N;#G_}SMv*Id%^!NgiZJUp)o*j;DRHSQgDB zICg1ANzap1;HR~loQe~45~CB1jU%FNhwj=cNv}iL?-EB{w;83{8f&cs)gR7aTUjbn3m(%xh&+GjrV873MH z60Mn>oaE4qOOJL`)1cJ;R#-opgw8pQ@(`PCZE! zG_b0Ij$?v)gXc~?OSG|$EVv98$HZaSDj;WiDXL1dd)DctvhGC|`!Y^oe4_$yT%kUG zKq1xs7&8(H+rMLQVA6vl9>ix}VB^}goT}R?HGJG=ozDh{bh1i{Vepb78`sUTSff#? zlY2(}<;XL2#1%qfvo!J2#LG>;$>|hLdwtb4Hmu~zW`}0C#eoXod8}Q#$drM_8U!_{ z1WwVPNa**RUxTSZtpN*lSUK<7Rc~5^ckG3wcwmt&t4)OGrK#n+(1%o%(!|qi>T;z9 z`8uPRzioiIaHt5t=ok}6=s0rBO%#&!yY#wkqV^`X-zMqzFkwj4?Gv}#*f>T<{d96o zyGc6({eBl?ZEpTHZf)d@PVNjUhQ`!mtLgQ6eDDJwpc(`&iwGA4J1Q0UMi%Vluk$<) ztu@Qb%dD=hqLkX!LU|>xhS`}Jre|jO(wDx(pZ@8evejxaIXO8t8N3X3#%XpcLBJDF zJi+%LdyKicIeNVwZ+QJ1AUm82ZrB-c2`UvTK`=ZhQOcwO=W!#2zz>3y1xocbX?xuy zDOgD&tWF%D3A>o6i|%%byB(6gTc0+Hu!+W+lu;}lTI02gnRUWIG$D+o(x{_kKJkm% zjTDY?1!Q6j&3cn|a}R6Xgt{*{o50TKEuPjrYokLqoB?vfs?q#-8p|L85T^6sC90tdkZYPU^u_=Qi z(-CoN(hy%!Xi*kG%_z2V$JYG_kh9&%m_ad?PEd)0=2N@^5XLPBINHKw1@4ZK zhw%2};3J4qi-x$`w9=FLc;T)Z6EBTQ7V)bS?>fq~ygtf4II;kIazU}y*d!r|LXuva z?$!pK>(}XBTfwefVg2$2o__36R?fUgxONR2cF|FvsNcsX30RFuL8Xgz{ZBnkjjl80hwTEX>dI(T{wDE6Xdn4#)Gno2H)252X~I=droD$)$@I z>GygBDf?kwWo3JY4(u zW#N+$cF5yMrSb8_@ikKr%}L?%Su3P2#ah41 zRBMAqpy>6w=w2JYBRDi^sW+VVMk=SNi4v#?s5W7u;y&K0y2-$$b*Kg~H31LbY5D2} zn4Sob^+`d&h8?+EIvvU19larIkfU~>5OHC&4@r+Pbt3e#V@k4 zvBBcvBD&Y(zBu1E+sN3c0 z(q%4Qy2xg`3(~_6Dv%g9Hrn_bTU3-}W_FHRa{?Jupk`4)cIZ0csT4AwF5JfU8G|PT zu@soNj}d~f--ATw`U$&R_l=b0kcnn$VIRxqky8`c|Me$?xNV>1#mn%6Yw)o*!s09} z?t`QQO9$ZVm*CPmgbL#uN1jlJ19R}$dBc&rB-0Ja>eW8cnHOo?d6IssjaAr}UOp#| zKJbuZjfLG7E0bw(thNYMFyFI-b4=yy-hh>Pux8m;rwHQ535|C;XK!XIRixG#xHO|I zOVn+<=GLyCTc0ML#x!g@cnU3rQN2Ma1bXNKied9NW3XBbg(PODp=)i&fJIm{d`M<( zEakhFg>ZR9QhEa#Hw!{5UHELVjGA!iZfqd@3Y)zU9mh;|)(Q5^ptn}ovJgks9+*J{ z(zT;3u$n*;Lqo!36(S#EAI@#UGpFE)gvH|!RNbE?l0QQ=^%L5S&GYOf6-AK4 z<&4?BZpQvBcc^G%uyI7^>I%K<%XpOv)y5>v>En3SI@)NAv9>COn3&yzHZlE9muJtM z1mpDIFxY3oU1wWizYP;WHGRzbOmWhxBC^IR2f5;AX+UKBA? zuk-PbeT@J4H-3YORO=z6+|gd4ygmcpr`zjs?buxu7@baMNcfwx!KM4STB&g6>{&klxzBO*=ux(|ws^zqUr)7GBa9-l z+rRK6a$&J8_{t0c>O$^RKMWn{$yp`sv{%LfZ4>rbyLyGwFTO-4NvPHvOfNK1Lb-mC zanUSTLmbB}t!+`+Y%y8!n4I53WoF)K!Bpzx?upR_LDtqaNjiG&URZCv4HkSgf-TrB z9jeSsPYB{9Vs^U8i!(=U>*aI&cW=bTG4}sCh5Y^RWB&AUHLGVqv1tgFZf_#O|8K0c&9+AN|R*P6756W%oZ2&n*tkI+Lr>B_HiADY^<$;Qgn@_y0t+qkVM@UXidK(IPM{8HK=*ud!QBcfgp4@ zQ7eG9g0EbFfA=)@(FFTM1Q#wquOsMa_=%$)VPhdx+7}$0cTtNfZM16Xz*XXr2=~pIUWY1T#~UqTXl_)az8LbvwOhFZ+)i z#h;qx$!DM8n_v0@Tg#UbQAE`15qCOH?3ox)3ZpgMZnxwTYlpyDwikj_ z=q}Qcc2Bur$C3Sz-O{3xj=>QYlO&=cjJ1dF6d%6_vA>CU@}d;qd{Hq6@-MDo_x}gX z=bi!E1i2R`CZQ6-1B=K@ZP@5TMM1p@Cj#X27ZR|BqjRp+xAxK*nlm%Z?>)e?&z_>Q zu`x*Err^byK)J~)}{dfJ*Km2GU>Kg;_~;S9_EWP8#L_k)7| zOr%;?JGAfqoygd=iwf_|kT#;=D!Y9WVX&Fyme-j$GaIv0a&Uu6h8%F+AvZu(w%j*M z`-;L?*QSyMcFEkFC3=R&<1nPNwMn9UHzvM$9pCp5ahJY<)xPD}EYv;dYWK92f;e(* zDKiO|LinSn;L{fbM<-7d8XGEWS z$Y&{ELmpE3F08fRC+zomQmGJzAvX2a*(r`eD&?yE%a_^O+CnLnkD6!TW{4(# z6|#S#q-hXRGC4WP!omXI_{KN*<3Ijm)>c=Uo|?)hq{=|2TCMW<xt_W+ZQ#5n_Mf$@l)HRp*FQKR4Nq~ z4;)~9ZH+(pgFoPV-}@fTMuU2-mVduU1>0+@t9cmVmZR}4a|kJ zY1n;k6GQ7pV62G}zS)}K^v1n>`P!ZQd0eC7Cn&#(txj-szRrDnn*95h>fHUi4Zim> zwCnKblG}%Z)PJmNU||ZTfeY(~s(^#jip0X^CRH0@yUpz1~aN9OWs5HAqjnX4riSqb*_C89m zCLTmclo7@)gvZ`1VzuSI(+ttY;})bGp?yJ=L{z5q<7Gi)oPCMb?(TKpKExy;1VSix z;Yt@*rVC-mL!bbV)>p4$yZ}!q1bcG`^91OH{C-;!StoPIBfny>5(=V&KuSOCCv!HjNQ)b@~@; zwF97;NO#n_NdZ9;^*M9#63uFrM#bm+%P;f%51!y^lG|z78Ib#?XT*`C$4U0?;r!Wi z#PicEE*@gG;S+^YZYGA9zHLlQ3grcyI&+3jyTwCqe;67QPB`Tc%(pToC-Z9=PEH#Q z{{;IP-uE&!IhhNPJ*D`<7d}t7+huBM3S$f> zPn>W+v-oohBfObovCd5YO6-o5k}!&#yR{ImC5i!~u{yy-Ay+P6;Og=+&DnW`=Oct5 zHpWK1p19}mA+hh^BFoDwoH=)nL~Ej6kFAxfgq=1WFnu5Z(F8GnU_W#F_M?R5!pe1~ zXJ@F+%ndvr=0sz?TYT6Ou$Dbf4F?dwl7|6@KK;tNepwEk1BOV!rN%L4uSV zZr0&=1^MlDOYeYX|DYsBc27C>#t276e(lNx=YtuJOoEWUL+YLz zk%)vOMi3(r#@K0VMbz&yH#NoC#H0eX-Pb&yy61s6*ej2ZzE_0;hHcKrts5x>*REcr z+Y4Eknd0J0r+MtDXXyhE_=x{vzY_Z<6tT9ftgo~3)MG3O2=9A6!fLj*S{yxcgxQ%{ z{BD;utwh(W+DcW5xqXXVSh+&-#V_#IhaX1Q68u^N5d`@<(Q!;9C6!d*o9Sgk37PicixFLhG(CBmM?taiyS+8ly0xb>+ipxpjIJ? z^^lQYwz(ID#iJMkDJ5|nJMcrnlE4^j;=s-F`Lk?pZ80&o2ccY6S-ab_^OFtn(A(ZZ zwOZrLU;YX&oI8(-6U@pLrlXiW0=xjKfskD-c%f&w1~yt+hOi^%j@(W!ideb2%I&lB zA|7XvDcqD!mV_o!zCa9`xrAZJ{>6j;8c-%YnI?1lXc^E`3(62JH2HP+)Uzw+QFUp)`|Do_*uFMDqu zY}s|4_x;x1=iKSdW51pUj17R`gn=LhfTTH!qDVOs9h%aw+D}GF-m0PH%6Ay(TET8q*n$yXX;#-LRb@YjfUB6DF3EXDRTDd$A6e@sqybu z2+^p)`%11Y3F<#)1m|_(MP)|1aosmy+zgTo;e4gS7%x^vwNM+?;**x1QzN!hg%_1h zKyXlxdPSs2n$_*7D#W?Z8oLo8%~O&zC8{^bx?PM5T$@Og>shG!Z(D$<9?aj=hGmA1 zi?~r=;^ed?ZcY)kn%H^^Z)@zSWzPv+C%D`ZsgtdZ4eq}CZVs)i(C_z$0(Nhp*U$dt zU;L}b-|_fg?r#n~Q3toG2-x9yGOu}VygJrzY%+zWt0$NE;Cs&SkvFZ-d+Lw)^uPNL`h}|8eVwaUu7oaTLUA)Gz#Z6e!!1m3$BP|T6n`tLtB5gt>QkTM3!ncyJG;Al z_OqX5X=#bvIU2PZOA8CQG#|G7RU}cBMnPB}UjwfeH|08bX-6Z)xKf?t`sEAk?d>r& zzeH3E_6?mh)d%joNB-o;K299f_>F)5ulUTf-{;EJ8#FFl;8-nVWz{mXVwheqNDG$c zg+~q<&Nf6Gu(`2Ie|v+eW|OV$9g=>3xcOO4R4RpOCnF;(sWzT~bGhHz+GK8S?!AvZ z^2on@!C`!)8X#3_ws@Fzn_<0cuq~8lBPK~x+%}DZ}H4VhYmGNt$~@E<-xOO z_}RCfBkqGG^u!H zF?y7K?62r`bK+#M7&S4-mlt$m@l*MlQx}4XCy2&Wnia2A6-bBkc_=Z95t$#qIbu*z zL`$um%KMo>XdHjv#u&Pt4*h;Yb1_ESZ5k1z>ah}>Yu{!OTlk;k#Ur99&GQGquA31?|xVZmhSuUvZd zMW!40Y85lMUn)UhuR;PZM;JFr@Mn&!-v(=0zkG!~;3tn5-nMG#WRT^K*g)zWl5WyY zcDdMzc>?&8CXxU8#V_!wi}&)x{hqh<``mu~7{1mZ%e{1r)41N0`K1+Jc=a-kuRp;% z-t`!{iLi|po;-M=A*5-Fhy)~H>^@m*X%zZ2F3;K7-R0ti3%vaD%iOqegN^IgsMTt8 zJH3%Ds&2Q-*4EY_0sk;v+Bk}H&=4GV3%GrJ{8s+D6axI#x4y+wPd&w@OP83Nn+wIF z2w9d5M>z~tr@i+y8jTU|O|{4|#*n*VaZ{CS(A=YWpUo?m*xlY`YJLe@xLJ47l=r{$ z9rEy7?&n)iKE>bqtxs__$@zuuHNMt^Zvpo^!wi9Am#JWZUar)waL=+~de6%Np)g@95LVpG7=8Ji^6zk#xy2m~`IFmGQ#1iMbgWSRPqV(b?&lo`=Vhdff%J01@d4& zQDz&K?Y{EFxr7&g#&Y}Hfs2l}eEk`I?Q0u+?d@-8&nc%5tr6P@lcbUXQCw$!X_;?) z=UJv&)4chihjD;yv_he64Yn8o0Mv?YoHC(y+HEdfzRbCE=eTs~66@>h_$(uC)M(b5 ztgWqqhxT44z}Q95DHV$MD{Nj1j+O&>UdD@@Nl4Bl5^}v>XYKG|wzs!wHk*TDSSaii ztQ1MZ48}|4tJCdLi{p{vG88wCG|eelds=dDTrkJn+uCA#V~gg@3{kxnv{1bA(;xZ( zZ@T?9{_rbbmWmttD*t zknO#csXPTSxICNKfg7=4N(4uPrX)uWw^kn~+#oXhN?GsS8`NQ+2qpu_Z~b&*39SIe-2d^cTm)thbF3j$YZR6h7;v>+H;j~I(D6lbZ9sMHsusbN)G zwX~86L9|N1Di2ZG?^0{D$ekleQ)=~aSo<1~q3LPJ1fs%kv6sVU*3u2zl;viV%v!y; zxhqMQQ#WC?)i12jnVF%TB``D3+um|NyY2P_Ao7hfrm`ZcV$|3|wXC8}J&+hEq20=T z*q30fit~XRvA(^>BPRu~Lgtm!!FR6a{81b26~)qrR*>g@Szs2}5~vyG@ALeZ$yK^v z{vuDk>s{o|b8K~mIEv`@Qgt9vy}{hlGN1e6SD0Iv=gfU?L9+y;76MxFc9JAPRoU6u z;leAgaPIthu3x`SyWOT1$JFX|78e%6XDkXiU(D&lR91(G-2~L;hncZg|Lj3o6ZaED zKqrx<$A3Rk^jJG^1s@rISI0L66}$cH|p_uqAg{Qj4|!r%P$-{hT1!n>MXrjEfz6vX6y;UV~+ zJ_LXAUwJ-t2^NYlcg(6BpAFI6IXFBgY+YCKGzE!B(v&$yWiG5S!;QT`jEnG^4m4Cs z`h?4JYPA~6i;J?myZeR+EF+_95%H?(z1O{VTe`g-AN%Q_=H-i*`9_*C+o-YK?a{q> zk-4QMw(#_Bb`{YEmk{WQ%FT82UE8u;aX+sD&f@h}MqBhjG2F zfewz1@G`QjHIQfd&q9AxI551nIMCRNU*+ceqKjoF~0DS3!0SuZ$c))dGbxeQCB`J%k+7u9(W$PId3m!&q<#77YqH+Ln? zb0P_H6h;KAj-IX2H4WbT*kf30$%?HZ9gNV1Pr@5P=r4DUR|U`4SxR* z|B!3z>(pvB4jnqg!r~%RQ&Z&!!WG3$2wXwrz!wMG!~RCKuW=5>Nyi6g)Nu1>7+-(C z)#ock*8EstbUq*ad^5m?Lt=@n#oC}rk))6+Oru3x>1>vqY#=iGJ&i6Y`=q)+WEao-YbWLB^A z3@JhKW33LELO=IJCZLQ-+NV*kv$MNPmL){xxfCgKpBWY+g*1dA@Nfn%axU*!!`HV|00EyeZHLwl7tK&53cr`%sAa3C)#`EJyz*THs{(@fGnZ8OKlX5gNrP z%EK`nLU}D@i_4#-qipVQ;fG_K%6|q2Xiy6mB1)m1ky|ErGErCy1#&fE z-Pat<3UmkkHNHhP3B{61a;aX6fxN<`xKmM?EjLNxIL6v|@cmMyRtmLZ(VQEX zUnNsdy)}i2B6|Hkk38}a4?XZ8&wT$S{`Y_I>%2AgoH{gzzWFTO9QIPr*=6PMN%+=t z@GGB*s2Sm}+zs0V7lyRZw(KRtduA=<8oKvdy&gmgi|1lM$R7y$1+==V2R35oAffYj z&at?#K*et809QDsngGi{sb1B4RlTvf$dYveabz@^g+uPfC zJnOxjnVRrKXG!0(2FGTdX4aqx8VPf=g@~f7*vq6TQ5@6l1VK<+;R%NGSa1j{q|oxY zHsjXM6$$wzG3-!qp>22ux;o8XW0vc?Z8~X6WXeM&1Bh{Fx6LDuJi^TUyzX_oH*KN4 zZehCrpRbu_)3~HpafBc34oX!|nWWfSIbBW_YXuwCRBeQbf;y;E*y?&>8|vbEp>6R` z{xtl=UBb7|!@298jnvb$uvqu>o$`eXKcKIMJC>%HfB6|*Z}({TdPM;ej<;CD!qOsN zd-?^Qe)5}`yk8Wdg(Zj?qHp^mZev1QGLYRLEqnA9joda*moVEf1(8<8$oQi}|j zI1XdX$`;))p_wspNx`EbCK?%03@@J?Uu>Yw&CMNrNO)|tsliA|jEFHJ;=Jej#s+uZ zc{jiEKmRq(oj*@M6edz{G-Pjgm)*_HQ0a-tm(w}9xI53u8A!66sAh0A3pK%IK5%G! zI2ci_##Fsdo;!TMk5kprLcMPO-#q}E)Yz~XCAFs3ck2RY8cYpKOJ}vKj-+Qwzn1WBG?q*Wd#5Z1nT}@S0 zs8aBRi|vPFFR2(g4-&~f$-qPvNqt7ti*Hp8>zHG;6^rwpnlbE&VJ`vag2U*IOmPjN zVME;QXUIi=m}{LbyWKwZsNC?9LVQcW@eYq)+k5}ZC#CVWjANs%t z-W}Umy4I=)QX0Dnp`CP&Un)udOg)}YmFO6I}UYwEniNl=gIxq#lh1bpTvfhll( z<%P@e!WEcpDEF;Go;`?3lG#_Y3NGVu1rpi4&nl;7$4aOe@++2=pWy0+IRwLE@ik<`2kWcW=nWT%e z-zckmSWHo93WBvU#uj4(GhASJP2o&m@F|L}JWu*uyKn(hZ(`$GKyq`(Bky{ITpj=T z)Bl{!?>xz!hvsR_EpYC_E9g#}wWT2b8OLzG9aD3bt*gqlT?a<_**lBzEkQdgbs^k2 z6dM~nLakoM#`UtR8$2_k*QUgCD$Cda03ZNKL_t(B##Gq`q)|ouP<8vn@#BB)4TIpw zs8^2<-GLer@;v3*_3OOzU61nDfAv?nc=00reqX)!D%R@m?zZmj>`=3o_Ed{M+F6nJ zoIpA`-l{`=pba!4gHvIvtpFMqh>e)R`?yI5C!8U{7&9_oR2@xO>cYCXu~A_PJ@RoT zx`>xC#!oP`9xeL(#AoJa&>(DbjeM>89OiT;eEE%C;QX~;`IWDnSeX07ws$-Wnw~mM zOyR>Zc0=|r&d6IWpPuQHU6>pzL&MN zHG2K-(9o}#`41228&3o0ZEt<^|LU@gUah6ZGeF&x;p+eR-ndk>Np9-aMOa*1q-HHL zyDa@wu_#>^&cI6!KDrF=xgYcf{Hs5LIS0RWp8QGz>s{emzs7RY@WEqn$in)@4=__R zEN#Ea?ACSZswHz7;1MI_-Z4Eh&3e1Xm%scKOrGMhBm_da^=3mUEH_B5rKzZufu~eC zLRHmKp4vX0*mzM>?cxqxLw*a?YMg95iGVC6e+e@nW~$4e_&xrI3z$;TG||jKnz6Bd zC5)Qu4ZJ|7pYry%zJMv9oXJa-Xxjy!_w4QR0dh9Z9`LstT!wBuTh>^(v1&`Y32@bl14@)}2f=7pK* z=?BtYhjy)IT#Zo=0|{MhR%pr$$hP~8HUXS-%+JkIvj(Q;NOH6u1)ftJ5F!6}KMd62 z*^BVpIk>wCpM>ap=i!ewm2*2OiSw+?z~i&fa2}stXKH?y__-&cpOO&>>bY|Tsa;rE zUE$w-@d+-Rf0@`AT;}kZn;dM)dpFq18O^lb=`B%(Y5_COLzz_Q97HAK{l-z_#oeTJ z@oKSC^0TzUuc7k$9~KSOLIBO9^x8XIzjlpys)Zsrr%X*xbN793;)NGp;2-_gr+9pI zis|`zIy>83y?%oaE(&uErEZa$flF=W>B}jPJ6M~6?k22n1wE7x-Ue#~B5PivISP4H z2LsbnQzP4YW7uwS-paB1sN(Hl1gyhrmL?hXdMtO}efLKW_Jqn0n*uY2V`(*IL$BZG z%GIm9{lN$ME5G=Q((CtSs@3Ayv11%LdX#HduQ1iw;@PPMe&N+e`Nrk~|F*Y`pPl8& zcAalrN_g^G&Mt8D)Jf`bjL%c%7Z-?|%`on)6efW#>O-nAqxnq>CF5#&6XZ;aaTURb zaT0=4&6ndvj*MAD>^C{7j=21QziI=7C^x$XsDt|S^2&qndEYBPj_&(M9?4c$SLZKY zxbWz=zW#O2{on`KER#l~iO&*RQ&anj(%mXa51_WA9`;3xf7I(#fN7^re^1Hd4|t2X66^UF+F9zugEJIJahgESFT*<(3En0 zZkcP{J~mH=g_AMt?d>r?KhIBo_`@tLEzs>H6BC*l=}HwXV8~k~`GfF!@WBTU|J=`h zVlzuqBujkP=j2l$+33COQ5wmQI=%bx`(OOET$P#W8D^(iG-hVm=s@DcuS^TiDE#W1 zF~`^7`R~JTehyj*oX_FV3e4`ndrk@uuSINS(DAU`g14oRx;`z_rx`iw&p(BW0+G4w zu5y=aqt?JhF`xhaFOau4QI`cnPIWhPi`5Ds)@yAT)ljW#Cs5n0^KCxt~>7n@A>p^ z|2E6*ZPwii_?}rb)V%5V2drC z)C<%a04yyo-t^g|5V8X{JUjjLtGS#8+_J z*J-yq#8Ke>Bw0qg-R8b~@8vy@KTfSyqtos4T1{k$uu2iIbiYlI1MqtI;fGIt;!pgE z%c@Gh*UOD_vKdY3r6c#L+X2l%qM#wVSEoE*x2Mr!#G-06z@ur~`by%3KkzaWgu3yKt zS|OR_p2)`HP?nY!`QkUf!{rMXFj*2dC5mmTn*#Be6@ZD#Z9zx5Zc*s64p6&EN&G(s z1vyAtRMkK|j!xZ*S2S_-U5=S_G`8$p)QlHQg_xh>Nje=iH#VrXrXh;(7~-hL=`*MK z+LKT6)Hj~g`xYA5T9du?i&zgw4b*0XK$!!Yg_MM3AhXbzhUs}&nul5+Am$xM4R4tX z3g}{#6pL@o(rPwGoz5A`>sQggz@ZSl&!J3@k!S;Ur1e*x2CSd++5VANeqc)>hfr+{B15KfeG;!m7zwtqEJNo}<6l z_S2v%z?ror-toToBUb1;hiz|g?93^|6uMq2sEVp*z!WdY<0{4sNX8|9)KHA4MGzAV zTE$BEIb$QL{ThP(keYEN<8g67-Ou>C9FO{u;#g4c`$2?a^u2DXMRJjLZjfF8o!m)~AMaasE7zuEl4!Ig-{iNzJs$m_x zI1#QI)JnAor-H=6Pod%vzF(j%Wvo#Vr;3duPM#@fl zzvrVL{pd4knvy0xXT(O%CB!J#9(*@>a~AW5PhcGQ2Gl`Z;Upfqm`Mo@G#?o`>e``0 zvV8e6=a)~=?f!sWAMyYGv}bk>u3U%JqwulYAiDrb8!qj^?>rCRcm?i028jzDwY4z6 z2)nO%%xc7HGv~&P;l|V7z`pONFi{QP>!S+JtJdOJoQ-(m>)+rLr_SKgba=KZYNkWS zUO!x09u+Vtv+_`!?uRH~_WRmFS24bo;U>2z{A{sAV8;=3W5Br)5w$9sQ&pcWzphRp zOd(rClNu~5`V9J1J+gMJ1r z3$-{D^NZ8ajv{Atp37i~j zEqC8}x8gmgkDrw9Jo5~D?KaIugLc2qr7KrhU74renljc#%pW<<>e1u$`zf8o(cWI? zu9IujXBXAhYLfQ*WdR|>(P-g#jtB+EPPAC2@X&13s26VH#sr?tz)idwKPKd?QuE2Y zRxX>s)0xD<3GY{i$AnQ?IqK75@ISUY{3CrONy1dK#mdT3P}&UG9Ey@VKN4OhAvik5 zf}5oDVoJGc^&^SSS9Neo=V@aGYPcgi{3s$85i>SayxD}zPli&$hK~wUORMshJ8$FU zbc5YahuzI>_Hsz37x0T~$dNPjTXVE`cUfCm(f7XRaeeI3M`_fXbUGbep=_rTX5?m^ zk1_o97{~r#YMH$6{qKM9qaXd~Gf9$=rMdH7ttV(b)O^Z}SElc|pQWGuICHljChi9j zESDts!d-W~t_#FsTj^*#S(eGv%#1G2PE%i6QA^7uegOv={yT+Rc>QOiZjTYQF4^Lk7G>zxjLJhy!ru)h{nzOUmC??Ny;wY5b zOUuiA?ul=5VYFd-ARzkCRXS z;y|98A(m6c@Q0(`%KyX%eYIY{&+P29%+1cr+}s@Rd-uC}>wWjptkqBqE2r;3kKKtL zI*D68%Jp{2wHur4_WCTup0f)r=8v7GIX5S9W!zKEC~5+CFDxJkv4tduRD_y=xKpd3HQaOEi!C&d<(8FdR+G@vrx4P3@21-{@* zV{Zxbn_E@Gc}{L)8Y{=-^xV82NtGLWZQ0n~4kL>wqE@T1wsseX)>dgXrvxC$vVtI{ z2*DW7Xdxg~V1R>;zA!)=G-gui?kB+LujkhXKls6Sz5fFr_;SDBC(klxjImm93yd*A z#ataWOR3E*u<+=+Y29^+o!|W;#?%lXZ;r8he{7)}K@&oU# z_PjkbZJ1kvOW%8v+0$o;8x6YMF5WA-Q*AWra<0?k+2@|)@X0f{e5hw58VnUpsdH2K zA(=vtrEJN|;@1=i=D0=0trUI7zke(Jpx12=KIX(e&M_MQ{QHip3Szn~i(w;!F4}uA zl}>nItVz}1t{4}ng3D>|ZqrUu7G~z@B`GV14)MTS?#JaR-+Jmh+!iBK%?ACwO~gZY z501}5qd;lYK;MH?Osr6^0X0Y>cySZ{>9bHr`Kc*rG+?@^Ja9<)_U@V`O20?$-hA)j2?{{$WWw7#_2O>_~tjiN#5&m`t&JIoIK8r>l^Iu z?sD$@dA2q-FhH$tSzcV=$l@$D1Bn;<3WpCL4LPl{zAwgrGe}kH!V75)wt7JVAgUBF z&Qy%W;(0(4A}HVlFCR3vs7O zql_`6%1U^@WJ_pCvJ_gg zaQ7*iwZd+}2re5TQQXYQ@c}K|?&rF;wj#~*bNsVMrubtk@anqq8{eGf73~sF=eV}Y zpZE;=iSMF+|KrH)VW_2GGUdn|eEvl^H5Jb8(RsK7%u`n#KXux2YNgJr&nN6%I?vqk zlk9A4kmotZia2kWo1f>&r@zOek3I(VsgOj9!e(%`%6eunrV1lgiu>$~4qVhuRIeTn zUe#aUYFu>?U*iSMxP$n9f2SM)8v{O9R0F4>6xlRp3}hc8vuja63m%i@T)K1-6W7SS zm`fBP+G07sgsUYeK<^3V5B-PPTo+I^Uh>tRK5-(RwbpmKGF<;%{xgT|* zA8K|D@|@RUV_orWG(cB`*jg4B7VCR^?Kk#_>SsRov7fcEB}p@NE|>K9G3rS|EpucA zR4ii`_Eue2iQbnF@6hPBAQzh9C#`!_2mV1nNh-xnF?g1tET$2Q7=x|Vu=NH}tpQHi+}aT@-~OLy^=Xo`L#W2YV|D=~L2)a9RFs>#v6TjR-BAU*<}%<%km zSe+@3g@V-K{v~96OZ`sbSeu50DY*RfcL1ohTBJ!rmO1h?Wo~+!FMa#FY;4{jDn$yb z_9R6j9gLpx;8Gpb3W7Ge5gT{}G7M|}7RtoqUD|62i_Pl4gB&cK4_^8i-g{mRIQ}eKxi>Irqw|%qJZhk&vYwjKW?Q zjv35MBdmGH2Gj<_#u|{e;6exf>Gy=MY&Ur8YLh$HTAW&_;}&atjyhkzx=gnV^U~(% z!W@n1=@E3V+QC;ps40bW#DWjvgyI!jWlaRp3yciKBy&ITQWHS(JomkBmz9;3Uppvg zM@9@c$4CcdqfnU+gulbUexslCn4X^H?Af#QIz93~;I( z2=&&qsEJrvJ49=$iBm@*n6EP6n~ol3y!sLSwd!ZE2DPCXH*=|Z0 zBO|pEX($O|fUVWa^B`pvtj>i7$tz;5sDe>JB8$gWCd7iRswkUEN6#qXI3NIe6O4ZV zx^L&hJsjCnwXr2l!c`2$fflu1#Tmp}nVXyEmW>Bn~;qJ#E+WEqBO@6VRG*=y`mMa}YT=lgu_JeV$2UtMNGFQQ|=e2=gIt zhof)74o6m%(Qx&C89bexT{@X#&RF6&4qOTExq5Y-&h9R2u1}*LfltUibThbZ0cIP} zx8d3DJLox-I`Y)I@CO^S)aGj3Q8%bJI0-80OU}`7IbW42cG}BqM>TH0=Xjvc>OL;f z1>%Hiv4{bhrgPi9&W$wj-tji zNKh*-R=r(t3NaRu6eC7ZFXDzxwlOjyY$^fv#g}#fBX@GN*!W?d@LO3mlxW~!WLq45 zu~IBhggI}OWUOAv)0~C*`9BN%S8vz?=e_TF&%Lcy>z>YD2gQrz8R8uAk)y26&+>MY zuo%lwn_-_oW-27WL7*O~C=KNP=I;%sPeJ#<jF}-m4wR zevjx89vGoN8%2kzqogQ`h~tx@JllA3}6MKB`(hdIh z3)lF}||(!m+u zq8cB?{V<%Is^6Q6V2cgR0Fn(0$3cduJbQs)oMTLc`kbA;ZH%>e4ZcGjPu5Ska^(tB z&S82fakEBjl-<5iL-pi5;tP!vXCMJODLiqx&Wk$Fq2(HpwLzmMvNVn0u%xy|16cB& zR~*#5rxDvAA;7TNx~bSL3LWo53@p)NkHP3L7?!b0eGo+zJk~_y-UpX!V{pzPMbjrD zL{YR#@B)23Lw{(ItaCMCCRwz<;~Pe$@SYaUL_pO6pW{+Uea?~PMXp`B!d|~mE3TuO z6^kaOP>Bu}rC#CC(W5LaEU?$@j*QMrky2BkTX^*l#n@VnC`*eHOt99Xg?^JdMdGl< z7e-xW)gc4nT$xnRkNG{ySd(lgP%#GOU4{N&s(H1zfKsuH5LMDVXLhR2o9?~$&wuxs zXa4>hZbbF|4}9R^4}SQ=-%FB&a_7TqSnC$2VCyh5kJRfUCH8~iso-lx$ z$Pufmu`z~Py)N~7U3=ZGe)F4O=X0O^EGCYzQB>T>619pj^?KNVX*T8Mb1!Lc;|iMR z;<9Xvd*cguxtMi3r-*1pMO03$t%~mM(CzhPv(u4_yIr2$?(y<&pTtbn+gsY0GG-}w$4xS?+Y@P0HZ_{tL$?`l1PMTt%qlz8a zs=toU%xDrU!46+FAoW^hvY27g4q`x{O4{D#OJDc`zx`YPH)dy@L&1qz8qFDbHW{x=Rw$c3Mi@sCS-jdry-**TMEwLGPftQKeO1 zN55}zv)}Vn&1IuVXJxskh)wDz@K~$4QN8y1DMyYT{Xb8fIPoJxaegF`?595Z(LeU# z4}IusS(4x~7tV{ALBKUOtYgRZR_MlDHn=&rl8i2Amf^~pk>EtRHC^exss)T#15s^Y z)o}Aa6P#Sd55zsgXrPd4^ke=Z<4I%0m&*IleQQXjF3(VxqrQ9q5|Z{V=bm|n?>+rA zaXseR);3@N=C^Q3uc+n&k#xY8uFmHww{nzBt0D0nfF#xFbbP&DS8FYoE?m&heeQGe zFFyTgzW&v(>gJ8>Bx#DZQ8+8cVxtJLMn#N9wFa%JSuU*Kkn5K&i%?NTVM!Y3a- z%fH?{#7ax`{x$sd6m}iF+=clT%!1$PD{&;u&qnw(C++SsH#dhZRfPp@)M{*OZ*%SX z4Q%Nvpg=z$$X}Hsu;1qzzaHaA&t%_u zGfZej(HOjzLe2aD03ZNKL_t*FhR>cU)_Kd9^N!qkOcbHsk*0yex3Rf}%QE7$N3B-0 zNgjF`oSBBGUZ`;wMNaOKb+^djnHtm^n0iYattnD08=2P>P_e|`Q3uj2leyU$IePRc zS&0~!n-kVx02lO>1cRt|f2YPctpUjS_oIY{mQdcY@v;m5i$f2MzfGdy^}moHP3TSo<9AXx8HvIUwA`|s6O`b zkN@Q3k3IIg-CmC@O&ta+Sa4}^@nnE**r*mBJaxm4>Q*{9l>@5z(5`_hxmewVAO}8i zm|9p(A1EMHu^8_VYXfK~Mg^k-W0o)5TdMVw_sG-NI`Y8UHGX?D2(l5u>O3r8!R{uId1bC4)Pe0AH#l_S6s=~Hewt#$ zN)!PSaplStm|Yl2uhk7IiXz6B-=GXQ29Fy+%4VNJWBjsFLR?c~KxLg3ojC%I@A?Ko5H<6aixlC=zs9*r=NR)t$xPL%nUY9u-3@Sm#;9lxxv!XGVMI3 zpF1sz1+n!SVhkG_TZ2&)1ch~9`Pl}@8Hh+~L9LTTlpdiFmI}YcL=mEb8aq7e#*EMu z_8U)CCm|CohbFF#hxh3VJ-MP0syJ4A4HI-NfrF|59jg6qSB@P&{&z%V>ctmd{F?_B z!TGsQeBu-De)qe7x7+F9T}eM0RvD()UNF`KQN5zFb!i?Fd4-EJ@YWeqR17{ML$VOZ3YFJ48~X9dt9E9 z^}6^hgFNHf`B!-Ex#vj`W)~I+!7QQ{Ma<63aD8)&uYUX6c%KKtqB;y_!~oD&MtG`P zb;jkOq_9S#!KF(VX}5P-U0v1bnHdFexx9Ka`5Jyj(pto>@SK2#VzxXOw zFI|8vA>gvW38_NIK`Raf1Q#LQT*(j`vCsf^uB{W->ol9q z0s1B)5JjYUj(S2TRuLjABydJhNFBQ6+}v$W^d6d==*PFHs$;B!G&JFwi;DtaOkMe;~_JvLr#WEc8xA&(m|T1lo)tvjuV^ zu$$pGvIW(tDQz?x8rK?ZbbGY>Y3P^o9P&(-Oi#8<16ONt;>eM(Me6-vn@+1bSVdc1 zBEjli!5wmFo|AREZ1$Wwb?SYfsyXk;`zc9WN23U9L&1|I$;jHVHAZc*)sW{o2k}*~ zYSdTacBxTgM$TC%c%FXtS++YpW@ct6RcsoqDdtwz=u3@DmoMQquOi(YNqZg1`+e$> z(MKM7NN1*}2f0m(oMB3>ol4PFtapnTBd$myF_0Hib}>@XpK*n-ZQ(gL*5B@Dv^mbh z*>B`~Q$yj4En!jAWnn~BK|4oln&RAfFM^13&iA@qjvYPvH_o0t`@bAW1m}}K|MUON z+u!!KU*Fr?qfn+ZC3nRY#98OvFvu9e)a&>(B~NOkQs&KiM6>nu;s)J-OBqwNv zSR+-ZMI9C()<~$jbQJZd`p;;A<(5A1T9CKON_YS{78_Ipt$-?Ns~ULHl(g65{Hy2L zYIkYP%n(H}7>f~$H4$op?ZE8(EE}8KeEEs5@ve8ileiWa((9qfG1g85U)9K{>h0@2 zK^a49YMT1aF5an>hQ8%oTGg@J>9DrEOqK1{gYV|tx*?GSG-Di2EUZ=ja zMkW>~1s>>}1pSy&vm~(oZKY&&nWN_tP9Hf!l4Ll27e+lU>2v++RTdT(Y0S*<%Eq1^ zn`v-pt}b7^vA_p+r)48+`)hs7;YKKSs6$#T8rY~9prh1^B+5*gjmHgF-Sc*Tk#ucRynBr2keoAV=a&rEqepL1?oS z+$_f7#!p6q0whwSnd65PL2h1+UKCXg1%OF}`Q`*XwX?eI2*3Alpu9 zrh>R)W9HZq&rQiA8O7}x*TK=ks-tW~yz@Nu zo$s=_v&YQLRQN$rjE!O-My#U+q*26ndxzP4gQzvlUZ$+BF3H-VRT|UNMG;(SR3?m# zN+7XpSycvlZ{hdFTK|Bvs$<}NdA^Gct#QP2oQor)((j|s!vvzSmIc2S;Olb`%^4?OU|ueUp$VR2J1zkMN~ z1s)p}oC?*jX(R^kGV*?RxK}{3-?D0a_Cu3qch3&k#isH#Rrf>+I2J z)DSD!C>}uKA{L2jOwZ11-&p<5cfU)2^BOMg;?q<#O{H|}Ru>+)@ZdR|R<5BLYAKyL zdWgCxX}?D;j;S{qY;A3@b^SUbDwn&7h*++~O~lOUAHM_XtEEqb7g%Y+a?{XF!zyPa zkS7V6=Rs zTM6Iqv)>dD$Mis?;@DnwclN_KG5B{QYl#O!YL%>g7wM5;4EDMs)ZX>G3tPGbfRI?#7%xP1I}=MF!_RyL+8M0j#A1xvCf= za-cTv#_dqlE2`eB>Ocsu5>rJ4=NwNx^&Pf%x0#)p328017-O+8RE@PdXl>0pv+!5X5tPPf~ky}cD+FLfhhs+)KwH$6}V=}*he zlOe-g%oy)jY^c4|543S)jJqPD_%O&6U%ZboVXuMUpI0f08b;omsc5f&r@g(!^FR0j z#7&x0)1kn#5r{=hRA{`IKxXq{&S^!Mota^4Yl|D#uMP`B+9-He|!71CBM~vn3H&*1>G-UrD zcW)MC*>T?a{l3g|&fRP8uHL)R02%-}AV7edxJV*LHfcFDBTI6~VTESG9>+}h#Seb5 zUlevI?C_Ib?NH3vju=Uf;Yb{EMvy!jks6I84@HWSxL|7#Ai5j9)q1PyZfDC(KV+VB z&#kTo6%JBDyCTTyuDa;Dbxxkl@B4rM#Tl!#BW^{Qc7#^`X`dAioWg|hXcET@n@%T* ziCgW3i&3d_nl8GwQ7~76GUa5h^pnLk@c+fzMw%vekJxzX-Be=D4ZJFL+;L?1`#e+g z@7tPmTqC_A#Bm%fA^ch@OG}z%wUm8UZ4DL@36;yWU)}hl;_l8F@o~9&9 z7DNl86nU2M*oAX+I;}a9;#`d?RrJ+5-P~H7@hREPci_Msh+hgP1!#< zpx+zJ&mjvEB->gmlvc#84k}8BTP@oC0kpg993GJkx5;NyOj*_{B&nhrf|r{o9?xwW z7Ay)Ld{F(_RhBiG*oDAh0z!S#d7w@hL&>oQ;6#I6HAjo3al?&qm=Ne%d*L*c$>JIac=S77eNOlNQJIcDX0=)`nc8NU^HR4b01ff z4ak)fXM@MM;WepB5&S_aRK_(BoO(Fv{CaL!FIHq@7Zy(#Dtm^P_$d0y*_4Khr#lvO z*;HjX=di|w4aP7TPv{O-XmvUs!HOaz@&~ktw_*^{^?yJ2B^268LJ-{4aYa{W``;Z zhl?z9{T0Gf-=E5_sNyX}F&oRPj|!+*GfPt@)2a8PG9~~X&VR=H_EcGdj}CLoHU=`D zD54rXoLVdwyrv3M5JwRznsd}tFzZZOEl`m!nzcg338Evk(zLpL;=u|x@7~9zGoK$- z*_wnO@c$z*Ljm@SpmXdIA))h2ib`M}ni^(#M4u{0;b`52U)*-dr7dJ|I zbjAcDt>cS!GMNR=5_4zE=3M#s;bwnmb?guRLxd%3d3I-8TC<7DjS*WGzDqO())?X_ z;{N^nVw{t?JXm~SpsonVe#7ant}r&5>({T#boZV(Q(*Fxd@{jgIkqe@MNvCSTU%m6 zE)Ujw%4BKA(#n#1{(Vomes4gWwCQv@Xsww}ChTu-vlPKwy;a^kI_rM)9OMP;Ocj5= zuW9?xdTt#U?f|{zWyC>Q6h3l730azP<;*53Zq19D%Gyt*DGnl?nvxL{o+wOqdr0I4M7)t(giEzZHI^<|1Qtq+hi zPtnfNN)isi?av&MKsSO(tIvVzvl{uIxm^t0O&4)AI`YL$wU34~XqFdTI&+4zoAcsE zP+`t)>w~C52)xf$=}qa15{eR=rQE-FhtVXZx3Y?gVyh240#yAcS zj=a&J3buEqz?#Ark$KAc;gF~-Pb{wAlckOIzF4)u*%3nj>TA8Qbt-X8$5XV{h?9lF zMr)064jn~AaU29Q3avD{)gg*wTAdz;(-}uQTR4;ZIGMn?vtreUEukh#-k9b4i&f@kuKX*MGR@b*9T|MCoG(n5#l z$QV-_70$OS4|23xtyAy$0w>Ed0dy2abUGcBQry3PpWpkv-{Ym<`E5WEM@hKI;m2!@ z(mubS-Rtwt&6{KgyV%mhs8twVl`U2Oy>W;;J4bN*7)l2#@)K^L1BZYq!eW}=KiimT z)gA-KE|`Q3&emL;WA#KMAIch!vN&6kjz?rgK@=x*-iVqbH!f7ovoz&kf1fN(arhCH zGz^?P?CDS*!?o`X23&sP z3EG1mS?H8S>u{Ykh~J3gR)^l|3a+!njXQVQ`QDq9qan7;FJ+ zo=szfCEpjZ_v?9^mX&LAs=-L)qu2YsSYH4caSOpcDo(zJeV zWS+C7f6({%2d<);&1N==BA4g6y!z^^ym|dPTU+-LB@DWK(llkz?^BeehfJ(Pi^E0{ z&RV*?9{0BHbLZv_&R*+dg0|lVf~Ylfw_?NGrro(YWF`_4SXKN0Kqob#qiVlSC5`z~ zT~-ETE3IkdoQ2JA4*%L_>T{Lz5*`{I$`4aohbh>;e@C2XqE_2$4uZp=XjPByv=*}5 z7hZXuk>@#a923RyJeopPBe}3KH+TU4p(Xrm<$b9hKE-`ceUwg|L*ZJnI#meq&MwpC z9xjeCSw_@{BG0*U`7*KAY;K;#8OPD#kXGEnD*uEyr~Lyh22@OUd5I!zu`@bgJiSeS zute19Vs(tQ4yO%ya3-x3Th4fui7EZ4bTXatCNtUtEj(PE!$BCDg zDXh=VimH)^U34X$?^_{4pxTVIM(c;0P98V4JC0^FH?IX%(W8LgJS29a`Fo!fM{#1& zCxSw-O3eW>ah?xX#jZqAgOIKk^Wdt{K+@vrYmYJe_G@g9Caey6;2f=Xo6U3QxO4Ze zdwFa`jSY`SBQ9M#$Df!D`iWv^f0wo`R1;~+JReLx{jrZyyurXqDMbd5)cY3_~>MNYPe8oS=aokvkcFv=zM#Lfu0m~Iv)bHS6NW1{YIfpAs@^r@ZXhw433HC)3TZhsy zQLl$e65`N!8e=I+Z%;6r%}CRfI7w)=S_^}U_jG~N>-G4vuYa94-gtw_WJ15+=k)2* zw%Esn-Y`cd`+PKo^y)2+Pp$e|&Kb7v8K5)|b^N!?^_y4EbR#oF8~M z72c}B(K5L^)$X_tW~uzibRw4`$VMaLl{LV!dG@T!(iBlj&Rw{G6BrE-h?BU|P&y?s z)+kZdU^TQlZFF*qd@^BYc<7R&Lt3r2M6C`IMHr`WL3nMAb)pqzo{KdGW4$Bt&dx3y z8|(a?zx`?Vm9Ku4?Y({J^?IB+dzQn)A!qEEb7%T)*KWx5zx+$eEO&j7yMRskw89F&K- z{hlP9ew07{D!<19;?peXto6JmTY76@rRtDHdn_YNJ%9>mES9L%=ffX-j_=*P$(vjI z{@xS?o9E6kJv@-nWa=Eqw{G2YdxsPG$VWfKq_E5;W8ygW(sW}u9E~`0`ZOPT{sXj< z7I$v#i!}~g6gVwmtWl+*yP#mPh!vbIutmXmJZ3Z+ci;g_6Ff>{fd&Xx? zmF(^hDa(>55cvIdGPu%sWHrm^IY&2eEgrcwQgK0yX=3-jxS_g^fxe(&JQ?vXzW7C% zj7CIS(eDrF_xp@TBeEPgKIqamUuYZa<6#%#K|*m;A?zyTPKB%D zz?pFNnw;&schKDdoumx`;qp0UQSEU@81YF!+x>cT({3jiQ#8UcO?bEzgXI;5J6qg(>${wL;z_bR$7&rERn@F} zKBsg+4p~dlDsu8MEr0bT5BY0Mkv0&IU|`(f;#BUW6=p5R%)shwn);A1Sf%Uvy>*^h zUgjxV_iiJtHc_0^V<`#6jlvVKv3b;!?Gow&M~Q{v~q-bvjd!Pmt_^Mzci zDjpfU*#G~ebhJ!LW@34+-IgyOOh6zz*d^IG&DyC=`u)BXMNuOh=g(baD~dVX+pA`~ zBFg&BUqw)ca5yEj2Ls}ESBiAXbaDja5lOp)6HVb9I%(mo5eWtq#`#ZU1xl>aBvArdKj1e}A%>NSglc3URZ1SLt!>(E@M$^;Rz8mAH2;3Q7tt{7KoJst1!xfj<|aHGN(?R=CvEQ z*x5f|b8UskpM93;_C1;GY>`hhnI0bT>L2|9gR4)`irbjb%!pF%BQLzbr3>f88cRAI z;f%$Ug$KV2Lmc}ME8`5xDG-0~X==X6A?-xsB$dh}lJJ=Gzm{3s?$BC@Pt zcW-a8xT&tGv98Q#*lZ?+2$!s*6~0-Tvd-IkWVRh^y?|Df!#QW2^T>_(d<=S44>~QiewdoIACN35noy%~6Czj#z8D%WJ%L{dG>A+JM0-1zu!8 zCA+r%-*S~Xo>KMv%r+vrE8&T?B~CTCm)0kHvw&tca;~Z{-)5HLu`}(sDy3oZ42UNU zTMI?O>|n@fGNChALWc|z6{r_VdxofJFVM+?(WP_73yzekn+EqoQf&Uf3mg%l-EO19 z2*`z_S{mkf`@TCe zshy7B^WBtlL?W!U9HJ8>j<}*VPsUS5)?p??#={{W_|QidT&>Hp#Kpq7bLZ%EI&9s$ zhqH!QN1*-Yp(7916V{K86)Nfzw>#K8C7T>!@)WG47>}?@&~Xc+gnTl^8ADN&*j#b6 z4y2O<001BWNkl8BnejuKZmCt~qL`y{F1Xtju?FBUTmI*2EyD}PuScOt6rFxm7;Mt=_- z-8>3hoQD|womAkR^kJ%IsBW6fg2$8`GdZgd1DNx0s-LGd&Uop!MX|ivb)VQcCEtDf z1~0$<27_*w!I=wmPoG7s!C1$1He*zl6!`=PT)uS4J^Q|=C5a-^>6ARrk+Q&=987_6 z1{{>ezlXBOvCfjtrW8dMeai=FbihW_Dy?wt6j>M`$Z4^Yxi#-m8ha8SZh*I<7 z##MG64rfgrWGf#(4ger$hT##!!kKlwmniyG@e0BcMjhsrJuat>@+qLYpvbKz6Vn`_q9)Qov?Gxtf7nrvKoa#a%Z+TW?7b>My6Jc?IR zPR886bDOBs_o$5us^CDma3bh{;EbmeFC`bjIByZ7l&-NT_d`OBf4Esxb1r&aBxvmm zoKCyV+R6$=nS)bk3x+cI*l5~=F2)(Y_1bH^5NV?2Qy3*!D>x-y>CzwoJA%5(THkRw zKR0bQ6HRE(YxC!;r5@;<9CcMc=w2e|ZGyeD(D*n8seEq)oD=ITQkG2ix7pjYZTT3w|3Bx;+=Qi@y3;9!NKT|r>{ND```Zz8*A%ic}7{562(3X z&67L@V*_&1;NP6YH3=j!oCOms+N-arW3HtS3!Z$p5zeDJqB>3_K8cI-FlXcXIcxZI z5fIxZxu1q4oQ7XeeSfq@IY28g5k^WfXC=|fec;*m%bCqhzWJS(xpU_ZNs`o!4ZzyU z66epJ=kn#t#I0D0JSWXE$`HsaMNW1!Vm2A0!xbbrG(m9_a<>sbnwn5Yq30^skAS%}g z3zP5%D}@u4IOVK}Xk2Mg+NbRL7b}EHePLZ`9O8^PTQWO5;Qr3O=iSJ>xT*O0T15c~ z*Q8m-be56CF=ggmC7dL3^>?n(?)8|BMn0n@7{phu(dlePoFrVja)pE8GWYJ@rYODg zLFpK5>FKXDp>t#>1g|oZ(F zdzQ)QO}2M-7%Z)D`Qk;cT)ONZ=)*(O;8`?iw~5O6iMYJZ0<9h6`qre?n;8%q} zfX3lz>ojQPjUlz28@q`P$>MG?q4*(D495$d<3-J*6xDFNm^*1q^=_}J$K39OLr@FG z_zpAD4dv%C1y%hevHoxatXNbWAt;QqayZM}#^$E{2WQSO9#0t_?0c@A)+{Y8k;Dlo zAuS3wn`PLt5bro_aYfGVy}R7GdmE=BB#OMrWfT#0+Qd3?qBKhTVP%EvRop};PDC_1 z?1Ne~x)ozBj3*Ngj*c+FhN02@SAekiSQtOzGP4ndgR2!7V1Sh_t+i9Q@pf=}dlb-{ zxf6cnd2~FZsp8>CK+`L)A4e4#WH6<-C5a-tyN77ahb{QMj_eNr|Wy z%WLbrdFMWH60?5p0-1GK6?r9IS(!AJK60nDBufMAaMYZ8c_)+7R7A`m{hOmo3%zcY zPZid!ql&u;JBpS%v#&M_t*9U11F)P&mn1K^fA0=cQ_}4Z!d}!+;fWXK_^FNJ;BYwi zg$syOrCwHH7q^cJ2d9R7fkPG1!O}5>KW~kPe6`l3dCu*-_qlNHOn}G~qAWT}D9hZd zkm7{F@(PCs`+Vo+?{M|X6|Cg294uIA_FJi!z3z!#%d|ZxiQaz|PJe)eft&d7K9z_x3gCWW4 zX^zgH!+rZz(fO36xGg{5Z}Gn!X1wpiAE#_|ha$SE8gR~9%CZz=3~TG_^!rPU4u@=S zZ&4IEk<#eck8_mv4TKKesuCS$;6C`$WT2BauFO&G4pDF5RCk#-@7J?u8?pw^JQ_7-%ND;>|OKU5vpq#ZYO-HQQ}p2PH;M`!La#=j!%FO zj}ux|t)%j)=;3S5)R}7P`=Bx>Wm6r0-6O=oDIc1r^DYI=aX!*~1E3xqFIe?Ehqb{c z=fr=rLdxR6d63$eF$B|rb894pbiO?$YdxFve7SY<(hl`TBu$edNx_)M&(D{!iGsfdFc~PJnBdJBk z!Q711;Yhjz_C;~UT6)gAFB@?E3m1u2*D2n*Lz2WYoxaC8TY>XZ)eEk+gq>$S`4T~4 zm8ox`5}1mRTT9OwRPadiHYE^i&Hek^wBndEe6137xCX-q%RoNOC zYtSNC(d43te~A0d54^ysD#G=m;8WZ8c%{{1tKCHver{~DoVed2jv|J8dtAJD9*SW9 z9WJr<#e=^MTC=jY#&~$Z^*6uA#q(3T8=I8IVa1a&J(^=Ff~?nBgEcut?rLV1G?;R} za@63;Fo!(0_yuef`5RlodKPEJfpLOEtSfzCR#}w;Vhv&(J6m@-I69&;Sn-HWC~jQS z`v(GXO|!GRPZ{!w2y@P2HX}}2VvS*AHgN+T@oLf*RayIa*s%7yocl3J-I3NFIgbFR zLPSU>V@%v*^;4hV*1!IJlrf}c%KLT9k8iFqixdN`DHMGXHUSxE5ApicW zU*-LyL!SP?3p{oC0I_&o~TRVw&Q~mu>Q&A0v!&EDe=st{N^RP7ay2y#+g)3g0iz>hI``umw zP-^E%<4r=QosSMtVVnUtr*L9W%5(XYC@fZ{vzZ@RI1?JNYU1i=KDJCT=}ZoHc6j^k z?@^*yUfT$^5`lZAbl~s#^(8Xrrp?{Z{rlD`^2$|fnNB7gO(q`Q6d?*09S^;JjS-z{ zb?A2noF5Odx&{ek<%!2Abjy`x$@9-Y-}$j0`?1(LSN`%Z|MGhh3bfVU?jr`Ic}y&D zv9Of^pK}%pXXT@Z2bAfQm)jjw5Wg7X&z?$tet0xy<-!V+$%t6{Jw`-OXbeuY7CIe2 z!MJxYq{!c3^U@WF5{%NAq9o5!O68Fs8z<=HW$f-DQ756-UqW!?N_>*HGoHV*P^5al zG;f&^Dz|D})jYGscmT*(HFaU*g6XLWCv!fVaPRhQ42sTR5O`gBu9SjW*{8IoC`yJ$ zM?_KJ+8S>V>BH|-iUQL(PGO2h2Tu- zX45f;!vmQWC7tC}w2l@G{Dg|(PS~V`-Mt}`$%HtLe5LQh76og_^Ncv1aBY-I-ffeu zwOB}dsrJ}vlBpVIPU_L(;E2}PG<9#k{Wc$c{=>X;?Fpy8H4_=`VcMDx&r<&N@BS`7 z^V!eR@Aa6?W+!G4H4kTFOH5WGBAmN$0a1!S{=+}y%43hQJQ$!wC~ZleiYvV&Q?%B; z)6xcKj5z0uNf$XHZP7X+juR%G9^ZWBb#`~Q`N&5<;m&TXacA$4UI$dHrIKc9D#Bez z|E=D0xc|O8o(KA!*vT|UAe;g}U9T%iyrAsG*IG;SVnj}poFmwxG&e(IH1 zUcnfH)>(E2{3m zZ9qm8UMOL$bz%zg>5SWNy~*9}ZE1D;uGeZI+T*e+io*W2;A7)Lr7I4F(n1uR;=SOd zV1GEI$aAk26sgBiCvlY)Mt6-Or?91atT03%r2r+wD_sWXE^?HYoI7)dC!ToXN8&iP z#+cjx@E`r7@!tM^cJJOj`|tncPu?@d&hfBKb&>%*ggX;R{=m$_>1@K|S<2159o|`4 zqirqaZ0fl>DgtA;`uO9VK7E?EzI&a*ug%&a84y$EI4#88E=yW7JUn1@{dG1rHfVPT z6yZE_T4AyrXB|ha4igSp-q=7*W*8hUFEFiu_E%=8%9E#SURj7lQdYe9hQ&O`+R)bE z&2pWoi*Ip`GMh3Pj~N~uBCR&@;d^(soi+S(de%l_^z zI`ZE3qCsJ>#Qw7tTD_jnt2!Jqx^tW5rDfXv0R~0sJSWHES>@jSR-cGos5)E95QW_; z4@*y1@iQv+UA=RNG0usAc0wtLC?6pZy6vLOIoR8m$!vmZwdwQ+py#{>)eJGSptV1Y z_V)KfaT6~{+HF~2vKhIvEae4BB+MeUkT+tnV3a@mLISn3O}~Q^Qjg!ukTKBh_xbHF z{tG_!W4}WGqaS1R`dg@_jC_C0;LKU{WX6|XdWoO@$)99(b(QgW{LsUyxk>9dW`A#w zfAWw2F*m;V78fpEX5-W;E}TEh`E%!3>Mu!GcPI_Ry7<#d2m3X3{Hi*^? zR79uS;r{kEfA9ytFMsRV4{~mGm80Cx<8`dUVOMQ5p%{^dHIZ|EY#s=S$8^pOQ7HAO z!=8kgx<%A3kS0znUXB+#5BYN?ym-&gse1kXdX{C@#|S+f&bK00jFvG)AtIVMNmyH3 zLu<{YD_6OF<3`|f#eyw8e=58O>l{%F25algMn~MezePLRq1W%B+XKp2IyI3>D}cvW+u{IB~{;_FwE=*w`5yGFf^w-zrjW7Hrdl=%?7+p!&ryWdIOf0S1VqP zRHG?Bw)e&-qLg@LiucGWij3(rB`XSwJeMrXYB_iuMd*;hSL8YI+~&YGd63q^Fp zbIhXw!4E!EIcv{6gUK!9?QPapSICQE;GDZ6NyUo<3EnHerxm0nZw_C z>7~DMTfizQTm_)Nn&Z@!a)@h?z^!r4f5Rw6IBk8omIW|wLR*Qp1zhOM= zd1~-MYU)SD!4W|s6_Tqp?N0QroSO%(`7!x)^Kg4qNXANQbrNcK(%(Uwf51@7!dtc|juW$?v{f z_KGN+;FK3FiFhvA*3O=krlcrJU+4#fNo(yDS{1@%?L4W`8OowSMNxIK&%+%9N29t< zX7L(&nnnoyvldoA@*=H`O^$B9Lou7;L{)JO5wHw=wA1NajpO)*PN(yKx7+PM{l#DW z#oKwF=b!)l=l{kE=%(_md2%TcvGe2}Y1~s$PMBl``7B2(STO}JCYnD^4UbKRWRpXb z)?B`F#hdpzN0w!@S}iU=_Bi+Nyu)NXB}pPQ5eCp`jLi|T=%|J2C{!F#Br(}!!gO>f ztFtL>rHDHnl9eTth!l+wYFm~RMUFBS)k@G&LKXc`bNZC7&EQOp%(-Bf;>9^dSumSS zm`-LC&JnfRbXR)wb1iU472c{vRU>inyxGZk%HF}jVsTR~9Ahc+44Y2L5S|u=M#vpx zc`?s;e6JTc4$maNc6tewZlFYSmW=nc6kDamjCL3gH~HWvKD8k6w9X-A$=dol?M{cS zySJH6r?lc2tHYsgETUp`q=3@rP4x%Ft(NyNNoVAfF~w|zEef(sQ+8)3R$+pW;BbQ_ z?mhEC)(;Pf^C{_IjmhdNVyst90Y#QmmZtJAp)d{|$0WT$&86{4;Pdof2{TFwim514 zjHfAkdwV!*J#y3Z*buL5Fj`*3BX!2=yvIKyLA_yWf}YX z2YmOtZ*k$`MYpkQ)jn85Eh%E#DX{U|jQ zIW>CIkQ0|>xlkM{kRmubTOe6q;>@$pP{bXMUV9ZA#iY|I)5(M+Nkl27L?jWBb4sb7 z?)7@tI_>u3hlht>O4Ic1U-*SznEb|X{KntdVslENjKN@QWTYZ{*Ue)i>kHt?wLZPf z!W;WYWO!a{{v8IB<)p(s);BNE9}Ik?PFPcAQII4Fm!G)C{_ZYYcW)Dk_Dzy=5GURn zh7z16imQx9!L$<8aEvKO=w3u;eIo=9d&QKQj)+u(6+xne(pg+o`hteSd*vuy$5D8N ztq$_`lDx<%)0{L>~3%SXnL*D%6BcIG+J3K3grxvC?tweQ9{)2 zkWV_eJf}CF;hgr_88p*I09R7X#w6BY+8yo>dPua2wiY=$!~|r?iclH{T04~_M6I@T zqE@r8aU$AxHPtLX%px3$NGXgsc6L4AMr(bH>E3AXEabB>F3&N*MGhx)j4iEYDU;lMJ`N>c6!V53Z@ArMS3GkIKf0^I;otJp($!h_f z@zSFz%EMV3l=e~^n+ecrwP>|s$|7TYuN^IFx+1NCw`e7w%A%;pD_ZLZI7JWjy*b9!akYBQHxHr&Y>ASVZ^V>ZBpFx1 ztWAgG6R%qsRR#D)Y{M!a0wEdFgMD0w$p6KpurRwrg13HQp{9mdj;rM#6&1Muh`{SQNR!=kA-{&W3%NaBp~ zVXvicx6&+U@9>abVQKZ2h~fm5w9vt0%ZqOuDv9SPN>N~n+*2WJaGh2{-0Bi*ugvp? zfu8eKDSx$|e+_X6LKMZ!(iwYuK?U4UBQ7-W$~(xHvnjd28BuhVFb@0li_g7}Z|%)^ zv&`T71rAuo<1wv^PmnLK!1juhHprn0Ujsg*mXZmMrMz&s?}b zx7TBL`##g@6s0se)*e<<8p<3JFr_0>8mql*EwSK|l0-V#!*(6hQ1N)JgS52lbRA^|ML?6`Rkne#Ag`)-B-E$Pyac}mbj1`RCVo3%ge-Z?Ed(V z{)j*O`q$;7ANv^3J@*{n{N^|L=l|@V@#GUvQWV7knX)JfN@Gq8pz~pyz5t4J#AGrh z&oZJYt_vc6pqk+Kpi$0N#fm$cOi}x{WarLpmd{<}vBw^hGiT58-Rs|FZ*LD3MZRl3 zaRlUluc+c$s70B0t)jBEoi#3a9_3j^UKAv8`~Z6QFaq{Ts803yQ8D^!78oaGOr3;U zotQ^e6-o8K8T^TA($st?T;G@D=vy`3tAU;nf?K&UHZ5^%Keioon(o<)GAk{+zyEK@fkJye#^KT7hph9z|I+fZBuOHzR?Ee4+>W%qtdx?n zEK9A_cP^a2@OED0@66KK-87wzo__kN^7YrR|Ftc?`S`FB+2bm!M5)#d2Blz@&B%0{ z&eQMr=v!gvM#AS}#s4|6oLlN~@yeyzt83wqcOJzcO&KgLarK#JxPSLHhkJX$U@=C= z30fI)GDJm0w25sYrLmNC0=NxE`rc2iOa@F{#B`dYbb*%Cug_`^sn@dCfr(aV6{F*b zNGlSh7tXVVi9%53s=C8VQqX^Lv?I^0z8PVPyw)(rP2!7QjD0;pDYK_AB1XTsIS;o<5M4G049-br*bdw8E zUND=BdIP$9d+zB(lUXYnLRSmj^XHlFjzC;(TxsVZO`Vi3$G@PCQ%~Q!2oB<;on?Ic ziD!87FaCnJf8~GS$^YShk~5$EEc>s#0%?wPT6GRt^|{?{%h_}17>`DL<;!2@Yk&Hu z+`oUHOP4M!9@N%hl|fmdEOX+x<$WKj6#C=xSO=yo8BZoGuP)P&I#uZizBYBf)e)^_ zcW;mOY{c%}yYyDpnOIA^+vWM^pJy~4bMw|M_I7v4ih?MPiK3`JFwF^MY4NV9wV`9} z!BQ7K0sXYrXJNHk-`5A{VTet$$O#?&dw$)RqPTw?sX9^ad;;I5eoZ(GYN=}o{1K55 z`vPLc$Fx)h=DVO=wt?t0(YPjfp!_BW0{L`IkxnSHEEMixKdas6TnJj2kEpCM;*rRP zJL%k;M;>@T&IV`qprWyjH4wNWO-cCi>o<4y#kDq8IsN|kOVRGT(W|dByKz$v9=}@4 z?o3eQIOizyoFdQ3vP@d77Of;{MR9zk)9L(YOM}7Bi11dLre7Y7N54IpOsXRhzdz}2$x0o)&i;?ErSk8XtKW1fViNnLg z#nE0^SCuMvHk+ZMh>Mr5u(^4b-R*7mcXuhuoH&Yz;ugl_p6}u``NnD7^|vV7eXJ8~ zX~<_Y(oRCVKcJPgecVgseWX0+(~C`X&E=}^tu(#Z8nHpBkf1o9#FO%gt(GLMR{(%=bky4V4 zk0^AD^-q7AoB#49RxVs&zbv`(&Mkg)d4-)kbey^q3yL|@P+r>ydhQy_ixBA3Mo2cbc8fPt0tL1f% zRaG05P)ccUYqH=B8V&&giNtB`bD$=(8Ka}4`hCYqvS6-sqIG^9er8bp0Uvfq4D9B{ zsU&jI>C@6Wbw-YEY%OFeRc^=&SvU_Ytw&?rpn~P*Ql9gjl_fsA+HtdA{U>bw#AiA4 z;g8B=Kld~IyMOijSeFnTOOCDzonEg;r`x3{3Ob#RFAhu@zVBay1FH?`bVj@!W6Sxd z#|E47>J+N#&!eLQR@T-;Q~@3+6Ro}c!kC~S6`?2#cDJ^8Vk2Se-d)aKx=gFpVm3|5 zbV0Az4jryKrjqjTzB*w< zHCM_#Slm>9uM4iC2qBA>GM{1doT$?gTUpu%zM!qnpwJy>SypEuIqNXu<6D#j&ykQ! zU)2hAc&{;7rI4sGwmhlnI<_WiL(MFg^B;KuIen4Y-cWXa_a$P1qolz&IFx=ZA zo6SPFZ;L$7aMn;f^)xdbQ@r*%v)L3=6inAwVe>TYC=SI(&tl#6=$&4?* z^b$YyxzDk=vEfHg#~!L$$q~|@%MhR`BAh>WjyKLwT!||(oBKYQIfzg?$GWvF0f(i*DI`i-(z|q?LSpuI zw>i6cy6!;K15jY-KHXxwHy)2~y;lyTC$3#f+O5`=m%sC!H=196`|Y>w``-6Hn~2jY zE8X>Tm*iu^>+;=y`1k4k;n(TE@G0Uy_$t#`hSmDPF`t@qYnmy@gv1qN4P{xNokb;W zN(@Dodo#u=OH8~SzYVGaV=a+ZG96C?*Ta+RZ0(<-5lWl|E!qtahU{%`OLE}}4u*SV zSxQnANaEk`WHLcT5m6Meyu8fX+8RYsu)Dj<($W$uD=Uq{#Wj!^KOS)*IM3Fct?=65 zh@GV=MV^O1*a!F~E<9WES1EXu$a`wtyvs+fjtyb|Dw$Nre_uPN!FgXC2XP#S^kX+y zz%@`Atz}_KWt-kAHO=E#mYB6(c|}lDS?9CoLIGZuC2i&H`l}|Zap*enb9SkkL;rhu z=UA_XqUP2F8Ksv2n-WtRpK2XNC}WXm(KFk=i#cSSHl3!p(-*L!+4-Y?iv}jAPm}xq zK>WySj^KE5vmePBQ(%nW%e%cE5aXO{m)34XIzBTPEWPp9g&OYd?TzM6;eO;tAa=V7 zb%S7b=U)vDE7#qAA5uzVIU5Yfn+mCcbTrVwCZDQofi8 zBw+85MkKl}(3)xCoDjt#I;yHzlxT0e5=EqG%J%LyfBDUCGMmh>N>LO=y}#NM8mNaA zJB2N|8hqT+vP3Mj)(7-9HrXD{m`%r|Y5Mkiy1;qAf9!M4JMX@i zsT2siZ-jyr%FK7~J!`MM*80Bnec>Pe*N^j_?|8SEc=S<5|Ie>dJ9HQ6+#V(t7pV)u z?`1{Kf&Kd#jz<1KkB!Q0Nq*f~OQlxh>eZ|Kr~mLD7;J8G_1bkNCK?>rzn_B#_AxUx zMPp(DtV8RRnzclYfb^XoV0!pox^W-jG=UN*xpk6+QeIg``sy~H&PXY7%6k;0#v-I} zVWmQvXtA)c;J*6w)518%XgI`LOCS;TT7#fkDHJ1b*GZSLO6MHfTBrOpSwzC3fS}!C zV*h?NdVMZmy2Rl_hx`SUdx(sY8}lu$oHXf-;oa|k_vs54F8qV%pMU;${;qDJd+xor zTd&pbQ%c>R#PLJGPn6^4uDkB~S7{uF#tDQq@{8?B_vQ{xtqsM+fAha`_-B6((U^dN zAMcv6u5;W$TR4Z7pplp;MrjRc>NRPk@0xWr+`>eKEIM7AE7E4J^odT0qKIa_zGV}U zjkt48g^)@tEiV%&2r3mugC3h3>(pCqLKPPLEDw1Ym!v86N`;g6+{4N3dZt_4k7BZ;^_U2tC;r(?BAmCoXQMi!%;Ung5@}%`3fb+`O5Y=!)BF z-R#D_DM-j!!E7_MJGc8WsXD~36#=7paN&D%HTG#_g&BrXtfB# zP)VWcVHmcm)oSSe7UT)u{N^|R;Plkg|5oP8NRj(1Z*8XvYw?=Y4j~-%MvY4^yuj(x zXE^nShk5R?hurXsPobQLj%OyjJbCskl_=tox4q44;fzK*FaGk>G>3$NPyf*$@f#og zD94W<=WouQWqx+n-);N%(`vPt=uTnUU7SwQI>uSDBFYwbmUWIWi)WE@_wse_l9ZNE zesKpOk%3nqmO?R#M_j*oopa}&=lYEsEG{l0g`-xBRmbbo@H@)di7-NVtUe0b? z9ATwGzt`hG|H`k>-`wQD!TmHE6O59C^Dn%>>9c3)wA)NiO))vyVWvAptJ9$tIwtB0 z(^8n)1ei1%?fQqDJDL_>NIo5ql1jDiTf`(Lj)rb^ZH4RCZ;C;`&&{PJ5k+3hrji?p z8H=^r8J(hnK#Z$|j&HIEwg{~_hfqqS2>KpIrP63pJFt&%YL3A(&!Tl%v@jD~%C!(O z2qTBPg!E!yqbQ9#?5u{rFv6*b^0K0-MqrWM}N!pM=@qipsI@qq zfO8CnL#AhD5P{#Ov6*I$wHA|!KQ1laB&=2oF2c&{Dtitb@Z63@qb_Dx81I|xz$8xw|tYsQpKc9u&u~^rP8K&KKV1-j$LKNv&HBX83x(L zmcVI^wbljxGYK;BPyZgR04b6<#%4vXGgerU!Kp$BTY~+qF)s5K5;{$YlbFbAR5Eh& zBBWEPusJz{sa8ck!6}NIvDnBb03rxj{L+_*pM91(urbwU)mi4&*U&8wRt%WycPl5Z9Isgx^mzrJO!Q>RWna{T!5j}1p7bdqF0+vSRzJAS^) zOgXJ_1c4Xs{Q5`#3vc|l|C;&lcn>dp@hL>?>5f&Un4Fp6>u1lhaN`E=e&Pw{=jRy= z2HP6=@$*)%*ZIe?C$3ky8?)KkpO&eH94=uS>DGdW4K z*`!vjP_I-OjUpV*H+@22Y_S)|!5=&+^TiOwG-)XWu@$laq{wL)O;Th@uFo6lzRn!jv?%oVAR! z_Q%LCqcU^PNz!4$#<_FCG#UsYCSU7(^O_Vm^Yin^-t?w7{Z+MAV|{&H%X&SifmryR zk8|js{w%fc`cBf1ew=XcUSzY0bB@K+x&5X*QcY`p6@6 zCMQW^3E@^@ApxCnWUOvAId0LJjgv2 z?=5)$OPiBLOHRCHjgeyQGBZ~!zqAijCzM2WyJGUbQzVI|_w3iGcDfEMPB`I8YpSjU zbB*h&C?VWaPd(*kXJ+K7Q>Q-j+;h*}zqYpa^>0D$2#*~*cJK7e%-=W0RFqQg=8YT4 z+Un}w(P;EALL3}L5lI|lvz5&8xJhxUVT}0pZju*GTrPt+Ib@odcn8A5gfSlHzL?@ijN%s@624A^WVQQLAAi?Rgg^ zmtCV%tTreoxOwv?8yg!arKnY_s35>-&1g6zj$`6DW^HAKO0`b1xk9Zy$?Dp=_n~pl zWzS3Gyr{fOj^mg;b921wUGE}E5}tbI8Q)p$f@Av&x5R}OUI8~JsjEyDJt$4}#x-zu z6xq9Q!m?t@J@wR6Zf0gi-gD1ApE-B#+_x%jzMa}e(d9SY8=kUa}mxjQjjsMT3l!fl@0a5FPAa-z{Fpekpr zCfkE>)}oCe8jXBRW^lU9r8mAsuRPz>>veklzHwMp97$_&Uf5_G2S;QQ0-2mKt$q7g z_>GU!|7SnP!S{WSxcQe~V({6&$oyCxN=jyDXIWcc=Qn@jH+cKwkMqz&50R!RaUAb> zPxX48zj^jqe&v^cnIlJ!Vx46)8qw}{X}6lRn@v(<3Ncb`ynaosTBXx!ap2G)-t^Ez zq+0u;S%TALa=0lV*!->;tgrLrSH8mf#s*6(E0|2DCk#UxjRpq}9N2m;nP8y`0<=z9 zU0R|$IZ0Tp(r&kzXtliRalg;T=4L^g07yZ%zA$CoDd)czgQJ2UBF?}4t*EJadM{kW zuB{MEPrIj|e%eh_{ToRvrj+G;iE@MlNc$ahYcDHOa?R5!;pH_>sB~tFxnEQDKETmffIM% z&Gh^{X*QOWN@d-*LuZG#tlVjh;llIJv%0#<Tdf;2P+^}iU`=m z3FQ!nrR0G?@WT!+V0hXJp6hL}5Dy7uK!BjCBy}PD*glRi(GaNwX`1qffA(jjNm4S& z6op1pty-m3uV(mAijtDv#sqH7o^sk=jEegGRP{jmU^}ww)Gqx#<(pQWZboy zOr*QKFe3!fXoL`s+gTUfYMN92br1x?XwBN{DhKxO=hUfFr%#_gJ=^Q`mjAAcn-Blg zPt8tDO#DaZ95=3C&zAvisbswC=F~0)k#&wRFLJW>$6pYcv0(9g?G9-8PKz80Ax_T? zbAXOU=y-@pBV-V=xxOhzr8uLkf-NQWMuSjFtkxKvWS&MADZ~PB5?0sO>GylQ;SFy<1p%qGnS_dm zm~H91&F>~9B{vrrdFJV-ICSVP_RP&~(?AlX>0@5l<$IiQ5>u_!*x1;h-R*8cVwDQ> z^YctjO|fw8S~1ZPTf|j7Ro>_6>ii^gCr^^7klvXy$jK=}rNl^UmY0{=zkfd`Po6w| z?%cU=`kwlx3Y-sp=tKX0-@bkSSQ~>*5~He((o5 z{jdK$foS*-Y+NA;J~=hTU@+j5pZp}}pMRdm9(#=W`FSr&WDKA9#3%UtU;ZU0PMjc# zqpTLtK2U@!_N9$C#`G|S^&1F{T8(bI!*FvQo7vghZ6Z(GCdY-NbCM(s`kUS~P5MMv z7~^FZPO+_$DG18UP)rFwR*s?()6+A|&d$=?-1Hk@S>bkT#NH>HiTm%RbLYDa-PNmCMYr4K{`>D=THo0C`LCZo{j=X} z;`oOj{)t2DYiq}^U%682Z>-N-PD=RB`VlK=ZtJUh{_kaKQFOSEK z|0*2~tEtrMyd#PET$1vTgV!64xYO-XAqux;3-o~-DV$DICIlP|1&5mr-cYGAGMYtW zxvnE#a+VuHa2ZKY3X;Kqsr41w=|SofUH0$WSMX%ETWn;PmQG28AlX_fAO;b0FB2lZ=c<{jomsVC*e*U@Vp8MIqtK#No|H(i3$3lqz-8t9LB{=3*Ma!)& z?AlJlCe?(>GBOG3o_UN9BwCr-@ee<_8n(Z`X-HuS8t$uS3R^~47FOV;B4&% z$0{K(I7TL=Kj=dk5;#Xo2)fqNMbI*a27bv}g!}Fsx+---aX(7cfONT_uflbuVbC#rI%jf7yi?KVsdhl zN~Kaz5OBUIsRSX`xNR|m6NM7~#6%O9YBo1E=uS=TXmpFoVK(i~H@r61*O{A}Ev$k} z>Dk-7Y0svN);PQ$qr_;7u?C!=pA|VuDWnke`hC_jxN7%j=;w4PaO9nj!_+*{!UBT} z7tkk8psXdVhGH~|T_B|}LU7-G_bvU^U;UN%TP<)7A3j`p_Y+V2-~0CN{YmE>gMJ@v zt(7v{Nt1pKY3g;Z&UFd@!H1|mbDFtF-^HHyKFdp=`cu@AqomS#EG|3vje4ER-o0FW z@kO3HdzSkjcz{RV`c}UB-A{0T0irax4h+N2E*Ymef{+5pZZ1vs8+4MuUf7CTo?wejn$P}yVI>N zFE6vQv?Q)yUns_#vxO=j=-6aN8h3XPHYiw%KHLVVz{*%S`S&!if|2cvtDnUEJpm<6U^i4H((7YsfE9 zh9nh z8Y&KgYyzd7Lp#UFS+w(;&>|~pJO_E}HqW6ma)s?z_%0<7DapkEFphaA2&}=n4BpN2 zuTsJq?XF+HE>>1nn38=Xu>f{TCem?(b&p zFa8p}ypA|{cx#I_D@3NIr;7&u3t#*q?|A%iCMPHP$bbINgp~@7MgyaDaj!TbNTP^J zSv)W2U0PFuoBjLRTwiB$dU{KOAQuJP<@u#rv%0e6RfkL3UoKbLb|ROi*t)BvkB1y4 ztySxum$SJ^tN^etLxs;w>-MrtVJ1{nmRQmHuSoLgO8l}ahv?THUR^2j3} z?)Ce>eCguFpB@Ybx7Eu&dGe&JR;znE?e=`CjT%MKn}iTYoDi(9t-F+qV(I20>1aS2 zjdJJXZO_gagK^H~ag!$xiK7)*WW9+}0SAyAk+2fO=h{tXB?P8Ky38#XO2U7|&(M~B zZ$JkxcrB}5SIawQ;+WEO+19k(8-AF6%~j zQ%Js*{laeilpUK^o+l)XF-|Gv2K~Ma!jPGnnGZky_~Rd5US9s?7hinwr{g$&O?B3f zA3r|%=wpvPGCw!>FM)?st(7SY(G@Cq?v`6ryG?0s1!cLi4vzI5t8h(&Rrfp+wtkZM_h`-Uex!pbG zN|*Y$uF-f=U^69nm(Tg7B-EOljT+0d9mK!;dD`Fh9`--*dhYq}KFCY|_0!m0#5$!A zG@DJT)hhj7kKg^|Cm9WgXsv0t+kU0rxx$P|09vOcX-W{Pt)O$IDNB~?y~$;Nt5F|& zZsnY)l%lt}$@20tp$xniU%oz(SFVs|9G=_7 zjdhOZp}p)mc{fQ|XZ6V^Nv^C#?o&l9}w+nVA`638O40 zw(JxTMG>pZ%YHk`ScH&85-pN|9m6V}Kh)M}5Ftnl#vzm-3@TJIF}GV0_@oe|)>3QL zs2w}SkbuR%{1X(gI6I&5bINO+UaB~U$t<9<_2%t9xZ6k3&Knzvj1%KFHhOY%vrntt z{>kIVkAL9VXP@13yEy1hPKH8=_ct1i_ansA)$2F*IcL#AIUH_vWfh4Np%Q+pi;^!+ z=~D8;i9Bwy(RZcJPyE<_OXc_e2(>mKUA)0VwFhm9-jm?s?TKVMzblp-LA9Ny1`%|l~T;i%=~1t+5EthPd>TlwJdPP@{KLSL3!Nx zia~7KXxh!LVO)c19HQF>_sP7C_X_4VgVI$t@hu9Q+i*p4?o9atEhZ)Tc~=Tq4RAm* z=;hnnAk5ZzW=!@zhbf(7G#YrHI&HQMvIJhY{8rlK&TOs0SKD1lwQ zAN$zHE_@5)M*FnrRQ^m<3C=H1&V_Z`Av?C#`F+!Bif1yBrkp)|H}75gDrY|Y_h^6i z^Xz%o`#5xUf#)tPK&?_->g8rg3c*CHMW@?kWqFy6_4Q(-w`i2D^=tjvG}&chr9y3Q z;5}63P(etVL`0(zwS4KNG(9A1{H$|?La?;7lsSO2?L8I~ti1TknssZuFPTTJ19YM> zR-g`iluAelDIsBG~aWe<$UBAxi=RU_oBV;`Y2#f(GigOXiabX`a==b?% z8mc>PL88&w7T3P_8IOfdULAt=DAOHKTE!?E~y0;Kaw6G;( zt=&{p$AbftPe&|98%&y@lb9rlFmd9$d6BDUW|DJAxy>*dd04(TCJ*TwR)mjtG%gOtv;-^ z*&oN6uu>Iar6Pkc6dsq&zuWC3SW%M0--;XWsyrGFnLKtcy3s(T2|~a_Led5nqm)pJ ztwQrQFKrC7lT*Co2Y;9!`yYOS5B$rY;phk6hnwlLW}%;g(Ip09_SaPfG!#rKm{l+% zVOl{AeA3Cg?=pX;Y_}mG5D+L(VTh1^Vz<7r<}XH(#Z2*xw!>4hRP5%3(^wwPJY{m) znLvc9sB0X%Yuw*zP5gFdl;uK6Nr?&q27>`hOG_e-V=1L{#uzgijWEW{iTb=RAk6#KF7eInFPO5@#xpcb6IXI_DdJ z5C~++zWO#gcP=9v+e~aUr*cW*?}uHB8wb|-^q3gXK;!T}j=cAA?*5+d;^1TN;=sWp z#F<{pD{d0tusR`iaLndHfI%u~pgRCZCu)0}>{Zgy-rtlDQV*>Jk_J-(N(`AE0*perz<{an5#C z1-BN5%Q!wRYuqh5iEydL>6Fo+kIM|Hjd57#IWYb%G9IGJ3|2RLy-e(J=cQgg1B**b zUJ50foVzi-wp^>oIa?GrMr;3TlVXiVr)FFJaCe}3ZsG{tnIqMjrN8(y>Oj9e<%{%u z3Y!&VSwqG8`Z_8IoVC^t1_PofVrFLMCm(p=fjbr;eKi~$Jzm(_($^`3D|vfZ3=W&7 ze6HEzZPQh1D={zpk3Y$QfBWwV+Fj^fgWwK+ytNo9NrgivDZ~*fO+0KAR!EH@4g&AN zV>8{_jQyQgkH%=PW~(*B(TG;7wL8A;995;bwy;1L1Q?@BNl;~nHm9T6LY-40a3+N` z!CFI9sWA%tHr2FnJ2)2Oo;h0;vq1y_qnp=R{?w;v02>o6R)wHh@B&tSf^cKIQQp&$@=;x!a|sJX0}}Ri((?22S@QeZYw6Ue-~2X zgeRw310s%b&Y+Z}x6xxT7%?PhrCMuP! zUprjx2A*~Q^0xeTvF)8Dua(mR7P#!2j6H1}1k1&d-1GdEJiZE;A!x zX|pM3HknjF=j2g3hY!)&vj+~uHQy)ushCid?`Han!+ zQVT<(INth9MX%-ZuK14g%{L!6+n<AP7i=@X(>u8K=^BtyX(Y z9gi4z?WF$ZCU$|0MN#w%c3V{l1=u^Iym zq@>sHb6{qQ`mJJQ*SPWL;rbUo&*<6>x)QF|>saBoSxg|M*V7S#!C*j|rlQqqiE6d# zj4^gJ8mU*)P`#Q0N8IXQ`(%@uQ%Z?N($$8ytX$*ITOB?>y`T5?E^_lrPw~t@{4k?8 zyvh4M-N}SQN@}AahgX)_G@5f^z(!WEOj$!Gs1o%y25+wU&yR4wjey0Rr_0R*hTVI3MCZD zppU84X+Qc1SO4fUR8&aM#@ts4xCm?tLCc9<6UVkrT`69=a)qlG&eQ6&xGn=OF7>De zg87+)y#0fB^R5qm9}6#E;f23B!?g=9a_!7HqW+L1>*xZYQrfPN`OQ;~RUtAGcQ*bm zstrJeAOeI8u*R^myh>+s8k43OmtySMmvR4$WIVp1BXY8FLFjPXAX2QQQmYbVQVF{e z*_Sy5zi_vJrXf$GGcGf51*Zy_;d?Um*y`bAoYQ`a{Te+(jzc-(t3AcTV z%5HU;x0>L%(xj$<2zHrF3nZzv#6T^pL|ic;%(;VGoSR&dqWEn2C6xWSwA8vtpf=s6 zK0n9g(POmcW^mOBQX~Uou-1D~*(m15rAu78@-mfL?G?FO`5JK*IDjv1^3T@2`)+Kd zN^gDBZ<9*tA+HRUE>_-OWxn}F;$}CH!s|uhjV6Pwsl9X=6rGWG^XDZ>_8j^7cA4(h z>o(T8D~y()mSmSpJ1b4Cc1H9XqipuMreziUiz z??jaY8!`5|GuV4xhX?{}76^=OFv-$bPXh;g8yx5jI9`Dta|y8&JZ<5x|;txN_wRm1@;HxB5Tf-pLG)%(VjNu^+N2MoBt?HDsFI^^{Xi=S--j@7sb*acOL=T79SQ9F^ zIMJfFvChLAeWFH=HCOMak-p!bX(Zz&jZ= zW)m7Gz1RxYlX|@8W5&i7)?YpXKXJ0oW^Tr?&7(Stn|Lq)EH;j~{PGnZe()hKA3aQP zUQ^k)L7ZA1A>bLnW~+<0i<>}7L>Tg?zxHcf`uJ~i_yga^fqU=8)a$&w+T-~f%T$%( zKzD|Ro_G(BeuqFw%li5T>r1OFTz;9wg_|rbEU|j!3i0Y1qfBLcoM%xkKoV^UJ(~{^ zD$>z9!r!r$C*PJ&I#|=WUb$x zlH3t_DkngX^K~pXBSQ-?DM37>JKrH5rKFofKXuV&$2lyDrV?2>^}ewLp`<=HO|3i0 z#J)LdGjlW=4V+ZCN&{mIn?_)@=l4h;9rPGpy~4&bPqVq%XK?Byb*XlIC%X|wjSw7* z4FO<;PtZZ9#>Ct_z1T45Z7|hsV+X0Xz{rc^5-cn35VC)5Uw)b_oFg9gi^+{MxuByj zV2!m~RvP5%{9C-22-q79c_fKAx3n26P>vgr-)#hI1qZ?6`Z}$ZU*XYjv2O9#CId zbCeH$Ujvit5^$#+0_eu0bn-`W=i7qD?XQ(N~WId$Q>~QxR9^!Rxl++d2Bw}!5 zfv=o@k>_tLQ@KUg>73*EeMgy|p2A86LScd`(Qv?^KOm^}7>#0T6OD|J4njJla66jL z@ilR`3p7%!go?}|*g0yI3R6>4tgo-{dTw`{=G;;sFZ;bZi2;X_s)!p=`rh*{>svFz zxqZIT@#wbD+nsDs72m@xmEU((Txwvd5%Rk4{|a}kAyW+&PcYzCDb9KBn)iJMHW&6GZC=kB`+CZ~Ar$!Abmb&w{J zA7rYXar0{O&1)Gq$#BT9x9L5(z-zH(VzObiu~qcs(@|GAQDqIcMN2<6s8u0Kcqvr$dmFTb1hplu z3y{VMm1^xZYp7mTfiu2wFdFnoMzK$VE)y7286QLl!Ze{#pWxl~kUtoX_=13USwny$ z9%Gqr3(kDyI!g-Hd4Z}(z|g>gaVQ*9%Ca|9e7913Z==D6Gb|dzOR43uPPppeqJxdm zkk;}Ing@^2=}fX`&z@Tfw&fS~Kx@`U1B|sarD7UK%R0K&@vw9}7&wfCbq7x;hVvS( zWv9L=pd$Qs9i?PzI9dvP*bY zh^bELt*oHa7~#_g2&lE%{Pl1DCjEc@&zX7bZLEFr_o>z@n8iMUO)%Lvc)PeM{+sbU zhX$~}0&59ezj%q87cU`z$pd?tf8dRDj~%5_uj35d>>Dnx^w3skTo*&A0%}q+2q&my z1Yxm@C5AADV0J&z)Seu~#92#3=(}lS=?{lA+Y_Y56|w^;zYRFv@r-kEwj8OmS%A%9 z3!i+AHFPICWy8%KF?Oq8kN2S=HE2R-0*pg; zq28INcKS5YC_x2Y*DL3>Ap|Z>2`Y8$^g()TS-!|f7sObbB$!lVlM$nZ>kKbEPqesP zz)N-fN6HqqJSjQX!Wpw`*rAJ*ZD!5;wv* zM!g-c?+y5f6Z}s= z!`NFA{mbxV5sz76p#_W_tfY?1X-ZwdY#=xs2HY1)T(ixZvn(Vj*PP{g6mivBt~yK2 zB+Ra@a@W2?v^yR4?b}xrIOF7D6$B*K(vKo~$p|4O9UZkW?ob?B>bRLO>EnuUSL& zstO#X6r?Hfa7dDoC`Eokj0c3B2*DXPMkz9lAgJ(Yy}=)>Z1AZj9GGZQvoOd1Q;gc6}puw9i@1z8uD$@Pm*G*x#DUpt*z0&{1O|l z>lV(rJ4D-r@Ln2e%HiwRI1wkbg`$S%{5Y3w$vDerQ@Cp3TK0e^1k9+N(JgQc2`0X@wB&%*aBc0Pvv$eqw4;-F-lb_Uvv)8158dUpBZ81-y+*SV(2HV} zfTobtjiHkyULrj+w!}Criem@%unb)LgFocZkNq(9cf5_!r~ec>f|@Z%M6t?mb|J_X zag*^Vq%oKb=4^y8FBQXT6}>qmy?UMJul^xAlk zDo=2B<_x6};_o_cMjnRBuMuN$)*zH3 ztksI?_tr}Fmc@Y(4wu?&d)9Bs4pU7UYm|nG(SWyB0=^I>e7*zsNQEkMcghWWp0}*^ z#Z+D`J6CMN)iQ;T$ik)6@nVuvAEb1nm`=6EfohFYVTG_Ru|lw!q%5Toqbo17apWXv zDF$6hkFCt~ZT2>pUb;y|NG6OU6b|Ja+QDAwcs_Alw~m_@HXYQJq%JM986xiesj_KH zqHjx1&-1Ya6oO$8a=GHg6Zaztg&=jl33ho58uOYqRCiq92q}q1BR?9>R@X#cC}eNS zrZI#ylu{g>Zopsy7gm@{5>ADJD+9-0+|^`G3aW-(8Rq3KR%hM*`r;BAaA|%jAqW*h z8!7@)2TL(5jAH+gfu@3bAn1f4Evaayj)}8hCpvZ#qtq=g5vvrfjWycqeOxFRSjW1v zqz+=|wNn0C`a7yFU|JNi8C#=i;W=v-7!HP1o6TF|+vOypfSy!rR1_*P9000HG71C2 zP%>K!ii_PjFF++!rU4|txUCH&eiKe&5=(LDi zU4M4BHjlO-2PIisTH?h&yadt6yV?(Bz|iV(6x}w`MujN z0dYH_$l||ckZHHU-Usg|4eP9*f1a7SHkEdlrG8W_6;RGMy!w3ejl|7xG+@{tVs)}b z=reM*9wb>>ClR1wc=`^WT64WXP3=b;77b3V?gUUpMnsvnj z$Zil--r!;_gWiCCtV!|G5>k2^V@3L=%Q%QFTpeg$9`s4+69CN+nw1LEL4~@6>RKOn z=@QA_ecKAv@}$`UPHQ?hZ&FPxCV-K1^zg+^}TWHYt&ea3M%~gkNyzJZ~ZoQeZ*+xCig4JbBUoE4KrMGcc`K07P1d9 z(`xbHcfON$Z-BhEf?c=_R%1tA7lsO`K++(0O!b9R>R>H(EXE0Owq+0it!PLf{i@&i z29a|PDTS>+4r${r5}l@gbuf;>IZ|th;vsr|p5@Pep0zLkHJ!)a%Ix=k4_D7!K&;%v+0q4c z3+*JCjq(+iL9Ncy$4;_5=&^5g1qK7cOxIy#pssw^B(g%MS}IhX2HP8W^E*HuJyvuQ zJ33tkWjnRE)iCv$@mV z-k-w*?|3_|J4?K_#^&i~;l7g~ohA= z((Jvt!ZBNB3enDZ4HlcGgw-lKjS0dkqr@O345Nhadi+toZEAvZ|LW(#rR=wgc?rV- zNR!?Xd0J$fkgvb@I0xT+3N9`%eC`66>_V3Q!3yDRW-5xUyG;lp>sT5joF*YBKg_MI zQJtU9V4j^tjt~MTCH-i`5Rk@}nnDjfHA}WX4v4KqIS7I4XB372Te(nX9FI-~v+&SWF3y^?JELMRFvjmkI0s&G%O~C}d@Q70| zI?0LvS@_M2aqSVAoAfrLW@n3z${3TaviZL_zXSm~M-DJ~^e~-0bIA5AiPl{Dt1lDV zEtTc*ZZaR`0^(`FSyO%Ui zEM7HfOY6^CQtKFIf?%PwRJPR90EsqwSN(+DAnx+NR43XEYfV!}5l$%QoL{OH(u76|2Tpz zK7)A$4vsL6hSa3m@lvh9i+k%d0A2X`OkdW$WeHXWmh$iCuI_N=1*qz$8N0?dCaS z#(=M8V`{v}@sl!0on_>_fo$k36(B%mtJAM4ZeG>vPV$Yg8WGmEvDee{7Lu%q%Hu|=N};}w&7P<8f{bCP z`1eBHT@)cfs>RGOS`AG)X7a{Rixs+SQs}P`Y2no|l(zKSLkhs(m z1_9dHU6&t<4Ll(bLK0wi)swVk!b_&+VS(DzB&uGeJ~Ksg-yZ7odytJbgO{&xAMxfAOGv)$}4zl4V6xvpfiPC84(ERWqxX}RYP^h1x~x&=Jc5}1WM4}yO-6` zh{|wCcN8(Pbc5;MCMMCGd*eLA{w8W_9)0it?#X8mI-w>7-&cX(P7SBH^(M+TqNTOO z!vPzkl%c8<)+d>M^ilRb@@CBXCQC0}=JM0eu=32a#2bC2aac@o5M34=x#*PyL{KR% z3^!Ko!WK26yv{7Lv028qEY|$;Kh?eaFq22_qPurLqTWEOkWp%oGRz2}ddCQT92&@d z#I2OnEu5?AfQo?nzCFa7Dd}*;V0Dq_U%bSNFTKpbIDYeEzr%Mv@$Ec#|NRWh z4$JvvEG3V|G3b<)YL%60jdc`BAgN{rkK>gUf_Dv|O4V7DI;T@_gqjJOIhTp8WpIg8 zA^mojL8HNXy}|v%A+6;lrh7e1lJK?3c_Ir{YZ<)p_4I!GlU)6ezsOzx?4Pp#JKo3I z*UunF3ASEAjU|m+=_grh2px2Fiq@LMT9&F+mO5=J>|!2Unp-aOcj?7r{&oO61) z`&)sBeH#ooJE@TJo8nG_Ew*5*I!fs8SwP=R`@*i#HH3B;bM zrmCVv!aiTJeR-_H^w?P@Nu(~O-Lpq7RF;bo9nFh`#A0R%A+5k z2ys*D(nQK*F#rAU{yx9;`=8@zx5aP&`_FRa_1F01CqBV=>mJjkMUIXqKI1QCo-h2U9-&ok9pue@j&9Oym#mcD*JbU3HANkQAX8q<3t~~c5*FN_} z`ghimcCT0!)7%WMREFpATowHEM|_{4DB)abR|u+Ut{UgXK#fVCmFxlEp<_ zvxh-4K+=#A#uWPsN7NDg-+Li9LVw=Zg&?C0E|L!HfU?w|M&FpG5b1yfx@!jA5bC;Mg-C;$z?OEX8EZ z`sM3v-Mq=h^=s^0yGeHM4%xKutD4$`B{jv2Y287Gq_ZBJ8rH{Efh0l|-9E8Kb7hI{ ziIXgzIEG7G7$hU(yogqyZ}+cX@BR97q)^3; zbC4s5jU`(>%Ji{Exc86$7g`_xBuAe8b}oGSNBG0v{5_nF9vC+@x>2=06!`U@FdFGB zPDSjdDO<-+A%Vmg5?zqyQ_|6dcr-v1eymMyNaD1@qtxGT)&Lf?g(z`!S5{d#wMKjO zC_*TNFqmR*!X#_dZ(9QFY8p5PcG8szUP%!L<4pBk92U#oK^)a^4hI!A_nY)M=g5U5 zHHL0sSTREw51A@OKZ?KUxOp%6=EwTGeD}^aa(5e<`H?}NkL_$B z`a48fMk+w(Q-&(VSR2INeNh|5G3)p4@dv;6IbL}E4Njgu&0-{R-7Z(|-J$<)e~swq z31qrR``Af3AN?qsuU$h0e$Dp*pJP_Lsg$#jLSRY>i*OI4IOdN&|A!o1TH)wpk8!*2 zxH`>AW5LnYlYIC`FY>WZ{|I;Ad57C?zRmhO?{M$+H|gKFi8i1oni4mj04gtPs^*8R zsGLtwmc7kG=~m-_xRbJQ;w0_WWfo7LBJK3hNt40}2BAuqQesB~ZoGVz%Xe;*2LG#h zK=XXuH~}35Cxl>XwAV)imY?_lS}6Lv+qfhlF`7^Gci*>$>OHZj(j+0XmbI^anbX}C zx8syZN$hYyv9QGUBadO6#f*l$`TFbpsqg(T*Dqb5aqTv7x65R8k!L0aFVsMN+=oRK zDMi$5^3rEM!}e!B!|M0{Db}8PhTgGb45qNYJH$H6ax3A;xpSPpc#bFHPhg9j$#6t} zbDMiNZm@an2K~{PNnsg}rw2;3*MY``b2MUzIvvtpm*&zk?Gs07F0GKZTA&hKKJidlpJ-QE2dQhcnBrF3f4u)ELF(?($K7SSyH|cM0 z6D19%`Gj6?vC=~WUgdYh|%_orz6zrR8I+dq!{y)S#rP9*oO_v&#|{h9N}z6;C2;h9%t#)S>o;rNq3=Q zuhp>(*3L@x&Z|lveqPGjdQ60~HV7Qn9Lnbt&BG`b&wQRxGHrGjhzC1W+$7GvFLCo; z^3Bn&eTCDVCb#1zkrdd`fMQ{VolB2nl|UAD-(>WD;NpYURBpx+p#<020O0qtk^MFe zhZ{H4Syt7(w!S=dLSwY1x4J^-;~!@-+-3XbHQu=VHfehaS%NmL+gml)G(kk1vU%xo z3R5thW|$~K2;b2Q2g+Jf7xrP!p#y$N7dcXbG%-mesxH2ypo_h&+`hP}OcSS5?9o%0 zC}RC{pF;xEqsI_RVoF173G3Yj;!(efo77o4e}Zvy&sx@={|aY1O>W02N`jsYDY{GS zTzniINg{147y2Yg_>Is00nRy2ojOGkCT~eI;pnkrOb30)3NC;BIZ!DlzyD8j_y7Et z2rF=D%*r_9gU0Z#kfd{Y-poy#oiU`%Cbw_i;IqH*3#^?y#+mQ?evVwagmz7?Z}ho* zYlB!y*1BCzf8--P^0DutlSB-LLk3%$Y}~xX`i*zlxpSA{?Yrd77DcI&J~w3+rT>|= z=p-VFBuS@B(reRMJ5GD;D6NGB&+bZESRu%B&9-r`K1J`NA7k{&FOn=Rk)1q^x^|6* zwFhEwDo>wULQ1<`jvQZO?e<;L-}zm>{5!u(qY-oL!{5ouQ%})aJ4t_>b7#v>c8oDJ z;)tbYLa(>XnP=B{^xMA!k&R(@i?6(KnOE*^kj$a6D^R5|Joz2Z&|T;unq5TFz~ar$ z3Ow@M6?i%BfUeTRKBJpA8NT@j)4TU5p-?Sg)NXrx(tXwh@M{fojOi*Ua(40Sc@?QN*A~y z_v2$6B5q&;J4XguX#!Z2lS(kwksFODazxsp*IVS)-SvH={Jmnz;e=wU9VX8(g+&-c zQnJ+o1yzP_JP3#${;bVoJgg1V1Y4W>1hGdUk-}CMN_D{NL2H^rV{q<8cV~{Vs;IF|$Diyo? zQcT^RD4+0_A3iw;pS^v+;)6lP^K{lg;t3^^s|Wxl&&b9@%y^2*!x}qI{6wl|wp!Qc zlFlKu#wvw01)?Zu96$#y3uYUpHri-hASYNAGmX4gToT8q+B9hRb-5go~rWASZmbF zFZyCLFsYhJf{o)n5z#Q^7s8WD(ln;oY4O5u{SGg^_%fG1_+i=~{|M&AmvPP$3u3z; z+fvu$DIo(wN|aLc*49{?j#zs44sZYSf6mu{wF~E1`{1{+{McjAYH@vQmpAX^Rc>2q z#`Mw#%NIYu=_j5dvKpC<*}3@+|Ib%mrLcSJ+IrkL=UDDEdHRR{EUwu@CNWN>pcGkQ z7&uR1XR1MZLX6Wn!@HXduUuh#^=;fF^X9NX(rs7%eGiNq=g&?7WZK~ZXnOIn$5Fjy z-umK~iIpNThL@LDIWg?NZw*!So`S|&hQlFdXP5q?mw5ZTKf(2tBRDLr@tF2>N-hO) zyUp{z@oNlk{~XKT{XO)5n+gkEdc94 z6u)tPGUUwGy0^;++6?zUat~jd)UTs=Q}^IuaKtLY*x3X+SX|)?fANPf*3z0x=u9ST zm0)OR(77XOwYc%r(>yX5vHMHE#MigCC{~Z`Q(>NuAzNdPDV?*py~R*#F5}2`K?lb& zAhkurvG*?v@mMAyt$p_`ji2ziIZr@$h&!+ZVilpYDb84;xQVr<0tm|>$Y_J~f9VV^ z#cW*I8qIrlR^a2v))+d}Rq(OkROQb5AfWMKSe5dDSJu)q8F`ZMTyKe1h?{d;>lppb z#m&R#n-ONWPygbhy!}0&!n{O^O; zFmm8@fw7t_&vCXu6$M8If==3Gw6u(^DZ?J7)m3)lGLG5!qd#Ku!V9FaV7R=DYc#Mz zQD{S&fV7%UJ|$~3_T?K>{7J{nCEohjC%AFs2+nF6lL?(HtEOUdp6ns~^x2j;CFu}G zAyh;&ZD4_~{fl4b*?;&yapV&p=gwPKL8c^=Em}#-pCNP8L1|~zdh1v!7sYg3&PoK^ zQ@DHO8n0ft2EfX>Gb}&x6y1}@Nfwp>*qy+=-4R-Q_i-!yv)*B2dR@sxY7zKrO!iL9ZMP5H{XN8Y!F>Y)pq!LX0&_V}(3evr*if11y?I^;!0Yura_ ze?S<#JL*%H&NKbOm$><_euZ;?`zJ~N%%|x8@~=SJATC(~_Zi36CHEbY*gB%ZQ3y~8 zoK0ZO!bro0hK(AwXq`MsS8%n8YeN$(FhSHDB4q_d{JRxJ2R|C3H{Tj z*|>d&wde+;-~VmQpZOtV9DDfvLBPE-35Qrby1B)f?Hx`AI>Ls8%Lrba4CzZnH;Y(G z8pKk9@*QnCkureQ+5^N(8tDQ05;NTy);rK^7ub3RDI=fE%fdzpgccQR$A*LSKpasG zOH?W7Vk->JYz$eP=SR%C^B%IA*{6F`D{^My(ps8YlL|vFC9gC)Ts_%gIh%Y_ar5x` z<{36W{bPK-(<09bTEijI82_w>%CB5Aa6plBPyx3OP_5MLb6L8GW068(Fjco&S!f7X zQMmVmjJ@thS(uj7IRCTr&k7DHMTLX#Or{|7pa@idF++x^@<@2^k}+v)ft7nYQ7){e zj5TCMPGK}y!-{nr6_N#Gh>Rf`ju=d*ynFr;6n3A!$U%pdN)r07yhI1E-7e#!M`;Mf zATRKeC!)HB4Wr-peDlz8^UO1Be)>oGe5*xX6tqSIWI5rja4B*I6X&m=!U?LvM}#xT zA!&Eo{NTsFja&cn|7Q62{vM}(;0M_F{1?dn_)Eyl-|hM&V}7E%@42=HnddkIg@jJ( zr~ZY5-5mPY-r?;4Tmu9TdFXgX5;0Vg`g@;o#W!d?(4V(+sa( zC*9nnyShN;$3f)Iy>AWGLl-#T`H_$EflHSVam+Z+vHcwyrDVJe({ks?t);tkj3s3kA9l%mtMkNy^U!#_830(=?#0HLi6;po69RKJIk@b4p9!7^6%MH zu&e~TR?u}G0&X2-H{WG^^IbN0zFPYTK*WmlBi}{RY%(2&+Rd(>H(h`Luw302nJD1I~bZx=L{tuYDHxU`ZO-6 zTw1KrSm){A+8D3iSvm_l2h%B{90L>RvXy|YpwNbKmeXlO+Ht*uSkODlV7(6zWJ zeVXRu#t4CqBon-9_5zL%s+jLpf`N5hb(XIc887IJL6njTNhF{ZMKqo7terI!lQGfq z5mY4i;br!B)}h16MwlYQ6nRMGZss0WlbSk)sMhJszqVRcm8Or?Fu>tz9aLTD?VxGK zfs>m1OnS<~tz?rW#*mb86Mu7Y^PsQq`p8Fl^wK3%95c*w?9L7iW~tX@31MA?QsPh$ z@q?@yTx|+jPRE3(iAo09-?~l1OmSo9DC9wNq^@9WOV2ihSFYYGe{gwDG2FrC<9*97 zcfcCGEQn1}ptA`=d62(#mcn>EmT?y0d{MJzVMRnJ8Au0OlUYM%ps;3-hIPobtFIeG z(je({p})({u{Gj2CbN#hI3iUCLc5B1IGb;xZ)x0==ah^hMn!?`_i0#*35GI4g425w zWfjRP_t+W}t*B9rd;x7JRK$g6K1A`>>)iOw-{8!D`qw!5=^x>h=f6%g8Ixzzna#vJ zCUE}x=5fN^6Q?+~ev8jA_A3AYAOJ~3K~%=nq9r)x*UZZaECRXniozoeV!O|9yU*aw zw<`UcGEUNSXVK@*`%S|^2fd2f-rVG^U-?z!G^?JUIQ)=d`_PO$lh4%42piaX;X-A- z4m+zyNao`6esN=h52OXsqYJD(_Be%%>A(6K-Q!CnODjxvhdAfn*M{n$3!L-k&Y_fI zIPeZALO8q-Z8$}xmp0d0ljR0ZoMz*m+o-(NPH-Egm!l={1AZb{GKvp!qgH#x+F`n=)+;&SNCp0{f;%;rc7*ATY+1QY1<8-X}ONs482F z(FNIbiY;=4v*^MbZKg>=9LJ<-N}8lB^m6#YU1#WA{%Xv;$!O2*0E|NSGDKZ>)ZO(P;xar__A-RtC5R=xjltcIASybis zb?`kbsp17-MpN?j>!iy^kmATbyoMEinm9knv~vgM`~gRW>+pq+u_kC_Sl?yV59tF6 zm-|gK4)m+4J}>*@#(Z;e^PsP@`|^#be71ye)pc-AfOLDBGWW4#I1pTXfFGOWAo3x#Pxss z*=k%XY9Qmfj}U=cSDMu|og>kjU8VT##Z{WUMJ`y)*~ysY!4AvgoUy5?p_gTNxyDw3 z?Nd0?ZilTP*f!5xal$)#tF+-KK9Oey1%gy{(@Wa10IY&+p-aEFz$l8a%@)cT65~je z1u3e-`(b3zy((_Z>eG*tHF}KSzRc*gS1`{!j*^nB2y7t)N{YY|s!8()5G}z4cdz)d zm2lXMF^@WRyayfZ8)I37t>mEeO) z@|_NpaOA+IbKJCsyHiU(9->t>7uz2<)%(M0USL}dwr*{)z4OOB`u)qKo$j7qgrzEO zL=9OphgLo8V$WRnIx`2MYsHW~cp`HE5ceRX&DomYp+fKNkhU-%l=f9aob;cxyV=l_Gh#P%P45xudEJ9Tyj zXY8!q*Mya9%*Z(wvW!eAUT$}JuF+!E6r9nT)j^;3a2J{T`_vJhsF4d8IX~qoWYEOX z&|F-^MXHjqm~U(yzIm64LKeQrE=5fh{#-M*rWY5AnsIl5oo0$@v>=IzEhJh8^=DOK zOAlL9RdEAM`$JBB$J4Y=o@J6{4F2#B$a*bo5{D_gecv0Zhc0kr4M=Hg$+kQ^1+vmV z$t^U6WAOBoOkaAP>;L2bz@>lmkGb&Ye~5c;UZxn1pw+xDO}t)(8XOA2g4T4MW2!Y* zBFS4zt8`Y^SkXD@a7c4JLQN*9EJM}`9tZvaJp}u+pB3YQVnVy>W|#OFmnd|Skhj`Q zTP+50LZKuS1+pk;WD}%{aKd3wr~n8SVt*jav#6X9Sgq+j@hI}>DW=0AoB!_Du}d9_ zG$jQJTdwZ*dWC~nJxa)`Yw+MN4-%_ZgCW6)`e5oCDsT)&Yjjbtcu25>|8iQu6;5-EN*62RMs*X zjj_^$hD(f81Ml@>gjbAyIrlze7DHP?SHPka9El`nrQ#83*|~Ow>rXt14WfSaV$_BE z<^(K^h8!^#!*R43WBZ01ufN69Cr$;umRf-%K?F#koI6O=Va1K~qhim;2?u-Smm_Py ztB0V0-%qG6Odl#u7D~2OD0FI?heF&RPxp;}&E%W1K({qanGiD{^H34L1Ae`4lpYSm zs^bqIP*jS0J}2w}zvY1wyxAsZ4`5ssU(S1x3F}Zoa`W=r+bI_(}xb~vsKyVD7S zo(s*$0d^$e0xZA#F708COCpT16wWd&R|~bVi9g?izRlcp!2;9qgu-f48P%{Udk6cx zprLe*@zMg#R+B+ty`yyHyzXX}<#jNia|eKdztwRAl^|&SoC*(7Re;)%Q)KP)R*Qcn zJ?_JLhOV#>_ZAs`=t-{r{Lj<+$VWNy#4|kh6Mvbjzxo+mP`Q8LvsV!tATDxN!g_Iv zgK_}C6f*@Z86axC-r@40a{vOy+YvVVPriLdA+XvlD zFlmEHv&pE{ViE`&M_p|m6J=?uaQ0V z7?DtDLDiV^J~mVjUEsJtkt}^#${lmS9eEKe7Y;iohzd=yw1Ro!5`%yBE8O`Df05&# z{60STg23u}^5j2}-I1K!I}=s0z-$Nlc+4rkys^Mw2{FuyI62Q0TP=Q52*FSgWzR@Q0vO zr~q2^x5_?L061-FEq3TW{cVheV(W{4fSTkC&YmWciXw=bmGfme*F~1=siH6phW#)t z5kxAY)ol1Ks`hF%2XdD3y(?2#Z7@MyQcCHCw(uS>&U(O@bDmjct-(3FSE-jX0s*=x zW>!v82oI>vbGAmX*y^%5$o$0ckhrOTwc?2LA2>r~68cxKqlSG?pN#w-UI;-0M;x9f z?R>&mw{X)qio#T?*o|V!sqvU3ipXl<^r}O04l5*PI%Ru0fp@PGB@s)HUh-Xx*-syp zPT<~)kZTRou`h6BZOwU~hyQ-YoBLQsKv5LFgA#IPMWfU#^GL||U(sYQ--s}2kXRXH z^+U0$b4!-xB#q{5V!w~}&0z(Pt257JebrR|&6*R~A%0<{3%PS*pGr=NXCmMMQT{sX zQQsR21Cn+Cn|6U>og2%u%H|B+4TjYl*m zBUGVDvmBE&{PmohEYCv|T%&;r=agm>Q|WXrzif z?h89}?i`r5!ta~Ogwx;oEN=NY!`rvn{Jr0!v)m<5QW`=sG{FJg*!Q)edguaYG9DYH z6qE7TgV>CxznT(6>ct%h#vT+-(6pBACm-k7wYRwOU;a(nzx@ZKPkn^wGrx}=Pl=*v zW`|de(hdP27HBBRYO8smH%Prh z85}*v_VOy@(ZG+zgbcn!0;U=1TnFN(7{)u+YJ*e8@2+Io(MaaK(+{GlI<2vdWlU#* z@tbcleep%2#V%R1Ns45kO)%jLD>va+FO|P$@JL$fb$IHri}Z&hM&l9v{*eA)z+^J@ zMU5n=>-vPIq$EjGoOAD4n!=PZ;H;nP2RonF0cLZSGoE5KVmQ#p@0Ui za$7DN-UNsQG|Q=<^Eoarr-28l7uO2Jl1eO9SPg0o*3BHA_JEGFZnk+}mChRNm~!<| zJ99nGOFgi-IS7BU&%+6beX~zgQQ01~4vQz}y`EM#$jECjCL=WUUC<_klgW&6quF83D9UA7lB^N9Y|pMzXMq zyMCP)UweaA%?InCRRcnhILA~*tPVd>`yr(yO;fD3-=eq? zOhyxowb&3h{+!YXy>VQdEoj{`$+m|kp=LO@*1Q|sr=V|f6SYj-q$Y<8@ z));J|QIWzF8WrO`qOgY!2d?iIQBsa)tl(pZ{wXI~^93V6eEv z?uoOsFJI&O&;Iuu``Mo*?(~qu@u5kml(*L5A{!~mt;JY}%%_MvudqHkSbB@dSCtZ9 z5ld%rd4>>zyeN=KgzPRLqv*f@sN&cdA|X)DV2T23Z1s0UIchCg0@iC0I2K$T%y!lWxGH7-yJ{rwm6UM&mKV(SUw`$Y?ZTI+-vYjpX|J`g<#I!t}#UBAlz_AmZ5QL8f}04ed*|DD3pQ3*XW zVaG(iTd4!a1E^SrB2Q1oY)mahtI6`YNBM!rpTPdak8K{$}FlL0`+ut77fgF&ari zv)$&%kt1|kEqc8U3*80U-43lJrQhG>Z~xu@mYuMXz7>V1}M zZ@t#czUhrT(0H@_v$7~M&Ui#zuxr3Mq)LeJ2bZjHef!7oqP`Mk50LL_;c81(c?~6N zLtCYQ&c$;qT{z9+u@ksP8>?a_Mxdj3Z*?Dv=2DE#%`w&@XNZMhiu5uNju~4AfGp4X z!B2cQM^=w`%LwC`WErFJl+kp|a4=vrnviE1gYo!V9ydo;Vi!)=wZEwm;UUi-!tIm*t0!OPXAvj$@<1e~PNIYK*#5}arfMG2{bC}f)X&BT1Z zu_Z24N$z~*%ZzW{qT5cHEG`gB$uKt*#_|2%{SnTeJ;%@f{eSSjHB^TdI8Q$LWb?V_ zp8L9#@{-Q;U88kZD1}sBE7j&xilXqV1znI&C%8PL8OMI2;S6~uh?1Cho_>nQwl>NB z-M{12Y{KN+g=+78KP*KVENM37Fmo8nxnw)Gj#uhmXy$+o?p|3Tmm}Ra> z;hFOTCuv3vy2X@!G3zJhW-5Ng+t=UW-M8ML{d9|)Q_1CfeHyXg*vWHz>aoZ9{=f3$ z+`N8`x1N8Qn{QtBV9#kz9$0sAI2fv4rG^s{b-Y1kx(P-XXzeF#(_%>Dm_ex6E8-d- zdsaBC@xXOo+<1`Vp&B^#F+k0j6)AnuB|T2SGhw`L%X~L~*x`QAB&Ynn@nFDolF{jC zq=eprj~f+YMyj~d_5t2=+#Hy1o`3%9O3F(`QS4f4yVB!;L^-CeCdOKm7X?;0k~Ezy zOb!?d+)w3rX4F!n;}c#hg~DRMic(^+QYn^mOgDMRy|d->%AN_Ww@@(T;8k10U-pjB zV#YpU2D=qZRm*9o3oEBOtychzr7qp0N9dh9$I{8;h_ppf`sE=JPU1|#y|>@t+SMyG zn$2pJvmd_%iS%owsgp=?_=GUeGNki+L=`10v=Ww9R*0jBC`nK%_JXNSAceS~;@AOf zZEk+~r+?;WzJ+n4DYWtDmDS{VhAwjQ$%J;Z!E`za^!`8u2=@$p@!*8S76n+tz&Mr! z42~UT=aEbF-oDJ6|J6^j`6GXsWMu_vhQ|k5HB?qB(A(W5-QDJvblk+VQoB;nEj;5? zM6u5q)&}VUAA2_BUWIRZaUOYmAnv9T7xm;ILUV4)xDVs%IuqCF0%yF;$GFIFR?|_6 zv!elB6>)EMjiS>*mJ{XsOh`+C$eX|WS@h*AG$jm=9fvrjFxETI7a7xOjx~m#`?;Tg z-x{hz3!GP8d1a!tz9gk&I2tWjtI^szYm9K#dN7sqox9F6tg$Fz$b%n-5`uniS&bxv zwKZ-%dWj2H-om{33U1{HGLF59ZmkoaN%G-FX(>6qyTc=cA*W)9oMs{gZy@+eKH+Ty zN*k7ypr;bAP764U2VO~q(_wm`_v{r8S~b*H9YzX_^`0>h(0kTl^F0lLNs*IT13KrJ zbDY+OqftyEd?zD^69(M{vPQJeKmDK;m53tDWP<7UkCyx=g8f1D8%%@Ee>bG*y zF6W3F6*=6~q_y_mHrn{rNv`%};P==mqUuzXB8ei}t=4y*KYw0by?WI=T!G^l^mlmY zo$DTNW9(k(;ap|Y0FErr7z}sOd4bUdt|*A2m|m;FR)0jAreQ*5Dg=SRA&q0~1WA;z zWGC!u$b|9_c&%HAq=YEuH~)`+#`U$|J0WDg*z0v2jTbr~LoLXAryME{_ zO{KtUwl=re+SuU6m1}I=y2ZxbZFX+mV!E?Sk?r}sxC6$&IDv8gun`he9APH|rt2C# z9wO3i)mE3+y4?4>xd~r|r>PggC3ZndY!EsOa15Las}m>K2lhFjsCf|nrhLsb%b1L( z{u!vhMhP5pf7~R=L&wcQ`NkS^$r{6GJYI0dpsmk09uV&;7EW2vs3<~blNq4){iag$ z0)R8c$lTsg2w%|HQhvYQOB~`!W)CQuN;PA@rVO-pXOYekWn;QWdyM*HifQQ=rDw2J z^D6)WXk#c!#*2j3k!6}I%QTOy(q3Dm+36ya1S4WJ(AO5D%a0+*#sj9eZqony*V*0P zW$@@lx`D|ud)@p$q$M?4C~{Y7Y#q#)an{mGz175Mnjx(tFEmUh!4f4#D2Y;$kV=6R zC?QFbgx0qzZt830l0~Jh$4nZ72^c}CBEPDs0d*}FA!D2__ADHX!5GJ+fOfmdt;ZfE zxp$A&Xu#x!7Z6WBjjI(n^AntM;$`s`Iw$YkW)1khMno=P3&+da@v4J~F|?(k8!1xd zRoDH!Q65$0T!3v@;v~YD!vVN5yk{&$I12;VICuw&VBYGiL)(IhF%+htYaQnc%}F8X zB2dnfjfMyZSGw&P->ri*wo2H5OcJJ7F4F{x#U9he1>d-9SHV4sEN3*G(CaO{Zw=Lb zS5&*ZySJh!I+16YMIfE^a!KW0RjCM+-xVAD$SX~wN_5Ow%kHG0*Oc7)z(tns-eEyX z1QO#cQ7{3UPsFn31Z{+18pULZposhpSP}3SCH$~bylWlL7Zd*2L|k?msE9}^QYmN) zNs|JcB_BC@D@Rc(-mgMCry)ZC{MtOj78<7|g>!xnDkVieB?69F%PDO+8nkz`lk8>% z6C6dbxOdi+0__h##|7p_k|2P=LXW)NCABaPQvvIo--pKW%tV12rPVn{9LF?TZA4Lc z#S}ph5A^r|QFWEIak$r~a9V4tb)kfi=3#c^I;^LRH8=!O6eFTCq1bR3dA%JM3ZW=c zByodCNYC6*lFnj}r!QUL%`bk<`@)2^8bK&eIOkoNaZEJmxJ6fHq(#BDQ79n^&_FEE z==C^KWXQXBx&Dj4$aBETh4ZX^+q0}a@dP?edE?F&Sy5n&p%p6@8VO4at9$le{pO^U+m9v&d9y`Oz$}$LrQwpsTrlSdi!GwiY&np`TW{zJ= z)Qsb5$@qb8xw3@1g=AUMq=g4*-_QK+Fre{4-e^f2d&;d0_64PSuc#FpwYV`wp^y(3 zHwS&~l=)^lwL(hi0+^*_ok%6Cf&mF>6p=@=dN%IIqPia*N7N=`ex2l}z~!`|&P=oH z#}=0>DmkYBUB6#mPft`DCRv`7o;bmU^JfrQhSNEEI%c%7$!mjbAA6~cIpZ8Ft(2#J z_*1CfqSrHNv@nrh&t=AWU!lSxWQjlrJsmT?d6UuGm&tCv>;E3m>9y%cs*=GMH861^ zybeo7sTCz^}ya(A&g;YHBBLSJdXHwV2tCk)4Whb@@3M%Q&$p3g{G4vq}?tz9)FDV#g|bfQ*RFS zU5R;>>!~0|Zk-p08XK56c-K0wA)s=O$1#5)mi(}@>^R3An{(B`b?dkx;B5p}TNWCM zHeM;W92p*}2_q$AquHH~(bm!c7A-79idF0AX-x}=5NILTc9uzym=Ypc-u&trlscL6oL6 z(k4<$RFWVif$62@iC8iK0fl%7TY78!17mcl23z;Rai!^3H750lM~Bu0(=2B)7}D== zGu_=`I2scNpzi$6x~|u(B;;B%wuvFqBy=U&gOp8ooX$P3z9;vD*SyB>eW1LMaG}IhGGwdJOfHC-`DI3dDe^KsZ6m+ z7uoQyjg+9ZG$4KHB_@*$HG};NuF%$^;s$2*G?_;y`^F&)6I!8gCdcMEx+s|5y2bFV zH<{kKTdCEy8ZlN%+&ClC#xqxwL*p>O60!yxm^0^e!3Y*CNi5mk*+Dj% zBx%DNGb%5aAytHmqWT2X$Bhywp}r+?W3(mXJF)~SLJIA7fMF&T%Wigy<3K&N*yFyY(;r#@| z= zy-~(muf_D#Nv>~iBl8@h=)hfJJrF7hap~78Nr`FFP1oK*vSpKwTvedvMfg|Es|S9r`tuYtWqp4GrIB?yH~FA>Xoaw05Wc$ zI!WWm5xOUi(^@@BtJA{@hcTKFFtz?+b?i531%We$JS&Jz;Q`my!gNeD7|=d*!kgW( zXSyiE^rg-+dC>K?HAiuR?vx7C1?#LA#JbNR@t{dgz3WPogx6kpjx>!Ck?(MmI3FsD*xhBYyUq62HtYB9 zGThx^Wo4PQ^N)Iy-MK>MFg(tDXDuq9F;N@51UyPbYnBywTOL|}%KJ{-Tv#axA&3CI zeg{1s5;vR3IQ0}=rNZPglw59B$r>G`764Niob~KOJ03IH++cj`UF^;-#nvV|Opzm? zokoa|bFJ~R4duFC8%+|$80WlOvl0|R_)W~QiJUWY(v&5-+5g|>#s>L#j1vmgNPT>y zDJqUpRlaGFBoT4aAc-6LcU07NmMzLGW4qW0`aqH#{wr}0!d)H3BZw=Lb3!MM(ul`l0(=n3LHeR5FB2oew zMMOdnM-lC2gQZ6=qE8-2rSV=T6SNhKbKL8XIo@fqd-gPW;c3_IfDx=?RxnB%&CcC> zUb?ynGR_U}`P7h}VUs&w?A$7>2k8lD2xv>_NkLO7P6$|g`!y~<^(0nCK(P;G>~#qw z-Q8W5c88EeXlq%wh62z63hUjUrIJL_`xjw_mzE6H2Y8cT3@{oDNt(?=sdUWIgNsPw zIvtFKvDVdC*g1zQa-VS29@@qqaC>VBAq0yH3)~wGIcp3{i;HMvO}jwgOhIl6kdh1- z^<_newE^3Zq$#_*yAMI;@#`sLLnl~GtK8lXXFU!fOrVT5=-kk5Hds7=7U`S^td9n0 zt^HIfRO|IkoD8(|Jx?A-gd;bWiE(rj#j$owrZv;W7H$wmzsCDr6*$N<+NaMTv)5Ug zXbK4v3)7qLGP?OLcb@-xMcZyIE#RUEm82vW&Ji~nWRpn+GOfoALU8lzU#F25zIZl< z#Urcqj;)czQDFPofWxQ@O3v8?)L2xr>>OLYZ-urBMXnSzud8`n*+Z%|T!P(NFvp#*?X+d6I%C=t-%-PK%@> zjw9NwCQBc96lt9YiXMU|I%rb!AVEOp5N)>fOglvPrhcF7oYHiKzp>2F$V;-q`1WnC zzWN3W&6Kp&K?{dywaB_XWK?%Kti6|#>}+mu<=1~5k>|Lgzzj!dJTN{u)(`_}?3=kL zNx~{K9IVcBF7tMqys2nS21H3r6367m3$<1~n)A(tt*Fy-kBkvmrIllaQlycj*=&Lg ztkxi2YK@^N<7P1MMR~aPQLKoP<=hJC4SibbAxBAc) zYjg6^gh`=kcRD@}%KPM;pNIvlqLcy=H!!0y#dJcHq$nIa6GIY3bdDb3wv4L+rxdI; zVIwggk3vdD<0->TlLKjBGzfg7967JeHMP*sELSI4z|i<}uN^Cvq+}7nY5^PXT;=Am zlLv~vRx%aVvT*x0jm+R;Mdl16>%xjEH~^Fzh+LC8i%1*ZL(2OyA*3X3w3#5u@{FX> zoKgBdD4$roO-J5q(~J`adR8FP6GI}JQHxHR@Z~T3|J1$Lk8N3g-}hNz?|nk0TeoiP zFwW)()pmg`U0x*ca2&w=11fd;j)t{lYi=^Ox38U0dLM zSKJ>>IBBYltcUeCYQ1NF zGU3<$!{26aWf7k}hr{Q1TVa<`10;(^m_h_YwFvYyN^#U!o*7Stq4tm&&(?g7){>^; z()c$C7?zFUIUtN_^Gm9*3jtDVoU`F$It!B5E?gU9BG43g@Xa^5v%SmD&dZHsy!A;) zps71tt~swwt2T`Hc-w$=sG{g0Atl3cQM{>2qO+X8c=9Q~`OPst&v7n1q)LR}QO62h z`oJ6zLbXDGLP%70E3$ISpmIGFeo7ETpDO3VXuX|mc+d9sB!~o>hQ?WJQ-=bnt`J!f z4kY2jo;MvJ5wj(um{>Z7eB2A3m4-9m&en*({2RZ?w9quBWN|#Be0oTEJfk@~BcDtV zk6*_<{hVwW0-=hRahym?7VPO6E`CmY?X_W1(8q2Gfygq-<72dO=+t7oI>t$bNB~Be zR)Pj0RT>Ng>i-&c26~Rt{n<}n3uo|ohY-3waIc%*TvY_Dugtu)cxM2OR6bxC@;t0T zWX~mDbQlYz6hH5uH{bpSnU)x1;@Z!*`6dw>(t9$s!Pw>!eg7si(d(u<{gqR~N=c!+ z4pj!LQ?~{(?psNuc#yq1$ve?1V0#}`B? z?%`4?ymPFczX+zk@t;C(;8#yLEIz& zuIpRI~54rP=H`#mi5WRDkvNnA9fB&liKIAGEmGquMOD=4Xhfd10-Z^Yz$W%~C zP6ZdOZ@BMu_o3(*T&KjO{4)&NSG%VOg%&stw~wDD153uuFlhS4Wl7aJXAz+tXMA zItr-0IJ@AB({m6IXfjY25B2AW3jbq zXHSX%vXl;r(Fk8&bX3otiZKzlm2XYavx}hatyBxH3}f$bokY(OTBbt6xmLM$h{2H? zspG9xil8?El5MT)uNW8KgY-DGs*zk5ZA@Er!n^}wp>(33qz+j_B| zym1;?jfhs0QdyT%Cc$OCTUuW;bykSOt0;>Oxeq9J*edGF(BB8dF?*kE~Q@up!pzrbfB zwAQT_P#Z9{OkSlX8;>bZj}9U+h_aLM-&J5(c610KK__5e)Qvw0+Ida&H;rt zltN+Bx{HoQ+UxRhO^uI6s4t_T($@zLI2l1v!be)FZNY^D{g$xGbNeTwaW+5Ctk-y8b$5OvvWkAF?sbdkKTTR{nuVY z6cdapD6I#XAz0$AX*;Rwh%tq5tek9*rox~Kwf|pNFl@cw>QLD$5|;M*qToG z;MoxeJ6mk;?S%r+L=nA+$agjzx?Uy2&JK^jtw6@HNOAEHiuSfi@1dLYHP~v2t;+B) zO?R-i2^bycuysjgJ;$>d2YH6fioi5z8tNwK>g*~{y;w0vkri>u!{v^=kP4 zCm)l2qPcfxhsOu|9K8ND9)11mtQK?5FXo&*dqFchN3JUT`9*lY&SA=es>m5&bOh9^CApT6!7O*HaD@!+J7q*nzB^tM;|UBRK&JzC~B@$QXuQl*1Q?+?kBn-rK`l zi4!h}*hv*-pKRMiB2+lMlGo2yh#Mc3>RNSR=MgxZHEp46jE#k{304hA##=i9l$>ym zJ#$EbY%y733S&WOiqV*AaX~J2@KVR(*fVpItz0p$ODdJO4ZMxwiTy{@)-|j7oX?jI z+hiPk?QQ%~+3AItjfPT1k+Y~Rc`q-mPnUgv z6ToF53EvA?+dDt?NOSPcFSGaRD~$H<;HSG-Bnt}}q41Me6gF)>5rRC99qQP`Z@SMe zYV+WOCC1BYsPv80Ws>olZ@VQIwP9QwM>^-g7))Jam2Q<)8{aDp)6_!<7S5ArIeVtz zwCN1a5{s%$^iuM(Cm-|u|NWovo!|Lg>~x!-p3iZ%VShZ~;a~nuzW!Uk$?EKk7au&~ z_><2${^%1fKK_K&$uV_pi8-M4fl+HW*l%L%L=c~_0WfR3;Z5)hIoM@W=*$~~Z7Nn}$#{Dom1msHW=NHxw8Yv-byNy9 z9kVwoFh|GCS0#EpYENTFH(K?PQa)0Od|c2pmZyiueDwKqrlXwwy;O^YSb%@$#Z06imb{dheuCYogT6E z@M|4#-U|>8;l$wn^;uNw#Z9*sksZ)DO>lY?QF#q>YJGBX-D*cG#m}BS=R0{$CN&O& z7Y;=hBq4Mj4*Xaggzp!j;QF~u6uW%mql0kx-NU*z#93&dY-2E0$#PY(eV|*9vg;;R z*U`q;jd+teWB2)vLv^J9W1kh-2Qeo`Ry^c{5ZH3b@rzHWN17L(eS&Z{P^d?v&6Xe$ zAJSs?^MVE+azc^Oj7Ip$1Th{Vv_|HmI7oHWwWYi$gV3Ed2qFnXb+|2`R)K5xBj}(P|sBrTj%p#irxYN6E)*48W+bF$sL=*akWo=(6p9>USrHi$i{fEzW9BQGYD zC&x5dfhximiTL&BUbCHnG7aYjl;~X82M2GK@yCDke{g4ahkI}TGM}85yjL}ha>>K{ zukc&H|2BX1KlvLRe)<`o{P*0MS_wKXv`s-}pJ-}ocmGvxKXpU7TvDJd(pZo>yKYL0s9$zY&lD3z3jzR{h z7aLcZY!JImXZ;uFE55dsp|1=>{9ck)kZOX_|IDl~jU71ebc-$(g&Z)g6Gh zM10Z83Y=8zY0E`jvy9!+5KE%alM&zlM}NTKKl%e6{@(BL@H^jP>)r!SmY!#47vLOw zlbi={zr$Payu+`mPysH^FE~Fw;_&0oIr;Q6F05yEa!$2cUEaa3(Zn0)f|BjDV7#-< zXn&ub*IuExv(I=kg-qjBfpw0B^%xs^94Vk#EI5Dql#8GKnB^DGID2ppegA$d_SM%5 z@C3k^2Uby^CM9YigOR0a4AKW`C^8)MKEf|#WYAnm4Hkm&xL|fxvYMT+b#Nc=HBu@p zhS&q5G)N;tg)E{(xVxR-M_t#>S>s(3ryMa^rUS(`HP!rr)nd+kwd8bJBMQY`X98l| zJ8V-SiwW6ejM6%eu|vt0XQE}7Ap~kX;r^qH;^;X?XER(rLMt68uKkWZ&0Za7DcKqq zjI#hh{^HpoPdecj9f^2an{@MxOU_})M zI9O~nSBw*gE7nt+rZ%$Iy{&&PlafVkS)84)Tja5&3)UP8-4;2*+mLhwUn*{{W94}t zT$`Pg___|$DPv;y?E)^y8eCN(i*e{ut-BUyvuT>u|GVtFRrbM|B6htlio*2Pz%ns1 z2h5mWp&8f4$uQK$X~=T5;QRmQKcn)3$(vt`aq6&jjh~<6%MxFVI&@VZ^W#AK8XoK+ z_V&ZtAF${Pfug6D@hPx6fO@`@4Kw zO9~0g<%08*6P`c$loy|T%IVYREDw(`S%GPqjn}cA>JVJRrB>vVG2?>+#{2thzw(Ij z?hZN|VO0iFQ8kvC7q~j)Id5v}*^JePPgwr=hn&}j>HxGrOTV38VoM2ZA1@c7C0Yht zSmh7-qhH_OivF@ccRM!?bLqA;C;x?Q$SXbjskWF_@O*uQFTwJiT ze;;pcn>?Ge28y^5=X_Kib(9WDpL2I?8C4ahM#MhJwgpnLwZp-^eI6d3F#5wkX3LsqC+88Ai1-h0B2 zp1ufn0P8p$f_}<(zWYt4ckbe|aY&$99vo<`XXZV&amdCbRWR&o!RqN#7EhkA`1s>+ zFauLyF`3fXp;K>AeTIpG8bM_PRZz4x6)u|OIfQA*@(dA$v%d2jIVZDIX3L7wfmAs=N`>OBE~#e6n5rau{6;KnA`n+btU|;UU~PDh zLScks`|bnA(-ns=4w)^Mej;`C`HG?3|x{^cluk z#>I&3$%si&Fc}wYPbTEqHj{&#?@UUpvltTquTM{A?ZN6jh`k5cJg1J@KuCq%zRM?{ zf6j};L*97nt+;vdEp{q_|2D}c3?=|QdjJ`kR8F|KQgt{l0!_THE42Y{GFa2BO>qX3 z9<3?H1!ndFTV%Lmf*MVbPN8H_X!FA0MG)bNHcMB=&21a;;PDm#*3r$}8yDQ^t;5*{ zTa}dOr0HsEVE5*pT4SgzB`4BeuV5kM;jxU!THrM&DxwXS6B66Q(< z7N1O(9>A0H6?g95rS<|X1R@itY#TY=VbnCCaSRcH6_7`~N|4i3xbXo?8wCCAa*6jI z<2nU#A;O`dl?c-f*@4l0QY21Ab##kP*h23euCYigh0^HJ2$^M3FweDY8j&toZ>1%b zA}_`?XGb(z!e|RogcX_48fhIC8`Q?*s$67YviX(bM)*(^CwI|E%&<)p9S@S z7b#I7JK-<=&A$$#DMDxXVggdpG?o?6 z*nn9Q(jbMxG$r-a8Z;k#K&|IWVHi=+b-R5)mWv%$x%(KuwHIm44onll zOaj-`xTe9bR+!^s=AVB`_35YhszCx{9rbp-4~+4MO(7!br4ZziMX|IgVTEEct;d8X zRO7ax$TU)Ch&a7T$B1uNGM<}yW+fG$nSuwWC+tous0zenhsqdqkq1Uk)1VODVR}VX zytTEJA;f>Iwf;L&aPQ8Y{k=)1bh(&QDA{6aBrvods=)SdeQagUopk(J7S*37Sr++LuinR(h~O;(eTFZO7Yc zJN5JPCRS7L@Emv@wW4%^Wi}Z3ZeYB$py4a9I2!@R@oSaTd}<5q=?S~j5~?L`vV(67 zYFu=2lZiMQ4{`%vtr-t@t8;-4o;coH>iL}N`~>d|2d}=t)}6aNJvr@snKt2T;6?#J z-}j?){q4MHwMmlHeM-nO-Ipur@wjaMrF`a^w zoGfd;n9akw*19P4DcKTZgjS)+S=&tD!fVNV%yRb?8VF5N9TrqV1)oJ*RX9^qpB}UN z;wcv&e1Ki9TBcs6!uvNCnyLf+!jkg11`Xsu0ND zIhwOGs^cTd=Pxj4GtB7>4HVl`q>vQj5ljQ^*)0ep3hLDgKOW<~B*T#*X@J`G z0a704VkeIatTk(5XBW&GmDZgAUX-;?rhLvhvMjp5MGP!!?rvZ%r$V*s_Y#xHy7&T?7K=al+G={4xP2ZBrhvyEgLqhR0i(U$%85#v@vl|)XGX==pObh!4NVjSTW**+A*q1?&$^l(-qlxf;BrKpQ#KlY-rlV)%oVu z;B-3ah%RncRA)y>A$a)aFLC$LWAb7|)l|sClb~&*I##Olo7b9B36L2svU`1GO(F}n zc6KpmGb#kxc+xUkg_LB<(^$t-15=T)qZ_REEE-E?471reUKglGui_8CV7p#1T^K44 z=fM1f4|(^45Ag&A>f+!o#r^wCA3Y}D-)DRfR^G;%sA?Wb9_s{}Sg1GU3b$IcD}Phh z)JHFV( zjz$z`reZ6+$wyo~`H1K7E$B$}7kSR)yZ;vXcucuiv=!ulp&$ew{PRDiI6dtE zS@8%-H+@uSio5p$9;RvVP2E}+IAah>VMYaZcghrpsaA}3Ml{A#kqRoe26jp#Qp zc(Tzr;$l=>-NhR#d!y4{;^hi-ybv&s?$wo(eB3ymo>ttO*F4zw!I5^l1$wJBTyxTI zbf!H#JoG|{WuE6ItP{MC(=Q<>0f-(XCWJ!XxJOn`P8>(gxwuOVE*Hkp8$3bxYi8ZJF7eWAbpx?_ODiB!*& zyj+j6?$#JSn*ha|ikeGnoftQT4t_$FD?;4V6?d04kG^Ew-0n{rcQ~vwl*>8g=?SCp znAd*gSGjZlLBNk0gRMy%8w zcwC@$z+eQCzCh2FgGr+7eoyavRy3WQhLAGog$YgN6dzm5)3b)V%QGI`iORjxEl|^! z6gS;fx27J%&FjDNtL)u>5NsBVp)oa5BngK|nO1%2jZFt&5*`lpexXztJQ;(YOxcr? z!xx7%fX+wp-ULQa5NdTSt;2c6ZVrzpIe9hZ-s|^q9#%SIeD@JbI7D4DTAZQJ&e*G= z7BH8vu;7o5nI9c9`|(c(=MuRlfAk3R^*4iW7DF2%?>$m#&Q4Ex?|=S>_~o)a9CU1o zG@Xry^)9U8lbl(^d?E!-XPE5?Zlt+mR^UfSt%LG4w2Vf-0V5^XAt9;YaSkgy)-+7C z;)6PWX${r&1&-}H*m|{Ol;=GDOTW%^XD__zrp8zoXv=wlF*QPIs>PBb&jV09b~Co8 zEzu^GD8HY^rz+wLmbKxcYS@{MdHYws!=0Te4UW^}6U5;W`Oyq@azc?Qyb7-5#dw?I zwQa^pkWhGRSz<2ctd5VtI?SrXF{JCQD-6p#N0=IIUF#{;M`KE*QR7MMJc2~OsT-QA z#OVybzlXhZ2N40YTTU{sY8H)Y_qbvcVuPKV8U_!@}o1PC6I7vPAMk@)5AO z>HCF12rx~J7ZRN-OcRPiDMiOL=}#?sF7Hw)L{x%JEG`*$>DDXsRPpL`i+gtuI6gY! z@brv%U8D06S)PTCy7vG&99X%=SV=+T(K0fE_R>f?Mp9wOc+oT*K0o8& zV#O=>?5*PFR)1{h9=$PCizVYM=e1w^4aQqLK?|g5qDff zcqcV!A^Q)S3#*(KCne*AaR`pRG(k-|I^H9ES_6UgQIEx2oKUTflTX4Vt~*tI-$g#f znUsU+VZZqD(YGf}8=MWrj7?0beO@qR!M>+)Q?MVpth$-GsQ&Bdj&i z?#4&mpl&_odTh7uca%uwz{`l`^N2(|HIPlVxU;+B_-q~;l&py7LzMc6HXq(OPL_^Y z?YMvcA;0w28x)ffWjSYcc!D`Rg|j&-AEEc|Y%LcXm*tF;k&f z)eWoK1Z-t8_KeTm+Ge(;jITG~E$q;;Il=N!%g9r5x0 z9q#Y%F@Eq6=M2@!Df1V{aCi*!CG*CR>40)aiKxa~pzlw~_wRiUFT$T5k-l4{4W=0hn<50VC?cROQKW~5yzdtwY2_228Yu*U zTp#2J=y?V?CuqDyO{P42eawT$kGVKK;ppUylZ%T0>dbTiOsb$iBczL~EZ-SSc;9O5 z^c9-D>qhCWhluLN+rDF?bb>~hy2LdNrd$SAh14xw91HX%05)K8`qKZdum8~mT#=GG zN}_L8GTv0!tQSt36^=V~YgE9GWGcs4731bp-dNQ)#?9@a6b;rky!yu5Z13$wRbvy2 zMupTO07*qMHk7T{A{#I`o4lv4ydH7r(Vv)zA=NDznfGvT;>uZ+?^VnFwWg`7mVzzl zPvHd85y7f~PbuRIrhfekxa>9+$?K;>5ULK@+-wnm>gT%@akJ{v%M4I##>QWdu&zoIpZJRj z8C3m^F?@1#!Ur!L+r@}i@9%N&+Sid^{~FbNPI+`peRu|E3ZX}2&avk#)23lrm6Uab zS*)mgy_n34*yxBhBnK+}QX+CaXpl|ZJ?SD3tWoEvS7lhirf!8;OcF}>kUt&Xb0|qDDWz#h1XvWs= zm6OwLB-INgum-f&SnD}FK4yD5CCl@$A8agDRbjnnTR7^)oC`0}`6zVdsiI5R7%3?L zoe3Ia_~?sgeDL{GcBc~_-`nS4Z;$-meWbUH&d-^>IOgK`lxDu5Syi~YL3$r{#Stv# zgzSzaA0EO@s~weSeL^4-ol;4>RJc5&(Hc7{P_H~fZcWfxpwSv*Ih!x2jKihFyI zC50r4=Uk8wA1N6?zd8%Wi&i1k32_P0&$>p&b&8HYK)^N~pb2POE5WKZ!5YDtsBr8z z|ENn5)kDd9->YcaimFQ+u}~C3;1viTFj!Z)Xs3_c{<v*n8UBB&PYJa3)Vr4sF~IRP+5ELb{x3OL&xU!ABH ztz1IV1oGAe`GDmG&1w}UIM$+-3la{fm_S|2db_j|i}k8%=Q z@nH1ySY$guPK8p6n=0lT@Ho@NRpVEQ8{#?D#Z6*$wH<--t-zoh?4$gpd^6ZH`jD%g z4-;g($GWg_5Ye$*2+er!fQLHg*^5I~#*j}Z2(ROFF51FL3Bfp%WF|-k{NTMAqrBkm z?lzAO_SpT}*U@h&s^x-ec20S8LOr`cR27r5V$@i~zNaZyRNivFEXj6uF%b)>gdR?D z+F1AD+>XY-K@TFwAekG3&2!xS1H|?=VtWgb=j2jhon=|pRK`(9+a|4ok@mnIWYeQy z8bs4j*EJW7VKN>w9*=`nkatw3VSX{Etg1jF;pH||HwgXNK(%Yf!YWQ~M9T*8(no5s zBv1ip#gi@;3s@}LiG@-+B;V;acg7<)K4f;jLXNk{vMeO>$TsRHC9M?GaY$J6<%%D? z_aRCMcDJ{P=V#Pq&GPJw`S}I)*#)MqF?EHkn|J~J;HLN< zoxS!RwLL)=1x9I@PVnPV(3>a%cvT_r&QjHu)oM;{LiZ%RK*jKMb* zh1O)F0+jBprMilC9r)cQ=`RD!OX{dCRzwUK7+QquC-Q7qvz#x}-nDDsrQT7CLDalh*dAKLCy^v~6J zgoQ#%OL1e|-0q|b)(bYS@|4tJ1l>m<#fhhn+9Zz6Aj9icR2vO9BeO0sMSN6C9%3DX0h}0^4Iuik_Kj5L`{5 z`KVbFi(O;no z*5W2iPSh_rZu&M5LdHVYi)b9XzGCaY$=>@|dmL11N`2HL^O23DHQov=20h*4(F4KJ z(ILwVL$SR>&^aFF>L3j#809&+))-^>{P2*EpFU$UD%juN=KlU3ckbL{`rrXtN~-0O zrd(1lmedyu{OkfzR#2{3reb1n@74{TJ+3HlTT_JA*i6H83q~0t3))>_Z4TC2R?C{& z7#b4__F!Ej+wq-W+ko_g#zm(CWg3d{2(J{rzF@grvRp2sK%{6_ty-&AE&gRTRQjgf zG)SDW-Q8~Y^XZIo2;=ZFIE=ff>mY>)-Shw)3C;!-x*Sj0e~?j}o^UvuvC1aolSy}& zMTzV61A3ZkCYhqKmh<_X7bmCu@IA+5RIodpu(v&BZ)cm`tsM^b_IQ}*NEg7r)$E98 zpFiirvcx5`vG_j2DmNI1sfkA1dp$U*>L8NsoyU4u)fTf{VyvYxv2%`NSS>_5(!UPz zpRgmQu2J4njEX=7R|+XZ#UHvT*%o7I>eMC;I?os><*i$tq<2GK(p&UbNEWQd%gx}e zSOcDT_z=$__+11Kgb&-1ezFjQtk+gJA%3I=Z^N2Whl46jyIkKo!(X;YP)c zm2F(>^jb*Qd(T%EOODbtuk-Yyq?(PpEbx*Dsj6 z?UWi|_k7RozCVZ^?nJt5oPL1#t4{MeKmJ4U7u0cK^5N&7Bc)<@GG%*v%)!nMySr1y2ixpC)+p~0&R~{Hs*@vr@cA)yWAL)m z+K~y5CluOMh{p%`=?}=|i0F?+%zv#;&`WBlt{3`?V77E<`?LdImlD_EutG)7y0;*7=*H97 zw0$Tn5{VZICo`t|2jt^1rzgjpo}H3y?F93)1d>~4vBZa7de3w;Vv>c`Sz`<@W@kJ- zI;M%;^K>$1T#Oj!8AVaBHOd+7?DNiO0#RIVzN~qEavHEiD&QE*WS0hoT{d{%;35Sv zso09h6bMrqb@dIuVn?6$@EM-GC_-l?!`jcc9aeY*+G~$&3o?3oD%a7(H-Z7V>@-WF z-1&sLxEh#wbaGltA^zcbGWjvi`{}s&kCYJqsrOD34}KA;lnIK{FZ%lGGyxZsR902X zAWHYWKfOtSYM0(!>|WDMO128Eq8&>+84Maj_Zo{iW1?GvqHY4CNhk&5jL~S!2-pjj z&j><6V@-{>KDZG3D0tZ~2!x8P3Eu<%cHmI&9JA9izW>7?kO|Lsf9KyLFTU35tB77E zc5!De*Wx{$N3Fh;b5VaTtiuA$R&9Eg&8-HEZNBMn zCSpyHGpX`=Z-ZI2lvwB5CM8Wq-CA*W6WG{BdztjYUi!%LP{B_LE&+PeRMCqL57Wm3 zc^}ww!h2l3;sEoJ2drWK;|a=rv87p0aS;nk0a+?^ez!-&{616vOym%RQIlhF@6RtiOi@1rS2T z+^G=4hbgb_R(+T9jq4zCiPRwi@-`Gn4y+R>9rTN=bFJ@`$Z{S$eue4jDTlKerLHNa z+ez&<&K)}&3Lv_8Icv6IPzGZ8qn=R6!7}bs`t+CN3LT?l=lOp(1 zNTn$9j7AD@L3iZQWX$%-DJK_8s));Bjdit&t&lpWOzR*+9uLAGQ*ODKUvO$ICQ>s+ zU$8B9-a<;Mq%bQy-Uz&J5Xgv+h$|EMn@IT+Nk3_5JEZghkXxgq>Uc(4eQ4dJ83bBdWA6A2{ke&;Z zMJ1yZxbQ7}#VUpL0_QER#gTPPsi3r-Me2EM;_^{ooCw*&IK(MJEULV4!PdkFQ(6&) z1H%g|_I1v9Ym0yLwklL?|h58=@mvBFgShn+*Sw2ncg#{+5$K|W4<@R zxJt!1=nZwEj4pYfttqZK-y6-ZMNVY8-zsiy^T$~mJ@1BQy+cBP3_e~ctZCxcbqdZR zD)si)Cs$cCw2ZM{LFM|dduR3!3wD{`_BlkB>ip%J!Xo z@=V7Gs%mjADL-@q4J)TD(l$yM!rCVjmh8CpW$4D`9Eq7cgNx9JbB97i`Du zt~-Ewg-k!+q?|LzH=>Wja|of?WbYW_M*d>rX2Y6RcrhS2co$Y#QgpkB^=3Nd8=*DY zm`GdlmkxC0T+m`M4yim@oD^AS5Lv;_{erFSZDuDYoXjtflWFwp8vq#-UgAZeWk(w0XiUw~>59gfmf)bIM2U#Cks_X7$*V4`=zLSRQJn6~4v&s?vt**w(` zp!TYya28dJ&_&)(Xq1q{b?&;0K>sX%$qkjh>5xW*!%z6$Cfti*;URpiYGpF!>6irZ z;qq(UQrR?E>w~p@w6WJ)I~-)eY_Sw0yik`q(oNHnOY5K5(Mci5m1>z!wznQyFP2hr z2@jte%A2d}U@c;EW!oQ-rW({V(A0s;uM|=!tnbWB4Hl7{buoj(&dG@RNbff$q1K%A zx(>CyPNHRPTz=0YYJbIbr01%jAKZ+(uK%Sq=D)40(%gUW@GU9jf90(m)596LR!C9w zEKAlEQANNk^ors2=e;o|0M%{N9r=BQ*S?u$`rM_1$9CW2?O>YGQbp4>PBIC;XKUJO z&vXx%Nan204LCI6*B4+6UMjNb7W=Qf#)r?J^FRLmzsKMG&;JWvefu36Yon62>kjOG zXPt_iDDv0pY-|8yUnN$ye!w@TK`K4a(OJL6elP_YPIOu(;O*n)R!spiG*cTuY01#?Qy$!06@YUUOPNPLzCN$ z0OLWvu^o7vu2@JQbMJk4cH`OSZNTCM&oqlrIa~V&h_e$envz--VOr7&hYHbZDh-=@ zH^7KRITa-kGAC~*lTix5`Zb})wW&*6^Iylg9qPwlT0yPfBk%DDe7QtJ5Y?3`LIDDE z&Ec`$UAn(wljvW<=Deha>UL(EQRGPU0!JjK0AW=iMf7c16T6a;9gr$yB_;2^_dbi& zGLDtyK$TZ1g}{?*!}j(rcCC2X^f0B#g;=v*Xjv|6F1ey-6xaWIchN;VlH@8N)rJ7@ zn`E-nHrrdy=Znw&9`zX@p{qRSm^G>!FrfIa_!GioHj0SByb`*Et(c_aSV|)ENfMq*M_4II3 zzP$$CgHjSl&a)RMy!d;6pa1T^`L9tzh26aCfd*1?PTg{3N~Ht8#qao#P(#5pG^|~p z-lPNGJIBe%DLTv8-QGrN)fWHVhQhVeLz!YHsq6Lu-GJSga*+x&iFP^<%duNB;{X1AY)aYoh4PpRh4{SIaikEmG^fh-nr8U_H;0L^o z^lj7pumAkddH?w-4~ZGCJ)xp{&EX`Dc@XH zN4{;o5j`+&S9tZ9mF?8z7Zf+WBihNX5o)i&O_;@7<{Q^5j8c;@ERy2c7SEJS2Rz{R z7Gy=SroD7oboQ$AF1=RLZ*txb?(6zF)IaOQ6&{TJ_q_3Y2ZJUCMelOCq-vV*^;M1N z$6*g+B-4883h2i0y}X=;>V}<5^6rUl;Zck(iA}X?s%zRe8Az4@03ZNKL_t(6^t^N0 zj=_7h5R^>=-m$Z_bp;+IP6mvjE=#haAVHi{x3zvzZ1k{jp%*3j6qu8nb>K`Xm0Y5I5K68?)xx9WYNW=wBpx ziF9pcl$o$$T_}~HagNFu)N09&+lj^QT0V#e_9ZeDjNl8{65b zxPij>@UF>-aoqG9q-M(eocZQbQ`{@UToi7cFX!wkHPAFldROZW`fbhx*~^vvSnwNE z*!%ZXT+(K{I=A^=${rQX+ z!Kf?CGBT|(rfz{lvRfN>z%41cI6rS0JYs{OR{EHdlErEjsehdSm)k(^ls(o*|MLlB z;IEL||1t?<({$$Y&FqQ9#o!hK>N;8yL^a33W>MUHz+M$F{m$y9htDOj?KQ$=f&QOH z+#d1eXq)9^GJWPfHvNY9;0D{&b)dudl9-f|Jj;+;V`>us!>zB=^BgNv&BeOSINhWktDMZp?UoU5PrWG&*|b zWeE@ES{B=2h0tRj`KZbCv-f{C6d>%4`M=CMMr??~^;m5Wt^ViM4l*Icl|{={tM;EO z-$WRIR2zQJUu4`UIb2iG6GZIgo5s|ECA5}r23W)M^IPW5gp%==tKvOk=I(;(W%l&%arm4w`0O0Od(=I*aE>T+} z0P#!a8?9B1_cpM5WJKx5Lq~Q7rz$=SXJ=J{S+leDA`A+q(QyhUyz_tcduB8#H9>dDX?tZv6b>lP!TFlRR_h;|3v%Nh~{&s`7*$ix3 zAI)DCqn8U3KXCZ&uLw4E?pGBv>#wnCdVRZmlU>d?zv#H};!@+LivsHmXS0xR7K=Hf z?d_MCZ*IsL$=tbD=#*6z*h)pwF(sYteTyID=spxlVm`kzI{FWE(*95?!x%$dm*n{>Yp|V^d zg(S-|RF?Jd9cy4a!I##hh+K?949tzX`|DzYU#wQV`;#BDTFfIDT(x7`elVv$8{_5{ ztGu80^S6DC^+9Mq0r<9XmBV{yZ8QLvWIAVSYm5K&5C19O{MN68wUqBBkprwpuaHj= z87Blf8hNHK9!RA#^qF$j)6{h!1Ei+HON8`fQc~6pO*3PAYnx&eSbX7`GL)+oQi|Zx z{*vS7w)y7p@Q}mj&sZ(yq1e;16&1sWhDv5xIPjEW9=mW5D3!6SDkkNU(Rdn|ie7ds ztB7N8z4cUUe41$U8yw#Ibxpfc6@qu)eJ?a;TU!HQ%{tED+5>TI-EkG(&-X|Kg9BsJ z0d++ozrMb>?tA{fl5aM~P49gdc}`tb9KLwL@!@k8^EpZgv=l*TPrjUdv*}FpaLGa> z6`fK_(2BCITY<+Ee-a;sCcoTT(62H0Zi<`rb8k~q?+1t3@SHMrL(?=}anqMaxH_`0 zEU>${5iA$;m)20}>+53KI$TSw$?}|fKIicHb54&BsjCL11f$UiXKHL&4OR<%Z2@a7 ziw%G+ZWx&=Eh(!8d{~9y6W7FFSp=-#_`w6+XOvvA^W5~XcU{-o!PX|a-rwWD%hf7~ z2d+=7`hk$BaD&7mTG{_i@3G&J-86A%1IXDR{1k()iB8^9DYBG!A~eifhtxlpHpMCM z4?z4rQj9Vs_~y61O)(k;sqXm&^Z7h_GgXYnW2`Z_auwcJFK$}Zq^siQrs+yAwywj} ze5FEX4H&*TZlY*h+*yk?HQ0lL1OE75{cHaAM;~+l@he#8$b`6Tz2SrRn~2r{-i5Kg zi-2esv2f|I?w8%^KnYeU4kc7aA?c0O^E}5|%h|;RTh{ib0o{9P>R(9Q+?a2UkB(@X zfMXjKBb+hVx@@nF&T>dXc1mHLW3^n8#rLOV&;nU4R}`aB6q@Y7nn~zS0+!%bpH_vP zHcCJPik=Qm2h53%;5f?piuXSJke%HfT5{Ha6}WZ;^bUt%{3cL>--u_qszbjDYvVUe zbFTW>|4;JGwQ=*=r=RxDDaB|s!W)ArSIF^~&o?)%_WEBV*1xZ9DAJ}uVNA_xxnw+< zv^rmY4Y#-HJ+#gG4d>c*h0V{O|H65?YPS;II?i8>thuSA@5PPB^70z08#zOZUlUS~CdJr){f#%o`Qn1v z(J?!dF$X)_!L8UjtZnc%#7=Vc?Z-`~b%>jIU$0Bzmmb(_9^Q3!fWKx$f8+9f!$T^1 zW9HC_ZI<=&K#}L<#h8Eg$A8S<`CEUxiaR4PQNOuFp3|c;nESVlp1beA5ISBOuor zIi1FdR$$U7B{)612uW6UbZ4ami`9~?dYi0B;+CFl9fuLwI8D>U-&b~E;ut&D+K$Q9 zlWvew^W^i-IGN43fB*gfL(rxDwYW)2uKmgJ@c%9y64!O&gWP$;!F*$(a?P~oR{6$D zB)^z^(|;uq4VF{f%uY_Q){@0@$~li~>fqoWHw<4k-)t)Mt|Tg?Db6J@Z?t+4o=oQv z6IW8?qc)B_c%O7}yl*vfBtgBT-FC;RhD;ujw^+MhwSK$~o&iI0-)dP7SG?<%99K-b z+qjA1oSO>#{zUv`G*t5D1n$sU^8G*iGcL~0$uku?AR#ez^r`Y5U)6&OtDW8u^aRT2 zKjC`}noS3VzjWa{A{0MCtHv6~ zs$2~)NPS%#5!*W7AN%zlo~x^EuI(yr+5zKyXNH*!8soP#O%s67BC6?r6}(@f)hfaF z|MX9|n4Od78AWuwHBF6mK^53H&CsKzH}z{ws^sPMd*d4(>}w}DYajp8Yq|bfZ7n{0 zOl0BNcm0{l;D~$h;2wYU$Nz#aKL3o-Xw)XyM9Y<0BE3LG_D2i&_njZ|U>$pDX&MuS zvt3N~CJKF!e(Detz<2QbB_E{TbKaPj88<24s9wIwD8|Jg-+1do+$4(&I+j_O7JF8! zRfn62*DEMad&<>faIakNzISfio+8W0l#03|w93gkQ_&buqI4&Gr?L!dEIy@kna(ds}D!ljANn4$%rm<9Y zy?*;eY}7@ce%8KBuK{v&dN?;0UU2OyQix&E-u^xQ_i9yM@~sos;E*;B4%W})exc-j z#3Dtr+J0eNmNZq}UgxlCzrHZOiGG8(9<4K$)r#};b21%9yV3`CMdKV7wqb^2W}A&2 z*?c~yHs;pMfpvD35F)rn$08>oIue-D*>1e&Hn67FYr{=D?CbtbZztLXf^Q8M+kL5v zB8ICKO6lR0rWbzeYQlX)`=$}&RrsJyfusgSWcPw4F!zoMFj4r61XyoJwGJ88gufa@ z#bcc%&o#@{lG$vAmO6+S`mnNToMUb+r`|HN_2p@Zlp$`SzQT25Vt*@~%=I9=+k9Pn zkJcYr|NpZ0Zo!r$*LB$1nORlmoO{lF^m}@ydoYc8V2C#c1Pu#>!xRGw(?N=~K~bbd z%OvF=`@;-T){n!Mz9fbG;SbBf2>Zt`@yD+)9VAFVL0JIDGU=d55Ey`X%uLVw)qS7m zo>Py^-2TYSs;oM7&V6*>#?0W}2t;FU_dT~NYt_!3d#}A#m)vQi(=#DbyJ!?;qpv}h z!GiFWfALk2b(O73mng~-Rp~vlbcs@z$mfOUrIpCb993ER&C+vkh+F&{>n9S*yjUom z$7@$x5BQ`ntX+*8B53B0mJ;qSZt8fW7UB(gp}NXiOj%=xn|R~HoNI|BF5Xl@5HYIU zN+}_Q!ohR~TeW?|TC_3mJ(m}yQ$!E{D;*!O@SbH=S)wd8D(#*Vti~&^yo|T+ZX?UG z_NEt2d(?`$=x{(fW4V1Xtffm5Y1{OT{dRHNot}BW#2fawNtMDZ&&lH^C~ZPYzfW0> zU2Cyxss#d(k2h3S6|IOjv^4kZNTjsaM0f#GCT6DA+>dbWQ?0cV@$^%8O%wg%r~ z5rk}W3p-T-3&zA4JTjl-^4_k)&9$43Si2NA?Uv+mwJDCv*;%#eE}U+-acvIc$%nqW z*!>y}hY*tdP?hhK$2=VWnVTCM_~SqQI!43q)`6`r8ERTkZZgeki%VM@7>>ujRi$d{ z1uGpVB~)*ukdc2KEhYbjHL*YoH+yM{Jug<60mvBl7dOk|&E_WVdV$EX(YSs%!_|W* z-Vj3~xVodpP3zhEHk^yhQdB|*A}qGM*CEVH#g2E-UP})m*?a?Ybe_L+${?y%4;pks)B+SQuMxL!~zz^ z?Q_wd;<#cV!KjZi=!*R<*dIir+Fhze>)(VV$HOL{&ta@~2caIte(qH7dU4ZMAJPv#ZRoe*>rpF$9dVpXA}U| zjlo7y;e)z@Cc;c9Y^NFC91O9ilIF53!xBT>gDwR}CsKktk-zfhn|OwRA3dDn>hu8X zRRN(j$QbMhg>PEx1sxeA`fzjn%FOb_tA_`(u%32#`?T}2hANzr64x(Yh}t=}-uI^S zqDgLA!NYIJ#=T=%mN}BI*L^~(yxo|RhN}zK5+oS=hcnmOQmU~@5ls*)i^5%L#5-7Q zfi@MNa2q*MFK%|z46mOFZkETJPfz!8@!$aKMFC|rq%pWF6MTc&`DOXUV{bY|RXL7e z%z3Cui2#&R*gH5tnhijGk`)3lmR*8D!MxS_C5$%{?{$VoPoelDWt=6A zdUlj76~1*#J;_Zs4sL@Io(t>=Y!_F7NTd$D7sr)YXGMtowaR7=ybM#~b%< z-nV$u!?SDz9ch6|;ca0ZF9i%;8SfJ&z?PeK5Sv=EfUI@O5W<`eT{9jM4B#-io_agqeb+X-XEKRxnLvY)mvfLdC?9#)dxbZrm%_8Hmk~tcjfF@oa2gupIIc;9 zA;24NO3A@sFFM`&vslf2u+issS0gO4u+~+cf&_Dv*&26LsSO=RrNUp?9Pv+i3;$B$q6;&EU zoUisof6w@ARLb4i-^Wk=xGN-#5Xh?>y3)`$t~pH`e{dlI6th`fJ$CNdq9zHD zB(QOIF|PerV4#%SM50o=H5Lp;nq`nO7+Xdb1Rb9Rij(>t+_VAfs&n&MfscOZDg4!c z>#v|PwuwQ)sht0x|JU!}PrmUjT)42cfKy)5X2g=}Z+mm01w{qQ-H+TBov27TQ!0 zMmWxDT(xBeS>p|G9pEi9U;ycd4>bF#jWKOME)g+OMB54`K9tsjHK9damZ+){Qpncy zZ;Rs&B$?^Z>EV7iNIt+xx{ z=G5ESWNcLOtBk?jy?vOf@{?h<*5kPT&{bqfQvZAB(L>N$BQMLSY>g(liG<*I$>1Ev ztq`D6nvvAKmux8K3~Yz{2|s|dCuBfzzH zlDvm-~qbJ5qOlVtnIzCpV%dc;(!4sEFqbZ2s zjtmwJVc6qhy1$Qu!$VXeLBVqvOP*+6;o@W+QYmb|{T6OM@`yJHb@-@#kG!cN!`50h zwb5ZT0mM-~8Qe`0;4l8d*&rx|!JEF;{Awtk0c z#`L99*xx_EU^r@PeXvDd6wWuysfsy4v7l$vBj13Q2_d(5CM`V_ZcgM?Sz>xP#bH@t zKA%U=m$9)vaeRYf4)A7;H^+TwDjlozvsUp5S5=Ug{kf|B6*j9HH*vh#c?auL$*7PhXEVI? z+UqFF!ikS1iR1F6DXu(yRZv`A6DWZbdESc&+}A$IjJm}K)~f!oi?1*Tk?=2j4n z_|hD95*;IX`6ueziA|m|#_BSFPH=#ZL)s5-tV3i(szZg((Q0wkk3!?=n+;($D%Y2@ zrD#e?U}BVkF|j2pv4xdYSpAoC^PMOD&4D$0gJ2Ca+&^;sZ~Yo-CJIkqlaa}FEd|ht z#ol}Gf-DKx&4#C^(Q8^2vO}u|Q4FKL)``bq>~VjwI7H{euvNeoj~ztg50|B=EO=G9 zyA{9Hc1tU-PC$0MQ2AjoXk3aFv>VyiPhUy9@%~DG^`UjunZD zMr)_Qcf$~g&y?#@QE_l0tzo4EQ?zLF+!&OP%Poy5O(2+HDbKd7`6mUC;D&-XLWLEf zc`22~{;PHQ_U=cRjW37jX8!xS;MMh^ive8oj}4S;VtS2Lze>)C6qiB`onOVd zK3Kgr8hh{wys2awdm3K`TZ?ga4u0~xZM4H?3OyGS`64573zX1O-|7h3b-87gBPuta*7D(J{!Y*cQtN-%Al?6 z-tz{@wO*GQ=j5L*4`@BcGD8IIr&inu8d3_?^%Y-D{6Y*{lQb(}m{F9r7*%W+yEzWS zE*wKgEK2knh!0cCg0IL*fN)u0GQL~VP(Pk_E#ZB+|q^r?lRsNbz(7<9gzd*%5~WXoQxiLo57zqxjm&9)yM1 zoRh43(ag`se_h}Ej`rnv;scdL?S_{ie78{IG>6No@opuSy_&96jo9szY5pG%1u~0n z!?-;44}teHoTC2QUCs|$w~@FRnlh3lO}gCL2jMjXx6Qac=L@&r!Iwu!{F zyB;iK=e}D$+g#3G4>WZ*lm7Vz-VYVV*pD6ZH>=n7zPrAiWBQ`2690?bT25Zqi2AJs zToj)dJ}7(bViuF~)zjRG+fk3-b^aegfFWCqay4QmZ%~WI$q$s-6m4}9$URk z@mWDuZ&mPTKz-_;ZD&5|)Wd8QI!Md-F18>*2Efhd9jOHTLO+pWqYr9i;VhVOI`vgv z0`L{mxf#UeaNft2pmPmCOkB*FRA+wDQ`zZ@RXynjW^X?$j}*?^%tf{_gQAZt#&A{y zQ^K|@>}wJNCYDqc`g0y?YwLv>p)DnPaams@ijF{@-;EdJ8+F_3h<>R2z_s-cy(q%!*5eghu7qt+ zP0SLtWKgj8ZIKB!tNN7d8IAj^JIrnb2gtLhsGJv60x|0#B z7PWOOkR<<%>@)`-vu_WUGmqVpd=6eVbxz*zw)l!S6PDpgp5v)l@z+I`Mc4%tO@W7K z$B2Ujv@f-+3FX9>tW37F^tQtNRpEF#s{jr0cr&OAP}4VMp*ju}moO0T%f&%i5d;c! z*zAqe-gp#rl4~pF>4WIIBsfQ~l;umY=+XiA_xE5xWG?JCE`;>0^K#s%A*?c`e4#QG zjmt^;DZH#tw!zTcci*Y8kZV&9)x^I)8Mg=;C{Gl-=sKGzQMDDysPxcCoV0KnTlFu+ zJ{e)I0LhPlOZJ$G@+|mfo6t*6O*Gz4M_U$g+xBq9xStrsCO(BqTZ`s&U>w$Z$LvjH zs#uhbe959##KyhtuA^ZqeE#tjX@!YY`IxRt2%+&ePzChieoN6XAIBafjpY#MFD9L3 z%@B`G_g(M-%eag7*?_U5offOgt@pftNp%Ft@m`opf)RaO%YzR z-%8$YLn4<<{#r&fZTg9fY-~U#CMS5sl%OqsrsVaVYI7*cZy^m*nbctAJD{7n_wnh* zHR@~tkw%;3(^L;(bF;?5X;NS4P()!+NlS7p#RZ1XnlUajA!-z~TV~MUL zSUmfalNBs}Xf>@-!nca+wS>sqG#qmHzabp1=n_A0n@c2YdE=TQl(2&b4QUYT26YU6 zVitBPmx;iFML5pjTHu;EL;N)djC`Cb(nij+h5l+kl&v)vvm!A*qZPM(;y^&)BqQB6 z!I4BVucDvTQ?u(QLdz=IR`~~qjJ#o3d$_hy751(4F34y?t>4tSr6y9eS9NA4+g`~& z^y(FMM3odLX{}O^mYcas^x8|uO*kcQl@(dLua!rU`Zx~BBgK`6A zN+A^cT+KmQ!z|Y53~8MrLLGxet(>NVeKI}e_$cvDFSHmWJ>vX(#o8v#6E*YodI;tt zC)w1Cq1e}^dZnpeI4_K_AAJ$4A2t1Y$MR$1r(w1bCQ1%@fJIB(ufljJiW74!7o6e@ zsS<3UljU#hC^WC~^{0G74unkCAbBnlsVtjweX3ZB^fEs2mZf;7r}>|Fnhj0GrW6f) zM)6#JaeNDp1;yo7u}80gMRr=un4DHtp3Pay7?L0Xl20OJr3}d8ro5nv_z|oz$9ai9 z+o=h^-^gm=giA)+O%O3JeJc$dsxTVm{?y;^i$atgkuG%e5VlD%`?L_WsUy9&hhC({ zlTWXGOY6wVZ;OQezSSSHy(aUA=s^oJoFsd%lH!bS}Xxe15?fz5!|QxT@HD*iO&K` z52npavCZ;+GkH(!jhj1nmPx-|h|x8X5ItIk6hl#HK+GG?b?|EFO(`LH01AH##ALc< zC|9WyjOf;Lix0usl#1g<9(e5X20pTOab}F}wDiZ;u+=J6I1nltE|II<`}u2e}77}v?$qaS2i|& z*}Ft&5f?e}0)7w!TmWbbYgwMt-pZEM;v-)QNNm zM&uFbWC~)7qq#g~tEbY8&t6wF9|T@kN z{E}Ww2Y;Tt<9AiTVffdDwtw$YaE&B`l%i^#25ReTJN=|xKP%AvR{W$0&4;Shlmstp zNL9~+Fa#~7=r@<0%i+} zY5n#hBQnrZv?&hAyuihxeTCqhbY~1vO&tY9MuZ%0Qd4}8lm|7`3WWv(sK&#N{+G+U z$#x296@uv&T-eR@G@lVmkVlDu4DQ#w(=^=h=z9z6XX6O3&SZkc^tYXoUXyj>9G**LA=Iw95 z_~o|K&B89AJrlwUMXB!pSkDr~%h^$Bg!O<7(YrtAbKTJ{seeTjcnuTLwVrxSr-eaB zwI{Y=(g7M!HS*BLM1nOfDQ|#FVPoUmllAfvEBvVo9loRjCL!qlXViiFr&s^$BTc+ zn)F>G{qAMMV+Ak$g2yGg=u%|i-9mPAMQowcx)>v+;6+~=R=Af zm(!-;=V5uuCRBCNYe@*1i%|7#okoWTjlqfZN2JJCq%43#)z$iC5JBI=i}{Fk_fm?~ zn~pjE{hn;>ozBkJp!Y-f>)&{8>rm{k`$)eobgUhN@+byDJcAe0=#XDyZ*P*wjJuzo zK|8t8o2M1D<=glz8TyW0OaYJL)!YR8u5aJJa&*_V#hNSK3|cvu$8z>}7P2mX9Nog7 zN|hRtIdIM$YGS88mfyDwQL0;aZI7|xwle>+?=S~HvacT!WR51%*U3{Kvx2{z>}n`R z(HHr_@Vjovl)JF%jfrhVBu*E(o9ceo7S#AL==-tr^KqU1t+(%^Z7Ybt+uzVaRQIvm z{1x7$%L^VNhGaUYDc^;OOc(C_ZPh>ZZ)?jmH1AKLm2HMi|J0!f;WA4L0bJvuh7fN~ z`Y&RS4$6_fhhOYF+r<1F><1LP-j!iZLH`1*FqoYZ@@^K_w!4@p6t*(In)T}!dUyQz zU3Ku4wR1TMpoj)hMwl|pS~CQM-r`$ zMOuf@hay`nXabc0Zf8fX{8pcV0A?htK_JjJ!^q0lcUfOq<@A@M85Dci!N*_4qo1v+ znNR@3uP>)%TspKZQ8a^gVmCbZ7?ld`zU%hoo8WMBEKg5l6sinj(lUx;Bd#BqAw|!{ zM(tE-;_XQ?AJ_Cn{nG=`3=B4qVT(yFuG zt=gdClF_Nik=m+*fYX_EcvM6V)A4x4TgR-CG}cuqxjzwNvtZM?sgBL@-fhmnNQ+|G z)bXHt8B)Vy!$^MY|}N;jm-F+ZFYsM0q&Pm_Ucbp;c5S#f!gU<_S{_XzAW^6pJKw|2r*?6wmG;jRwA;LAked(=1T} zWXn#30nvQsXVTyq|NImROh!!L2&N8`;E5cON2ET<0HJdbQ{N5B}i zZ@*&3;Pm^#%XmsDA#!d9f&REk$4PK>-zok20(w$-QzI~STVgZ*8 zQMT}26v<=?YL%ptTv0h*fM_YwZR6Aw0kz5@G%R_arH!J9+u9=Yc-$|>V~H$$gX<}C zUyvJ92B*d%e9a?ic!9V9J@p*$IJ&UJ;45sfNaVnpP)lp;00+wIMvcf!f{nIIkowjL z`R7=m3YvVAtWp;Cpj%yKEdQEN69=Ioxdi-+zqu^MIo$yep{%SOAyqgt{e zL8}~%T%pAsC#`V+gtY%*8pE%oct%P#$d&TF<={vmvtv8%vpM#xhRjx<5ZkN=xF(68 zuIA?POXs;-n%sPCWyXPG2VpX700b>4bNHfb;KHUxncndjv-8x=f?X+?9bGXe> zl}v7#st4V$l4}};$GnqfQ-O8PZQC4egpOu?mW5ZOF^2ij!2#XPw6Vn-9FF!b)I|q_ zj_|1vgcKbWa>=V=;Z&HHQ$X+k!Z$QMokYF(G>`1B-tfh&<@pJ+f3mMHxtoQP1iiGn z>FT0G6`KSrWmo9)>!u-}gzou}v?_*@vRt$w+Kw9=s{`B4OD!ukkvI3$-rZO*hG~{=z8I129mS8I zBfd`zUKr&z)y0du<_fl)B!%Y*Z48%0z2^uhqMU9f?ss$+y<`Ys2pmG&IrIzaM(s{S zMg14UT9#XY-Mo*blju*fspdf`dfV;Z70-4le|#tdri94B`n~8eX8?kpn$y}fsesJHj^r7zn2ZP7HtC|s%)r~hCH z-^}lVxC5@=@4-9`u2%W%;=;;BB&t@W0Qcuk5j8eH&UvCbsw@%5_5@Pw1lIsT1tO3! z6gOe=!$i~I%k7TrwVr^ z=qF&{&l)%9oyfy?@HQQ)je?z0PrJBxg!yh4RWZzYopjsAH^?W1zO~J9K05A>3V!s{ z9dXu(OS5>aD&;3gh7%l;TsRgYx;E3|+u(|AQo95qNMiYGsl2O*;7<1`4 zdO@Yd%s#mOePx2{vC`xc=&xcyH8ce_b`fd(Pjgm$3A!K3c zVvnaMxYWu(uo3v=vgRzI7@>kxqin$tzLEIS$)h5z;6dgt+EJXvX+?kBIOX7)by(*? z3s*Lpl!EPFSjuqF(a3qNAFQr2%RQ?02tf1bxQ<>KQGVDOPS*WDNfGz1W(~<1bFcdBa)oB7*Uba00JH z6(Lpq)$#5YMCR9$dfxtKb6r8sKb121wpKZ;7}DI{XRa*S9)c4yM7q`ToHL3fK!QkO zdxrHb64VcXMr;EJG-^4oY%zKO(eSWm!m%QrGrF0!AlWUJh{rC1tJpJxE4U-HTEC8x zSYYcL{npsn_uB1&j#H2#qT~o(1U1aG3>TMTT`==cXn7wPHT4j4iljDJHTZtGG$KLr z(x%Bqf=6x2t$eBjp!NV!!W=GSPvjpnX+{QL9Czj|E%{Gk84Xs0rT`1l{@f6pf($rnq|8w~MtKEv zykXE-gL}xi;o;+prPmja2ey%=5(VuC!jZ%Y9Dtq52_n&B#=NgxVgZLLPN6ZC3GX7d zBt{gbKG~oN6A=9d8Agf*CCmnVJ&7_r`?>jwGa+2D05iqmz*O`2Uxy-zYn9eA(7sOg zalUP+1`t&g${u?^VuaZ+4b2ae0wafHe|b%-gUlHDa3mG@T!*2}4AREPoO^-gSKdX# zYEhDKvYN~q&bvy;#{WBU7j-$>+!Ld-9=Z8I@87dn)4 zi2ulx`2DG(r1PFtp z(d_l?a!e+Yc7hI;DZ7ptte$a?2zYY8oyqPt-?RCsm`GUa%mo_FmA^%hrOpb)6g2(? zw6iLPEW)9~wsr3^KguMkx_xi~WilEv3T4eKKf;N8GeQDr_KhD%ewYv!Q(SBeBpwzH z)$*G~^B@QZ1k`bzjJg;)0ZrG37+;+mcQYdL!u4S+7(z0Dr)`7J1^gVG<-%`F@X9W* z16gSvk8cqN5oSeRvZAi)a|K!BZVZ+<;-s$FXQU+GSdfwSb)95IYSv`5x9g`6eDt?; z9yeW9bpL2?zpI6$Vt+$Y7?dlZfda%_EU;+4CDjb0^(2Gl3EYqj>=J7|qP)dZnwd6Q z+#%iK++GTk#mF&HW6H=&i9b@j$M#?u(L|bo_W{Zqt(UhNLL9de6`TM#s;?Kle$;SU zis<}%8{_~V_=wWL((DGqz!E&`5SJ{1f3Rr z^89=RC1P0L>|HnB-F*eqqCB=fS9%HHroLtsK!T<LAp3Y0eq>0&zUFBBICg|4!KG_Y%0eGd-WRzmv$77$m^+rwv z2>b2t;FU=|@wM5|DLb<)@7`TXokgfh27o*ElD~~v%7=eLfG@+{^2VQB+&>#X*I($B-V0^`wkE zMnh=;d3lfrq;{y)ftE`xyHEZZ?6sSifzBU;fbUgX1%kioS6M5Hd> zg$UmAdRf?fjtsWr$f>!$u zIZU^*h?@@0?G4dGd29|1#skIAZXJUAVy!;gH^D>4TbrbAW`6t2LFdcw6Q|4d!E&U~ zBz{}{u!!N~a1a(EkPwvL2M`>r&VU(N!(ra;zFDjONTu{W|?yycPz?l%WZ#MjUgd`!(}D5&!l>Q8)4&ZjQ5}Frv&erQxf;z+;GD{)0hEy)bLY*-y2y6$jCJI|>Cb=^rlEdj zoMbs_d(%NOY8O-Di&4YK6rPERzwCW?2jXgT19+5skaDGxN;{v| z$EbsHFb}G?i~kl6G7c;+3*W8#3BQGJEQHVX`O6L!e)&17{&2^S3?W|EIUaF5*H0f! z_^vg-;%Tme$?fgNV(5MX?YHjMNym5`b}OpzmyB5OJHPIXyh4F+j)vR{aQU(DEI2oi zzT8P{26P`Ev;7Kdbro5s(4@UFA;;jq>cB#_Ni7}YipCl8gY2Jd_}L5#OB`OB#M&sY zhvVkV?%MnLn`OD&p8v)OS`it4r&!tql(%*aMaX z_zqD!{NGxa8~BKdZ%≻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 CSR0A} literal 0 HcmV?d00001 diff --git a/nullius/migrations/nullius_2.0.0.lua b/nullius/migrations/nullius_2.0.0.lua index 9425392..f0290bb 100644 --- a/nullius/migrations/nullius_2.0.0.lua +++ b/nullius/migrations/nullius_2.0.0.lua @@ -29,4 +29,71 @@ for _, surface in pairs(game.surfaces) do end end end +end + +local mirrorBuildings = { + "chimney-1", + "chimney-2", + "chemical-plant-1", + "chemical-plant-2", + "chemical-plant-3", + "distillery-1", + "distillery-2", + "distillery-3", + "hydro-plant-1", + "hydro-plant-2", + "hydro-plant-3", + "surge-electrolyzer-1", + "surge-electrolyzer-2", + "surge-electrolyzer-3", + "priority-electrolyzer-1", + "priority-electrolyzer-2", + "priority-electrolyzer-3", + "heat-exchanger-1", + "heat-exchanger-2", + "heat-exchanger-3", + "boiler-1", + "boiler-2", + "combustion-chamber-1", + "combustion-chamber-2", + "combustion-chamber-3", + + "nanofabricator-1", --different pattern + "nanofabricator-2", + "flotation-cell-1", + "flotation-cell-2", + "flotation-cell-3" +} + +for _, surface in pairs(game.surfaces) do + for _, baseName in pairs(mirrorBuildings) do + local mirrorName = "nullius-mirror-"..baseName + if prototypes.entity[mirrorName] then + for _, entity in pairs(surface.find_entities_filtered{name = mirrorName}) do + local position = entity.position + local direction = entity.direction + local force = entity.force + --entity.destroy({ raise_destroy = true }) + + local new = surface.create_entity({ + name = "nullius-"..baseName, + position = position, + force = force, + direction = direction, + fast_replace = true, + raise_built = true, + }) + + new.mirroring = true + + local name = string.sub(baseName,1,14) + if name == "nanofabricator" or name == "flotation-cell" then + new.rotate() + if name == "nanofabricator" then + new.rotate() + end + end + end + end + end end \ No newline at end of file diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index 9d22d69..b7ec1e1 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -156,6 +156,129 @@ data:extend({ } } }, + graphics_set_flipped = { + animation = { + north = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + frame_count = 1, + width = 142, + height = 429, + shift = {0.06, -1.62}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + frame_count = 1, + shift = {1.68, 0.37}, + scale = 0.5 * 0.85 + } + } + }, + east = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + width = 142, + height = 429, + x = 142, + frame_count = 1, + shift = {-0.1, -1.67}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 382, + frame_count = 1, + shift = {1.52, 0.32}, + scale = 0.5 * 0.85 + } + } + }, + south = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + width = 142, + height = 429, + x = 284, + frame_count = 1, + shift = {-0.06, -1.83}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 764, + frame_count = 1, + shift = {1.56, 0.16}, + scale = 0.5 * 0.85 + } + } + }, + west = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + width = 142, + height = 429, + x = 426, + frame_count = 1, + shift = {0.1, -1.78}, + scale = 0.5 * 0.85 + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 1146, + frame_count = 1, + shift = {1.72, 0.21}, + scale = 0.5 * 0.85 + } + } + } + }, + + working_visualisations = { + { + apply_recipe_tint = "primary", + constant_speed = true, + render_layer = "wires", + north_position = {-0.09, -5.45}, + east_position = {-0.29, -5.59}, + south_position = {-0.1, -5.8}, + west_position = {0.09, -5.61}, + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", + frame_count = 47, + line_length = 16, + width = 90, + height = 188, + scale = 0.6, + animation_speed = 0.25 + }, + } + } + }, impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, @@ -312,6 +435,127 @@ data:extend({ } } }, + graphics_set_flipped = { + animation = { + north = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + frame_count = 1, + width = 142, + height = 429, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + east = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + width = 142, + height = 429, + x = 142, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 382, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + south = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + width = 142, + height = 429, + x = 284, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 764, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + west = { + layers = { + { + filename = "__nullius__/graphics/entity/chimney/flare-stack-flipped.png", + priority = "extra-high", + width = 142, + height = 429, + x = 426, + frame_count = 1, + shift = util.by_pixel(0, -65), + scale = 0.5, + }, + { + draw_as_shadow = true, + filename = "__angelspetrochemgraphics__/graphics/entity/flare-stack/flare-stack-shadow.png", + priority = "extra-high", + width = 382, + height = 135, + x = 1146, + frame_count = 1, + shift = util.by_pixel(61, 10), + scale = 0.5, + }, + }, + }, + }, + working_visualisations = { + { + apply_recipe_tint = "primary", + constant_speed = true, + render_layer = "wires", + north_position = {-0.22, -6.82}, + east_position = {-0.22, -6.95}, + south_position = {-0.03, -6.95}, + west_position = {-0.03, -6.82}, + animation = { + filename = BASEENTITY .. "chemical-plant/chemical-plant-smoke-outer.png", + frame_count = 47, + line_length = 16, + width = 90, + height = 188, + scale = 0.8 + } + } + } + }, impact_category = "metal", repair_sound = { filename = "__base__/sound/manual-repair-simple.ogg" }, open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 }, @@ -384,6 +628,8 @@ nc3.graphics_set.working_visualisations[1] = scale_image(nc3.graphics_set.workin nc3.graphics_set.working_visualisations[1].north_position = nc3.graphics_set.working_visualisations[1].south_position nc3.graphics_set.working_visualisations[1].east_position = nc3.graphics_set.working_visualisations[1].south_position nc3.graphics_set.working_visualisations[1].west_position = nc3.graphics_set.working_visualisations[1].south_position +nc3.graphics_set_flipped = nil +nc3.forced_symmetry = nil data:extend({ nmc1, From aaa273c8c390991b1638365fa505daaf8b4f5e7b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 20:24:30 +0200 Subject: [PATCH 134/236] Removed chirality recipe, mirror custom input, most mirroring related functions and moved all the mirror entities to a separate file --- nullius/data-final-fixes.lua | 1 + nullius/legacyMirror.lua | 1114 +++++++++++++++++++++++ nullius/prototypes/category.lua | 12 - nullius/prototypes/checkpoint.lua | 74 +- nullius/prototypes/entity/assembler.lua | 86 -- nullius/prototypes/entity/chemistry.lua | 698 -------------- nullius/prototypes/entity/energy.lua | 146 +-- nullius/prototypes/entity/furnace.lua | 144 --- nullius/prototypes/entity/vent.lua | 38 - nullius/prototypes/inputs.lua | 7 - nullius/prototypes/technology.lua | 120 +-- nullius/scripts/build.lua | 4 +- nullius/scripts/checkpoint.lua | 6 +- nullius/scripts/mirror.lua | 154 ++-- nullius/scripts/turbine.lua | 6 +- 15 files changed, 1301 insertions(+), 1309 deletions(-) create mode 100644 nullius/legacyMirror.lua diff --git a/nullius/data-final-fixes.lua b/nullius/data-final-fixes.lua index 66c1c9d..1851400 100644 --- a/nullius/data-final-fixes.lua +++ b/nullius/data-final-fixes.lua @@ -3,6 +3,7 @@ require("prototypes.override_final_only") require("prototypes.override_mod_final") require("prototypes.item.module_limitation") require("prototypes.item.box_icons") +require("legacyMirror") for _, recipe in pairs(data.raw.recipe) do if recipe.GCKI_ignore ~= nil then diff --git a/nullius/legacyMirror.lua b/nullius/legacyMirror.lua new file mode 100644 index 0000000..8d1ae7e --- /dev/null +++ b/nullius/legacyMirror.lua @@ -0,0 +1,1114 @@ +local ICONPATH = "__nullius__/graphics/icons/" +local ENTITYPATH = "__nullius__/graphics/entity/" +local BASEENTITY = "__base__/graphics/entity/" + +data:extend{ + { + type = "item-subgroup", + name = "unmirror-1", + group = "chemistry", + order = "md" + }, + { + type = "item-subgroup", + name = "unmirror-2", + group = "chemistry", + order = "me" + }, + { + type = "assembling-machine", + name = "nullius-mirror-nanofabricator-2", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-nanofabricator-2"}}, + icons = { + data.raw.item["nullius-nanofabricator-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + order = data.raw.item["nullius-nanofabricator-2"].order .. "c", + localised_description = {"entity-description.nullius-nanofabricator"}, + flags = {"placeable-neutral", "placeable-player", "player-creation"}, + minable = {mining_time = 2.5, result = "nullius-nanofabricator-2"}, + placeable_by = {item = "nullius-nanofabricator-2", count = 1}, + max_health = 400, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + resistances = { { type = "impact", decrease = 50, percent = 80 } }, + collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, + selection_box = {{-2, -2}, {2, 2}}, + module_slots = 4, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + crafting_categories = {"nanotechnology"}, + fast_replaceable_group = "nanofabricator", + crafting_speed = 2, + energy_source = data.raw["assembling-machine"]["nullius-nanofabricator-2"].energy_source, + energy_usage = "940kW", + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-nanofabricator-2"].graphics_set.animation, + }, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, + fluid_boxes = { + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"] + ["nullius-nanofabricator-1"].fluid_boxes[1].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} + }, + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"] + ["nullius-nanofabricator-1"].fluid_boxes[2].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-0.5, -1.5}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"] + ["nullius-nanofabricator-1"].fluid_boxes[3].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_picture = data.raw["assembling-machine"] + ["nullius-nanofabricator-1"].fluid_boxes[4].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} + }, + }, + fluid_boxes_off_when_no_fluid_recipe = true, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = data.raw["assembling-machine"]["nullius-nanofabricator-2"].circuit_connector + }, + { + type = "assembling-machine", + name = "nullius-mirror-hydro-plant-2", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-hydro-plant-2"}}, + icons = { + data.raw.item["nullius-hydro-plant-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-hydro-plant"}, + flags = {"placeable-neutral", "player-creation"}, + minable = {mining_time = 1.5, result = "nullius-hydro-plant-2"}, + placeable_by = {item = "nullius-hydro-plant-2", count = 1}, + max_health = 400, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, + selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, + crafting_categories = {"nullius-water-treatment"}, + crafting_speed = 2, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.05, drain="20kW"}, + energy_usage = "480kW", + ingredient_count = 4, + resistances = data.raw["assembling-machine"]["nullius-hydro-plant-2"].resistances, + module_slots = 2, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + fast_replaceable_group = "hydro-plant", + next_upgrade = "nullius-mirror-hydro-plant-3", + graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_sound, + + fluid_boxes = { + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} + }, + } + }, + + { + type = "assembling-machine", + name = "nullius-mirror-hydro-plant-3", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-hydro-plant-3"}}, + icons = { + data.raw.item["nullius-hydro-plant-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-hydro-plant"}, + flags = {"placeable-neutral", "player-creation"}, + minable = {mining_time = 2, result = "nullius-hydro-plant-3"}, + placeable_by = {item = "nullius-hydro-plant-3", count = 1}, + max_health = 500, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, + selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, + crafting_categories = {"nullius-water-treatment"}, + crafting_speed = 4, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.1, drain="40kW"}, + energy_usage = "960kW", + ingredient_count = 6, + resistances = { + { type = "impact", decrease = 100, percent = 90 }, + { type = "fire", percent = 75 } + }, + module_slots = 3, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + fast_replaceable_group = "hydro-plant", + graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_sound, + + fluid_boxes = { + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} + }, + }, + pipe_covers = pipecoverspictures(), + }, + { + type = "assembling-machine", + name = "nullius-mirror-distillery-2", + order = "z-nullius-ccc", + icons = { + data.raw.item["nullius-distillery-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-distillery"}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 1.8, result = "nullius-distillery-2"}, + placeable_by = {item = "nullius-distillery-2", count = 1}, + max_health = 500, + dying_explosion = "medium-explosion", + corpse = "oil-refinery-remnants", + collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, + selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, + + scale_entity_info_icon = true, + crafting_categories = {"distillation"}, + crafting_speed = 2, + energy_source = data.raw["assembling-machine"]["nullius-distillery-2"].energy_source, + energy_usage = "550kW", + resistances = data.raw["assembling-machine"]["nullius-distillery-2"].resistances, + working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, + impact_category = "metal", + module_slots = 2, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + fast_replaceable_group = "distillery", + next_upgrade = "nullius-mirror-distillery-3", + graphics_set = data.raw["assembling-machine"]["nullius-distillery-2"].graphics_set, + + fluid_boxes = { + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} + }, + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} + } + } + }, + + { + type = "assembling-machine", + name = "nullius-mirror-distillery-3", + order = "z-nullius-cdc", + icons = { + data.raw.item["nullius-distillery-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-distillery"}, + flags = {"placeable-neutral", "player-creation"}, + minable = {mining_time = 2.4, result = "nullius-distillery-3"}, + placeable_by = {item = "nullius-distillery-3", count = 1}, + max_health = 600, + dying_explosion = "medium-explosion", + corpse = "oil-refinery-remnants", + collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, + selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, + + scale_entity_info_icon = true, + crafting_categories = {"distillation"}, + crafting_speed = 4, + energy_source = { + type = "electric", + usage_priority = "secondary-input", + emissions_per_minute = {pollution = 24}, + drain = "100kW" + }, + energy_usage = "1100kW", + + resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, + working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, + impact_category = "metal", + module_slots = 3, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + fast_replaceable_group = "distillery", + graphics_set = { + animation = data.raw["assembling-machine"]["oil-refinery"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].graphics_set.working_visualisations, + }, + + fluid_boxes = { + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} + }, + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} + } + } + }, + { + type = "assembling-machine", + name = "nullius-mirror-surge-electrolyzer-2", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-surge-electrolyzer-2"}}, + icons = { + { + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", + icon_size = 32, + tint = {0.8, 0.9, 1} + }, + { + icon = ICONPATH .. "flip1.png", + icon_size = 64 + } + }, + order = data.raw.item["nullius-electrolyzer-2"].order .. "e", + localised_description = {"entity-description.nullius-surge", + {"entity-description.nullius-electrolyzer"}}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, + placeable_by = {item = "nullius-electrolyzer-2", count = 1}, + fast_replaceable_group = "electrolyzer", + next_upgrade = "nullius-mirror-surge-electrolyzer-3", + max_health = 400, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, + selection_box = {{-2, -2}, {2, 2}}, + crafting_categories = {"nullius-electrolysis"}, + crafting_speed = 2, + energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_source, + energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_usage, + resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].resistances, + graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].graphics_set, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, + fluid_boxes = { + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, -1.5}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} + } + } + }, +} + +local mnf1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-nanofabricator-1"]) +mnf1.name = "nullius-mirror-nanofabricator-1" +mnf1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mnf1.order = data.raw.item["nullius-nanofabricator-1"].order .. "c" +mnf1.placeable_by = {item = "nullius-nanofabricator-1", count = 1} +mnf1.next_upgrade = "nullius-mirror-nanofabricator-2" +mnf1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-nanofabricator-1"}} +mnf1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} +mnf1.fluid_boxes[2].pipe_connections[1].position = {-0.5, -1.5} +mnf1.fluid_boxes[3].pipe_connections[1].position = {0.5, 1.5} +mnf1.fluid_boxes[4].pipe_connections[1].position = {1.5, -0.5} + +local mhp1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-hydro-plant-1"]) +mhp1.name = "nullius-mirror-hydro-plant-1" +mhp1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mhp1.placeable_by = {item = "nullius-hydro-plant-1", count = 1} +mhp1.next_upgrade = "nullius-mirror-hydro-plant-2" +mhp1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-hydro-plant-1"}} +mhp1.fluid_boxes[1].pipe_connections[1].position = {1, -2} +mhp1.fluid_boxes[2].pipe_connections[1].position = {-1, -2} +mhp1.fluid_boxes[3].pipe_connections[1].position = {-1, 2} +mhp1.fluid_boxes[4].pipe_connections[1].position = {1, 2} + +local md1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-distillery-1"]) +md1.name = "nullius-mirror-distillery-1" +md1.order = "z-nullius-cbc" +md1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +md1.placeable_by = {item = "nullius-distillery-1", count = 1} +md1.next_upgrade = "nullius-mirror-distillery-2" +md1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-distillery-1"}} +md1.fluid_boxes[1].pipe_connections[1].position = {1, 2} +md1.fluid_boxes[2].pipe_connections[1].position = {-1, 2} +md1.fluid_boxes[3].pipe_connections[1].position = {2, -2} +md1.fluid_boxes[5].pipe_connections[1].position = {-2, -2} + +local mse1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"]) +mse1.name = "nullius-mirror-surge-electrolyzer-1" +mse1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mse1.order = data.raw.item["nullius-electrolyzer-1"].order .. "e" +mse1.placeable_by = {item = "nullius-electrolyzer-1", count = 1} +mse1.next_upgrade = "nullius-mirror-surge-electrolyzer-2" +mse1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-surge-electrolyzer-1"}} +mse1.fluid_boxes[1].pipe_connections[1].position = {1.5, -1.5} +mse1.fluid_boxes[2].pipe_connections[1].position = {1.5, 1.5} +mse1.fluid_boxes[3].pipe_connections[1].position = {-1.5, -1.5} +mse1.fluid_boxes[4].pipe_connections[1].position = {-1.5, 1.5} + +local mpe1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-priority-electrolyzer-1"]) +mpe1.name = "nullius-mirror-priority-electrolyzer-1" +mpe1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mpe1.order = data.raw.item["nullius-electrolyzer-1"].order .. "c" +mpe1.placeable_by = {item = "nullius-electrolyzer-1", count = 1} +mpe1.next_upgrade = "nullius-mirror-priority-electrolyzer-2" +mpe1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-priority-electrolyzer-1"}} +mpe1.fluid_boxes = mse1.fluid_boxes + +data:extend{ + { + type = "assembling-machine", + name = "nullius-mirror-priority-electrolyzer-2", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-priority-electrolyzer-2"}}, + icons = { + { + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", + icon_size = 32, + tint = {0.8, 0.76, 0.85} + }, + { + icon = ICONPATH .. "flip1.png", + icon_size = 64 + } + }, + order = data.raw.item["nullius-electrolyzer-2"].order .. "c", + localised_description = {"entity-description.nullius-priority", + {"entity-description.nullius-electrolyzer"}}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, + placeable_by = {item = "nullius-electrolyzer-2", count = 1}, + fast_replaceable_group = "electrolyzer", + next_upgrade = "nullius-mirror-priority-electrolyzer-3", + max_health = 400, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, + selection_box = {{-2, -2}, {2, 2}}, + crafting_categories = {"nullius-electrolysis"}, + crafting_speed = 1.5, + energy_source = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_source, + energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_usage, + resistances = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].resistances, + graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].graphics_set, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, + fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-2"].fluid_boxes + }, + { + type = "assembling-machine", + name = "nullius-mirror-surge-electrolyzer-3", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-surge-electrolyzer-3"}}, + icons = { + { + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", + icon_size = 32 + }, + { + icon = ICONPATH .. "flip1.png", + icon_size = 64 + } + }, + order = data.raw.item["nullius-electrolyzer-3"].order .. "e", + localised_description = {"entity-description.nullius-surge", + {"entity-description.nullius-electrolyzer"}}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, + placeable_by = {item = "nullius-electrolyzer-3", count = 1}, + fast_replaceable_group = "electrolyzer", + max_health = 500, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, + selection_box = {{-2, -2}, {2, 2}}, + crafting_categories = {"nullius-electrolysis"}, + crafting_speed = 4, + energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_usage, + energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_source, + resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, + graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].graphics_set, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, + fluid_boxes = { + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1.5, -1.5}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.north }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} + } + } + }, +} +data:extend{ + { + type = "assembling-machine", + name = "nullius-mirror-priority-electrolyzer-3", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-priority-electrolyzer-3"}}, + icons = { + { + icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", + icon_size = 32, + tint = {1, 0.85, 0.85} + }, + { + icon = ICONPATH .. "flip1.png", + icon_size = 64 + } + }, + order = data.raw.item["nullius-electrolyzer-3"].order .. "c", + localised_description = {"entity-description.nullius-priority", + {"entity-description.nullius-electrolyzer"}}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, + placeable_by = {item = "nullius-electrolyzer-3", count = 1}, + fast_replaceable_group = "electrolyzer", + max_health = 500, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, + selection_box = {{-2, -2}, {2, 2}}, + crafting_categories = {"nullius-electrolysis"}, + crafting_speed = 4, + energy_source = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].energy_source, + energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].energy_usage, + resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, + fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-3"].fluid_boxes, + graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].graphics_set, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound + }, + { + type = "assembling-machine", + name = "nullius-mirror-chemical-plant-2", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-chemical-plant-2"}}, + order = "z-nullius-bcc", + icons = { + data.raw.item["nullius-chemical-plant-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-chemical-plant"}, + flags = {"placeable-neutral","placeable-player", "player-creation"}, + minable = { mining_time = 1.6, result = "nullius-chemical-plant-2"}, + placeable_by = {item = "nullius-chemical-plant-2", count = 1}, + max_health = 400, + corpse = "chemical-plant-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, + selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + + module_slots = 2, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + fast_replaceable_group = "chemical-plant", + next_upgrade = "nullius-mirror-chemical-plant-3", + + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-chemical-plant-2"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, + }, + resistances = data.raw["assembling-machine"]["nullius-chemical-plant-2"].resistances, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-chemical-plant-2"].working_sound, + crafting_speed = 2, + energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-2"].energy_source, + energy_usage = "384kW", + crafting_categories = {"basic-chemistry"}, + + fluid_boxes = { + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = { + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} + } + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} + } + } + }, + { + type = "assembling-machine", + name = "nullius-mirror-chemical-plant-3", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-chemical-plant-3"}}, + order = "z-nullius-bdc", + icons = { + data.raw.item["nullius-chemical-plant-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-chemical-plant"}, + flags = {"placeable-neutral","placeable-player", "player-creation"}, + minable = { mining_time = 2, result = "nullius-chemical-plant-3"}, + placeable_by = {item = "nullius-chemical-plant-3", count = 1}, + max_health = 500, + corpse = "chemical-plant-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, + selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + + module_slots = 3, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + fast_replaceable_group = "chemical-plant", + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-chemical-plant-3"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, + }, + resistances = data.raw["assembling-machine"]["nullius-chemical-plant-3"].resistances, + energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-3"].energy_source, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["chemical-plant"].working_sound, + crafting_speed = 4, + energy_usage = "760kW", + crafting_categories = {"basic-chemistry"}, + fluid_boxes = { + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} + }, + { + production_type = "input", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = { + {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, + {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} + } + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} + } + } + } +} + +local mcp1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-chemical-plant-1"]) +mcp1.name = "nullius-mirror-chemical-plant-1" +mcp1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mcp1.order = "z-nullius-bbc" +mcp1.placeable_by = {item = "nullius-chemical-plant-1", count = 1} +mcp1.next_upgrade = "nullius-mirror-chemical-plant-2" +mcp1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-chemical-plant-1"}} +mcp1.fluid_boxes[1].pipe_connections[1].position = {1, -1} +mcp1.fluid_boxes[2].pipe_connections[1].position = {-1, -1} +mcp1.fluid_boxes[4].pipe_connections[1].position = {1, 1} +mcp1.fluid_boxes[5].pipe_connections[1].position = {-1, 1} + +local mcc1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-combustion-chamber-1"]) +mcc1.name = "nullius-mirror-combustion-chamber-1" +mcc1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mcc1.placeable_by = {item = "nullius-combustion-chamber-1", count = 1} +mcc1.next_upgrade = "nullius-mirror-combustion-chamber-2" +mcc1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-combustion-chamber-1"}} +mcc1.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +mcc1.fluid_boxes[2].pipe_connections[1].position = {-1, 0.5} + +data:extend{ + { + type = "assembling-machine", + name = "nullius-mirror-combustion-chamber-2", + icons = { + data.raw.item["nullius-combustion-chamber-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-combustion-chamber"}, + flags = {"placeable-neutral", "player-creation"}, + minable = {mining_time = 0.9, result = "nullius-combustion-chamber-2"}, + placeable_by = {item = "nullius-combustion-chamber-2", count = 1}, + crafting_categories = { "combustion" }, + crafting_speed = 2.5, + base_productivity = 0.02, + max_health = 300, + corpse = "boiler-remnants", + impact_category = "metal", + resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, + fast_replaceable_group = "combustion-chamber", + next_upgrade = "nullius-mirror-combustion-chamber-3", + collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, + selection_box = {{-1.5, -1}, {1.5, 1}}, + energy_usage = "1kW", + energy_source = { type = "void" }, + working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, + graphics_set = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].graphics_set, + + fluid_boxes = { + { + volume = 500, + pipe_covers = pipecoverspictures(), + pipe_connections = {{flow_direction = "input", position = {1, 0.5}, direction = defines.direction.east }}, + production_type = "input" + }, + { + volume = 500, + pipe_covers = pipecoverspictures(), + pipe_connections = {{flow_direction = "input", position = {-1, 0.5}, direction = defines.direction.west }}, + production_type = "input" + }, + { + volume = 500, + pipe_covers = pipecoverspictures(), + pipe_connections = {{flow_direction = "output", position = {0, -0.5}, direction = defines.direction.north }}, + production_type = "output" + }, + { + volume = 500, + pipe_covers = pipecoverspictures(), + pipe_connections = {{flow_direction = "output", position = {0, 0.5}, direction = defines.direction.south }}, + production_type = "output" + } + } + }, +} + +data:extend{ + { + type = "assembling-machine", + name = "nullius-mirror-combustion-chamber-3", + icons = { + data.raw.item["nullius-combustion-chamber-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-combustion-chamber"}, + flags = {"placeable-neutral", "player-creation"}, + minable = {mining_time = 1.2, result = "nullius-combustion-chamber-3"}, + placeable_by = {item = "nullius-combustion-chamber-3", count = 1}, + crafting_categories = { "combustion" }, + crafting_speed = 6, + base_productivity = 0.04, + max_health = 400, + corpse = "boiler-remnants", + impact_category = "metal", + resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, + fast_replaceable_group = "combustion-chamber", + collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, + selection_box = {{-1.5, -1}, {1.5, 1}}, + fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-combustion-chamber-2"].fluid_boxes, + energy_usage = "1kW", + energy_source = { type = "void" }, + working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, + graphics_set = data.raw["assembling-machine"]["nullius-combustion-chamber-3"].graphics_set + }, +} + +local ex1m = table.deepcopy(data.raw["assembling-machine"]["nullius-heat-exchanger-1"]) +ex1m.name = "nullius-mirror-heat-exchanger-1" +ex1m.localised_name = {"entity-name.nullius-mirrored", + {"", {"entity-name.heat-exchanger"}, " ", tostring(1)}} +ex1m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +ex1m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} +ex1m.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +ex1m.placeable_by = {item = "nullius-heat-exchanger-1", count = 1} +ex1m.next_upgrade = "nullius-mirror-heat-exchanger-2" +local ex2m = table.deepcopy(data.raw["assembling-machine"]["nullius-heat-exchanger-1"]) +ex2m.name = "nullius-mirror-heat-exchanger-2" +ex2m.localised_name = {"entity-name.nullius-mirrored", + {"", {"entity-name.heat-exchanger"}, " ", tostring(2)}} +ex2m.icons[2] = ex1m.icons[2] +ex2m.placeable_by = {item = "nullius-heat-exchanger-2", count = 1} +ex2m.next_upgrade = "nullius-mirror-heat-exchanger-3" +ex2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +ex2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} + +local ex3m = util.table.deepcopy(data.raw["assembling-machine"]["nullius-heat-exchanger-1"]) +ex3m.name = "nullius-mirror-heat-exchanger-3" +ex3m.localised_name = {"entity-name.nullius-mirrored", + {"", {"entity-name.heat-exchanger"}, " ", tostring(3)}} +ex3m.icons[2] = ex1m.icons[2] +ex3m.placeable_by = {item = "nullius-heat-exchanger-3", count = 1} +ex3m.next_upgrade = nil +ex3m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +ex3m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} + +local boilm = util.table.deepcopy(data.raw["assembling-machine"]["nullius-boiler-1"]) +boilm.name = "nullius-mirror-boiler-1" +boilm.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", tostring(1)}} +boilm.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +boilm.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} +boilm.icons[2] = ex1m.icons[2] +boilm.placeable_by = {item = "nullius-boiler-1", count = 1} +boilm.next_upgrade = "nullius-mirror-boiler-2" + +local boil2m = util.table.deepcopy(data.raw["assembling-machine"]["nullius-boiler-2"]) +boil2m.name = "nullius-mirror-boiler-2" +boil2m.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", tostring(2)}} +boil2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} +boil2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} +boil2m.icons[2] = boilm.icons[2] +boil2m.placeable_by = {item = "nullius-boiler-2", count = 1} +boil2m.next_upgrade = nil + +local mfc1 = util.table.deepcopy( + data.raw["assembling-machine"]["nullius-flotation-cell-1"]) +mfc1.name = "nullius-mirror-flotation-cell-1" +mfc1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } +mfc1.placeable_by = {item = "nullius-flotation-cell-1", count = 1} +mfc1.next_upgrade = "nullius-mirror-flotation-cell-2" +mfc1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-flotation-cell-1"}} +mfc1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} +mfc1.fluid_boxes[2].pipe_connections[1].position = {0.5, 1.5} +mfc1.fluid_boxes[3].pipe_connections[1].position = {1.5, -0.5} +mfc1.fluid_boxes[4].pipe_connections[1].position = {-0.5, -1.5} + +data:extend({ + { + type = "assembling-machine", + name = "nullius-mirror-flotation-cell-2", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-flotation-cell-2"}}, + icons = { + data.raw.item["nullius-flotation-cell-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-flotation-cell"}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 1.5, result = "nullius-flotation-cell-2"}, + placeable_by = {item = "nullius-flotation-cell-2", count = 1}, + fast_replaceable_group = "flotation-cell", + next_upgrade = "nullius-mirror-flotation-cell-3", + max_health = 400, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, + selection_box = {{-2, -2}, {2, 2}}, + crafting_categories = {"ore-flotation"}, + crafting_speed = 2, + energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-2"].energy_source, + energy_usage = "385kW", + resistances = data.raw["assembling-machine"]["nullius-flotation-cell-2"].resistances, + module_slots = 2, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + graphics_set = { + animation = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.animation, + working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, + }, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-flotation-cell-1"].working_sound, + + fluid_boxes = { + { + production_type = "input", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} + }, + { + production_type = "input", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} + }, + { + production_type = "output", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.5}, direction = defines.direction.north }} + } + } + }, + + { + type = "assembling-machine", + name = "nullius-mirror-flotation-cell-3", + localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-flotation-cell-3"}}, + icons = { + data.raw.item["nullius-flotation-cell-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, + localised_description = {"entity-description.nullius-flotation-cell"}, + flags = {"placeable-neutral","player-creation"}, + minable = {mining_time = 2, result = "nullius-flotation-cell-3"}, + placeable_by = {item = "nullius-flotation-cell-3", count = 1}, + fast_replaceable_group = "flotation-cell", + max_health = 500, + corpse = "big-remnants", + dying_explosion = "medium-explosion", + collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, + selection_box = {{-2, -2}, {2, 2}}, + crafting_categories = {"ore-flotation"}, + crafting_speed = 4, + energy_usage = "770kW", + module_slots = 3, + allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + graphics_set = data.raw["assembling-machine"]["nullius-flotation-cell-3"].graphics_set, + energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, + resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, + impact_category = "metal", + working_sound = data.raw["assembling-machine"]["nullius-flotation-cell-1"].working_sound, + + fluid_boxes = { + { + production_type = "input", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} + }, + { + production_type = "input", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} + }, + { + production_type = "output", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} + }, + { + production_type = "output", + pipe_picture = floatpipepics, + pipe_covers = pipecoverspictures(), + volume = 500, + pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.5}, direction = defines.direction.north }} + } + } + } +}) + +local nmc1 = util.table.deepcopy(data.raw.furnace["nullius-chimney-1"]) +nmc1.name = "nullius-mirror-chimney-1" +table.insert(nmc1.icons,{ icon = "__nullius__/graphics/icons/flip1.png", icon_size = 64 }) +nmc1.placeable_by = {item = "nullius-chimney-1", count = 1} +nmc1.next_upgrade = "nullius-mirror-chimney-2" +nmc1.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-chimney-1"}} +nmc1.fluid_boxes[1].pipe_connections[1].position = {-0.5, 0.5} +nmc1.graphics_set.animation.north = util.table.deepcopy(nmc1.graphics_set.animation.south) +nmc1.graphics_set.animation.north.layers[1].shift = {-0.06, -1.57} +nmc1.graphics_set.animation.north.layers[2].shift = {1.56, 0.42} +nmc1.graphics_set.animation.east = util.table.deepcopy(nmc1.graphics_set.animation.south) +nmc1.graphics_set.animation.east.layers[1].shift = {-0.2, -1.88} +nmc1.graphics_set.animation.east.layers[2].shift = {1.42, 0.11} +nmc1.graphics_set.animation.west = util.table.deepcopy(nmc1.graphics_set.animation.south) +nmc1.graphics_set.animation.west.layers[1].shift = {0.2, -1.63} +nmc1.graphics_set.animation.west.layers[2].shift = {1.82, 0.36} +nmc1.graphics_set.animation.south.layers[1].shift = {0.09, -1.98} +nmc1.graphics_set.animation.south.layers[2].shift = {1.71, 0.01} +nmc1.graphics_set.working_visualisations[1].north_position = {-0.1, -5.54} +nmc1.graphics_set.working_visualisations[1].east_position = {-0.24, -5.85} +nmc1.graphics_set.working_visualisations[1].south_position = {0.05, -5.95} +nmc1.graphics_set.working_visualisations[1].west_position = {0.16, -5.6} + +local nmc2 = util.table.deepcopy(data.raw.furnace["nullius-chimney-2"]) +nmc2.name = "nullius-mirror-chimney-2" +nmc2.icons[2] = nmc1.icons[3] +nmc2.placeable_by = {item = "nullius-chimney-2", count = 1} +nmc2.localised_name = {"entity-name.nullius-mirrored", + {"entity-name.nullius-chimney-2"}} +nmc2.fluid_boxes[1].pipe_connections[1].position = {-0.5, 0.5} +nmc2.graphics_set.animation = nmc2.graphics_set.animation.south +nmc2.graphics_set.working_visualisations[1].north_position = nmc2.graphics_set.working_visualisations[1].south_position +nmc2.graphics_set.working_visualisations[1].east_position = nmc2.graphics_set.working_visualisations[1].south_position +nmc2.graphics_set.working_visualisations[1].west_position = nmc2.graphics_set.working_visualisations[1].south_position + +data:extend{mnf1,mhp1,md1,mse1,mpe1,mcp1,mcc1,ex1m,ex2m,ex3m,boilm,boil2m,mfc1,nmc1,nmc2} \ No newline at end of file diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index 48cd999..a86fbc3 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -778,18 +778,6 @@ data:extend({ group = "chemistry", order = "he" }, - { - type = "item-subgroup", - name = "unmirror-1", - group = "chemistry", - order = "md" - }, - { - type = "item-subgroup", - name = "unmirror-2", - group = "chemistry", - order = "me" - }, { type = "item-subgroup", name = "prioritization", diff --git a/nullius/prototypes/checkpoint.lua b/nullius/prototypes/checkpoint.lua index a0fa851..3122e1d 100644 --- a/nullius/prototypes/checkpoint.lua +++ b/nullius/prototypes/checkpoint.lua @@ -1147,43 +1147,43 @@ data:extend({ prerequisites = {"nullius-chemical-engineering-2"}, ignore_tech_cost_multiplier = true }, - { - type = "technology", - name = "nullius-checkpoint-chirality", - localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", - {"technology-name.nullius-chirality"}}}, - localised_description = {"", - {"technology-description.nullius-checkpoint-mirror"}, "\n", - {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", tostring(2), "nullius-electrolyzer-2", - {"entity-name.nullius-mirror-surge-electrolyzer-2"}}}, "\n", - {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", tostring(2), "nullius-flotation-cell-2", - {"entity-name.nullius-mirror-flotation-cell-2"}}}, "\n", - {"technology-description.nullius-checkpoint-configure", - {"technology-description.nullius-item", tostring(2), "nullius-combustion-chamber-2", - {"entity-name.nullius-mirror-combustion-chamber-2"}}}}, - order = "nullius-yd", - icons = { - { - icon = BASEICON .. "blueprint.png", - icon_size = 64, - - }, - { - icon = "__nullius__/graphics/technology/chiral.png", - icon_size = 254, - scale = 0.25 - } - }, - unit = { - count = 1, - ingredients = {{"nullius-checkpoint", 1}, {"nullius-requirement-build", 1}, {"nullius-electrical-pack", 1}}, - time = 1 - }, - prerequisites = {"nullius-chirality-2"}, - ignore_tech_cost_multiplier = true - }, + -- { + -- type = "technology", + -- name = "nullius-checkpoint-chirality", + -- localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-demonstration", + -- {"technology-name.nullius-chirality"}}}, + -- localised_description = {"", + -- {"technology-description.nullius-checkpoint-mirror"}, "\n", + -- {"technology-description.nullius-checkpoint-configure", + -- {"technology-description.nullius-item", tostring(2), "nullius-electrolyzer-2", + -- {"entity-name.nullius-mirror-surge-electrolyzer-2"}}}, "\n", + -- {"technology-description.nullius-checkpoint-configure", + -- {"technology-description.nullius-item", tostring(2), "nullius-flotation-cell-2", + -- {"entity-name.nullius-mirror-flotation-cell-2"}}}, "\n", + -- {"technology-description.nullius-checkpoint-configure", + -- {"technology-description.nullius-item", tostring(2), "nullius-combustion-chamber-2", + -- {"entity-name.nullius-mirror-combustion-chamber-2"}}}}, + -- order = "nullius-yd", + -- icons = { + -- { + -- icon = BASEICON .. "blueprint.png", + -- icon_size = 64, + + -- }, + -- { + -- icon = "__nullius__/graphics/technology/chiral.png", + -- icon_size = 254, + -- scale = 0.25 + -- } + -- }, + -- unit = { + -- count = 1, + -- ingredients = {{"nullius-checkpoint", 1}, {"nullius-requirement-build", 1}, {"nullius-electrical-pack", 1}}, + -- time = 1 + -- }, + -- prerequisites = {"nullius-chirality-2"}, + -- ignore_tech_cost_multiplier = true + -- }, { type = "technology", diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 9183573..f260fb1 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -768,22 +768,7 @@ data:extend({ data.raw["assembling-machine"]["nullius-nanofabricator-1"].graphics_set.animation.layers[1].tint = {0.6, 0.75, 0.75} -local mnf1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-nanofabricator-1"]) -mnf1.name = "nullius-mirror-nanofabricator-1" -mnf1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mnf1.order = data.raw.item["nullius-nanofabricator-1"].order .. "c" -mnf1.placeable_by = {item = "nullius-nanofabricator-1", count = 1} -mnf1.next_upgrade = "nullius-mirror-nanofabricator-2" -mnf1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-nanofabricator-1"}} -mnf1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} -mnf1.fluid_boxes[2].pipe_connections[1].position = {-0.5, -1.5} -mnf1.fluid_boxes[3].pipe_connections[1].position = {0.5, 1.5} -mnf1.fluid_boxes[4].pipe_connections[1].position = {1.5, -0.5} - data:extend({ - mnf1, { type = "assembling-machine", name = "nullius-nanofabricator-2", @@ -891,77 +876,6 @@ data:extend({ }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-nanofabricator-2", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-nanofabricator-2"}}, - icons = { - data.raw.item["nullius-nanofabricator-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - order = data.raw.item["nullius-nanofabricator-2"].order .. "c", - localised_description = {"entity-description.nullius-nanofabricator"}, - flags = {"placeable-neutral", "placeable-player", "player-creation"}, - minable = {mining_time = 2.5, result = "nullius-nanofabricator-2"}, - placeable_by = {item = "nullius-nanofabricator-2", count = 1}, - max_health = 400, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - resistances = { { type = "impact", decrease = 50, percent = 80 } }, - collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, - selection_box = {{-2, -2}, {2, 2}}, - module_slots = 4, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - crafting_categories = {"nanotechnology"}, - fast_replaceable_group = "nanofabricator", - crafting_speed = 2, - energy_source = data.raw["assembling-machine"]["nullius-nanofabricator-2"].energy_source, - energy_usage = "940kW", - graphics_set = { - animation = data.raw["assembling-machine"]["nullius-nanofabricator-2"].graphics_set.animation, - }, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-nanofabricator-1"].working_sound, - fluid_boxes = { - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"] - ["nullius-nanofabricator-1"].fluid_boxes[1].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} - }, - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"] - ["nullius-nanofabricator-1"].fluid_boxes[2].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-0.5, -1.5}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"] - ["nullius-nanofabricator-1"].fluid_boxes[3].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_picture = data.raw["assembling-machine"] - ["nullius-nanofabricator-1"].fluid_boxes[4].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} - }, - }, - fluid_boxes_off_when_no_fluid_recipe = true, - circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, - circuit_connector = data.raw["assembling-machine"]["nullius-nanofabricator-2"].circuit_connector - }, - { type = "furnace", name = "nullius-boxer", diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index ba0aa8e..595ce4b 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -921,152 +921,7 @@ data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set.working_vis data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set.working_visualisations[4] = nil data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set.working_visualisations[5] = nil -local mhp1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-hydro-plant-1"]) -mhp1.name = "nullius-mirror-hydro-plant-1" -mhp1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mhp1.placeable_by = {item = "nullius-hydro-plant-1", count = 1} -mhp1.next_upgrade = "nullius-mirror-hydro-plant-2" -mhp1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-hydro-plant-1"}} -mhp1.fluid_boxes[1].pipe_connections[1].position = {1, -2} -mhp1.fluid_boxes[2].pipe_connections[1].position = {-1, -2} -mhp1.fluid_boxes[3].pipe_connections[1].position = {-1, 2} -mhp1.fluid_boxes[4].pipe_connections[1].position = {1, 2} - data:extend({ - mhp1, - { - type = "assembling-machine", - name = "nullius-mirror-hydro-plant-2", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-hydro-plant-2"}}, - icons = { - data.raw.item["nullius-hydro-plant-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-hydro-plant"}, - flags = {"placeable-neutral", "player-creation"}, - minable = {mining_time = 1.5, result = "nullius-hydro-plant-2"}, - placeable_by = {item = "nullius-hydro-plant-2", count = 1}, - max_health = 400, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, - selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - crafting_categories = {"nullius-water-treatment"}, - crafting_speed = 2, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.05, drain="20kW"}, - energy_usage = "480kW", - ingredient_count = 4, - resistances = data.raw["assembling-machine"]["nullius-hydro-plant-2"].resistances, - module_slots = 2, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - fast_replaceable_group = "hydro-plant", - next_upgrade = "nullius-mirror-hydro-plant-3", - graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-2"].graphics_set, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_sound, - - fluid_boxes = { - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} - }, - } - }, - - { - type = "assembling-machine", - name = "nullius-mirror-hydro-plant-3", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-hydro-plant-3"}}, - icons = { - data.raw.item["nullius-hydro-plant-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-hydro-plant"}, - flags = {"placeable-neutral", "player-creation"}, - minable = {mining_time = 2, result = "nullius-hydro-plant-3"}, - placeable_by = {item = "nullius-hydro-plant-3", count = 1}, - max_health = 500, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-2.2, -2.2}, {2.2, 2.2}}, - selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - crafting_categories = {"nullius-water-treatment"}, - crafting_speed = 4, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.1, drain="40kW"}, - energy_usage = "960kW", - ingredient_count = 6, - resistances = { - { type = "impact", decrease = 100, percent = 90 }, - { type = "fire", percent = 75 } - }, - module_slots = 3, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - fast_replaceable_group = "hydro-plant", - graphics_set = data.raw["assembling-machine"]["nullius-hydro-plant-3"].graphics_set, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-hydro-plant-1"].working_sound, - - fluid_boxes = { - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[1].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1, -2}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[2].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1, -2}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[3].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_picture = data.raw["assembling-machine"]["nullius-hydro-plant-1"].fluid_boxes[4].pipe_picture, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} - }, - }, - pipe_covers = pipecoverspictures(), - }, - { type = "assembling-machine", name = "nullius-distillery-1", @@ -1183,22 +1038,7 @@ data:extend({ } }) -local md1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-distillery-1"]) -md1.name = "nullius-mirror-distillery-1" -md1.order = "z-nullius-cbc" -md1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -md1.placeable_by = {item = "nullius-distillery-1", count = 1} -md1.next_upgrade = "nullius-mirror-distillery-2" -md1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-distillery-1"}} -md1.fluid_boxes[1].pipe_connections[1].position = {1, 2} -md1.fluid_boxes[2].pipe_connections[1].position = {-1, 2} -md1.fluid_boxes[3].pipe_connections[1].position = {2, -2} -md1.fluid_boxes[5].pipe_connections[1].position = {-2, -2} - data:extend({ - md1, { type = "assembling-machine", name = "nullius-distillery-2", @@ -1365,146 +1205,6 @@ data:extend({ }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-distillery-2", - order = "z-nullius-ccc", - icons = { - data.raw.item["nullius-distillery-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-distillery"}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 1.8, result = "nullius-distillery-2"}, - placeable_by = {item = "nullius-distillery-2", count = 1}, - max_health = 500, - dying_explosion = "medium-explosion", - corpse = "oil-refinery-remnants", - collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, - selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - - scale_entity_info_icon = true, - crafting_categories = {"distillation"}, - crafting_speed = 2, - energy_source = data.raw["assembling-machine"]["nullius-distillery-2"].energy_source, - energy_usage = "550kW", - resistances = data.raw["assembling-machine"]["nullius-distillery-2"].resistances, - working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - impact_category = "metal", - module_slots = 2, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - fast_replaceable_group = "distillery", - next_upgrade = "nullius-mirror-distillery-3", - graphics_set = data.raw["assembling-machine"]["nullius-distillery-2"].graphics_set, - - fluid_boxes = { - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} - }, - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} - } - } - }, - - { - type = "assembling-machine", - name = "nullius-mirror-distillery-3", - order = "z-nullius-cdc", - icons = { - data.raw.item["nullius-distillery-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-distillery"}, - flags = {"placeable-neutral", "player-creation"}, - minable = {mining_time = 2.4, result = "nullius-distillery-3"}, - placeable_by = {item = "nullius-distillery-3", count = 1}, - max_health = 600, - dying_explosion = "medium-explosion", - corpse = "oil-refinery-remnants", - collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, - selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - - scale_entity_info_icon = true, - crafting_categories = {"distillation"}, - crafting_speed = 4, - energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions_per_minute = {pollution = 24}, - drain = "100kW" - }, - energy_usage = "1100kW", - - resistances = data.raw["assembling-machine"]["nullius-distillery-1"].resistances, - working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - impact_category = "metal", - module_slots = 3, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - fast_replaceable_group = "distillery", - graphics_set = { - animation = data.raw["assembling-machine"]["oil-refinery"].graphics_set.animation, - working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].graphics_set.working_visualisations, - }, - - fluid_boxes = { - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1, 2}, direction = defines.direction.south }} - }, - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1, 2}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {2, -2}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {0, -2}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-2, -2}, direction = defines.direction.north }} - } - } - }, - { type = "assembling-machine", name = "nullius-surge-electrolyzer-1", @@ -1825,34 +1525,7 @@ data:extend({ } }) -local mse1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"]) -mse1.name = "nullius-mirror-surge-electrolyzer-1" -mse1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mse1.order = data.raw.item["nullius-electrolyzer-1"].order .. "e" -mse1.placeable_by = {item = "nullius-electrolyzer-1", count = 1} -mse1.next_upgrade = "nullius-mirror-surge-electrolyzer-2" -mse1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-surge-electrolyzer-1"}} -mse1.fluid_boxes[1].pipe_connections[1].position = {1.5, -1.5} -mse1.fluid_boxes[2].pipe_connections[1].position = {1.5, 1.5} -mse1.fluid_boxes[3].pipe_connections[1].position = {-1.5, -1.5} -mse1.fluid_boxes[4].pipe_connections[1].position = {-1.5, 1.5} - -local mpe1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-priority-electrolyzer-1"]) -mpe1.name = "nullius-mirror-priority-electrolyzer-1" -mpe1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mpe1.order = data.raw.item["nullius-electrolyzer-1"].order .. "c" -mpe1.placeable_by = {item = "nullius-electrolyzer-1", count = 1} -mpe1.next_upgrade = "nullius-mirror-priority-electrolyzer-2" -mpe1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-priority-electrolyzer-1"}} -mpe1.fluid_boxes = mse1.fluid_boxes - data:extend({ - mse1, - mpe1, { type = "assembling-machine", name = "nullius-priority-electrolyzer-2", @@ -1935,115 +1608,10 @@ data:extend({ }, impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound - }, - - { - type = "assembling-machine", - name = "nullius-mirror-surge-electrolyzer-2", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-surge-electrolyzer-2"}}, - icons = { - { - icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", - icon_size = 32, - tint = {0.8, 0.9, 1} - }, - { - icon = ICONPATH .. "flip1.png", - icon_size = 64 - } - }, - order = data.raw.item["nullius-electrolyzer-2"].order .. "e", - localised_description = {"entity-description.nullius-surge", - {"entity-description.nullius-electrolyzer"}}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, - placeable_by = {item = "nullius-electrolyzer-2", count = 1}, - fast_replaceable_group = "electrolyzer", - next_upgrade = "nullius-mirror-surge-electrolyzer-3", - max_health = 400, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, - selection_box = {{-2, -2}, {2, 2}}, - crafting_categories = {"nullius-electrolysis"}, - crafting_speed = 2, - energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_source, - energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].energy_usage, - resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].resistances, - graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].graphics_set, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, - fluid_boxes = { - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1.5, -1.5}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} - } - } } }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-priority-electrolyzer-2", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-priority-electrolyzer-2"}}, - icons = { - { - icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", - icon_size = 32, - tint = {0.8, 0.76, 0.85} - }, - { - icon = ICONPATH .. "flip1.png", - icon_size = 64 - } - }, - order = data.raw.item["nullius-electrolyzer-2"].order .. "c", - localised_description = {"entity-description.nullius-priority", - {"entity-description.nullius-electrolyzer"}}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, - placeable_by = {item = "nullius-electrolyzer-2", count = 1}, - fast_replaceable_group = "electrolyzer", - next_upgrade = "nullius-mirror-priority-electrolyzer-3", - max_health = 400, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, - selection_box = {{-2, -2}, {2, 2}}, - crafting_categories = {"nullius-electrolysis"}, - crafting_speed = 1.5, - energy_source = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_source, - energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].energy_usage, - resistances = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].resistances, - graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-2"].graphics_set, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, - fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-2"].fluid_boxes - }, - { type = "assembling-machine", name = "nullius-surge-electrolyzer-3", @@ -2151,71 +1719,6 @@ data:extend({ } }) -data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-surge-electrolyzer-3", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-surge-electrolyzer-3"}}, - icons = { - { - icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", - icon_size = 32 - }, - { - icon = ICONPATH .. "flip1.png", - icon_size = 64 - } - }, - order = data.raw.item["nullius-electrolyzer-3"].order .. "e", - localised_description = {"entity-description.nullius-surge", - {"entity-description.nullius-electrolyzer"}}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, - placeable_by = {item = "nullius-electrolyzer-3", count = 1}, - fast_replaceable_group = "electrolyzer", - max_health = 500, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, - selection_box = {{-2, -2}, {2, 2}}, - crafting_categories = {"nullius-electrolysis"}, - crafting_speed = 4, - energy_usage = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_usage, - energy_source = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].energy_source, - resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, - graphics_set = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].graphics_set, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound, - fluid_boxes = { - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1.5, -1.5}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1.5, -1.5}, direction = defines.direction.north }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1.5, 1.5}, direction = defines.direction.south }} - } - } - } -}) - data:extend({ { type = "assembling-machine", @@ -2298,45 +1801,6 @@ data:extend({ }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-priority-electrolyzer-3", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-priority-electrolyzer-3"}}, - icons = { - { - icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", - icon_size = 32, - tint = {1, 0.85, 0.85} - }, - { - icon = ICONPATH .. "flip1.png", - icon_size = 64 - } - }, - order = data.raw.item["nullius-electrolyzer-3"].order .. "c", - localised_description = {"entity-description.nullius-priority", - {"entity-description.nullius-electrolyzer"}}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, - placeable_by = {item = "nullius-electrolyzer-3", count = 1}, - fast_replaceable_group = "electrolyzer", - max_health = 500, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.8, -1.8}, {1.8, 1.8}}, - selection_box = {{-2, -2}, {2, 2}}, - crafting_categories = {"nullius-electrolysis"}, - crafting_speed = 4, - energy_source = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].energy_source, - energy_usage = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].energy_usage, - resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, - fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-surge-electrolyzer-3"].fluid_boxes, - graphics_set = data.raw["assembling-machine"]["nullius-priority-electrolyzer-3"].graphics_set, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound - }, - { type = "assembling-machine", name = "nullius-chemical-plant-1", @@ -2560,22 +2024,7 @@ data:extend({ } }) -local mcp1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-chemical-plant-1"]) -mcp1.name = "nullius-mirror-chemical-plant-1" -mcp1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mcp1.order = "z-nullius-bbc" -mcp1.placeable_by = {item = "nullius-chemical-plant-1", count = 1} -mcp1.next_upgrade = "nullius-mirror-chemical-plant-2" -mcp1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-chemical-plant-1"}} -mcp1.fluid_boxes[1].pipe_connections[1].position = {1, -1} -mcp1.fluid_boxes[2].pipe_connections[1].position = {-1, -1} -mcp1.fluid_boxes[4].pipe_connections[1].position = {1, 1} -mcp1.fluid_boxes[5].pipe_connections[1].position = {-1, 1} - data:extend({ - mcp1, { type = "assembling-machine", name = "nullius-chemical-plant-2", @@ -2674,80 +2123,6 @@ data:extend({ }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-chemical-plant-2", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-chemical-plant-2"}}, - order = "z-nullius-bcc", - icons = { - data.raw.item["nullius-chemical-plant-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-chemical-plant"}, - flags = {"placeable-neutral","placeable-player", "player-creation"}, - minable = { mining_time = 1.6, result = "nullius-chemical-plant-2"}, - placeable_by = {item = "nullius-chemical-plant-2", count = 1}, - max_health = 400, - corpse = "chemical-plant-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, - selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - - module_slots = 2, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - fast_replaceable_group = "chemical-plant", - next_upgrade = "nullius-mirror-chemical-plant-3", - - graphics_set = { - animation = data.raw["assembling-machine"]["nullius-chemical-plant-2"].graphics_set.animation, - working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, - }, - resistances = data.raw["assembling-machine"]["nullius-chemical-plant-2"].resistances, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-chemical-plant-2"].working_sound, - crafting_speed = 2, - energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-2"].energy_source, - energy_usage = "384kW", - crafting_categories = {"basic-chemistry"}, - - fluid_boxes = { - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = { - {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, - {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} - } - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} - } - } - }, - { type = "assembling-machine", name = "nullius-chemical-plant-3", @@ -2842,76 +2217,3 @@ data:extend({ } } }) - -data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-chemical-plant-3", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-chemical-plant-3"}}, - order = "z-nullius-bdc", - icons = { - data.raw.item["nullius-chemical-plant-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-chemical-plant"}, - flags = {"placeable-neutral","placeable-player", "player-creation"}, - minable = { mining_time = 2, result = "nullius-chemical-plant-3"}, - placeable_by = {item = "nullius-chemical-plant-3", count = 1}, - max_health = 500, - corpse = "chemical-plant-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, - selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, - - module_slots = 3, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - fast_replaceable_group = "chemical-plant", - graphics_set = { - animation = data.raw["assembling-machine"]["nullius-chemical-plant-3"].graphics_set.animation, - working_visualisations = data.raw["assembling-machine"]["nullius-chemical-plant-1"].graphics_set.working_visualisations, - }, - resistances = data.raw["assembling-machine"]["nullius-chemical-plant-3"].resistances, - energy_source = data.raw["assembling-machine"]["nullius-chemical-plant-3"].energy_source, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["chemical-plant"].working_sound, - crafting_speed = 4, - energy_usage = "760kW", - crafting_categories = {"basic-chemistry"}, - fluid_boxes = { - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {1, -1}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1, -1}, direction = defines.direction.north }} - }, - { - production_type = "input", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = { - {flow_direction = "input-output", position = {-1, 0}, direction = defines.direction.west}, - {flow_direction = "input-output", position = {1, 0}, direction = defines.direction.east} - } - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, 1}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-1, 1}, direction = defines.direction.south }} - } - } - } -}) \ No newline at end of file diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 150d702..305df4d 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -643,19 +643,7 @@ data:extend({ } }) -local mcc1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-combustion-chamber-1"]) -mcc1.name = "nullius-mirror-combustion-chamber-1" -mcc1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mcc1.placeable_by = {item = "nullius-combustion-chamber-1", count = 1} -mcc1.next_upgrade = "nullius-mirror-combustion-chamber-2" -mcc1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-combustion-chamber-1"}} -mcc1.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} -mcc1.fluid_boxes[2].pipe_connections[1].position = {-1, 0.5} - data:extend({ - mcc1, { type = "assembling-machine", name = "nullius-combustion-chamber-2", @@ -810,65 +798,10 @@ data:extend({ }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-combustion-chamber-2", - icons = { - data.raw.item["nullius-combustion-chamber-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-combustion-chamber"}, - flags = {"placeable-neutral", "player-creation"}, - minable = {mining_time = 0.9, result = "nullius-combustion-chamber-2"}, - placeable_by = {item = "nullius-combustion-chamber-2", count = 1}, - crafting_categories = { "combustion" }, - crafting_speed = 2.5, - base_productivity = 0.02, - max_health = 300, - corpse = "boiler-remnants", - impact_category = "metal", - resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, - fast_replaceable_group = "combustion-chamber", - next_upgrade = "nullius-mirror-combustion-chamber-3", - collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, - selection_box = {{-1.5, -1}, {1.5, 1}}, - energy_usage = "1kW", - energy_source = { type = "void" }, - working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, - graphics_set = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].graphics_set, - - fluid_boxes = { - { - volume = 500, - pipe_covers = pipecoverspictures(), - pipe_connections = {{flow_direction = "input", position = {1, 0.5}, direction = defines.direction.east }}, - production_type = "input" - }, - { - volume = 500, - pipe_covers = pipecoverspictures(), - pipe_connections = {{flow_direction = "input", position = {-1, 0.5}, direction = defines.direction.west }}, - production_type = "input" - }, - { - volume = 500, - pipe_covers = pipecoverspictures(), - pipe_connections = {{flow_direction = "output", position = {0, -0.5}, direction = defines.direction.north }}, - production_type = "output" - }, - { - volume = 500, - pipe_covers = pipecoverspictures(), - pipe_connections = {{flow_direction = "output", position = {0, 0.5}, direction = defines.direction.south }}, - production_type = "output" - } - } - }, - { type = "assembling-machine", name = "nullius-combustion-chamber-3", - icons = data.raw.item["nullius-combustion-chamber-3"].icons, + icons = data.raw.item["nullius-combustion-chamber-3"].icons, localised_description = {"entity-description.nullius-combustion-chamber"}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-combustion-chamber-3"}, @@ -984,34 +917,6 @@ data:extend({ }) data:extend({ - { - type = "assembling-machine", - name = "nullius-mirror-combustion-chamber-3", - icons = { - data.raw.item["nullius-combustion-chamber-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-combustion-chamber"}, - flags = {"placeable-neutral", "player-creation"}, - minable = {mining_time = 1.2, result = "nullius-combustion-chamber-3"}, - placeable_by = {item = "nullius-combustion-chamber-3", count = 1}, - crafting_categories = { "combustion" }, - crafting_speed = 6, - base_productivity = 0.04, - max_health = 400, - corpse = "boiler-remnants", - impact_category = "metal", - resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].resistances, - fast_replaceable_group = "combustion-chamber", - collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, - selection_box = {{-1.5, -1}, {1.5, 1}}, - fluid_boxes = data.raw["assembling-machine"]["nullius-mirror-combustion-chamber-2"].fluid_boxes, - energy_usage = "1kW", - energy_source = { type = "void" }, - working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, - graphics_set = data.raw["assembling-machine"]["nullius-combustion-chamber-3"].graphics_set - }, - { type = "assembling-machine", name = "nullius-surge-compressor-1", @@ -3780,16 +3685,7 @@ data:extend({ }) local ex1 = data.raw["assembling-machine"]["nullius-heat-exchanger-1"] -local ex1m = util.table.deepcopy(ex1) local boil = util.table.deepcopy(ex1) -ex1m.name = "nullius-mirror-heat-exchanger-1" -ex1m.localised_name = {"entity-name.nullius-mirrored", - {"", {"entity-name.heat-exchanger"}, " ", tostring(1)}} -ex1m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} -ex1m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} -ex1m.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -ex1m.placeable_by = {item = "nullius-heat-exchanger-1", count = 1} -ex1m.next_upgrade = "nullius-mirror-heat-exchanger-2" local ex2 = util.table.deepcopy(ex1) ex2.name = "nullius-heat-exchanger-2" ex2.localised_name = {"", {"entity-name.heat-exchanger"}, " ", tostring(2)} @@ -3805,15 +3701,6 @@ ex2.energy_usage = "8.5MW" ex2.fluid_boxes[1].volume = 500 ex2.fluid_boxes[2].volume = 500 ex2.fluid_boxes[3].volume = 500 -local ex2m = util.table.deepcopy(ex2) -ex2m.name = "nullius-mirror-heat-exchanger-2" -ex2m.localised_name = {"entity-name.nullius-mirrored", - {"", {"entity-name.heat-exchanger"}, " ", tostring(2)}} -ex2m.icons[2] = ex1m.icons[2] -ex2m.placeable_by = {item = "nullius-heat-exchanger-2", count = 1} -ex2m.next_upgrade = "nullius-mirror-heat-exchanger-3" -ex2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} -ex2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} local ex3 = util.table.deepcopy(ex1) ex3.name = "nullius-heat-exchanger-3" @@ -3832,16 +3719,8 @@ ex3.energy_usage = "20MW" ex3.fluid_boxes[1].volume = 500 ex3.fluid_boxes[2].volume = 500 ex3.fluid_boxes[3].volume = 500 -local ex3m = util.table.deepcopy(ex3) -ex3m.name = "nullius-mirror-heat-exchanger-3" -ex3m.localised_name = {"entity-name.nullius-mirrored", - {"", {"entity-name.heat-exchanger"}, " ", tostring(3)}} -ex3m.icons[2] = ex1m.icons[2] -ex3m.placeable_by = {item = "nullius-heat-exchanger-3", count = 1} -ex3m.next_upgrade = nil -ex3m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} -ex3m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} -data:extend({ ex1m, ex2, ex2m, ex3, ex3m }) + +data:extend({ex2, ex3 }) boil.name = "nullius-boiler-1" @@ -3914,15 +3793,6 @@ boil.graphics_set.animation = { } boil.graphics_set.working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.working_visualisations -local boilm = util.table.deepcopy(boil) -boilm.name = "nullius-mirror-boiler-1" -boilm.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", tostring(1)}} -boilm.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} -boilm.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} -boilm.icons[2] = ex1m.icons[2] -boilm.placeable_by = {item = "nullius-boiler-1", count = 1} -boilm.next_upgrade = "nullius-mirror-boiler-2" - local boil2 = util.table.deepcopy(boil) boil2.name = "nullius-boiler-2" boil2.localised_name = {"", {"entity-name.boiler"}, " ", tostring(2)} @@ -3944,15 +3814,7 @@ boil2.graphics_set.animation.east.layers[1].filename = ENTITYPATH .. "boiler/boi boil2.graphics_set.animation.south.layers[1].filename = ENTITYPATH .. "boiler/boiler2-south.png" boil2.graphics_set.animation.west.layers[1].filename = ENTITYPATH .. "boiler/boiler2-west.png" -local boil2m = util.table.deepcopy(boil2) -boil2m.name = "nullius-mirror-boiler-2" -boil2m.localised_name = {"entity-name.nullius-mirrored", {"", {"entity-name.boiler"}, " ", tostring(2)}} -boil2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} -boil2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} -boil2m.icons[2] = boilm.icons[2] -boil2m.placeable_by = {item = "nullius-boiler-2", count = 1} -boil2m.next_upgrade = nil -data:extend({ boil, boilm, boil2, boil2m}) +data:extend({ boil, boil2}) if mods["reskins-bobs"] then diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 693721e..4145b83 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -1863,150 +1863,6 @@ tint_flotation_cell(1, 0.4, {0.77, 0.77, 0.60}) tint_flotation_cell(2, 0.5, {0.8, 0.8, 1}) tint_flotation_cell(3, 0.6, nil) -local mfc1 = util.table.deepcopy( - data.raw["assembling-machine"]["nullius-flotation-cell-1"]) -mfc1.name = "nullius-mirror-flotation-cell-1" -mfc1.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } -mfc1.placeable_by = {item = "nullius-flotation-cell-1", count = 1} -mfc1.next_upgrade = "nullius-mirror-flotation-cell-2" -mfc1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-flotation-cell-1"}} -mfc1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} -mfc1.fluid_boxes[2].pipe_connections[1].position = {0.5, 1.5} -mfc1.fluid_boxes[3].pipe_connections[1].position = {1.5, -0.5} -mfc1.fluid_boxes[4].pipe_connections[1].position = {-0.5, -1.5} - -data:extend({ - mfc1, - { - type = "assembling-machine", - name = "nullius-mirror-flotation-cell-2", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-flotation-cell-2"}}, - icons = { - data.raw.item["nullius-flotation-cell-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-flotation-cell"}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 1.5, result = "nullius-flotation-cell-2"}, - placeable_by = {item = "nullius-flotation-cell-2", count = 1}, - fast_replaceable_group = "flotation-cell", - next_upgrade = "nullius-mirror-flotation-cell-3", - max_health = 400, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, - selection_box = {{-2, -2}, {2, 2}}, - crafting_categories = {"ore-flotation"}, - crafting_speed = 2, - energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-2"].energy_source, - energy_usage = "385kW", - resistances = data.raw["assembling-machine"]["nullius-flotation-cell-2"].resistances, - module_slots = 2, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - graphics_set = { - animation = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.animation, - working_visualisations = data.raw["assembling-machine"]["nullius-flotation-cell-2"].graphics_set.working_visualisations, - }, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-flotation-cell-1"].working_sound, - - fluid_boxes = { - { - production_type = "input", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} - }, - { - production_type = "input", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} - }, - { - production_type = "output", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.5}, direction = defines.direction.north }} - } - } - }, - - { - type = "assembling-machine", - name = "nullius-mirror-flotation-cell-3", - localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-flotation-cell-3"}}, - icons = { - data.raw.item["nullius-flotation-cell-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, - localised_description = {"entity-description.nullius-flotation-cell"}, - flags = {"placeable-neutral","player-creation"}, - minable = {mining_time = 2, result = "nullius-flotation-cell-3"}, - placeable_by = {item = "nullius-flotation-cell-3", count = 1}, - fast_replaceable_group = "flotation-cell", - max_health = 500, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = {{-1.75, -1.75}, {1.75, 1.75}}, - selection_box = {{-2, -2}, {2, 2}}, - crafting_categories = {"ore-flotation"}, - crafting_speed = 4, - energy_usage = "770kW", - module_slots = 3, - allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - graphics_set = data.raw["assembling-machine"]["nullius-flotation-cell-3"].graphics_set, - energy_source = data.raw["assembling-machine"]["nullius-flotation-cell-3"].energy_source, - resistances = data.raw["assembling-machine"]["nullius-flotation-cell-3"].resistances, - impact_category = "metal", - working_sound = data.raw["assembling-machine"]["nullius-flotation-cell-1"].working_sound, - - fluid_boxes = { - { - production_type = "input", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {-1.5, 0.5}, direction = defines.direction.west }} - }, - { - production_type = "input", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="input", position = {0.5, 1.5}, direction = defines.direction.south }} - }, - { - production_type = "output", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1.5, -0.5}, direction = defines.direction.east }} - }, - { - production_type = "output", - pipe_picture = floatpipepics, - pipe_covers = pipecoverspictures(), - volume = 500, - pipe_connections = {{ flow_direction ="output", position = {-0.5, -1.5}, direction = defines.direction.north }} - } - } - } -}) - if mods["reskins-bobs"] then local small_animation = data.raw["assembling-machine"]["nullius-small-furnace-3"].graphics_set.animation diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index b7ec1e1..953a9f1 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -563,42 +563,6 @@ data:extend({ } }) -local nmc1 = util.table.deepcopy(data.raw.furnace["nullius-chimney-1"]) -nmc1.name = "nullius-mirror-chimney-1" -table.insert(nmc1.icons,{ icon = "__nullius__/graphics/icons/flip1.png", icon_size = 64 }) -nmc1.placeable_by = {item = "nullius-chimney-1", count = 1} -nmc1.next_upgrade = "nullius-mirror-chimney-2" -nmc1.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-chimney-1"}} -nmc1.fluid_boxes[1].pipe_connections[1].position = {-0.5, 0.5} -nmc1.graphics_set.animation.north = util.table.deepcopy(nmc1.graphics_set.animation.south) -nmc1.graphics_set.animation.north.layers[1].shift = {-0.06, -1.57} -nmc1.graphics_set.animation.north.layers[2].shift = {1.56, 0.42} -nmc1.graphics_set.animation.east = util.table.deepcopy(nmc1.graphics_set.animation.south) -nmc1.graphics_set.animation.east.layers[1].shift = {-0.2, -1.88} -nmc1.graphics_set.animation.east.layers[2].shift = {1.42, 0.11} -nmc1.graphics_set.animation.west = util.table.deepcopy(nmc1.graphics_set.animation.south) -nmc1.graphics_set.animation.west.layers[1].shift = {0.2, -1.63} -nmc1.graphics_set.animation.west.layers[2].shift = {1.82, 0.36} -nmc1.graphics_set.animation.south.layers[1].shift = {0.09, -1.98} -nmc1.graphics_set.animation.south.layers[2].shift = {1.71, 0.01} -nmc1.graphics_set.working_visualisations[1].north_position = {-0.1, -5.54} -nmc1.graphics_set.working_visualisations[1].east_position = {-0.24, -5.85} -nmc1.graphics_set.working_visualisations[1].south_position = {0.05, -5.95} -nmc1.graphics_set.working_visualisations[1].west_position = {0.16, -5.6} - -local nmc2 = util.table.deepcopy(data.raw.furnace["nullius-chimney-2"]) -nmc2.name = "nullius-mirror-chimney-2" -nmc2.icons[2] = nmc1.icons[3] -nmc2.placeable_by = {item = "nullius-chimney-2", count = 1} -nmc2.localised_name = {"entity-name.nullius-mirrored", - {"entity-name.nullius-chimney-2"}} -nmc2.fluid_boxes[1].pipe_connections[1].position = {-0.5, 0.5} -nmc2.graphics_set.animation = nmc2.graphics_set.animation.south -nmc2.graphics_set.working_visualisations[1].north_position = nmc2.graphics_set.working_visualisations[1].south_position -nmc2.graphics_set.working_visualisations[1].east_position = nmc2.graphics_set.working_visualisations[1].south_position -nmc2.graphics_set.working_visualisations[1].west_position = nmc2.graphics_set.working_visualisations[1].south_position - local nc3 = util.table.deepcopy(data.raw.furnace["nullius-chimney-2"]) nc3.name = "nullius-chimney-3" nc3.icons = data.raw.item["nullius-chimney-3"].icons @@ -632,8 +596,6 @@ nc3.graphics_set_flipped = nil nc3.forced_symmetry = nil data:extend({ - nmc1, - nmc2, nc3, { type = "furnace", diff --git a/nullius/prototypes/inputs.lua b/nullius/prototypes/inputs.lua index 1576587..fda921e 100644 --- a/nullius/prototypes/inputs.lua +++ b/nullius/prototypes/inputs.lua @@ -9,13 +9,6 @@ data:extend({ key_sequence = "PAD +", include_selected_prototype = true }, - { - type = "custom-input", - name = "nullius-mirror", - order = "nullius-ibc", - key_sequence = "PAD *", - include_selected_prototype = true - }, { type = "custom-input", name = "nullius-upload-mind", diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 8e0de1c..9abc55a 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -1925,24 +1925,24 @@ data:extend({ ignore_tech_cost_multiplier = true }, - { - type = "technology", - name = "nullius-chirality-1", - localised_description = {"", {"technology-description.nullius-chirality", tostring(1), - {"technology-description.nullius-chirality-1"}}, "\n", - {"technology-description.nullius-checkpoint-mirror"}}, - order = "nullius-cm", - icon_size = 254, - icon = TECHPATH .. "chiral.png", - effects = { }, - unit = { - count = 10, - ingredients = {{"nullius-climatology-pack", 1}, {"nullius-mechanical-pack", 1}}, - time = 6 - }, - prerequisites = {"nullius-boiling-1", "bob-long-inserters-1"}, - ignore_tech_cost_multiplier = true - }, + -- { + -- type = "technology", + -- name = "nullius-chirality-1", + -- localised_description = {"", {"technology-description.nullius-chirality", tostring(1), + -- {"technology-description.nullius-chirality-1"}}, "\n", + -- {"technology-description.nullius-checkpoint-mirror"}}, + -- order = "nullius-cm", + -- icon_size = 254, + -- icon = TECHPATH .. "chiral.png", + -- effects = { }, + -- unit = { + -- count = 10, + -- ingredients = {{"nullius-climatology-pack", 1}, {"nullius-mechanical-pack", 1}}, + -- time = 6 + -- }, + -- prerequisites = {"nullius-boiling-1", "bob-long-inserters-1"}, + -- ignore_tech_cost_multiplier = true + -- }, { type = "technology", name = "nullius-solar-thermal-power-1", @@ -2184,7 +2184,7 @@ data:extend({ ingredients = {{"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1}}, time = 10 }, - prerequisites = {"nullius-electrical-engineering", "nullius-chirality-1"}, + prerequisites = {"nullius-electrical-engineering", "nullius-boiling-1", "bob-long-inserters-1"}, ignore_tech_cost_multiplier = true }, { @@ -3917,25 +3917,25 @@ data:extend({ }, prerequisites = {"nullius-barreling-2", "nullius-sulfur-processing-1"} }, - { - type = "technology", - name = "nullius-chirality-2", - localised_description = {"technology-description.nullius-chirality", tostring(2), - {"technology-description.nullius-chirality-2"}}, - order = "nullius-dl", - icon_size = 254, - icon = TECHPATH .. "chiral.png", - effects = { }, - unit = { - count = 160, - ingredients = { - {"nullius-climatology-pack", 1}, - {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1} - }, - time = 30 - }, - prerequisites = {"nullius-empiricism-2", "nullius-flotation-2"} - }, + -- { + -- type = "technology", + -- name = "nullius-chirality-2", + -- localised_description = {"technology-description.nullius-chirality", tostring(2), + -- {"technology-description.nullius-chirality-2"}}, + -- order = "nullius-dl", + -- icon_size = 254, + -- icon = TECHPATH .. "chiral.png", + -- effects = { }, + -- unit = { + -- count = 160, + -- ingredients = { + -- {"nullius-climatology-pack", 1}, + -- {"nullius-mechanical-pack", 1}, {"nullius-electrical-pack", 1} + -- }, + -- time = 30 + -- }, + -- prerequisites = {"nullius-empiricism-2", "nullius-flotation-2"} + -- }, { type = "technology", name = "nullius-explosives-1", @@ -4084,7 +4084,7 @@ data:extend({ }, time = 30 }, - prerequisites = {"nullius-plumbing-4", "nullius-chirality-2", "nullius-checkpoint-chemical-engineering"}, + prerequisites = {"nullius-plumbing-4", "nullius-empiricism-2", "nullius-flotation-2", "nullius-checkpoint-chemical-engineering"}, essential = true }, @@ -4187,7 +4187,7 @@ data:extend({ }, time = 30 }, - prerequisites = {"nullius-experimental-chemistry", "nullius-checkpoint-chirality"}, + prerequisites = {"nullius-experimental-chemistry", "nullius-empiricism-2", "nullius-flotation-2"}, }, { @@ -4739,24 +4739,24 @@ data:extend({ }, prerequisites = {"nullius-metalworking-3"}, }, - { - type = "technology", - name = "nullius-chirality-3", - localised_description = {"technology-description.nullius-chirality", tostring(3), - {"technology-description.nullius-chirality-3"}}, - order = "nullius-ef", - icon_size = 254, - icon = TECHPATH .. "chiral.png", - effects = { }, - unit = { - count = 200, - ingredients = { - {"nullius-mechanical-pack", 1}, {"nullius-chemical-pack", 1} - }, - time = 30 - }, - prerequisites = {"nullius-organic-chemistry-4", "nullius-limestone-processing-3", "nullius-empiricism-3"}, - }, + -- { + -- type = "technology", + -- name = "nullius-chirality-3", + -- localised_description = {"technology-description.nullius-chirality", tostring(3), + -- {"technology-description.nullius-chirality-3"}}, + -- order = "nullius-ef", + -- icon_size = 254, + -- icon = TECHPATH .. "chiral.png", + -- effects = { }, + -- unit = { + -- count = 200, + -- ingredients = { + -- {"nullius-mechanical-pack", 1}, {"nullius-chemical-pack", 1} + -- }, + -- time = 30 + -- }, + -- prerequisites = {"nullius-organic-chemistry-4", "nullius-limestone-processing-3", "nullius-empiricism-3"}, + -- }, { type = "technology", @@ -4852,7 +4852,7 @@ data:extend({ }, time = 30 }, - prerequisites = {"nullius-venting-2", "nullius-titanium-production-1", "nullius-chirality-3"} + prerequisites = {"nullius-venting-2", "nullius-titanium-production-1", "nullius-organic-chemistry-4", "nullius-limestone-processing-3", "nullius-empiricism-3"} }, { type = "technology", @@ -4947,7 +4947,7 @@ data:extend({ }, time = 30 }, - prerequisites = {"nullius-chirality-3", "nullius-illumination-2"} + prerequisites = {"nullius-organic-chemistry-4", "nullius-limestone-processing-3", "nullius-empiricism-3", "nullius-illumination-2"} }, { type = "technology", diff --git a/nullius/scripts/build.lua b/nullius/scripts/build.lua index 765c438..0771cee 100644 --- a/nullius/scripts/build.lua +++ b/nullius/scripts/build.lua @@ -7,8 +7,8 @@ function entity_added(entity, handbuilt) if (entity.name == "entity-ghost") then local result = check_pipette(handbuilt) if (result ~= nil) then entity = result end - check_mirror(entity) - end + --check_mirror(entity) + end return end diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index 964333b..04a2985 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -66,9 +66,9 @@ local checkpoint_data = { ["concrete"] = {{ CHK_ITEM, STT_PRODUCE, 1000, {{"concrete"}} }}, ["heat-pipe"] = {{ CHK_ITEM, STT_PRODUCE, 50, {{"nullius-heat-pipe-1"}} }}, ["chemical-engineering"] = {{ CHK_BUILD, STT_NET, 10, {{"nullius-chemical-plant-2"}} }}, - ["chirality"] = {{ CHK_BUILD, STT_NET, 2, {{"nullius-mirror-surge-electrolyzer-2"}} }, - { CHK_BUILD, STT_NET, 2, {{"nullius-mirror-flotation-cell-2"}} }, - { CHK_BUILD, STT_NET, 2, {{"nullius-mirror-combustion-chamber-2"}} }}, + -- ["chirality"] = {{ CHK_BUILD, STT_NET, 2, {{"nullius-mirror-surge-electrolyzer-2"}} }, + -- { CHK_BUILD, STT_NET, 2, {{"nullius-mirror-flotation-cell-2"}} }, + -- { CHK_BUILD, STT_NET, 2, {{"nullius-mirror-combustion-chamber-2"}} }}, ["propene"] = {{ CHK_FLUID, STT_CONSUME, 300000, {{"nullius-propene"}} }}, ["titanium-ingot"] = {{ CHK_ITEM, STT_PRODUCE, 100, {{"nullius-titanium-ingot"}} }}, diff --git a/nullius/scripts/mirror.lua b/nullius/scripts/mirror.lua index c0fabb4..7d34872 100644 --- a/nullius/scripts/mirror.lua +++ b/nullius/scripts/mirror.lua @@ -69,65 +69,65 @@ function replace_fluid_entity(entity, newname, force, dir) end -local function mirror_tier(suffix) - if ((suffix == "combustion-chamber") or (suffix == "heat-exchanger") or - (suffix == "boiler") or (suffix == "chimney")) then - return 1 - elseif ((suffix == "priority-electrolyzer") or - (suffix == "flotation-cell") or - (suffix == "surge-electrolyzer") or (suffix == "hydro-plant")) then - return 2 - elseif ((suffix == "distillery") or (suffix == "chemical-plant") or - (suffix == "nanofabricator")) then - return 3 - end - return 0 -end - -local function mirror_event(event) - local player = game.players[event.player_index] - if ((player == nil) or (not player.valid)) then return end - local target = player.selected - if ((target == nil) or (not target.valid)) then return end - - local name = target.name - local local_name = target.localised_name - if (target.type == "entity-ghost") then - name = target.ghost_name - local_name = target.ghost_localised_name - end - - if (string.sub(name, 1, 8) ~= "nullius-") then return end - local ismirror = (string.sub(name, 9, 15) == "mirror-") - local offs = ((ismirror and 16) or 9) - local suffix = string.sub(name, offs, -3) - - local dir = nil - local tier = mirror_tier(suffix) - if (tier == 0) then - return - elseif ((tier == 2) and (suffix == "flotation-cell")) then - dir = rotate_right[target.direction] - end - - local force = (target.force or player.force) - if ((force == nil) or (not force.valid)) then return end - local tech = force.technologies["nullius-chirality-" .. tier] - if ((tech == nil) or (not tech.valid)) then return end - if (not tech.researched) then - player.print({"technology-description.nullius-mirror-requirement", - tech.localised_name, local_name}) - return - end - - local newname = ("nullius-" .. ((ismirror and "") or "mirror-") .. - string.sub(name, offs, -1)) - replace_fluid_entity(target, newname, force, dir) -end - -script.on_event("nullius-mirror", function(event) - mirror_event(event) -end) +-- local function mirror_tier(suffix) +-- if ((suffix == "combustion-chamber") or (suffix == "heat-exchanger") or +-- (suffix == "boiler") or (suffix == "chimney")) then +-- return 1 +-- elseif ((suffix == "priority-electrolyzer") or +-- (suffix == "flotation-cell") or +-- (suffix == "surge-electrolyzer") or (suffix == "hydro-plant")) then +-- return 2 +-- elseif ((suffix == "distillery") or (suffix == "chemical-plant") or +-- (suffix == "nanofabricator")) then +-- return 3 +-- end +-- return 0 +-- end + +-- local function mirror_event(event) +-- local player = game.players[event.player_index] +-- if ((player == nil) or (not player.valid)) then return end +-- local target = player.selected +-- if ((target == nil) or (not target.valid)) then return end + +-- local name = target.name +-- local local_name = target.localised_name +-- if (target.type == "entity-ghost") then +-- name = target.ghost_name +-- local_name = target.ghost_localised_name +-- end + +-- if (string.sub(name, 1, 8) ~= "nullius-") then return end +-- local ismirror = (string.sub(name, 9, 15) == "mirror-") +-- local offs = ((ismirror and 16) or 9) +-- local suffix = string.sub(name, offs, -3) + +-- local dir = nil +-- local tier = mirror_tier(suffix) +-- if (tier == 0) then +-- return +-- elseif ((tier == 2) and (suffix == "flotation-cell")) then +-- dir = rotate_right[target.direction] +-- end + +-- local force = (target.force or player.force) +-- if ((force == nil) or (not force.valid)) then return end +-- local tech = force.technologies["nullius-chirality-" .. tier] +-- if ((tech == nil) or (not tech.valid)) then return end +-- if (not tech.researched) then +-- player.print({"technology-description.nullius-mirror-requirement", +-- tech.localised_name, local_name}) +-- return +-- end + +-- local newname = ("nullius-" .. ((ismirror and "") or "mirror-") .. +-- string.sub(name, offs, -1)) +-- replace_fluid_entity(target, newname, force, dir) +-- end + +-- script.on_event("nullius-mirror", function(event) +-- mirror_event(event) +-- end) local function mineable_result(proto) @@ -217,22 +217,22 @@ end script.on_event(defines.events.on_player_pipette, pipette_event) -function check_mirror(entity) - if ((entity == nil) or (not entity.valid)) then return end - if (entity.type ~= "entity-ghost") then return end - local name = entity.ghost_name - if (string.sub(name, 1, 15) ~= "nullius-mirror-") then return end - local suffix = string.sub(name, 16, -3) - local tier = mirror_tier(suffix) - if (tier == 0) then return end - - local force = entity.force - if ((force == nil) or (not force.valid)) then return end - local tech = force.technologies["nullius-chirality-" .. tier] - if ((tech == nil) or (not tech.valid)) then return end - if (tech.researched) then return end - - local newname = ("nullius-" .. string.sub(name, 16, -1)) - replace_fluid_entity(entity, newname, force, nil) -end +-- function check_mirror(entity) +-- if ((entity == nil) or (not entity.valid)) then return end +-- if (entity.type ~= "entity-ghost") then return end +-- local name = entity.ghost_name +-- if (string.sub(name, 1, 15) ~= "nullius-mirror-") then return end +-- local suffix = string.sub(name, 16, -3) +-- local tier = mirror_tier(suffix) +-- if (tier == 0) then return end + +-- local force = entity.force +-- if ((force == nil) or (not force.valid)) then return end +-- local tech = force.technologies["nullius-chirality-" .. tier] +-- if ((tech == nil) or (not tech.valid)) then return end +-- if (tech.researched) then return end + +-- local newname = ("nullius-" .. string.sub(name, 16, -1)) +-- replace_fluid_entity(entity, newname, force, nil) +-- end diff --git a/nullius/scripts/turbine.lua b/nullius/scripts/turbine.lua index dc9846e..7da98c8 100644 --- a/nullius/scripts/turbine.lua +++ b/nullius/scripts/turbine.lua @@ -146,9 +146,9 @@ end local function scan_surge_priority(name) local offs = 9 - if (string.sub(name, 9, 15) == "mirror-") then - offs = 16 - end + -- if (string.sub(name, 9, 15) == "mirror-") then + -- offs = 16 + -- end local offs2 = offs + 5 local priority = string.sub(name, offs, offs2) if (priority == "surge-") then From 7d18dce89b215f9dde0c5c571f55afc6d4fbbc84 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 21:28:10 +0200 Subject: [PATCH 135/236] Hid the mirror buildings from factoriopedia --- nullius/TODO_list.txt | 1 + nullius/legacyMirror.lua | 159 +++++++++++++++++++++++---------------- 2 files changed, 95 insertions(+), 65 deletions(-) diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt index 03b1823..008e1ab 100644 --- a/nullius/TODO_list.txt +++ b/nullius/TODO_list.txt @@ -42,6 +42,7 @@ Removed regular artillery shortcut and discharge defense shortcut Changed required techs for most shortcuts Added wire connexions to assemblers, boxer and nanofab Allowed medium assembler 1 to craft disabled recipes (to prevent a bug when a broken item is being fixed in early game) +Removed mirror buildings, use 2.0 flipping instead ----------- Safefill: added setting to enable mining of waterfill \ No newline at end of file diff --git a/nullius/legacyMirror.lua b/nullius/legacyMirror.lua index 8d1ae7e..a8ff8e7 100644 --- a/nullius/legacyMirror.lua +++ b/nullius/legacyMirror.lua @@ -1,11 +1,9 @@ local ICONPATH = "__nullius__/graphics/icons/" -local ENTITYPATH = "__nullius__/graphics/entity/" -local BASEENTITY = "__base__/graphics/entity/" data:extend{ { type = "item-subgroup", - name = "unmirror-1", + name = "unmirror-1", --those two are useless group = "chemistry", order = "md" }, @@ -24,6 +22,7 @@ data:extend{ data.raw.item["nullius-nanofabricator-2"].icons[1], { icon = ICONPATH .. "flip1.png", icon_size = 64 } }, + hidden = true, order = data.raw.item["nullius-nanofabricator-2"].order .. "c", localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, @@ -95,6 +94,7 @@ data:extend{ { icon = ICONPATH .. "flip1.png", icon_size = 64 } }, localised_description = {"entity-description.nullius-hydro-plant"}, + hidden = true, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.5, result = "nullius-hydro-plant-2"}, placeable_by = {item = "nullius-hydro-plant-2", count = 1}, @@ -159,6 +159,7 @@ data:extend{ { icon = ICONPATH .. "flip1.png", icon_size = 64 } }, localised_description = {"entity-description.nullius-hydro-plant"}, + hidden = true, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 2, result = "nullius-hydro-plant-3"}, placeable_by = {item = "nullius-hydro-plant-3", count = 1}, @@ -224,6 +225,7 @@ data:extend{ { icon = ICONPATH .. "flip1.png", icon_size = 64 } }, localised_description = {"entity-description.nullius-distillery"}, + hidden = true, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.8, result = "nullius-distillery-2"}, placeable_by = {item = "nullius-distillery-2", count = 1}, @@ -284,15 +286,16 @@ data:extend{ { type = "assembling-machine", name = "nullius-mirror-distillery-3", - order = "z-nullius-cdc", - icons = { - data.raw.item["nullius-distillery-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + order = "z-nullius-cdc", + icons = { + data.raw.item["nullius-distillery-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-distillery"}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 2.4, result = "nullius-distillery-3"}, - placeable_by = {item = "nullius-distillery-3", count = 1}, + hidden = true, + placeable_by = {item = "nullius-distillery-3", count = 1}, max_health = 600, dying_explosion = "medium-explosion", corpse = "oil-refinery-remnants", @@ -359,7 +362,7 @@ data:extend{ name = "nullius-mirror-surge-electrolyzer-2", localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-surge-electrolyzer-2"}}, - icons = { + icons = { { icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, @@ -370,12 +373,13 @@ data:extend{ icon_size = 64 } }, - order = data.raw.item["nullius-electrolyzer-2"].order .. "e", - localised_description = {"entity-description.nullius-surge", + order = data.raw.item["nullius-electrolyzer-2"].order .. "e", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, + hidden = true, minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, - placeable_by = {item = "nullius-electrolyzer-2", count = 1}, + placeable_by = {item = "nullius-electrolyzer-2", count = 1}, fast_replaceable_group = "electrolyzer", next_upgrade = "nullius-mirror-surge-electrolyzer-3", max_health = 400, @@ -433,6 +437,7 @@ mnf1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} mnf1.fluid_boxes[2].pipe_connections[1].position = {-0.5, -1.5} mnf1.fluid_boxes[3].pipe_connections[1].position = {0.5, 1.5} mnf1.fluid_boxes[4].pipe_connections[1].position = {1.5, -0.5} +mnf1.hidden = true local mhp1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-hydro-plant-1"]) @@ -446,6 +451,7 @@ mhp1.fluid_boxes[1].pipe_connections[1].position = {1, -2} mhp1.fluid_boxes[2].pipe_connections[1].position = {-1, -2} mhp1.fluid_boxes[3].pipe_connections[1].position = {-1, 2} mhp1.fluid_boxes[4].pipe_connections[1].position = {1, 2} +mhp1.hidden = true local md1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-distillery-1"]) @@ -460,6 +466,7 @@ md1.fluid_boxes[1].pipe_connections[1].position = {1, 2} md1.fluid_boxes[2].pipe_connections[1].position = {-1, 2} md1.fluid_boxes[3].pipe_connections[1].position = {2, -2} md1.fluid_boxes[5].pipe_connections[1].position = {-2, -2} +md1.hidden = true local mse1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"]) @@ -474,6 +481,7 @@ mse1.fluid_boxes[1].pipe_connections[1].position = {1.5, -1.5} mse1.fluid_boxes[2].pipe_connections[1].position = {1.5, 1.5} mse1.fluid_boxes[3].pipe_connections[1].position = {-1.5, -1.5} mse1.fluid_boxes[4].pipe_connections[1].position = {-1.5, 1.5} +mse1.hidden = true local mpe1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-priority-electrolyzer-1"]) @@ -485,14 +493,15 @@ mpe1.next_upgrade = "nullius-mirror-priority-electrolyzer-2" mpe1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-priority-electrolyzer-1"}} mpe1.fluid_boxes = mse1.fluid_boxes +mpe1.hidden = true data:extend{ { type = "assembling-machine", name = "nullius-mirror-priority-electrolyzer-2", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-priority-electrolyzer-2"}}, - icons = { + icons = { { icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, @@ -503,12 +512,13 @@ data:extend{ icon_size = 64 } }, - order = data.raw.item["nullius-electrolyzer-2"].order .. "c", - localised_description = {"entity-description.nullius-priority", + order = data.raw.item["nullius-electrolyzer-2"].order .. "c", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, + hidden = true, minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, - placeable_by = {item = "nullius-electrolyzer-2", count = 1}, + placeable_by = {item = "nullius-electrolyzer-2", count = 1}, fast_replaceable_group = "electrolyzer", next_upgrade = "nullius-mirror-priority-electrolyzer-3", max_health = 400, @@ -529,9 +539,9 @@ data:extend{ { type = "assembling-machine", name = "nullius-mirror-surge-electrolyzer-3", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-surge-electrolyzer-3"}}, - icons = { + icons = { { icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32 @@ -541,12 +551,13 @@ data:extend{ icon_size = 64 } }, - order = data.raw.item["nullius-electrolyzer-3"].order .. "e", - localised_description = {"entity-description.nullius-surge", + order = data.raw.item["nullius-electrolyzer-3"].order .. "e", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, + hidden = true, minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, - placeable_by = {item = "nullius-electrolyzer-3", count = 1}, + placeable_by = {item = "nullius-electrolyzer-3", count = 1}, fast_replaceable_group = "electrolyzer", max_health = 500, corpse = "big-remnants", @@ -593,9 +604,9 @@ data:extend{ { type = "assembling-machine", name = "nullius-mirror-priority-electrolyzer-3", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-priority-electrolyzer-3"}}, - icons = { + icons = { { icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, @@ -606,13 +617,14 @@ data:extend{ icon_size = 64 } }, - order = data.raw.item["nullius-electrolyzer-3"].order .. "c", - localised_description = {"entity-description.nullius-priority", + order = data.raw.item["nullius-electrolyzer-3"].order .. "c", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, + hidden = true, minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, - placeable_by = {item = "nullius-electrolyzer-3", count = 1}, - fast_replaceable_group = "electrolyzer", + placeable_by = {item = "nullius-electrolyzer-3", count = 1}, + fast_replaceable_group = "electrolyzer", --todo: maybe remove that max_health = 500, corpse = "big-remnants", dying_explosion = "medium-explosion", @@ -631,17 +643,18 @@ data:extend{ { type = "assembling-machine", name = "nullius-mirror-chemical-plant-2", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-chemical-plant-2"}}, - order = "z-nullius-bcc", - icons = { - data.raw.item["nullius-chemical-plant-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + order = "z-nullius-bcc", + icons = { + data.raw.item["nullius-chemical-plant-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-chemical-plant"}, flags = {"placeable-neutral","placeable-player", "player-creation"}, + hidden = true, minable = { mining_time = 1.6, result = "nullius-chemical-plant-2"}, - placeable_by = {item = "nullius-chemical-plant-2", count = 1}, + placeable_by = {item = "nullius-chemical-plant-2", count = 1}, max_health = 400, corpse = "chemical-plant-remnants", dying_explosion = "medium-explosion", @@ -704,17 +717,18 @@ data:extend{ { type = "assembling-machine", name = "nullius-mirror-chemical-plant-3", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-chemical-plant-3"}}, - order = "z-nullius-bdc", - icons = { - data.raw.item["nullius-chemical-plant-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + order = "z-nullius-bdc", + icons = { + data.raw.item["nullius-chemical-plant-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-chemical-plant"}, flags = {"placeable-neutral","placeable-player", "player-creation"}, minable = { mining_time = 2, result = "nullius-chemical-plant-3"}, - placeable_by = {item = "nullius-chemical-plant-3", count = 1}, + hidden = true, + placeable_by = {item = "nullius-chemical-plant-3", count = 1}, max_health = 500, corpse = "chemical-plant-remnants", dying_explosion = "medium-explosion", @@ -786,6 +800,7 @@ mcp1.fluid_boxes[1].pipe_connections[1].position = {1, -1} mcp1.fluid_boxes[2].pipe_connections[1].position = {-1, -1} mcp1.fluid_boxes[4].pipe_connections[1].position = {1, 1} mcp1.fluid_boxes[5].pipe_connections[1].position = {-1, 1} +mcp1.hidden = true local mcc1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-combustion-chamber-1"]) @@ -797,19 +812,21 @@ mcc1.localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-combustion-chamber-1"}} mcc1.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} mcc1.fluid_boxes[2].pipe_connections[1].position = {-1, 0.5} +mcc1.hidden = true data:extend{ { type = "assembling-machine", name = "nullius-mirror-combustion-chamber-2", - icons = { - data.raw.item["nullius-combustion-chamber-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + icons = { + data.raw.item["nullius-combustion-chamber-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-combustion-chamber"}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.9, result = "nullius-combustion-chamber-2"}, - placeable_by = {item = "nullius-combustion-chamber-2", count = 1}, + hidden = true, + placeable_by = {item = "nullius-combustion-chamber-2", count = 1}, crafting_categories = { "combustion" }, crafting_speed = 2.5, base_productivity = 0.02, @@ -859,14 +876,15 @@ data:extend{ { type = "assembling-machine", name = "nullius-mirror-combustion-chamber-3", - icons = { - data.raw.item["nullius-combustion-chamber-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + icons = { + data.raw.item["nullius-combustion-chamber-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-combustion-chamber"}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-combustion-chamber-3"}, - placeable_by = {item = "nullius-combustion-chamber-3", count = 1}, + hidden = true, + placeable_by = {item = "nullius-combustion-chamber-3", count = 1}, crafting_categories = { "combustion" }, crafting_speed = 6, base_productivity = 0.04, @@ -894,6 +912,8 @@ ex1m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} ex1m.icons[2] = { icon = ICONPATH .. "flip1.png", icon_size = 64 } ex1m.placeable_by = {item = "nullius-heat-exchanger-1", count = 1} ex1m.next_upgrade = "nullius-mirror-heat-exchanger-2" +ex1m.hidden = true + local ex2m = table.deepcopy(data.raw["assembling-machine"]["nullius-heat-exchanger-1"]) ex2m.name = "nullius-mirror-heat-exchanger-2" ex2m.localised_name = {"entity-name.nullius-mirrored", @@ -903,6 +923,7 @@ ex2m.placeable_by = {item = "nullius-heat-exchanger-2", count = 1} ex2m.next_upgrade = "nullius-mirror-heat-exchanger-3" ex2m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} ex2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} +ex2m.hidden = true local ex3m = util.table.deepcopy(data.raw["assembling-machine"]["nullius-heat-exchanger-1"]) ex3m.name = "nullius-mirror-heat-exchanger-3" @@ -913,6 +934,7 @@ ex3m.placeable_by = {item = "nullius-heat-exchanger-3", count = 1} ex3m.next_upgrade = nil ex3m.fluid_boxes[1].pipe_connections[1].position = {1, 0.5} ex3m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} +ex3m.hidden = true local boilm = util.table.deepcopy(data.raw["assembling-machine"]["nullius-boiler-1"]) boilm.name = "nullius-mirror-boiler-1" @@ -922,6 +944,7 @@ boilm.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} boilm.icons[2] = ex1m.icons[2] boilm.placeable_by = {item = "nullius-boiler-1", count = 1} boilm.next_upgrade = "nullius-mirror-boiler-2" +boilm.hidden = true local boil2m = util.table.deepcopy(data.raw["assembling-machine"]["nullius-boiler-2"]) boil2m.name = "nullius-mirror-boiler-2" @@ -931,6 +954,7 @@ boil2m.fluid_boxes[3].pipe_connections[1].position = {-1, 0.5} boil2m.icons[2] = boilm.icons[2] boil2m.placeable_by = {item = "nullius-boiler-2", count = 1} boil2m.next_upgrade = nil +boil2m.hidden = true local mfc1 = util.table.deepcopy( data.raw["assembling-machine"]["nullius-flotation-cell-1"]) @@ -944,21 +968,23 @@ mfc1.fluid_boxes[1].pipe_connections[1].position = {-1.5, 0.5} mfc1.fluid_boxes[2].pipe_connections[1].position = {0.5, 1.5} mfc1.fluid_boxes[3].pipe_connections[1].position = {1.5, -0.5} mfc1.fluid_boxes[4].pipe_connections[1].position = {-0.5, -1.5} +mfc1.hidden = true data:extend({ { type = "assembling-machine", name = "nullius-mirror-flotation-cell-2", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-flotation-cell-2"}}, - icons = { - data.raw.item["nullius-flotation-cell-2"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + icons = { + data.raw.item["nullius-flotation-cell-2"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-flotation-cell"}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.5, result = "nullius-flotation-cell-2"}, - placeable_by = {item = "nullius-flotation-cell-2", count = 1}, + placeable_by = {item = "nullius-flotation-cell-2", count = 1}, + hidden = true, fast_replaceable_group = "flotation-cell", next_upgrade = "nullius-mirror-flotation-cell-3", max_health = 400, @@ -1015,16 +1041,17 @@ data:extend({ { type = "assembling-machine", name = "nullius-mirror-flotation-cell-3", - localised_name = {"entity-name.nullius-mirrored", + localised_name = {"entity-name.nullius-mirrored", {"entity-name.nullius-flotation-cell-3"}}, - icons = { - data.raw.item["nullius-flotation-cell-3"].icons[1], - { icon = ICONPATH .. "flip1.png", icon_size = 64 } - }, + icons = { + data.raw.item["nullius-flotation-cell-3"].icons[1], + { icon = ICONPATH .. "flip1.png", icon_size = 64 } + }, localised_description = {"entity-description.nullius-flotation-cell"}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 2, result = "nullius-flotation-cell-3"}, - placeable_by = {item = "nullius-flotation-cell-3", count = 1}, + hidden = true, + placeable_by = {item = "nullius-flotation-cell-3", count = 1}, fast_replaceable_group = "flotation-cell", max_health = 500, corpse = "big-remnants", @@ -1098,6 +1125,7 @@ nmc1.graphics_set.working_visualisations[1].north_position = {-0.1, -5.54} nmc1.graphics_set.working_visualisations[1].east_position = {-0.24, -5.85} nmc1.graphics_set.working_visualisations[1].south_position = {0.05, -5.95} nmc1.graphics_set.working_visualisations[1].west_position = {0.16, -5.6} +nmc1.hidden = true local nmc2 = util.table.deepcopy(data.raw.furnace["nullius-chimney-2"]) nmc2.name = "nullius-mirror-chimney-2" @@ -1110,5 +1138,6 @@ nmc2.graphics_set.animation = nmc2.graphics_set.animation.south nmc2.graphics_set.working_visualisations[1].north_position = nmc2.graphics_set.working_visualisations[1].south_position nmc2.graphics_set.working_visualisations[1].east_position = nmc2.graphics_set.working_visualisations[1].south_position nmc2.graphics_set.working_visualisations[1].west_position = nmc2.graphics_set.working_visualisations[1].south_position +nmc2.hidden = true data:extend{mnf1,mhp1,md1,mse1,mpe1,mcp1,mcc1,ex1m,ex2m,ex3m,boilm,boil2m,mfc1,nmc1,nmc2} \ No newline at end of file From 795fc16a2efd51890755e551a662d9143de398d2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 22:26:57 +0200 Subject: [PATCH 136/236] Added flipped working visualisation for chimney-2 (needed for correct rendering with elevated rails) --- .../chimney/flare-stack-flipped-chimney.png | Bin 0 -> 155187 bytes nullius/prototypes/entity/vent.lua | 63 +++++++++++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 nullius/graphics/entity/chimney/flare-stack-flipped-chimney.png diff --git a/nullius/graphics/entity/chimney/flare-stack-flipped-chimney.png b/nullius/graphics/entity/chimney/flare-stack-flipped-chimney.png new file mode 100644 index 0000000000000000000000000000000000000000..755b2b2df348d70ed9466990d515ab2e0fbb56a8 GIT binary patch literal 155187 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�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%0D`PO4U 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 Date: Sat, 23 Aug 2025 22:49:59 +0200 Subject: [PATCH 137/236] Made incompatible with space age and quality Updated 2.0 changelog (wip) --- nullius/TODO_list.txt | 48 --------------------------------------- nullius/changelog_wip.txt | 40 ++++++++++++++++++++++++++++++++ nullius/info.json | 2 ++ 3 files changed, 42 insertions(+), 48 deletions(-) delete mode 100644 nullius/TODO_list.txt create mode 100644 nullius/changelog_wip.txt diff --git a/nullius/TODO_list.txt b/nullius/TODO_list.txt deleted file mode 100644 index 008e1ab..0000000 --- a/nullius/TODO_list.txt +++ /dev/null @@ -1,48 +0,0 @@ ---------------------------------------------------------------------------------------------------- -Version: 2.0.0 -Date: 2025 - Features: - - - Changes: - - - Balancing: - - - Bugfixes: - - - Graphics: - - - Info: - - - Modding: - - ---------------------------------------------------------------------------------------------------- - -Changelog: -Updated to 2.0 -Added landing pad: Now the results of rocket launches will be collected there -Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted -Same thing with aai loaders - -Re-introduced red and green wires so there is a seamless transition to 2.0 -Removed the dependency on angels, now only depends on the graphics -Now uses the Valve prototype for valves -Added essential techs -Added display panels and selector combinator -Tweaked description texts of landing entities to make them less ambiguous -Added a trigger tech "Salvage lab wreckage" -Added icons for drones ammo categories -Renamed the extension tech to inserter extension -Added description to inserters -Added command to flip all valves -Reworked voiding recipes icons to make them standout more in factoriopedia -Added setting to hide the voiding recipe icon from chimneys and outfalls -Removed mentions of the old pressure system -Increased the pumping speeds of pumps (and max flow rate) -Removed regular artillery shortcut and discharge defense shortcut -Changed required techs for most shortcuts -Added wire connexions to assemblers, boxer and nanofab -Allowed medium assembler 1 to craft disabled recipes (to prevent a bug when a broken item is being fixed in early game) -Removed mirror buildings, use 2.0 flipping instead - ------------ -Safefill: added setting to enable mining of waterfill \ No newline at end of file diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt new file mode 100644 index 0000000..47ea82e --- /dev/null +++ b/nullius/changelog_wip.txt @@ -0,0 +1,40 @@ +changelog in construction +--------------------------------------------------------------------------------------------------- +Version: 2.0.0 +Date: 2025 + Features: + - Updated to 2.0 + - Added landing pad: Now the results of rocket launches will be collected there + - Re-introduced red and green wires so there is a seamless transition to 2.0 + - Added essential techs + - Added command to flip all valves + - Added wire connexions to assemblers, boxer and nanofab + - Added display panels and selector combinator + - Added setting to hide the voiding recipe icon from chimneys and outfalls + Changes: + - Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted + Same thing with aai loaders + - Removed mirror buildings, use 2.0 flipping instead + - Added a trigger tech "Salvage lab wreckage" + - Removed regular artillery shortcut and discharge defense shortcut + - Changed required techs for most shortcuts + - Now uses the Valve prototype for valves + - Allowed medium assembler 1 to craft disabled recipes (to prevent a bug when a broken item is being fixed in early game) + Balancing: + - Increased the pumping speeds of pumps (and max flow rate) + Bugfixes: + - + Graphics: + - Added icons for drones ammo categories + - Reworked voiding recipes icons to make them standout more in factoriopedia + Info: + - Added description to inserters + - Renamed the extension tech to inserter extension + - Tweaked description texts of landing entities to make them less ambiguous + - Removed mentions of the old pressure system + Modding: + - Removed the dependency on angels, now only depends on the graphics + - Now supports elevated rails +--------------------------------------------------------------------------------------------------- + +Safefill: added setting to enable mining of waterfill \ No newline at end of file diff --git a/nullius/info.json b/nullius/info.json index 745edf1..39dbad1 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -45,6 +45,8 @@ "(?) fcpu >= 0.4.33", "(?) reskins-bobs >= 2.3.5", + "! space-age", + "! quality", "! aai-industry", "! angelsbioprocessing", "! angelsinfiniteores", From 54c94e2646dd6aeaeaa7237c26075a6dc64c3f1d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 23 Aug 2025 23:08:40 +0200 Subject: [PATCH 138/236] Stopped drawing assembler's fluidboxes when no recipe is set --- nullius/prototypes/entity/assembler.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index f260fb1..89213fb 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -449,6 +449,7 @@ data:extend({ collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_boxes = data.raw["assembling-machine"]["nullius-medium-assembler-1"].fluid_boxes, + fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "medium-assembler", next_upgrade = "nullius-medium-assembler-3", alert_icon_shift = util.by_pixel(-3, -12), @@ -517,6 +518,7 @@ data:extend({ collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_boxes = data.raw["assembling-machine"]["nullius-medium-assembler-1"].fluid_boxes, + fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "medium-assembler", alert_icon_shift = util.by_pixel(-3, -12), graphics_set = { @@ -583,6 +585,7 @@ data:extend({ collision_box = {{-1.7, -1.7}, {1.7, 1.7}}, selection_box = {{-2.0, -2.0}, {2.0, 2.0}}, fluid_boxes = data.raw["assembling-machine"]["nullius-large-assembler-1"].fluid_boxes, + fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "large-assembler", alert_icon_shift = util.by_pixel(-3, -12), graphics_set = { From 4667651357079fe171e44493f8cd701eb80b4590 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 14:14:22 +0200 Subject: [PATCH 139/236] Fixed night vision 1 equipment icon --- nullius/prototypes/entity/equipment.lua | 4 ++-- nullius/prototypes/item/equipment.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nullius/prototypes/entity/equipment.lua b/nullius/prototypes/entity/equipment.lua index 34dcd9b..d26e059 100644 --- a/nullius/prototypes/entity/equipment.lua +++ b/nullius/prototypes/entity/equipment.lua @@ -942,8 +942,8 @@ data:extend({ order = "eb", sprite = { filename = "__base__/graphics/equipment/night-vision-equipment.png", - width = 64, - height = 64, + width = 128, + height = 128, priority = "medium", scale = 1.2 }, diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index 539bd6f..7844c65 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -1640,7 +1640,7 @@ data:extend({ {"equipment-description.nullius-night-vision-1"}, {"entity-description.nullius-kilojoule", tostring(150)}}, icon = "__base__/graphics/equipment/night-vision-equipment.png", - icon_size = 64, + icon_size = 128, place_as_equipment_result = "nullius-night-vision-1", subgroup = "equipment", order = "nullius-cb", From f4fee995ad490498e471d6ebafbb948aacda1fe9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 14:14:45 +0200 Subject: [PATCH 140/236] Fixed furnace fluid box --- nullius/prototypes/entity/furnace.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 4145b83..4f072e6 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -818,7 +818,7 @@ data:extend({ production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.north }} + pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.east }} }, }, impact_category = data.raw["furnace"]["stone-furnace"].impact_category, @@ -898,7 +898,7 @@ data:extend({ production_type = "output", pipe_covers = pipecoverspictures(), volume = 500, - pipe_connections = {{ flow_direction ="output", position = {1.2, -1}, direction = defines.direction.east }} + pipe_connections = {{ flow_direction ="output", position = {1, -1}, direction = defines.direction.east }} }, }, impact_category = data.raw["assembling-machine"]["nullius-foundry-1"].impact_category, From 382478925b6654c82a2fd66d75ef0a7044c903f6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 14:15:16 +0200 Subject: [PATCH 141/236] Fixed pumps wire connections --- nullius/prototypes/entity/plumbing.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 5d3198e..fc14bdf 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -2667,8 +2667,7 @@ data:extend({ fluid_wagon_connector_graphics = data.raw.pump["pump"].fluid_wagon_connector_graphics, fluid_animation = data.raw.pump["pump"].fluid_animation, glass_pictures = data.raw.pump["pump"].glass_pictures, - circuit_wire_connection_points = circuit_connector_definitions["pump"].points, - circuit_connector_sprites = circuit_connector_definitions["pump"].sprites, + circuit_connector = circuit_connector_definitions["pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, animations = { @@ -2834,8 +2833,7 @@ data:extend({ fluid_wagon_connector_graphics = data.raw.pump["pump"].fluid_wagon_connector_graphics, fluid_animation = data.raw.pump["pump"].fluid_animation, glass_pictures = data.raw.pump["pump"].glass_pictures, - circuit_wire_connection_points = circuit_connector_definitions["pump"].points, - circuit_connector_sprites = circuit_connector_definitions["pump"].sprites, + circuit_connector = circuit_connector_definitions["pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, animations = { From edc8be7b107fdfcabb074d12d7065ea5214e90eb Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 14:15:46 +0200 Subject: [PATCH 142/236] Removed mentions of 1.1 fluid mechanics in valve's descriptions --- nullius/locale/en/entity.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/locale/en/entity.cfg b/nullius/locale/en/entity.cfg index 51db108..e191879 100644 --- a/nullius/locale/en/entity.cfg +++ b/nullius/locale/en/entity.cfg @@ -394,8 +394,8 @@ nullius-turbine-exhaust=Primary energy provider like wind turbines. Operates wh nullius-combustion-chamber=Burns stored chemical fuels to produce steam. nullius-boiler=Uses electricity to turn water into steam. nullius-chemical-plant=Catalyzes a broad range of chemical reactions. -nullius-one-way-valve=Allows flow in a single direction only. May be useful to control backflow and sloshing in higher throughput pipes. -nullius-relief-valve=Allows flow from a source with over 75% volume. Useful attached to a pump-filled tank to spill excess quantities of a byproduct for venting to avoid blocking production. +nullius-one-way-valve=Allows flow in a single direction only. Useful to prevent backflow. +nullius-relief-valve=Allows flow from a source with over 75% volume. Useful to spill excess quantities of a byproduct for venting to avoid blocking production. nullius-top-up-valve=Allows flow into a destination with under 50% volume. Useful when you have two sources of the same fluid, as both a byproduct and a main product. Use this valve to fill a tank from the main product pipeline, and not the byproduct pipeline, thus prioritizing use of the byproduct when sufficient, but providing it by other means if not. nullius-priority-valve=Allows flow from a source with over 25% volume. Useful when supplying a single fluid to multiple destinations of varying importance. Use this valve to supply a pipeline of secondary importance, so that it will be supplied only if the tank has adequate supply to satisfy the primary usage. nullius-pipe=Transfers fluids From 0e55496dc1aaa74567a8440327b26fa57576ac54 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 14:16:13 +0200 Subject: [PATCH 143/236] Changed checkpoint requirements to reflect a lesser need in pumps in 2.0 plumbing --- nullius/prototypes/checkpoint.lua | 4 ++-- nullius/scripts/checkpoint.lua | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/checkpoint.lua b/nullius/prototypes/checkpoint.lua index 3122e1d..46ba650 100644 --- a/nullius/prototypes/checkpoint.lua +++ b/nullius/prototypes/checkpoint.lua @@ -649,7 +649,7 @@ data:extend({ {"technology-name.nullius-plumbing"}}}, localised_description = {"", {"technology-description.nullius-build", {"technology-description.nullius-item", - tostring(10),"nullius-pump-1", {"entity-name.nullius-pump-1"}}}, "\n", + tostring(1),"nullius-pump-1", {"entity-name.nullius-pump-1"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", tostring(10),"nullius-medium-tank-2", {"entity-name.nullius-medium-tank-2"}}}, "\n", {"technology-description.nullius-build", {"technology-description.nullius-item", @@ -1883,7 +1883,7 @@ data:extend({ localised_name = {"technology-name.nullius-checkpoint", {"technology-name.nullius-deployment", {"technology-name.nullius-pumping"}}}, localised_description = {"technology-description.nullius-build", - {"technology-description.nullius-item", tostring(40), "nullius-pump-2", {"entity-name.nullius-pump-2"}}}, + {"technology-description.nullius-item", tostring(5), "nullius-pump-2", {"entity-name.nullius-pump-2"}}}, order = "nullius-yf", icons = { { diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index 04a2985..cd74ac4 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -42,7 +42,7 @@ local checkpoint_data = { ["freight-transportation"] = {{ CHK_ITEM, STT_CONSUME, 2, {{"nullius-hydrogen-canister"}} }, { CHK_ITEM, STT_CONSUME, 1, {{"nullius-water-canister"}} }}, ["lubricant"] = {{ CHK_FLUID, STT_PRODUCE, 250, {{"nullius-lubricant"}} }}, - ["plumbing"] = {{ CHK_BUILD, STT_NET, 10, {{"nullius-pump-1"}} }, + ["plumbing"] = {{ CHK_BUILD, STT_NET, 1, {{"nullius-pump-1"}} }, { CHK_BUILD, STT_NET, 10, {{"nullius-medium-tank-2"}} }, { CHK_BUILD, STT_NET, 6, {{"nullius-relief-valve"}} }}, @@ -102,7 +102,7 @@ local checkpoint_data = { ["large-miner"] = {{ CHK_BUILD, STT_NET, 50, {{"nullius-large-miner-1"}} }}, ["filter"] = {{ CHK_ITEM, STT_PRODUCE, 100, {{"nullius-filter-2"}, {"nullius-box-filter-2", 5}} }}, - ["pumping"] = {{ CHK_BUILD, STT_NET, 40, {{"nullius-pump-2"}} }}, + ["pumping"] = {{ CHK_BUILD, STT_NET, 5, {{"nullius-pump-2"}} }}, ["logistics-3"] = {{ CHK_BUILD, STT_NET, 10, {{"bob-ultimate-splitter"}} }}, ["automation"] = {{ CHK_BUILD, STT_NET, 20, {{"nullius-large-assembler-2"}} }}, ["mining"] = {{ CHK_ITEM, STT_CONSUME, 1200000, {{"iron-ore"},{"nullius-box-iron-ore",5}} }, From 5c4cf39397b8899ca7d800416c5a4b8f970ebfb0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 15:03:50 +0200 Subject: [PATCH 144/236] Fixed broken conector points graphics --- nullius/prototypes/entity/chest.lua | 51 +++++++++---------------- nullius/prototypes/entity/energy.lua | 9 ++--- nullius/prototypes/entity/logistics.lua | 9 ++--- nullius/prototypes/entity/miner.lua | 24 ++++-------- nullius/prototypes/entity/plumbing.lua | 51 +++++++------------------ nullius/prototypes/entity/robot.lua | 24 ++++-------- 6 files changed, 52 insertions(+), 116 deletions(-) diff --git a/nullius/prototypes/entity/chest.lua b/nullius/prototypes/entity/chest.lua index 8767b14..e1765d8 100644 --- a/nullius/prototypes/entity/chest.lua +++ b/nullius/prototypes/entity/chest.lua @@ -44,8 +44,7 @@ data:extend({ } } }, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance }, { @@ -67,8 +66,7 @@ data:extend({ fast_replaceable_group = "container", inventory_size = 150, impact_category = "metal", - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { @@ -121,8 +119,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -200,8 +197,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -280,8 +276,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { @@ -334,8 +329,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -412,8 +406,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -491,8 +484,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { @@ -547,8 +539,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -627,8 +618,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -708,8 +698,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { @@ -764,8 +753,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -844,8 +832,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -925,8 +912,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { @@ -979,8 +965,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -1057,8 +1042,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { @@ -1136,8 +1120,7 @@ data:extend({ animation_sound = data.raw["logistic-container"]["storage-chest"].animation_sound, impact_category = data.raw["logistic-container"]["storage-chest"].impact_category, opened_duration = data.raw["logistic-container"]["storage-chest"].opened_duration, - circuit_wire_connection_point = circuit_connector_definitions["chest"].points, - circuit_connector_sprites = circuit_connector_definitions["chest"].sprites, + circuit_connector = circuit_connector_definitions["chest"], circuit_wire_max_distance = default_circuit_wire_max_distance, animation = { layers = { diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 8ef453e..9048d5c 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -254,8 +254,7 @@ data:extend({ }, impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, - circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, - circuit_connector_sprites = circuit_connector_definitions["accumulator"].sprites, + circuit_connector = circuit_connector_definitions["accumulator"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_output_signal = {type = "virtual", name = "signal-A"} }, @@ -324,8 +323,7 @@ data:extend({ impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, - circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, - circuit_connector_sprites = circuit_connector_definitions["accumulator"].sprites, + circuit_connector = circuit_connector_definitions["accumulator"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_output_signal = {type = "virtual", name = "signal-A"} }, @@ -393,8 +391,7 @@ data:extend({ impact_category = "metal", working_sound = data.raw.accumulator["accumulator"].working_sound, - circuit_wire_connection_point = circuit_connector_definitions["accumulator"].points, - circuit_connector_sprites = circuit_connector_definitions["accumulator"].sprites, + circuit_connector = circuit_connector_definitions["accumulator"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_output_signal = {type = "virtual", name = "signal-A"} }, diff --git a/nullius/prototypes/entity/logistics.lua b/nullius/prototypes/entity/logistics.lua index 3fe0b04..0268d57 100644 --- a/nullius/prototypes/entity/logistics.lua +++ b/nullius/prototypes/entity/logistics.lua @@ -627,8 +627,7 @@ data:extend({ working_sound = data.raw["lamp"]["small-lamp"].working_sound, energy_source = { type = "electric", usage_priority = "lamp" }, signal_to_color_mapping = data.raw["lamp"]["small-lamp"].signal_to_color_mapping, - circuit_wire_connection_point = circuit_connector_definitions["lamp"].points, - circuit_connector_sprites = circuit_connector_definitions["lamp"].sprites, + circuit_connector = circuit_connector_definitions["lamp"], circuit_wire_max_distance = default_circuit_wire_max_distance, energy_usage_per_tick = "4kW", @@ -699,8 +698,7 @@ data:extend({ working_sound = data.raw["lamp"]["small-lamp"].working_sound, energy_source = { type = "electric", usage_priority = "lamp" }, signal_to_color_mapping = data.raw["lamp"]["small-lamp"].signal_to_color_mapping, - circuit_wire_connection_point = circuit_connector_definitions["lamp"].points, - circuit_connector_sprites = circuit_connector_definitions["lamp"].sprites, + circuit_connector = circuit_connector_definitions["lamp"], circuit_wire_max_distance = default_circuit_wire_max_distance, energy_usage_per_tick = "8kW", @@ -860,8 +858,7 @@ data:extend({ hand_closed_shadow = data.raw["inserter"]["fast-inserter"].hand_closed_shadow, hand_open_shadow = data.raw["inserter"]["fast-inserter"].hand_open_shadow, platform_picture = data.raw["inserter"]["fast-inserter"].platform_picture, - circuit_wire_connection_points = data.raw["inserter"]["fast-inserter"].circuit_wire_connection_points, - circuit_connector_sprites = data.raw["inserter"]["fast-inserter"].circuit_connector_sprites, + circuit_connector = data.raw["inserter"]["fast-inserter"].circuit_connector, circuit_wire_max_distance = data.raw["inserter"]["fast-inserter"].circuit_wire_max_distance, default_stack_control_input_signal = data.raw["inserter"]["fast-inserter"].default_stack_control_input_signal }, diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index 6dc517f..b0a37d3 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -265,8 +265,7 @@ data:extend({ fast_replaceable_group = "small-miner", next_upgrade = "nullius-small-miner-2", - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance }, @@ -428,8 +427,7 @@ data:extend({ } }, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance }, @@ -472,8 +470,7 @@ data:extend({ }, module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -926,8 +923,7 @@ data:extend({ radius_visualisation_picture = data.raw["mining-drill"]["nullius-small-miner-2"].radius_visualisation_picture, module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -1158,8 +1154,7 @@ data:extend({ impact_category = data.raw["mining-drill"]["electric-mining-drill"].impact_category, open_sound = data.raw["mining-drill"]["electric-mining-drill"].open_sound, close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -1474,8 +1469,7 @@ data:extend({ close_sound = data.raw["mining-drill"]["electric-mining-drill"].close_sound, graphics_set = data.raw["mining-drill"]["electric-mining-drill"].graphics_set, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance }, @@ -1518,8 +1512,7 @@ data:extend({ }, module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -2157,8 +2150,7 @@ data:extend({ radius_visualisation_picture = data.raw["mining-drill"]["nullius-large-miner-1"].radius_visualisation_picture, module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points, - circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites, + circuit_connector = circuit_connector_definitions["electric-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index fc14bdf..596934c 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -165,8 +165,7 @@ data:extend({ impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, placeable_position_visualization = data.raw["offshore-pump"]["offshore-pump"].placeable_position_visualization, - circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, - circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, + circuit_connector = circuit_connector_definitions["offshore-pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, resistances = { { type = "impact", decrease = 100, percent = 90 }, @@ -476,8 +475,7 @@ data:extend({ impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, placeable_position_visualization = data.raw["offshore-pump"]["offshore-pump"].placeable_position_visualization, - circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, - circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, + circuit_connector = circuit_connector_definitions["offshore-pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, water_reflection = data.raw["offshore-pump"]["offshore-pump"].water_reflection, resistances = { @@ -1276,9 +1274,6 @@ data:extend({ }, impact_category = "metal", - circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, - circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, - circuit_wire_max_distance = default_circuit_wire_max_distance, mode = "overflow", threshold = 0.25, @@ -1372,9 +1367,6 @@ data:extend({ }, impact_category = "metal", - circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, - circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, - circuit_wire_max_distance = default_circuit_wire_max_distance, mode = "one-way", flow_rate = 200, @@ -1467,9 +1459,6 @@ data:extend({ }, impact_category = "metal", - circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, - circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, - circuit_wire_max_distance = default_circuit_wire_max_distance, mode = "top-up", threshold = 0.5, @@ -1563,9 +1552,6 @@ data:extend({ }, impact_category = "metal", - circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, - circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, - circuit_wire_max_distance = default_circuit_wire_max_distance, mode = "overflow", threshold = 0.75, @@ -1664,8 +1650,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance, water_reflection = data.raw["storage-tank"]["storage-tank"].water_reflection, @@ -1732,8 +1717,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance, pictures = { @@ -1967,8 +1951,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance } }) @@ -2005,8 +1988,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance } }) @@ -2057,8 +2039,7 @@ data:extend({ match_volume_to_activity = true, max_sounds_per_prototype = 3, }, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance, pictures = { picture = { @@ -2146,8 +2127,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["nullius-large-tank-1"].working_sound, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance, pictures = table.deepcopy(data.raw["storage-tank"]["nullius-large-tank-1"].pictures) }, @@ -2179,8 +2159,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["nullius-large-tank-1"].working_sound, - circuit_wire_connection_points = circuit_connector_definitions["storage-tank"].points, - circuit_connector_sprites = circuit_connector_definitions["storage-tank"].sprites, + circuit_connector = circuit_connector_definitions["storage-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance, pictures = table.deepcopy(data.raw["storage-tank"]["nullius-large-tank-1"].pictures) } @@ -2244,8 +2223,7 @@ data:extend({ height = 12 }, monitor_visualization_tint = {r=78, g=173, b=255}, - circuit_wire_connection_points = circuit_connector_definitions["pumpjack"].points, - circuit_connector_sprites = circuit_connector_definitions["pumpjack"].sprites, + circuit_connector = circuit_connector_definitions["pumpjack"], circuit_wire_max_distance = default_circuit_wire_max_distance, base_render_layer = "lower-object-above-shadow", base_picture = { @@ -2352,8 +2330,7 @@ data:extend({ height = 12 }, monitor_visualization_tint = {r=78, g=173, b=255}, - circuit_wire_connection_points = circuit_connector_definitions["pumpjack"].points, - circuit_connector_sprites = circuit_connector_definitions["pumpjack"].sprites, + circuit_connector = circuit_connector_definitions["pumpjack"], circuit_wire_max_distance = default_circuit_wire_max_distance, base_render_layer = "lower-object-above-shadow", base_picture = { @@ -2992,8 +2969,7 @@ data:extend({ impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, - circuit_wire_connection_points = data.raw["pump"]["pump"].circuit_wire_connection_points, - circuit_connector_sprites = data.raw["pump"]["pump"].circuit_connector_sprites, + circuit_connector = circuit_connector_definitions["pump"], circuit_wire_max_distance = data.raw["pump"]["pump"].circuit_wire_max_distance, animations = { @@ -3103,8 +3079,7 @@ data:extend({ impact_category = data.raw["pump"]["pump"].impact_category, open_sound = data.raw["pump"]["pump"].open_sound, close_sound = data.raw["pump"]["pump"].close_sound, - circuit_wire_connection_points = data.raw["pump"]["pump"].circuit_wire_connection_points, - circuit_connector_sprites = data.raw["pump"]["pump"].circuit_connector_sprites, + circuit_connector = circuit_connector_definitions["pump"], circuit_wire_max_distance = data.raw["pump"]["pump"].circuit_wire_max_distance, animations = { diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index 7f8b6e7..a8df145 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -398,8 +398,7 @@ data:extend({ open_door_trigger_effect = data.raw["roboport"]["roboport"].open_door_trigger_effect, close_door_trigger_effect = data.raw["roboport"]["roboport"].close_door_trigger_effect, water_reflection = data.raw["roboport"]["roboport"].water_reflection, - circuit_wire_connection_point = circuit_connector_definitions["roboport"].points, - circuit_connector_sprites = circuit_connector_definitions["roboport"].sprites, + circuit_connector = circuit_connector_definitions["roboport"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_available_logistic_output_signal = {type = "virtual", name = "signal-X"}, default_total_logistic_output_signal = {type = "virtual", name = "signal-Y"}, @@ -518,8 +517,7 @@ data:extend({ open_door_trigger_effect = data.raw["roboport"]["roboport"].open_door_trigger_effect, close_door_trigger_effect = data.raw["roboport"]["roboport"].close_door_trigger_effect, water_reflection = data.raw["roboport"]["roboport"].water_reflection, - circuit_wire_connection_point = circuit_connector_definitions["roboport"].points, - circuit_connector_sprites = circuit_connector_definitions["roboport"].sprites, + circuit_connector = circuit_connector_definitions["roboport"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_available_logistic_output_signal = {type = "virtual", name = "signal-X"}, default_total_logistic_output_signal = {type = "virtual", name = "signal-Y"}, @@ -637,8 +635,7 @@ data:extend({ open_door_trigger_effect = data.raw["roboport"]["roboport"].open_door_trigger_effect, close_door_trigger_effect = data.raw["roboport"]["roboport"].close_door_trigger_effect, water_reflection = data.raw["roboport"]["roboport"].water_reflection, - circuit_wire_connection_point = circuit_connector_definitions["roboport"].points, - circuit_connector_sprites = circuit_connector_definitions["roboport"].sprites, + circuit_connector = circuit_connector_definitions["roboport"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_available_logistic_output_signal = {type = "virtual", name = "signal-X"}, default_total_logistic_output_signal = {type = "virtual", name = "signal-Y"}, @@ -756,8 +753,7 @@ data:extend({ open_door_trigger_effect = data.raw["roboport"]["roboport"].open_door_trigger_effect, close_door_trigger_effect = data.raw["roboport"]["roboport"].close_door_trigger_effect, water_reflection = data.raw["roboport"]["roboport"].water_reflection, - circuit_wire_connection_point = circuit_connector_definitions["nullius-hangar-4"].points, - circuit_connector_sprites = circuit_connector_definitions["nullius-hangar-4"].sprites, + circuit_connector = circuit_connector_definitions["nullius-hangar-4"], circuit_wire_max_distance = default_circuit_wire_max_distance, default_available_logistic_output_signal = {type = "virtual", name = "signal-X"}, default_total_logistic_output_signal = {type = "virtual", name = "signal-Y"}, @@ -866,8 +862,7 @@ data:extend({ base_patch = data.raw["roboport"]["bob-logistic-zone-expander"].base_patch, door_animation_up = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_up, door_animation_down = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_down, - circuit_wire_connection_point = circuit_connector_definitions["nullius-relay"].points, - circuit_connector_sprites = circuit_connector_definitions["nullius-relay"].sprites, + circuit_connector = circuit_connector_definitions["nullius-relay"], circuit_wire_max_distance = default_circuit_wire_max_distance, base = { @@ -932,8 +927,7 @@ data:extend({ base_patch = data.raw["roboport"]["bob-logistic-zone-expander"].base_patch, door_animation_up = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_up, door_animation_down = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_down, - circuit_wire_connection_point = circuit_connector_definitions["nullius-relay"].points, - circuit_connector_sprites = circuit_connector_definitions["nullius-relay"].sprites, + circuit_connector = circuit_connector_definitions["nullius-relay"], circuit_wire_max_distance = default_circuit_wire_max_distance, base = { @@ -998,8 +992,7 @@ data:extend({ base_patch = data.raw["roboport"]["bob-logistic-zone-expander"].base_patch, door_animation_up = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_up, door_animation_down = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_down, - circuit_wire_connection_point = circuit_connector_definitions["nullius-relay"].points, - circuit_connector_sprites = circuit_connector_definitions["nullius-relay"].sprites, + circuit_connector = circuit_connector_definitions["nullius-relay"], circuit_wire_max_distance = default_circuit_wire_max_distance, base = { @@ -1063,8 +1056,7 @@ data:extend({ base_patch = data.raw["roboport"]["bob-logistic-zone-expander"].base_patch, door_animation_up = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_up, door_animation_down = data.raw["roboport"]["bob-logistic-zone-expander"].door_animation_down, - circuit_wire_connection_point = circuit_connector_definitions["nullius-relay"].points, - circuit_connector_sprites = circuit_connector_definitions["nullius-relay"].sprites, + circuit_connector = circuit_connector_definitions["nullius-relay"], circuit_wire_max_distance = default_circuit_wire_max_distance, base = { From fdbd385d78d3187f752bb97831f99729c031c254 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 15:34:42 +0200 Subject: [PATCH 145/236] Fixed missing turbine preview (won't be animated though) --- nullius/prototypes/entity/turbine.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 5c1b127..c5be0e9 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -94,6 +94,16 @@ local function set_furnace_idle(proto, overlay, tint) west = horizontal } } + proto.graphics_set.working_visualisations = { + { + always_draw = true, + render_layer = "object-under", -- draw under the generator animation (only used for the preview) + north_animation = vertical, + east_animation = horizontal, + south_animation = vertical, + west_animation = horizontal + } + } end local function set_generator_animation(proto, overlay, tint) From 027016abf39f38642c499118a75af6e6d255ccce Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 16:00:13 +0200 Subject: [PATCH 146/236] Fixed nanofab alt icon --- nullius/changelog_wip.txt | 3 ++- nullius/prototypes/entity/assembler.lua | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 47ea82e..4f3ebed 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -14,12 +14,13 @@ Date: 2025 Changes: - Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted Same thing with aai loaders - - Removed mirror buildings, use 2.0 flipping instead + - Removed mirror buildings, use 2.0 flipping instead, removed chirality research - Added a trigger tech "Salvage lab wreckage" - Removed regular artillery shortcut and discharge defense shortcut - Changed required techs for most shortcuts - Now uses the Valve prototype for valves - Allowed medium assembler 1 to craft disabled recipes (to prevent a bug when a broken item is being fixed in early game) + - Changed plumbing and pumping checkpoints to reflect lesser need for pumps in 2.0 fluid system Balancing: - Increased the pumping speeds of pumps (and max flow rate) Bugfixes: diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 89213fb..39ac9b0 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -681,7 +681,7 @@ data:extend({ order = data.raw.item["nullius-nanofabricator-1"].order .. "b", localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, - icon_draw_specification = {shift = {-0.1, 0}, scale = 1.2}, + icon_draw_specification = {shift = {-0.1, -0.2}, scale = 0.9}, minable = {mining_time = 2, result = "nullius-nanofabricator-1"}, max_health = 300, corpse = "big-remnants", @@ -779,7 +779,7 @@ data:extend({ order = data.raw.item["nullius-nanofabricator-2"].order .. "b", localised_description = {"entity-description.nullius-nanofabricator"}, flags = {"placeable-neutral", "placeable-player", "player-creation"}, - icon_draw_specification = {shift = {-0.1, 0}, scale = 1.2}, + icon_draw_specification = {shift = {-0.1, -0.2}, scale = 0.9}, minable = {mining_time = 2.5, result = "nullius-nanofabricator-2"}, max_health = 400, corpse = "big-remnants", From e0092c5f2e39686419c6d665dac4f2881bf5a60c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 20:58:40 +0200 Subject: [PATCH 147/236] Fixed broken recipes getting disabled too early I'm not entirely satisfied by this solution, I will probably rewrite it after some user feedback --- nullius/prototypes/entity/assembler.lua | 1 - nullius/scripts/build.lua | 2 + nullius/scripts/checkpoint.lua | 2 +- nullius/scripts/startup.lua | 56 ++++++++++++++++++++++++- 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 39ac9b0..d21a88d 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -128,7 +128,6 @@ data:extend({ icon_size = 64, icons = data.raw.item["nullius-medium-assembler-1"].icons, flags = {"placeable-neutral", "placeable-player", "player-creation"}, - disabled_when_recipe_not_researched = false, icon_draw_specification = {shift = {0, -0.2}}, minable = {mining_time = 0.8, result = "nullius-medium-assembler-1"}, max_health = 300, diff --git a/nullius/scripts/build.lua b/nullius/scripts/build.lua index 0771cee..b54a091 100644 --- a/nullius/scripts/build.lua +++ b/nullius/scripts/build.lua @@ -113,6 +113,8 @@ function update_tick() update_grass() elseif (tickmod1 == 9) then update_align() + elseif (tickmod1 == 10) then + check_fixing_machines() elseif (tickmod1 == 11) then local tickmod2 = (game.tick % 15) if (tickmod2 == 2) then diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index cd74ac4..6323cd2 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -399,7 +399,7 @@ local function update_checkpoint_force(force, tick) tech.researched = true end else - broken_finished(check.name) + broken_finished_delayed(check.name) end elseif (tech ~= nil) then progress = (progress / count) diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index cb47f6d..50695d4 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -17,7 +17,61 @@ function broken_disabled(name) return false end -function broken_finished(name) +function check_fixing_machines() + if storage.fixing_machines == nil then return end + for i,entry in pairs(storage.fixing_machines) do + if entry.machine.valid then + local machine_recipe = entry.machine.get_recipe() + if machine_recipe and machine_recipe.name == entry.recipe then + if entry.machine.products_finished > entry.finished then + broken_finished(machine_recipe.name) + table.remove(storage.fixing_machines,i) + end + else -- recipe changed before product finished + table.remove(storage.fixing_machines,i) + end + else + table.remove(storage.fixing_machines,i) + end + end + if #storage.fixing_machines == 0 then + storage.fixing_machines = nil + end +end + +function broken_finished_delayed(name) + local machines = game.surfaces["nauvis"].find_entities_filtered{type = "assembling-machine"} -- check only appropriate machines ? + for _,machine in pairs(machines) do + local recipe = machine.get_recipe() + if recipe ~= nil then + if string.sub(recipe.name, 1, 15) == "nullius-broken-" then + if storage.fixing_machines == nil then storage.fixing_machines = {} end + for i,entry in pairs(storage.fixing_machines) do -- prevent duplicates + if entry.machine == machine then + if entry.machine.get_recipe().name == entry.recipe then return + else + table.remove(storage.fixing_machines,i) + end + end + end + table.insert(storage.fixing_machines, {machine = machine, recipe = table.deepcopy(recipe.name), finished = machine.products_finished}) + return + end + else + for i,entry in pairs(storage.fixing_machines or {}) do + if entry.machine == machine then + table.remove(storage.fixing_machines,i) + return + end + end + end + end +end + +function broken_finished(name, notHandCrafted) + -- if notHandCrafted then + + -- end storage.nullius_broken_status[name] = nil for _, force in pairs(game.forces) do force.recipes[name].enabled = false From a4089d6739cfe6c7c910fd251c7e6ee852253a80 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 21:49:00 +0200 Subject: [PATCH 148/236] Fixed legacy pump graphics --- nullius/prototypes/entity/plumbing.lua | 281 ++++++++++++++----------- 1 file changed, 156 insertions(+), 125 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 596934c..cc6f12c 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -172,22 +172,26 @@ data:extend({ { type = "fire", percent = 75 } }, - graphics_set = { - underwater_layer_offset = 30, + graphics_set = + { + underwater_layer_offset = 15, base_render_layer = "ground-patch", - animation = { - north = { - layers = { + animation = + { + north = + { + layers = + { { filename = BASEENTITY .. "offshore-pump/offshore-pump_North.png", priority = "high", line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 48, - height = 84, - shift = util.by_pixel(-2*0.75, -16*0.75), - scale = 0.75 + width = 90, + height = 162, + shift = util.by_pixel(-1*0.75, -15*0.75), + scale = 0.5*0.75 }, { filename = BASEENTITY .. "offshore-pump/offshore-pump_North-shadow.png", @@ -195,26 +199,28 @@ data:extend({ line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 78, - height = 70, - shift = util.by_pixel(12*0.75, -8*0.75), + width = 150, + height = 134, + shift = util.by_pixel(13*0.75, -7*0.75), draw_as_shadow = true, - scale = 0.75 + scale = 0.5*0.75 } } }, - east = { - layers = { + east = + { + layers = + { { filename = BASEENTITY .. "offshore-pump/offshore-pump_East.png", priority = "high", line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 64, - height = 52, - shift = util.by_pixel(14*0.75-4, -2*0.75), - scale = 0.75 + width = 124, + height = 102, + shift = util.by_pixel(15*0.75, -2*0.75), + scale = 0.5*0.75 }, { filename = BASEENTITY .. "offshore-pump/offshore-pump_East-shadow.png", @@ -222,26 +228,28 @@ data:extend({ line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 88, - height = 34, - shift = util.by_pixel(28*0.75-4, 8*0.75), + width = 180, + height = 66, + shift = util.by_pixel(27*0.75, 8*0.75), draw_as_shadow = true, - scale = 0.75 + scale = 0.5*0.75 } } }, - south = { - layers = { + south = + { + layers = + { { filename = BASEENTITY .. "offshore-pump/offshore-pump_South.png", priority = "high", line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 48, - height = 96, - shift = util.by_pixel(-2*0.75, 0), - scale = 0.75 + width = 92, + height = 192, + shift = util.by_pixel(-1*0.75, 0), + scale = 0.5*0.75 }, { filename = BASEENTITY .. "offshore-pump/offshore-pump_South-shadow.png", @@ -249,26 +257,28 @@ data:extend({ line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 80, - height = 66, - shift = util.by_pixel(16*0.75, 22*0.75), + width = 164, + height = 128, + shift = util.by_pixel(15*0.75, 23*0.75), draw_as_shadow = true, - scale = 0.75 + scale = 0.5*0.75 } } }, - west = { - layers = { + west = + { + layers = + { { filename = BASEENTITY .. "offshore-pump/offshore-pump_West.png", priority = "high", line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 64, - height = 52, - shift = util.by_pixel(-16*0.75+4, -2*0.75), - scale = 0.75 + width = 124, + height = 102, + shift = util.by_pixel(-15*0.75, -2*0.75), + scale = 0.5*0.75 }, { filename = BASEENTITY .. "offshore-pump/offshore-pump_West-shadow.png", @@ -276,152 +286,173 @@ data:extend({ line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 88, - height = 34, - shift = util.by_pixel(-4*0.75+4, 8*0.75), + width = 172, + height = 66, + shift = util.by_pixel(-3*0.75, 8*0.75), draw_as_shadow = true, - scale = 0.75 + scale = 0.5*0.75 } } } }, - fluid_animation = { - north = { + fluid_animation = + { + north = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_North-fluid.png", apply_runtime_tint = true, line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 22, - height = 20, - shift = util.by_pixel(-2*0.75, -22*0.75), - scale = 0.75 + width = 40, + height = 40, + shift = util.by_pixel(-1*0.75, -22*0.75), + scale = 0.5*0.75 }, - east = { + east = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_East-fluid.png", apply_runtime_tint = true, line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 20, - height = 24, - shift = util.by_pixel(6*0.75-4, -10*0.75), - scale = 0.75 + width = 38, + height = 50, + shift = util.by_pixel(6*0.75, -11*0.75), + scale = 0.5*0.75 }, - south = { + south = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_South-fluid.png", apply_runtime_tint = true, line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 20, - height = 8, - shift = util.by_pixel(-2*0.75, -4*0.75), - scale = 0.75 + width = 36, + height = 14, + shift = util.by_pixel(-1*0.75, -4*0.75), + scale = 0.5*0.75 }, - west = { + west = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_West-fluid.png", apply_runtime_tint = true, line_length = 8, frame_count = 32, animation_speed = 0.25, - width = 20, - height = 24, - shift = util.by_pixel(-8*0.75+4, -10*0.75), - scale = 0.75 + width = 36, + height = 50, + shift = util.by_pixel(-7*0.75, -11*0.75), + scale = 0.5*0.75 } }, - glass_pictures = { - north = { + glass_pictures = + { + north = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_North-glass.png", - width = 18, - height = 20, + width = 36, + height = 40, shift = util.by_pixel(-2*0.75, -22*0.75), - scale = 0.75 + scale = 0.5*0.75 }, - east = { + east = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_East-glass.png", - width = 18, - height = 18, - shift = util.by_pixel(4*0.75-4, -14*0.75), - scale = 0.75 + width = 30, + height = 32, + shift = util.by_pixel(5*0.75, -13*0.75), + scale = 0.5*0.75 }, - south = { + south = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_South-glass.png", - width = 22, - height = 12, - shift = util.by_pixel(-2*0.75, -6*0.75), - scale = 0.75 + width = 40, + height = 24, + shift = util.by_pixel(-1*0.75, -6*0.75), + scale = 0.5*0.75 }, - west = { + west = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_West-glass.png", - width = 16, - height = 16, - shift = util.by_pixel(-6*0.75+4, -14*0.75), - scale = 0.75 + width = 30, + height = 32, + shift = util.by_pixel(-6*0.75, -14*0.75), + scale = 0.5*0.75 } }, - base_pictures = { - north = { + base_pictures = + { + north = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_North-legs.png", - width = 60, - height = 52, - shift = util.by_pixel(-2*0.75, -4*0.75), - scale = 0.75 + width = 114, + height = 106, + shift = util.by_pixel(-1*0.75, -5*0.75), + scale = 0.5*0.75 }, - east = { + east = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_East-legs.png", - width = 54, - height = 32, - shift = util.by_pixel(4*0.75-4, 12*0.75), - scale = 0.75 + width = 106, + height = 60, + shift = util.by_pixel(4*0.75, 13*0.75), + scale = 0.5*0.75 }, - south = { + south = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_South-legs.png", - width = 56, - height = 54, + width = 110, + height = 108, shift = util.by_pixel(-2*0.75, 6*0.75), - scale = 0.75 + scale = 0.5*0.75 }, - west = { + west = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_West-legs.png", - width = 54, - height = 32, - shift = util.by_pixel(-6*0.75+4, 12*0.75), - scale = 0.75 + width = 108, + height = 64, + shift = util.by_pixel(-6*0.75, 12*0.75), + scale = 0.5*0.75 } }, - underwater_pictures = { - north = { + underwater_pictures = + { + north = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_North-underwater.png", - width = 52, - height = 16, - shift = util.by_pixel(-2*0.75, -34*0.75), - scale = 0.75 + width = 98, + height = 36, + shift = util.by_pixel(-1*0.75, -32*0.75), + scale = 0.5*0.75 }, - east = { + east = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_East-underwater.png", - width = 18, - height = 38, - shift = util.by_pixel(40*0.75-4, 16*0.75), - scale = 0.75 + width = 40, + height = 72, + shift = util.by_pixel(39*0.75, 17*0.75), + scale = 0.5*0.75 }, - south = { + south = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_South-underwater.png", - width = 52, - height = 26, - shift = util.by_pixel(-2*0.75, 48*0.75), - scale = 0.75 + width = 98, + height = 48, + shift = util.by_pixel(-1*0.75, 49*0.75), + scale = 0.5*0.75 }, - west = { + west = + { filename = BASEENTITY .. "offshore-pump/offshore-pump_West-underwater.png", - width = 20, - height = 34, - shift = util.by_pixel(-40*0.75+4, 18*0.75), - scale = 0.75 + width = 40, + height = 72, + shift = util.by_pixel(-40*0.75, 17*0.75), + scale = 0.5*0.75 } } }, + water_reflection = { pictures = { filename = BASEENTITY .. "offshore-pump/offshore-pump-reflection.png", From a021e4657a8848131f437eecc9037a4cd2bff38c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 23:14:00 +0200 Subject: [PATCH 149/236] Support for quick adjustable inserters --- nullius/info.json | 1 + nullius/prototypes/override_mod.lua | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/nullius/info.json b/nullius/info.json index 39dbad1..ca8b9e5 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -44,6 +44,7 @@ "(?) Mini_Trains >= 2.0.0", "(?) fcpu >= 0.4.33", "(?) reskins-bobs >= 2.3.5", + "(?) quick-adjustable-inserters >= 2.0.11", "! space-age", "! quality", diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 3488566..7578c00 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -226,7 +226,7 @@ data.raw.technology["factory-architecture-t3"].localised_name = {"", {"technolog end -if mods["bobinserters"] and (settings.startup["bobmods-inserters-long2"].value == true) then +if (mods["bobinserters"] or mods["quick-adjustable-inserters"] )and (settings.startup["bobmods-inserters-long2"].value == true) then data.raw.technology["bob-long-inserters-1"].order = "nullius-ce" data.raw.technology["bob-long-inserters-1"].prerequisites = {"nullius-automation"} data.raw.technology["bob-long-inserters-1"].unit = { count = 3, @@ -344,7 +344,7 @@ end data.raw.technology["nullius-mass-production-1"].prerequisites = { "nullius-miniloader-1", "nullius-checkpoint-mineral-dust"} -if mods["bobinserters"] and (settings.startup["bobmods-inserters-long2"].value == true) then +if (mods["bobinserters"] or mods["quick-adjustable-inserters"]) and (settings.startup["bobmods-inserters-long2"].value == true) then table.insert(data.raw.technology["bob-long-inserters-2"].prerequisites,"nullius-miniloader-2") else table.insert(data.raw.technology["nullius-mineral-processing-2"].prerequisites,"nullius-miniloader-2") @@ -463,7 +463,7 @@ end table.insert(data.raw.technology["nullius-mechanical-separation"].prerequisites,"nullius-loader-1") table.insert(data.raw.technology["nullius-checkpoint-mass-production"].prerequisites,"nullius-loader-2") -if mods["bobinserters"] and (settings.startup["bobmods-inserters-long2"].value == true) then +if (mods["bobinserters"] or mods["quick-adjustable-inserters"]) and (settings.startup["bobmods-inserters-long2"].value == true) then table.insert(data.raw.technology["bob-long-inserters-2"].prerequisites,"nullius-loader-3") else table.insert(data.raw.technology["nullius-mineral-processing-2"].prerequisites,"nullius-loader-3") @@ -473,7 +473,7 @@ table.insert(data.raw.technology["nullius-inserter-capacity-5"].prerequisites,"n end -if mods["bobinserters"] then +if mods["bobinserters"] or mods["quick-adjustable-inserters"] then if (settings.startup["bobmods-inserters-long2"].value == true) then data.raw.technology["bob-near-inserters"].prerequisites = {"bob-long-inserters-1", "nullius-checkpoint-steel-ingot"} data.raw.technology["bob-near-inserters"].order = "nullius-cf" @@ -1741,7 +1741,7 @@ if settings.startup["RTThrowersSetting"].value then table.insert(data.raw.technology["nullius-locomotion-3"].prerequisites, "nullius-logistic-ballistics-8") - if (mods["bobinserters"] and + if ((mods["bobinserters"] or mods["quick-adjustable-inserters"]) and (settings.startup["bobmods-inserters-more2"].value == true)) then table.insert(data.raw.technology["bob-more-inserters-2"].prerequisites, "nullius-logistic-ballistics-7") From 08932332777c5ab756a4490d24600e901cf23382 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Mon, 25 Aug 2025 23:31:48 +0200 Subject: [PATCH 150/236] Added wire connections for chemical buildings --- nullius/changelog_wip.txt | 1 + nullius/prototypes/entity/chemistry.lua | 100 +++++++++++++++++------- 2 files changed, 73 insertions(+), 28 deletions(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 4f3ebed..20c3253 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -36,6 +36,7 @@ Date: 2025 Modding: - Removed the dependency on angels, now only depends on the graphics - Now supports elevated rails + - Support for quick adjustable inserters --------------------------------------------------------------------------------------------------- Safefill: added setting to enable mining of waterfill \ No newline at end of file diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 595ce4b..4fa96d6 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -49,6 +49,13 @@ local function hydro_animation(newtint) } end +-- Honestly ? Stolen straight from angels, sue me !! +circuit_connector_definitions["nullius-hydro-plant"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 25, main_offset = util.by_pixel( 50.625, 42), shadow_offset = util.by_pixel( 50.625, 42), show_shadow = true }, + { variation = 25, main_offset = util.by_pixel( 50.625, 42), shadow_offset = util.by_pixel( 50.625, 42), show_shadow = true }, + { variation = 25, main_offset = util.by_pixel( 50.625, 42), shadow_offset = util.by_pixel( 50.625, 42), show_shadow = true }, + { variation = 25, main_offset = util.by_pixel( 50.625, 42), shadow_offset = util.by_pixel( 50.625, 42), show_shadow = true }, +}) data:extend({ { @@ -76,6 +83,8 @@ data:extend({ next_upgrade = "nullius-hydro-plant-2", module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + circuit_connector = circuit_connector_definitions["nullius-hydro-plant"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = hydro_animation({0.77, 0.77, 0.68}), working_visualisations = scale_image({ @@ -365,6 +374,8 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", next_upgrade = "nullius-hydro-plant-3", + circuit_connector = circuit_connector_definitions["nullius-hydro-plant"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = hydro_animation({0.8, 0.8, 0.9}), working_visualisations = scale_image({ @@ -651,6 +662,8 @@ data:extend({ module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "hydro-plant", + circuit_connector = circuit_connector_definitions["nullius-hydro-plant"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = hydro_animation(), working_visualisations = scale_image({ @@ -925,7 +938,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-distillery-1", - order = "z-nullius-cbb", + order = "z-nullius-cbb", icons = data.raw.item["nullius-distillery-1"].icons, localised_description = {"entity-description.nullius-distillery"}, flags = {"placeable-neutral","player-creation"}, @@ -951,7 +964,9 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 } }, working_sound = data.raw["assembling-machine"]["oil-refinery"].working_sound, - fluid_boxes = { + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["oil-refinery"], + fluid_boxes = { { production_type = "input", pipe_covers = pipecoverspictures(), @@ -1042,7 +1057,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-distillery-2", - order = "z-nullius-ccb", + order = "z-nullius-ccb", icons = data.raw.item["nullius-distillery-2"].icons, localised_description = {"entity-description.nullius-distillery"}, flags = {"placeable-neutral","player-creation"}, @@ -1071,6 +1086,8 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", next_upgrade = "nullius-distillery-3", + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["oil-refinery"], fluid_boxes = { { @@ -1164,6 +1181,8 @@ data:extend({ module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "distillery", + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["oil-refinery"], graphics_set = { animation = data.raw["assembling-machine"]["oil-refinery"].graphics_set.animation, working_visualisations = data.raw["assembling-machine"]["nullius-distillery-1"].graphics_set.working_visualisations, @@ -1204,21 +1223,28 @@ data:extend({ } }) +circuit_connector_definitions["nullius-electrolyser"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 4, main_offset = util.by_pixel( 20.875, 62), shadow_offset = util.by_pixel( 20.875, 62), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel( 20.875, 62), shadow_offset = util.by_pixel( 20.875, 62), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel( 20.875, 62), shadow_offset = util.by_pixel( 20.875, 62), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel( 20.875, 62), shadow_offset = util.by_pixel( 20.875, 62), show_shadow = true }, +}) + data:extend({ { type = "assembling-machine", name = "nullius-surge-electrolyzer-1", - icons = {{ + icons = {{ icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.8, 0.6} }}, - order = data.raw.item["nullius-electrolyzer-1"].order .. "d", + order = data.raw.item["nullius-electrolyzer-1"].order .. "d", localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1, result = "nullius-electrolyzer-1"}, - placeable_by = {item = "nullius-electrolyzer-1", count = 1}, + placeable_by = {item = "nullius-electrolyzer-1", count = 1}, fast_replaceable_group = "electrolyzer", next_upgrade = "nullius-surge-electrolyzer-2", max_health = 300, @@ -1241,6 +1267,8 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, + circuit_connector = circuit_connector_definitions["nullius-electrolyser"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1329,17 +1357,17 @@ data:extend({ { type = "assembling-machine", name = "nullius-priority-electrolyzer-1", - icons = {{ + icons = {{ icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.68, 0.51} }}, - order = data.raw.item["nullius-electrolyzer-1"].order .. "b", - localised_description = {"entity-description.nullius-priority", + order = data.raw.item["nullius-electrolyzer-1"].order .. "b", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1, result = "nullius-electrolyzer-1"}, - placeable_by = {item = "nullius-electrolyzer-1", count = 1}, + placeable_by = {item = "nullius-electrolyzer-1", count = 1}, fast_replaceable_group = "electrolyzer", next_upgrade = "nullius-priority-electrolyzer-2", max_health = 300, @@ -1358,6 +1386,8 @@ data:extend({ energy_usage = "990kW", resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].fluid_boxes, + circuit_connector = circuit_connector_definitions["nullius-electrolyser"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1406,24 +1436,24 @@ data:extend({ } } }, - impact_category = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].impact_category, + impact_category = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].impact_category, working_sound = data.raw["assembling-machine"]["nullius-surge-electrolyzer-1"].working_sound }, { type = "assembling-machine", name = "nullius-surge-electrolyzer-2", - icons = {{ + icons = {{ icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.9, 1} }}, - order = data.raw.item["nullius-electrolyzer-2"].order .. "d", - localised_description = {"entity-description.nullius-surge", + order = data.raw.item["nullius-electrolyzer-2"].order .. "d", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, - placeable_by = {item = "nullius-electrolyzer-2", count = 1}, + placeable_by = {item = "nullius-electrolyzer-2", count = 1}, fast_replaceable_group = "electrolyzer", next_upgrade = "nullius-surge-electrolyzer-3", max_health = 400, @@ -1446,6 +1476,8 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, + circuit_connector = circuit_connector_definitions["nullius-electrolyser"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1529,17 +1561,17 @@ data:extend({ { type = "assembling-machine", name = "nullius-priority-electrolyzer-2", - icons = {{ + icons = {{ icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {0.8, 0.76, 0.85} }}, - order = data.raw.item["nullius-electrolyzer-2"].order .. "b", - localised_description = {"entity-description.nullius-priority", + order = data.raw.item["nullius-electrolyzer-2"].order .. "b", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, - placeable_by = {item = "nullius-electrolyzer-2", count = 1}, + placeable_by = {item = "nullius-electrolyzer-2", count = 1}, fast_replaceable_group = "electrolyzer", next_upgrade = "nullius-priority-electrolyzer-3", max_health = 400, @@ -1558,6 +1590,8 @@ data:extend({ energy_usage = "2915kW", resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-electrolyzer-2"].fluid_boxes, + circuit_connector = circuit_connector_definitions["nullius-electrolyser"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1617,12 +1651,12 @@ data:extend({ name = "nullius-surge-electrolyzer-3", icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, - order = data.raw.item["nullius-electrolyzer-3"].order .. "d", - localised_description = {"entity-description.nullius-surge", + order = data.raw.item["nullius-electrolyzer-3"].order .. "d", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, - placeable_by = {item = "nullius-electrolyzer-3", count = 1}, + placeable_by = {item = "nullius-electrolyzer-3", count = 1}, fast_replaceable_group = "electrolyzer", max_health = 500, corpse = "big-remnants", @@ -1644,6 +1678,8 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } }, + circuit_connector = circuit_connector_definitions["nullius-electrolyser"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1723,17 +1759,17 @@ data:extend({ { type = "assembling-machine", name = "nullius-priority-electrolyzer-3", - icons = {{ + icons = {{ icon = "__angelspetrochemgraphics__/graphics/icons/electrolyser.png", icon_size = 32, tint = {1, 0.85, 0.85} }}, - order = data.raw.item["nullius-electrolyzer-3"].order .. "b", - localised_description = {"entity-description.nullius-priority", + order = data.raw.item["nullius-electrolyzer-3"].order .. "b", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, - placeable_by = {item = "nullius-electrolyzer-3", count = 1}, + placeable_by = {item = "nullius-electrolyzer-3", count = 1}, fast_replaceable_group = "electrolyzer", max_health = 500, corpse = "big-remnants", @@ -1751,6 +1787,8 @@ data:extend({ energy_usage = "7650kW", resistances = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].resistances, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-electrolyzer-3"].fluid_boxes, + circuit_connector = circuit_connector_definitions["nullius-electrolyser"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1819,6 +1857,8 @@ data:extend({ next_upgrade = "nullius-chemical-plant-2", module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["chemical-plant"], graphics_set = { animation = make_4way_animation_from_spritesheet({ layers = { @@ -2028,7 +2068,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-chemical-plant-2", - order = "z-nullius-bcb", + order = "z-nullius-bcb", icons = data.raw.item["nullius-chemical-plant-2"].icons, localised_description = {"entity-description.nullius-chemical-plant"}, flags = {"placeable-neutral","placeable-player", "player-creation"}, @@ -2043,6 +2083,8 @@ data:extend({ allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "chemical-plant", next_upgrade = "nullius-chemical-plant-3", + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["chemical-plant"], graphics_set = { animation = make_4way_animation_from_spritesheet({ layers = @@ -2126,7 +2168,7 @@ data:extend({ { type = "assembling-machine", name = "nullius-chemical-plant-3", - order = "z-nullius-bdb", + order = "z-nullius-bdb", icons = data.raw.item["nullius-chemical-plant-3"].icons, localised_description = {"entity-description.nullius-chemical-plant"}, flags = {"placeable-neutral","placeable-player", "player-creation"}, @@ -2140,6 +2182,8 @@ data:extend({ module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fast_replaceable_group = "chemical-plant", + circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["chemical-plant"], graphics_set = { animation = make_4way_animation_from_spritesheet({ layers = From 2bd28db38424210104ce64324dc11b934b02d9f2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 00:12:10 +0200 Subject: [PATCH 151/236] Added circuit connections for drone launchers --- nullius/prototypes/entity/chest.lua | 2 +- nullius/prototypes/entity/drone.lua | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/entity/chest.lua b/nullius/prototypes/entity/chest.lua index e1765d8..10d6e36 100644 --- a/nullius/prototypes/entity/chest.lua +++ b/nullius/prototypes/entity/chest.lua @@ -20,7 +20,7 @@ data:extend({ collision_box = {{-0.75, -0.75}, {0.75, 0.75}}, selection_box = {{-1, -1}, {1, 1}}, fast_replaceable_group = "container", - next_upgrade = "nullius-large-chest-2", + next_upgrade = "nullius-large-chest-2", inventory_size = 100, impact_category = "metal", picture = { diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index 1ef6a4d..37dd329 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -50,6 +50,9 @@ data:extend({ cannon_barrel_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_base_pictures, cannon_base_shift = data.raw["artillery-turret"]["artillery-turret"].cannon_base_shift, + + circuit_connector = circuit_connector_definitions["artillery-turret"], + circuit_wire_max_distance = default_circuit_wire_max_distance, base_picture = { layers = { @@ -126,7 +129,10 @@ data:extend({ cannon_barrel_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_base_pictures, cannon_base_shift = data.raw["artillery-turret"]["artillery-turret"].cannon_base_shift, - + + circuit_connector = circuit_connector_definitions["artillery-turret"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + base_picture = { layers = { { From a8f2a15d7ad6e9f044e2e00391215e842e7f7de3 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 01:29:09 +0200 Subject: [PATCH 152/236] Added wire connections for combustion chamber, compressor, geothermal plant(incomplete) --- nullius/prototypes/entity/energy.lua | 96 ++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 19 deletions(-) diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 9048d5c..0955c95 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -90,6 +90,35 @@ data:extend({ } }) +circuit_connector_definitions["nullius-combustion-chamber"] = circuit_connector_definitions.create_vector +( + universal_connector_template, + { + { variation = 30, main_offset = util.by_pixel(-20, 20), shadow_offset = util.by_pixel(10-20, 20), show_shadow = true }, + { variation = 15, main_offset = util.by_pixel(10, 5), shadow_offset = util.by_pixel(0, 18.5), show_shadow = true }, + { variation = 30, main_offset = util.by_pixel(-20, 20), shadow_offset = util.by_pixel(-25, 20), show_shadow = true }, + { variation = 15, main_offset = util.by_pixel(10, 5), shadow_offset = util.by_pixel(10, 18.5), show_shadow = true }, + } +) + +circuit_connector_definitions["nullius-compressor"] = circuit_connector_definitions.create_vector +( + universal_connector_template, + { + { variation = 24, main_offset = util.by_pixel(-15, -35), shadow_offset = util.by_pixel(-15, -35), show_shadow = true }, + { variation = 24, main_offset = util.by_pixel(-15, -35), shadow_offset = util.by_pixel(-15, -35), show_shadow = true }, + { variation = 24, main_offset = util.by_pixel(-15, -35), shadow_offset = util.by_pixel(-15, -35), show_shadow = true }, + { variation = 24, main_offset = util.by_pixel(-15, -35), shadow_offset = util.by_pixel(-15, -35), show_shadow = true }, + } +) + +circuit_connector_definitions["nullius-chemical-furnace"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, +}) + data:extend({ { type = "solar-panel", @@ -417,6 +446,10 @@ data:extend({ next_upgrade = "nullius-combustion-chamber-2", collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, selection_box = {{-1.5, -1}, {1.5, 1}}, + + circuit_connector = circuit_connector_definitions["nullius-combustion-chamber"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + fluid_boxes = { { volume = 500, @@ -663,6 +696,8 @@ data:extend({ next_upgrade = "nullius-combustion-chamber-3", collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, selection_box = {{-1.5, -1}, {1.5, 1}}, + circuit_connector = circuit_connector_definitions["nullius-combustion-chamber"], + circuit_wire_max_distance = default_circuit_wire_max_distance, fluid_boxes = { { @@ -816,6 +851,8 @@ data:extend({ energy_usage = "1kW", energy_source = { type = "void" }, working_sound = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].working_sound, + circuit_connector = circuit_connector_definitions["nullius-combustion-chamber"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].graphics_set.working_visualisations, @@ -917,16 +954,16 @@ data:extend({ { type = "assembling-machine", name = "nullius-surge-compressor-1", - icons = {{ + icons = {{ icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.6, 0.6, 0.4} }}, - localised_description = {"entity-description.nullius-surge", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-compressor"}}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-compressor-1"}, - placeable_by = {item = "nullius-compressor-1", count = 1}, + placeable_by = {item = "nullius-compressor-1", count = 1}, fast_replaceable_group = "compressor", next_upgrade = "nullius-surge-compressor-2", max_health = 200, @@ -955,6 +992,8 @@ data:extend({ fade_in_ticks = 4, fade_out_ticks = 10 }, + circuit_connector = circuit_connector_definitions["nullius-compressor"], + circuit_wire_max_distance = default_circuit_wire_max_distance, fluid_boxes = { { production_type = "input", @@ -1071,16 +1110,16 @@ data:extend({ { type = "assembling-machine", name = "nullius-priority-compressor-1", - icons = {{ + icons = {{ icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.6, 0.51, 0.34} }}, - localised_description = {"entity-description.nullius-priority", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-compressor"}}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-compressor-1"}, - placeable_by = {item = "nullius-compressor-1", count = 1}, + placeable_by = {item = "nullius-compressor-1", count = 1}, fast_replaceable_group = "compressor", next_upgrade = "nullius-priority-compressor-2", max_health = 200, @@ -1101,6 +1140,8 @@ data:extend({ impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-1"].fluid_boxes, + circuit_connector = circuit_connector_definitions["nullius-compressor"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { @@ -1201,16 +1242,16 @@ data:extend({ { type = "assembling-machine", name = "nullius-surge-compressor-2", - icons = {{ + icons = {{ icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.65, 0.65, 0.9} }}, - localised_description = {"entity-description.nullius-surge", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-compressor"}}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-compressor-2"}, - placeable_by = {item = "nullius-compressor-2", count = 1}, + placeable_by = {item = "nullius-compressor-2", count = 1}, fast_replaceable_group = "compressor", next_upgrade = "nullius-surge-compressor-3", max_health = 250, @@ -1232,6 +1273,8 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, + circuit_connector = circuit_connector_definitions["nullius-compressor"], + circuit_wire_max_distance = default_circuit_wire_max_distance, fluid_boxes = { { production_type = "input", @@ -1348,16 +1391,16 @@ data:extend({ { type = "assembling-machine", name = "nullius-priority-compressor-2", - icons = {{ + icons = {{ icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {0.65, 0.55, 0.76} }}, - localised_description = {"entity-description.nullius-priority", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-compressor"}}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-compressor-2"}, - placeable_by = {item = "nullius-compressor-2", count = 1}, + placeable_by = {item = "nullius-compressor-2", count = 1}, fast_replaceable_group = "compressor", next_upgrade = "nullius-priority-compressor-3", max_health = 250, @@ -1378,7 +1421,9 @@ data:extend({ impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, fluid_boxes = data.raw["assembling-machine"]["nullius-surge-compressor-2"].fluid_boxes, - + circuit_connector = circuit_connector_definitions["nullius-compressor"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + graphics_set = { animation = { north = { @@ -1444,15 +1489,15 @@ data:extend({ { type = "assembling-machine", name = "nullius-surge-compressor-3", - icons = {{ + icons = {{ icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32 }}, - localised_description = {"entity-description.nullius-surge", + localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-compressor"}}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-compressor-3"}, - placeable_by = {item = "nullius-compressor-3", count = 1}, + placeable_by = {item = "nullius-compressor-3", count = 1}, fast_replaceable_group = "compressor", max_health = 300, corpse = "big-remnants", @@ -1473,6 +1518,10 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, + + circuit_connector = circuit_connector_definitions["nullius-compressor"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + fluid_boxes = { { production_type = "input", @@ -1585,16 +1634,16 @@ data:extend({ { type = "assembling-machine", name = "nullius-priority-compressor-3", - icons = {{ + icons = {{ icon = "__angelsrefininggraphics__/graphics/icons/thermal-extractor.png", icon_size = 32, tint = {1, 0.85, 0.85} }}, - localised_description = {"entity-description.nullius-priority", + localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-compressor"}}, flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-compressor-3"}, - placeable_by = {item = "nullius-compressor-3", count = 1}, + placeable_by = {item = "nullius-compressor-3", count = 1}, fast_replaceable_group = "compressor", max_health = 300, corpse = "big-remnants", @@ -1613,6 +1662,9 @@ data:extend({ resistances = data.raw["assembling-machine"]["nullius-surge-compressor-1"].resistances, impact_category = "metal", working_sound = data.raw["assembling-machine"]["nullius-surge-compressor-1"].working_sound, + circuit_connector = circuit_connector_definitions["nullius-compressor"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + fluid_boxes = { { production_type = "input", @@ -1857,6 +1909,8 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", + circuit_connector = circuit_connector_definitions["nullius-chemical-furnace"], + circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", @@ -1920,6 +1974,8 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", + circuit_connector = circuit_connector_definitions["nullius-chemical-furnace"], + circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", @@ -1969,6 +2025,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", fast_replaceable_group = "geothermal-plant", + circuit_connector = circuit_connector_definitions["nullius-chemical-furnace"], + circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { -- TODO: integrate the graphics with the heat pipes correctly filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", From a812ac602f7d0b611c4476e39ce0301544556938 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 14:07:47 +0200 Subject: [PATCH 153/236] Added wire connections to furnaces, foundries, crusher and flotation cell --- nullius/prototypes/entity/assembler.lua | 42 ---------- nullius/prototypes/entity/furnace.lua | 101 ++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 42 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index d21a88d..65f1c47 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -5,48 +5,6 @@ local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" -local function scale_wire_position(wire_pos, scale) - for _, wire_type in pairs(wire_pos) do - if wire_type.x then - wire_type.x = wire_type.x*scale - wire_type.y = wire_type.y*scale - else - wire_type[1] = wire_type[1]*scale - wire_type[2] = wire_type[2]*scale - end - end -end - -local function offset_sprite(sprite, scale, only_shift) - if sprite == nil then return end - if sprite.shift ~= nil then - sprite.shift = {sprite.shift[1]*scale,sprite.shift[2]*scale} - else - --sprite.shift = {2,2} -- what value do we set if no shift ? - end - if sprite.scale and not only_shift then - sprite.scale = sprite.scale * scale - end -end - -local function scale_connector_points(original, scale, only_shift) - local result = table.deepcopy(original) - for _, connector in pairs(result) do - scale_wire_position(connector.points.wire, scale) - scale_wire_position(connector.points.shadow, scale) - offset_sprite(connector.sprites.connector_main,scale, only_shift) - offset_sprite(connector.sprites.connector_shadow,scale, only_shift) - offset_sprite(connector.sprites.wire_pins,scale, only_shift) - offset_sprite(connector.sprites.wire_pins_shadow,scale, only_shift) - offset_sprite(connector.sprites.led_blue_off,scale, only_shift) - offset_sprite(connector.sprites.led_red,scale, only_shift) - offset_sprite(connector.sprites.led_green,scale, only_shift) - offset_sprite(connector.sprites.led_blue,scale, only_shift) - offset_sprite(connector.sprites.led_light,scale, only_shift) - end - return result -end - data:extend({ { type = "assembling-machine", diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 4f072e6..1ec4076 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -2,6 +2,48 @@ local ICONPATH = "__nullius__/graphics/icons/" local ENTITYPATH = "__nullius__/graphics/entity/" local BASEENTITY = "__base__/graphics/entity/" +local function scale_wire_position(wire_pos, scale) + for _, wire_type in pairs(wire_pos) do + if wire_type.x then + wire_type.x = wire_type.x*scale + wire_type.y = wire_type.y*scale + else + wire_type[1] = wire_type[1]*scale + wire_type[2] = wire_type[2]*scale + end + end +end + +local function offset_sprite(sprite, scale, only_shift) + if sprite == nil then return end + if sprite.shift ~= nil then + sprite.shift = {sprite.shift[1]*scale,sprite.shift[2]*scale} + else + --sprite.shift = {2,2} -- what value do we set if no shift ? + end + if sprite.scale and not only_shift then + sprite.scale = sprite.scale * scale + end +end + +function scale_connector_points(original, scale, only_shift) + local result = table.deepcopy(original) + for _, connector in pairs(result) do + scale_wire_position(connector.points.wire, scale) + scale_wire_position(connector.points.shadow, scale) + offset_sprite(connector.sprites.connector_main,scale, only_shift) + offset_sprite(connector.sprites.connector_shadow,scale, only_shift) + offset_sprite(connector.sprites.wire_pins,scale, only_shift) + offset_sprite(connector.sprites.wire_pins_shadow,scale, only_shift) + offset_sprite(connector.sprites.led_blue_off,scale, only_shift) + offset_sprite(connector.sprites.led_red,scale, only_shift) + offset_sprite(connector.sprites.led_green,scale, only_shift) + offset_sprite(connector.sprites.led_blue,scale, only_shift) + offset_sprite(connector.sprites.led_light,scale, only_shift) + end + return result +end + local floatpipepics = { north = { filename = "__angelsrefininggraphics__/graphics/entity/ore-floatation-cell/pipe-north.png", @@ -67,6 +109,8 @@ data:extend({ emissions_per_minute = {pollution = 1}, drain = "6kW" }, + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["stone-furnace"], energy_usage = "69kW", graphics_set = data.raw["furnace"]["stone-furnace"].graphics_set, fast_replaceable_group = "small-furnace", @@ -101,6 +145,8 @@ data:extend({ emissions_per_minute = {pollution = 1}, drain = "12kW" }, + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["steel-furnace"], energy_usage = "138kW", module_slots = 1, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, @@ -140,6 +186,8 @@ data:extend({ working_sound = data.raw["furnace"]["electric-furnace"].working_sound, module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-furnace"],0.6666), graphics_set = { animation = { @@ -293,6 +341,9 @@ data:extend({ module_slots = 1, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = scale_connector_points(circuit_connector_definitions["steel-furnace"],1.5), + graphics_set = { animation = { layers = { @@ -448,6 +499,9 @@ data:extend({ impact_category = "metal", module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, + + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["electric-furnace"], graphics_set = { animation = { @@ -526,6 +580,9 @@ data:extend({ working_sound = data.raw["furnace"]["electric-furnace"].working_sound, module_slots = 2, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, + + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + scale_connector_points(circuit_connector_definitions["electric-furnace"],1.2), graphics_set = { animation = { @@ -636,6 +693,20 @@ data:extend({ } }) +circuit_connector_definitions["nullius-foundry"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 4, main_offset = util.by_pixel(-41.125, 35.125), shadow_offset = util.by_pixel(-41.125, 35.125), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-41.125, 35.125), shadow_offset = util.by_pixel(-41.125, 35.125), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-41.125, 35.125), shadow_offset = util.by_pixel(-41.125, 35.125), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-41.125, 35.125), shadow_offset = util.by_pixel(-41.125, 35.125), show_shadow = true }, +}) + +circuit_connector_definitions["nullius-crusher"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 30, main_offset = util.by_pixel( 35.875, -31.625), shadow_offset = util.by_pixel( 35.875, -31.625), show_shadow = true }, + { variation = 30, main_offset = util.by_pixel( 35.875, -31.625), shadow_offset = util.by_pixel( 35.875, -31.625), show_shadow = true }, + { variation = 30, main_offset = util.by_pixel( 35.875, -31.625), shadow_offset = util.by_pixel( 35.875, -31.625), show_shadow = true }, + { variation = 30, main_offset = util.by_pixel( 35.875, -31.625), shadow_offset = util.by_pixel( 35.875, -31.625), show_shadow = true }, +}) + data:extend({ { type = "assembling-machine", @@ -670,6 +741,8 @@ data:extend({ graphics_set = data.raw["furnace"]["electric-furnace"].graphics_set, working_sound = data.raw["furnace"]["electric-furnace"].working_sound, impact_category = "metal", + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["electric-furnace"], }, { @@ -704,6 +777,9 @@ data:extend({ working_sound = data.raw["furnace"]["electric-furnace"].working_sound, module_slots = 3, allowed_effects = {"consumption", "speed", "productivity", "pollution"}, + + circuit_wire_max_distance = furnace_circuit_wire_max_distance, + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-furnace"],1.2), graphics_set = { animation = { @@ -756,6 +832,8 @@ data:extend({ drain = "10kW" }, energy_usage = "150kW", + circuit_connector = circuit_connector_definitions["nullius-foundry"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { @@ -849,6 +927,8 @@ data:extend({ drain = "25kW" }, energy_usage = "265kW", + circuit_connector = circuit_connector_definitions["nullius-foundry"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { @@ -926,6 +1006,8 @@ data:extend({ drain = "50kW" }, energy_usage = "525kW", + circuit_connector = circuit_connector_definitions["nullius-foundry"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { @@ -1009,6 +1091,9 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "physical", decrease = 50, percent = 80 } }, + circuit_connector = circuit_connector_definitions["nullius-crusher"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + fluid_boxes = { { production_type = "input", @@ -1092,6 +1177,8 @@ data:extend({ sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, }, + circuit_connector = circuit_connector_definitions["nullius-crusher"], + circuit_wire_max_distance = default_circuit_wire_max_distance, fluid_boxes = { { production_type = "input", @@ -1169,6 +1256,8 @@ data:extend({ sound = { filename = "__angelsrefininggraphics__/sound/ore-crusher.ogg", volume = 0.6 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, }, + circuit_connector = circuit_connector_definitions["nullius-crusher"], + circuit_wire_max_distance = default_circuit_wire_max_distance, fluid_boxes = { { production_type = "input", @@ -1218,6 +1307,12 @@ data:extend({ data.raw["assembling-machine"]["nullius-crusher-1"].graphics_set.animation.layers[1].tint = {0.6, 0.6, 0.6} data.raw["assembling-machine"]["nullius-crusher-2"].graphics_set.animation.layers[1].tint = {0.6, 0.65, 0.85} +circuit_connector_definitions["nullius-flotation-cell"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 27, main_offset = util.by_pixel(-25.375, 10.875), shadow_offset = util.by_pixel(-25.375, 10.875), show_shadow = true }, + { variation = 27, main_offset = util.by_pixel(-25.375, 10.875), shadow_offset = util.by_pixel(-25.375, 10.875), show_shadow = true }, + { variation = 27, main_offset = util.by_pixel(-25.375, 10.875), shadow_offset = util.by_pixel(-25.375, 10.875), show_shadow = true }, + { variation = 27, main_offset = util.by_pixel(-25.375, 10.875), shadow_offset = util.by_pixel(-25.375, 10.875), show_shadow = true }, +}) data:extend({ { @@ -1247,6 +1342,8 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "acid", decrease = 50, percent = 80 } }, + circuit_connector = circuit_connector_definitions["nullius-flotation-cell"], + circuit_wire_max_distance = default_circuit_wire_max_distance, module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { @@ -1457,6 +1554,8 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "acid", decrease = 50, percent = 80 } }, + circuit_connector = circuit_connector_definitions["nullius-flotation-cell"], + circuit_wire_max_distance = default_circuit_wire_max_distance, module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { @@ -1666,6 +1765,8 @@ data:extend({ { type = "impact", decrease = 100, percent = 90 }, { type = "acid", decrease = 50, percent = 80 } }, + circuit_connector = circuit_connector_definitions["nullius-flotation-cell"], + circuit_wire_max_distance = default_circuit_wire_max_distance, module_slots = 3, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, fluid_boxes = { From 1d20fd148fc65a4740b6cdf364db434d16914eeb Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 14:19:08 +0200 Subject: [PATCH 154/236] Added wire connections for sensor nodes and electric turret --- nullius/prototypes/entity/logistics.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nullius/prototypes/entity/logistics.lua b/nullius/prototypes/entity/logistics.lua index 0268d57..0fb245a 100644 --- a/nullius/prototypes/entity/logistics.lua +++ b/nullius/prototypes/entity/logistics.lua @@ -31,6 +31,8 @@ data:extend({ radius_minimap_visualisation_color = { r = 0.059, g = 0.092, b = 0.235, a = 0.275 }, rotation_speed = 0.008, water_reflection = data.raw.radar["radar"].water_reflection, + circuit_connector = circuit_connector_definitions["radar"], + circuit_wire_max_distance = default_circuit_wire_max_distance, pictures = { layers = { @@ -88,6 +90,8 @@ data:extend({ radius_minimap_visualisation_color = { r = 0.059, g = 0.092, b = 0.235, a = 0.275 }, rotation_speed = 0.01, water_reflection = data.raw.radar["radar"].water_reflection, + circuit_connector = circuit_connector_definitions["radar"], + circuit_wire_max_distance = default_circuit_wire_max_distance, pictures = { layers = { @@ -791,6 +795,8 @@ data:extend({ impact_category = data.raw["electric-turret"]["laser-turret"].impact_category, water_reflection = data.raw["electric-turret"]["laser-turret"].water_reflection, call_for_help_radius = 40, + circuit_connector = circuit_connector_definitions["laser-turret"], + circuit_wire_max_distance = default_circuit_wire_max_distance, attack_parameters = { type = "beam", From aadd12e96e1bd5aff8bb881291960a19bb44154c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 14:32:16 +0200 Subject: [PATCH 155/236] Fixed mining drills wire connections --- nullius/prototypes/entity/miner.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index b0a37d3..1ec81fc 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -264,8 +264,8 @@ data:extend({ vector_to_place_result = {-0.5, -1.3}, fast_replaceable_group = "small-miner", next_upgrade = "nullius-small-miner-2", - - circuit_connector = circuit_connector_definitions["electric-mining-drill"], + + circuit_connector = circuit_connector_definitions["burner-mining-drill"], circuit_wire_max_distance = default_circuit_wire_max_distance }, @@ -427,7 +427,7 @@ data:extend({ } }, - circuit_connector = circuit_connector_definitions["electric-mining-drill"], + circuit_connector = scale_connector_points(circuit_connector_definitions["burner-mining-drill"],1.5), circuit_wire_max_distance = default_circuit_wire_max_distance }, @@ -470,7 +470,7 @@ data:extend({ }, module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_connector = circuit_connector_definitions["electric-mining-drill"], + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-mining-drill"],0.6666), circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -923,7 +923,7 @@ data:extend({ radius_visualisation_picture = data.raw["mining-drill"]["nullius-small-miner-2"].radius_visualisation_picture, module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_connector = circuit_connector_definitions["electric-mining-drill"], + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-mining-drill"],0.6666), circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -1512,7 +1512,7 @@ data:extend({ }, module_slots = 1, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_connector = circuit_connector_definitions["electric-mining-drill"], + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-mining-drill"],1.2), circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { @@ -2150,7 +2150,7 @@ data:extend({ radius_visualisation_picture = data.raw["mining-drill"]["nullius-large-miner-1"].radius_visualisation_picture, module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - circuit_connector = circuit_connector_definitions["electric-mining-drill"], + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-mining-drill"],1.2), circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { From fbbb9277cb77a4c75dfc7faa6a1678064cdf3cf1 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 15:02:52 +0200 Subject: [PATCH 156/236] Added/fixed wire connections for plumbing buildings --- nullius/prototypes/entity/plumbing.lua | 68 ++++++++++++++++++++------ 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index cc6f12c..a4805fe 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -50,6 +50,8 @@ local si1 = { next_upgrade = "nullius-seawater-intake-2", working_sound = op.working_sound, impact_category = op.impact_category, + circuit_connector = circuit_connector_definitions["offshore-pump"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = {} } @@ -558,6 +560,9 @@ data:extend({ allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "well", next_upgrade = "nullius-well-2", + + circuit_connector = circuit_connector_definitions["pumpjack"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { @@ -809,7 +814,10 @@ data:extend({ module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "well", - + + circuit_connector = circuit_connector_definitions["pumpjack"], + circuit_wire_max_distance = default_circuit_wire_max_distance, + graphics_set = { animation = { north = { @@ -1044,6 +1052,13 @@ lw2.energy_source = {type="electric", usage_priority="secondary-input", emission lw2.energy_usage = "175kW" lw2.crafting_speed = 5 +circuit_connector_definitions["nullius-air-filter"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 4, main_offset = util.by_pixel(-4.375, -20), shadow_offset = util.by_pixel(-4.375, -20), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-4.375, -20), shadow_offset = util.by_pixel(-4.375, -20), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-4.375, -20), shadow_offset = util.by_pixel(-4.375, -20), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-4.375, -20), shadow_offset = util.by_pixel(-4.375, 62.625), show_shadow = true }, +}) + data:extend({ lw1, lw2, @@ -1071,6 +1086,8 @@ data:extend({ selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fast_replaceable_group = "air-filter", next_upgrade = "nullius-air-filter-2", + circuit_connector = circuit_connector_definitions["nullius-air-filter"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1146,11 +1163,11 @@ data:extend({ crafting_speed = 3, fixed_recipe = "nullius-air-filtration", energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions = 0.03, - drain = "25kW" - }, + type = "electric", + usage_priority = "secondary-input", + emissions = 0.03, + drain = "25kW" + }, energy_usage = "375kW", ingredient_count = 1, minable = {mining_time = 0.8, result = "nullius-air-filter-2"}, @@ -1161,6 +1178,8 @@ data:extend({ selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fast_replaceable_group = "air-filter", next_upgrade = "nullius-air-filter-3", + circuit_connector = circuit_connector_definitions["nullius-air-filter"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { north = { @@ -1233,11 +1252,11 @@ data:extend({ crafting_speed = 8, fixed_recipe = "nullius-air-filtration", energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions = 0.1, - drain = "100kW" - }, + type = "electric", + usage_priority = "secondary-input", + emissions = 0.1, + drain = "100kW" + }, energy_usage = "1100kW", ingredient_count = 1, minable = {mining_time = 1, result = "nullius-air-filter-3"}, @@ -1247,6 +1266,8 @@ data:extend({ collision_box = {{-1.1, -1.1}, {1.1, 1.1}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fast_replaceable_group = "air-filter", + circuit_connector = circuit_connector_definitions["nullius-air-filter"], + circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = { animation = { filename = "__angelspetrochemgraphics__/graphics/entity/air-filter/air-filter.png", @@ -1648,8 +1669,17 @@ data:extend({ shift = {0, 0} } } - }, + } +}) + +circuit_connector_definitions["nullius-small-tank"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 25, main_offset = util.by_pixel(-25.125, -23), shadow_offset = util.by_pixel(-25.125, -23), show_shadow = true }, + { variation = 25, main_offset = util.by_pixel(-25.125, -23), shadow_offset = util.by_pixel(-25.125, -23), show_shadow = true }, + { variation = 25, main_offset = util.by_pixel(-25.125, -23), shadow_offset = util.by_pixel(-25.125, -23), show_shadow = true }, + { variation = 25, main_offset = util.by_pixel(-25.125, -23), shadow_offset = util.by_pixel(-25.125, -23), show_shadow = true }, +}) +data:extend({ { type = "storage-tank", name = "nullius-medium-tank-2", @@ -1982,7 +2012,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, - circuit_connector = circuit_connector_definitions["storage-tank"], + circuit_connector = circuit_connector_definitions["nullius-small-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance } }) @@ -2019,7 +2049,7 @@ data:extend({ flow_length_in_ticks = 360, impact_category = "metal", working_sound = data.raw["storage-tank"]["storage-tank"].working_sound, - circuit_connector = circuit_connector_definitions["storage-tank"], + circuit_connector = circuit_connector_definitions["nullius-small-tank"], circuit_wire_max_distance = default_circuit_wire_max_distance } }) @@ -2201,6 +2231,12 @@ data.raw["storage-tank"]["nullius-large-tank-1"].pictures. data.raw["storage-tank"]["nullius-large-tank-2"].pictures. picture.sheets[1].tint = {0.85, 0.85, 0.95} +circuit_connector_definitions["nullius-barreling-pump"] = circuit_connector_definitions.create_vector(universal_connector_template, { + { variation = 6, main_offset = util.by_pixel( 0.125, 32.125), shadow_offset = util.by_pixel( 0.125, 32.125), show_shadow = true }, + { variation = 0, main_offset = util.by_pixel( 41.25, -5.5), shadow_offset = util.by_pixel( 41.25, -5.5), show_shadow = true }, + { variation = 10, main_offset = util.by_pixel( 0.5, -46.875), shadow_offset = util.by_pixel( 0.5, -46.875), show_shadow = true }, + { variation = 4, main_offset = util.by_pixel(-38.75, -6.875), shadow_offset = util.by_pixel(-38.75, -6.875), show_shadow = true }, +}) data:extend({ { @@ -2454,6 +2490,8 @@ data:extend({ apparent_volume = 2.5 }, impact_category = "metal", + circuit_connector = circuit_connector_definitions["nullius-barreling-pump"], + circuit_wire_max_distance = default_circuit_wire_max_distance, fluid_boxes = { { production_type = "input", @@ -2555,6 +2593,8 @@ data:extend({ { type = "explosion", decrease = 20, percent = 50 } }, ingredient_count = 2, + circuit_connector = circuit_connector_definitions["nullius-barreling-pump"], + circuit_wire_max_distance = default_circuit_wire_max_distance, working_sound = { sound = {filename = "__base__/sound/oil-refinery.ogg"}, idle_sound = {filename = "__base__/sound/idle1.ogg", volume = 0.6}, From 2ae631074c350505ce0dd5bcd66ffd88825e6f85 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 16:00:28 +0200 Subject: [PATCH 157/236] Finished adding wire connections to energy entities --- nullius/changelog_wip.txt | 1 + nullius/prototypes/entity/energy.lua | 27 +++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 20c3253..5977526 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -11,6 +11,7 @@ Date: 2025 - Added wire connexions to assemblers, boxer and nanofab - Added display panels and selector combinator - Added setting to hide the voiding recipe icon from chimneys and outfalls + - Added circuit connections to most buildings Changes: - Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted Same thing with aai loaders diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 0955c95..cf5a76f 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -2337,6 +2337,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, + circuit_connector = circuit_connector_definitions["storage-tank"], + circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { layers = { { @@ -2427,6 +2429,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, + circuit_connector = circuit_connector_definitions["storage-tank"], + circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { layers = { { @@ -2517,6 +2521,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, + circuit_connector = circuit_connector_definitions["storage-tank"], + circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { layers = { { @@ -3380,6 +3386,13 @@ stirling3h.layers[1].tint = nil stirling3v.layers[1].tint = nil end +circuit_connector_definitions["nullius-solar-collector"] = circuit_connector_definitions.create_single +( + universal_connector_template, + { variation = 19, main_offset = util.by_pixel(75, 35), shadow_offset = util.by_pixel(75, 30), show_shadow = true } +) + + data:extend({ stirling2h, stirling2v, @@ -3440,7 +3453,9 @@ data:extend({ open_sound = data.raw.reactor["nuclear-reactor"].open_sound, close_sound = data.raw.reactor["nuclear-reactor"].close_sound, working_sound = data.raw.reactor["nuclear-reactor"].working_sound, - meltdown_action = data.raw.reactor["nuclear-reactor"].meltdown_action + meltdown_action = data.raw.reactor["nuclear-reactor"].meltdown_action, + circuit_wire_max_distance = reactor_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["nuclear-reactor"], }, { @@ -3458,6 +3473,8 @@ data:extend({ energy_source = { type = "void" }, neighbour_bonus = 0.1, neighbour_collision_increase = 0.1, + circuit_connector = circuit_connector_definitions["nullius-solar-collector"], + circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { { type = "fire", decrease = 25, percent = 60 }, { type = "impact", decrease = 50, percent = 80 }, @@ -3536,6 +3553,8 @@ data:extend({ energy_source = { type = "void" }, neighbour_bonus = 0.1, neighbour_collision_increase = 0.1, + circuit_connector = circuit_connector_definitions["nullius-solar-collector"], + circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { { type = "fire", decrease = 25, percent = 60 }, { type = "impact", decrease = 50, percent = 80 }, @@ -3613,6 +3632,8 @@ data:extend({ energy_source = { type = "void" }, neighbour_bonus = 0.1, neighbour_collision_increase = 0.1, + circuit_connector = circuit_connector_definitions["nullius-solar-collector"], + circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { { type = "fire", decrease = 25, percent = 60 }, { type = "impact", decrease = 50, percent = 80 }, @@ -3688,9 +3709,11 @@ data:extend({ max_health = 200, resistances = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].resistances, fast_replaceable_group = "heat-exchanger", - next_upgrade = "nullius-heat-exchanger-2", + next_upgrade = "nullius-heat-exchanger-2", collision_box = {{-1.29, -0.79}, {1.29, 0.79}}, selection_box = {{-1.5, -1}, {1.5, 1}}, + circuit_connector = circuit_connector_definitions["nullius-combustion-chamber"], + circuit_wire_max_distance = reactor_circuit_wire_max_distance, fluid_boxes = { { volume = 500, From 21536ce35eee675455ac97cb5ef57435e8612967 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 18:08:29 +0200 Subject: [PATCH 158/236] Removed base game offshore pump from pipette over water in early game, added placeable position visualizations for seawater intake --- nullius/prototypes/entity/plumbing.lua | 38 ++++++++++++++++++-------- nullius/prototypes/override.lua | 5 +++- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index a4805fe..00a175a 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -6,7 +6,7 @@ local BASEENTITY = "__base__/graphics/entity/" require("pipe_graphics") collision_mask_util = require("collision-mask-util") -local op = data.raw["offshore-pump"]["offshore-pump"] +local op = table.deepcopy(data.raw["offshore-pump"]["offshore-pump"]) local si1 = { type = "assembling-machine", name = "nullius-seawater-intake-1", @@ -14,6 +14,22 @@ local si1 = { minable = {mining_time = 0.5, result = "nullius-seawater-intake-1"}, flags = {"placeable-neutral", "player-creation"}, collision_mask = { layers = {object = true, ground_tile = true}}, + --collision_mask = {layers={object=true, train=true, is_object=true, is_lower_object=true}}, -- collide just with object-layer and train-layer which don't collide with water, this allows us to build on 1 tile wide ground + tile_buildability_rules = + { + {area = {{-0.6, 1.7}, {0.6, 2.3}}, required_tiles = {layers={ground_tile=true}}, colliding_tiles = {layers={water_tile=true}}, remove_on_collision = true}, + --{area = {{-0.6, -1.3}, {0.6, 0.4}}, required_tiles = {layers={water_tile=true}}, colliding_tiles = {layers={}}}, + }, + + placeable_position_visualization = + { + filename = "__core__/graphics/cursor-boxes-32x32.png", + priority = "extra-high-no-scale", + width = 64, + height = 64, + scale = 0.5, + x = 3*64 + }, crafting_categories = {"seawater-pumping"}, crafting_speed = 1, fixed_recipe = "nullius-seawater", @@ -144,7 +160,7 @@ data:extend({ type = "void" }, energy_usage = "60kW", - fluid_source_offset = data.raw["offshore-pump"]["offshore-pump"].fluid_source_offset, + fluid_source_offset = op.fluid_source_offset, collision_mask = { layers = {object = true, train = true}}, minable = {mining_time = 0.5, result = "nullius-seawater-intake-1"}, placeable_by = {item = "nullius-legacy-seawater-intake-1", count = 1}, @@ -164,9 +180,9 @@ data:extend({ }, tile_width = 1, tile_height = 1, - impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, - working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, - placeable_position_visualization = data.raw["offshore-pump"]["offshore-pump"].placeable_position_visualization, + impact_category = op.impact_category, + working_sound = op.working_sound, + placeable_position_visualization = op.placeable_position_visualization, circuit_connector = circuit_connector_definitions["offshore-pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, resistances = { @@ -484,7 +500,7 @@ data:extend({ type = "void" }, energy_usage = "60kW", - fluid_source_offset = data.raw["offshore-pump"]["offshore-pump"].fluid_source_offset, + fluid_source_offset = op.fluid_source_offset, collision_mask = { layers = {object = true, train = true}}, minable = {mining_time = 0.8, result = "nullius-seawater-intake-2"}, placeable_by = {item = "nullius-legacy-seawater-intake-2", count = 1}, @@ -504,13 +520,13 @@ data:extend({ }, tile_width = 1, tile_height = 1, - graphics_set = data.raw["offshore-pump"]["offshore-pump"].graphics_set, - impact_category = data.raw["offshore-pump"]["offshore-pump"].impact_category, - working_sound = data.raw["offshore-pump"]["offshore-pump"].working_sound, - placeable_position_visualization = data.raw["offshore-pump"]["offshore-pump"].placeable_position_visualization, + graphics_set = op.graphics_set, + impact_category = op.impact_category, + working_sound = op.working_sound, + placeable_position_visualization = op.placeable_position_visualization, circuit_connector = circuit_connector_definitions["offshore-pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, - water_reflection = data.raw["offshore-pump"]["offshore-pump"].water_reflection, + water_reflection = op.water_reflection, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 5e4af86..ccf40d1 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -991,4 +991,7 @@ for _, sc in pairs(data.raw.shortcut) do end data.raw["cargo-landing-pad"]["cargo-landing-pad"].localised_name = {"item-name.nullius-landing-pad"} -data.raw["inserter"]["inserter"].filter_count = 0 \ No newline at end of file +data.raw["inserter"]["inserter"].filter_count = 0 + +data.raw["offshore-pump"]["offshore-pump"] = nil +data.raw["item"]["offshore-pump"].place_result = nil \ No newline at end of file From dd4036e40906a6d25a9f609fe940b961027124d8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 20:40:25 +0200 Subject: [PATCH 159/236] Fixed cybersyn compatibility --- nullius/prototypes/override_mod.lua | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 7578c00..1b61bd2 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -2448,5 +2448,16 @@ if mods["Mini_Trains"] then data.raw.item["nullius-small-fluid-wagon-3"].place_result = "nullius-small-fluid-wagon-3" end +if mods["cybersyn"] then + data.raw.recipe["cybersyn-combinator"].ingredients = { + {type = "item", name = "arithmetic-combinator", amount = 2 }, + {type = "item", name = "copper-cable", amount = 10 }, + } +end - +if mods["cybersyn-combinator"] then + data.raw.recipe["cybersyn-constant-combinator"].ingredients = { + {type = "item", name = "constant-combinator", amount = 1 }, + {type = "item", name = "decider-combinator", amount = 1 }, + } +end \ No newline at end of file From d2728dfbcc6f57377253d363a9ba33242113a18e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 26 Aug 2025 21:37:14 +0200 Subject: [PATCH 160/236] Removed unused icons Fixed rocket launch products of nullius-satellite --- nullius/prototypes/item/equipment.lua | 4 +- nullius/prototypes/item/landfill.lua | 11 ++-- nullius/prototypes/item/turbine.lua | 85 ++++++++++++--------------- nullius/prototypes/override.lua | 20 ++++--- nullius/prototypes/override_final.lua | 34 +++++++++-- 5 files changed, 88 insertions(+), 66 deletions(-) diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index 7844c65..3ef9076 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -3539,7 +3539,9 @@ data:extend({ subgroup = "space", order = "nullius-d", stack_size = 1, - rocket_launch_product = {"nullius-box-astronomy-pack", 100} + rocket_launch_products = { + {type = "item", name = "nullius-box-astronomy-pack", amount = 100} + } }, { type = "recipe", diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index d57a658..15ea98e 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -1291,6 +1291,7 @@ data:extend({ count = 8, scale = 0.5 }, + inner_corner = { picture = ENTITYPATH.."concrete/white-concrete-inner-corner.png", count = 16, @@ -1303,7 +1304,7 @@ data:extend({ }, side = { picture = ENTITYPATH.."concrete/white-concrete-side.png", - count = 16, + count = 16, scale = 0.5 }, u_transition = { @@ -1318,10 +1319,10 @@ data:extend({ }, main = data.raw.tile["refined-concrete"].variants.main, inner_corner_mask = data.raw.tile["refined-concrete"].variants.inner_corner_mask, - outer_corner_mask = data.raw.tile["refined-concrete"].variants.outer_corner_mask, - side_mask = data.raw.tile["refined-concrete"].variants.side_mask, - u_transition_mask = data.raw.tile["refined-concrete"].variants.u_transition_mask, - o_transition_mask = data.raw.tile["refined-concrete"].variants.o_transition_mask + outer_corner_mask = data.raw.tile["refined-concrete"].variants.outer_corner_mask, + side_mask = data.raw.tile["refined-concrete"].variants.side_mask, + u_transition_mask = data.raw.tile["refined-concrete"].variants.u_transition_mask, + o_transition_mask = data.raw.tile["refined-concrete"].variants.o_transition_mask } } }) diff --git a/nullius/prototypes/item/turbine.lua b/nullius/prototypes/item/turbine.lua index 6b4298b..0f7bda2 100644 --- a/nullius/prototypes/item/turbine.lua +++ b/nullius/prototypes/item/turbine.lua @@ -9,16 +9,16 @@ local function create_turbine_recipe(fluidname, exhaust, energy, counto, countc, end local open = { type = "recipe", - name = "nullius-burn-open-" .. fluidname, - localised_name = {"recipe-name.nullius-turbine-burn-open", {"fluid-name."..fullfluid}}, - icons = localIcons, - icon = fluid.icon, - icon_size = fluid.icon_size, - crafting_machine_tint = { primary = fluid.flow_color }, + name = "nullius-burn-open-" .. fluidname, + localised_name = {"recipe-name.nullius-turbine-burn-open", {"fluid-name."..fullfluid}}, + icons = localIcons, + -- icon = fluid.icon, + -- icon_size = fluid.icon_size, + crafting_machine_tint = { primary = fluid.flow_color }, category = "turbine-open", subgroup = "turbine-open", hide_from_player_crafting = true, - hide_from_stats = true, + hide_from_stats = true, energy_required = 1.8, ingredients = {{type="fluid", name=fullfluid, amount=counto}}, results = {{type="fluid", name="nullius-energy", amount=energycounto}} @@ -62,26 +62,24 @@ data:extend({ { type = "item", name = "nullius-turbine-open-1", - localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(1)}, - localised_description = {"entity-description.nullius-turbine-info", + localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(1)}, + localised_description = {"entity-description.nullius-turbine-info", tostring(1), tostring(90), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-open"}}}, icons = { - { - icon = "__base__/graphics/icons/steam-turbine.png", - icon_size = 64, - + { + icon = "__base__/graphics/icons/steam-turbine.png", + icon_size = 64, tint = {0.7, 0.7, 0.6, 1} }, - { + { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - - scale = 0.32, + scale = 0.32, shift = {1, -8}, tint = {0.75, 0.75, 0.75, 0.8} } - }, + }, subgroup = "energy-backup", order = "nullius-fbb", place_result = "nullius-turbine-open-standard-1", @@ -90,26 +88,24 @@ data:extend({ { type = "item", name = "nullius-turbine-open-2", - localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(2)}, - localised_description = {"entity-description.nullius-turbine-info", + localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(2)}, + localised_description = {"entity-description.nullius-turbine-info", tostring(2.5), tostring(95), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-open"}}}, icons = { - { - icon = "__base__/graphics/icons/steam-turbine.png", + { + icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - tint = {0.85, 0.85, 0.75, 1} }, - { + { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - - scale = 0.32, + scale = 0.32, shift = {1, -8}, tint = {0.8, 0.8, 0.8, 0.82} } - }, + }, subgroup = "energy-backup", order = "nullius-fbc", place_result = "nullius-turbine-open-standard-2", @@ -118,26 +114,24 @@ data:extend({ { type = "item", name = "nullius-turbine-open-3", - localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(3)}, - localised_description = {"entity-description.nullius-turbine-info", + localised_name = {"", {"entity-name.nullius-turbine-open"}, " ", tostring(3)}, + localised_description = {"entity-description.nullius-turbine-info", tostring(6), tostring(100), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-open"}}}, icons = { - { - icon = "__base__/graphics/icons/steam-turbine.png", + { + icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - tint = {1, 1, 0.9, 1} }, - { + { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - - scale = 0.32, + scale = 0.32, shift = {1, -8}, tint = {0.85, 0.85, 0.85, 0.85} } - }, + }, subgroup = "energy-backup", order = "nullius-fbd", place_result = "nullius-turbine-open-standard-3", @@ -146,14 +140,13 @@ data:extend({ { type = "item", name = "nullius-turbine-closed-1", - localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(1)}, - localised_description = {"entity-description.nullius-turbine-info", + localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(1)}, + localised_description = {"entity-description.nullius-turbine-info", tostring(1), tostring(85), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-closed"}}}, icons = {{ - icon = "__base__/graphics/icons/steam-turbine.png", + icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - tint = {0.6, 0.6, 0.7, 1} }}, subgroup = "energy-backup", @@ -164,14 +157,13 @@ data:extend({ { type = "item", name = "nullius-turbine-closed-2", - localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(2)}, - localised_description = {"entity-description.nullius-turbine-info", + localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(2)}, + localised_description = {"entity-description.nullius-turbine-info", tostring(2.5), tostring(90), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-closed"}}}, icons = {{ - icon = "__base__/graphics/icons/steam-turbine.png", + icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - tint = {0.75, 0.75, 0.85, 1} }}, subgroup = "energy-backup", @@ -182,14 +174,13 @@ data:extend({ { type = "item", name = "nullius-turbine-closed-3", - localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(3)}, - localised_description = {"entity-description.nullius-turbine-info", + localised_name = {"", {"entity-name.nullius-turbine-closed"}, " ", tostring(3)}, + localised_description = {"entity-description.nullius-turbine-info", tostring(6), tostring(95), {"entity-description.nullius-turbine-item", {"entity-description.nullius-turbine-closed"}}}, icons = {{ - icon = "__base__/graphics/icons/steam-turbine.png", + icon = "__base__/graphics/icons/steam-turbine.png", icon_size = 64, - tint = {0.9, 0.9, 1, 1} }}, subgroup = "energy-backup", diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index ccf40d1..4760ceb 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -89,9 +89,11 @@ data.raw.item["small-lamp"].order = "nullius-bb" data.raw.item["small-lamp"].place_result = "nullius-lamp-1" data.raw["lamp"]["small-lamp"].placeable_by = {item = "small-lamp", count = 1} data.raw["lamp"]["small-lamp"].minable.mining_time = 0.3 +data.raw.item["small-lamp"].icon = nil data.raw.item["small-lamp"].icons = {{icon = ENTICONPATH .. "lamp1.png", icon_size = 64}} label_icon("small-lamp", 1, "yellow") +data.raw["lamp"]["small-lamp"].icon = nil data.raw["lamp"]["small-lamp"].icons = data.raw.item["small-lamp"].icons data.raw.item["stone-wall"].stack_size = 200 @@ -224,15 +226,15 @@ data.raw.tile["mineral-brown-sand-2"].layer = 17 data.raw.tile["mineral-beige-sand-1"].layer = 22 data.raw.tile["mineral-tan-dirt-6"].layer = 24 -for _,variant in pairs(data.raw.tile["water-mud"].variants) do - if (variant.picture ~= nil) then - variant.tint = {0.75, 1, 0.75, 1} - else - for _,subvariant in pairs(variant) do - subvariant.tint = {0.75, 1, 0.75, 1} - end - end -end +-- for _,variant in pairs(data.raw.tile["water-mud"].variants) do -- todo: this is useless ?? +-- if (variant.picture ~= nil) then +-- variant.tint = {0.75, 1, 0.75, 1} +-- else +-- for _,subvariant in pairs(variant) do +-- subvariant.tint = {0.75, 1, 0.75, 1} +-- end +-- end +-- end data.raw.tile["grass-1"].map_color={r=54, g=57, b=12} data.raw.tile["grass-2"].map_color={r=68, g=65, b=14} diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index 44b2106..f125dcf 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -17,8 +17,8 @@ data.raw.resource["uranium-ore"].minable.fluid_amount = nil data.raw.resource["uranium-ore"].minable.required_fluid = nil data.raw.item["rocket-fuel"].icon = "__base__/graphics/icons/rocket-fuel.png" data.raw.item["rocket-fuel"].icon_size = 64 -data.raw.item["copper-cable"].icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png" -data.raw.item["copper-cable"].icon_size = 64 +data.raw.item["copper-cable"].icon = nil --"__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png" +-- data.raw.item["copper-cable"].icon_size = 64 data.raw.item["copper-cable"].icons = {{ icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64 @@ -28,10 +28,12 @@ data.raw.item["copper-cable"].order = "nullius-d" data.raw.item["storage-tank"].stack_size = 50 +data.raw.item["storage-tank"].icon = nil data.raw.item["storage-tank"].icons = {{ icon = "__base__/graphics/icons/storage-tank.png", icon_size = 64, }} +data.raw["storage-tank"]["storage-tank"].icon = nil data.raw["storage-tank"]["storage-tank"].icons = data.raw.item["storage-tank"].icons data.raw["storage-tank"]["storage-tank"].fluid_box.volume = 15000 data.raw["storage-tank"]["storage-tank"].pictures = @@ -39,6 +41,7 @@ data.raw["storage-tank"]["storage-tank"].pictures = data.raw["storage-tank"]["storage-tank"].pictures.picture.sheets[1].tint = {0.9, 0.8, 0.6} +data.raw.item["radar"].icon = nil if mods["reskins-bobs"] then data.raw.item["radar"].icons = { { @@ -66,6 +69,7 @@ data.raw.item["radar"].icons = {{ data.raw["radar"]["radar"].pictures.layers[1].tint = {0.9, 0.9, 0.65} end data.raw.item["radar"].stack_size = 20 +data.raw["radar"]["radar"].icon = nil data.raw["radar"]["radar"].icons = data.raw.item["radar"].icons data.raw["radar"]["radar"].fast_replaceable_group = "sensor-node" data.raw["radar"]["radar"].next_upgrade = "nullius-sensor-node-2" @@ -81,6 +85,7 @@ data.raw.item["big-electric-pole"].localised_name = {"entity-name.nullius-pylon- data.raw.item["big-electric-pole"].subgroup = "electric-pole" data.raw.item["big-electric-pole"].order = "nullius-cb" data.raw.item["big-electric-pole"].stack_size = 50 +data.raw.item["big-electric-pole"].icon = nil data.raw.item["big-electric-pole"].icons = {{ icon = ENTICONPATH .. "large-pole-1.png", icon_size = 64 @@ -88,6 +93,7 @@ data.raw.item["big-electric-pole"].icons = {{ label_icon("big-electric-pole", 1, "yellow") data.raw["electric-pole"]["big-electric-pole"].localised_name = data.raw.item["big-electric-pole"].localised_name +data.raw["electric-pole"]["big-electric-pole"].icon = nil data.raw["electric-pole"]["big-electric-pole"].icons = data.raw.item["big-electric-pole"].icons data.raw["electric-pole"]["big-electric-pole"].maximum_wire_distance = 32.5 @@ -102,12 +108,14 @@ data.raw.item["small-electric-pole"].localised_name = {"entity-name.nullius-powe data.raw.item["small-electric-pole"].subgroup = "electric-pole" data.raw.item["small-electric-pole"].order = "nullius-bb" data.raw.item["small-electric-pole"].stack_size = 100 +data.raw.item["small-electric-pole"].icon = nil data.raw.item["small-electric-pole"].icons = {{ icon = ENTICONPATH .. "pole1.png", icon_size = 64 }} label_icon("small-electric-pole", 1, "yellow") data.raw["electric-pole"]["small-electric-pole"].localised_name = data.raw.item["small-electric-pole"].localised_name +data.raw["electric-pole"]["small-electric-pole"].icon = nil data.raw["electric-pole"]["small-electric-pole"].icons = data.raw.item["small-electric-pole"].icons data.raw["electric-pole"]["small-electric-pole"].maximum_wire_distance = 8.5 @@ -119,12 +127,14 @@ data.raw.item["medium-electric-pole"].localised_name = {"entity-name.nullius-pow data.raw.item["medium-electric-pole"].subgroup = "electric-pole" data.raw.item["medium-electric-pole"].order = "nullius-bc" data.raw.item["medium-electric-pole"].stack_size = 100 +data.raw.item["medium-electric-pole"].icon = nil data.raw.item["medium-electric-pole"].icons = {{ icon = ENTICONPATH .. "pole2.png", icon_size = 64 }} label_icon("medium-electric-pole", 2, "red") data.raw["electric-pole"]["medium-electric-pole"].localised_name = data.raw.item["medium-electric-pole"].localised_name +data.raw["electric-pole"]["medium-electric-pole"].icon = nil data.raw["electric-pole"]["medium-electric-pole"].icons = data.raw.item["medium-electric-pole"].icons data.raw["electric-pole"]["medium-electric-pole"].maximum_wire_distance = 11.5 @@ -136,12 +146,14 @@ data.raw.item["substation"].localised_name = {"entity-name.nullius-substation-1" data.raw.item["substation"].subgroup = "electric-pole" data.raw.item["substation"].order = "nullius-db" data.raw.item["substation"].stack_size = 50 +data.raw.item["substation"].icon = nil data.raw.item["substation"].icons = {{ icon = ENTICONPATH .. "substation1.png", icon_size = 64 }} label_icon("substation", 1, "yellow") data.raw["electric-pole"]["substation"].localised_name = data.raw.item["substation"].localised_name +data.raw["electric-pole"]["substation"].icon = nil data.raw["electric-pole"]["substation"].icons = data.raw.item["substation"].icons data.raw["electric-pole"]["substation"].collision_box = {{-0.65, -0.65}, {0.65, 0.65}} data.raw["electric-pole"]["substation"].maximum_wire_distance = 24.5 @@ -149,80 +161,94 @@ data.raw["electric-pole"]["substation"].supply_area_distance = 12 data.raw["electric-pole"]["substation"].fast_replaceable_group = "pylon" data.raw["electric-pole"]["substation"].next_upgrade = "nullius-substation-2" - +data.raw.item["wooden-chest"].icon = nil data.raw.item["wooden-chest"].icons = {{ icon = ENTICONPATH .. "chest1.png", icon_size = 64 }} data.raw.item["wooden-chest"].subgroup = "storage" data.raw.item["wooden-chest"].order = "nullius-bb" data.raw.item["wooden-chest"].stack_size = 100 +data.raw.item["iron-chest"].icon = nil data.raw.item["iron-chest"].icons = {{ icon = ENTICONPATH .. "chest2.png", icon_size = 64 }} data.raw.item["iron-chest"].subgroup = "storage" data.raw.item["iron-chest"].order = "nullius-bc" data.raw.item["iron-chest"].stack_size = 100 +data.raw.item["steel-chest"].icon = nil data.raw.item["steel-chest"].icons = {{ icon = ENTICONPATH .. "chest3s.png", icon_size = 64 }} data.raw.item["steel-chest"].subgroup = "storage" data.raw.item["steel-chest"].order = "nullius-bd" data.raw.item["steel-chest"].stack_size = 100 +data.raw["container"]["wooden-chest"].icon = nil data.raw["container"]["wooden-chest"].icons = data.raw.item["wooden-chest"].icons data.raw["container"]["wooden-chest"].inventory_size = 10 +data.raw["container"]["iron-chest"].icon = nil data.raw["container"]["iron-chest"].icons = data.raw.item["iron-chest"].icons data.raw["container"]["iron-chest"].inventory_size = 20 +data.raw["container"]["steel-chest"].icon = nil data.raw["container"]["steel-chest"].icons = data.raw.item["steel-chest"].icons data.raw["container"]["steel-chest"].inventory_size = 30 data.raw["container"]["wooden-chest"].next_upgrade = "iron-chest" data.raw["container"]["iron-chest"].next_upgrade = "steel-chest" data.raw["container"]["steel-chest"].next_upgrade = nil - +data.raw.item["storage-chest"].icon = nil data.raw.item["storage-chest"].icons = {{ icon = ENTICONPATH .. "chest-storage1.png", icon_size = 64 }} data.raw.item["storage-chest"].subgroup = "small-logistic-storage" data.raw.item["storage-chest"].order = "nullius-bc" data.raw.item["storage-chest"].stack_size = 100 +data.raw.item["passive-provider-chest"].icon = nil data.raw.item["passive-provider-chest"].icons = {{ icon = ENTICONPATH .. "chest-supply1.png", icon_size = 64 }} data.raw.item["passive-provider-chest"].subgroup = "small-logistic-storage" data.raw.item["passive-provider-chest"].order = "nullius-cc" data.raw.item["passive-provider-chest"].stack_size = 100 +data.raw.item["requester-chest"].icon = nil data.raw.item["requester-chest"].icons = {{ icon = ENTICONPATH .. "chest-demand1.png", icon_size = 64 }} data.raw.item["requester-chest"].subgroup = "small-logistic-storage" data.raw.item["requester-chest"].order = "nullius-dc" data.raw.item["requester-chest"].stack_size = 100 +data.raw.item["buffer-chest"].icon = nil data.raw.item["buffer-chest"].icons = {{ icon = ENTICONPATH .. "chest-buffer1.png", icon_size = 64 }} data.raw.item["buffer-chest"].subgroup = "small-logistic-storage" data.raw.item["buffer-chest"].order = "nullius-ec" data.raw.item["buffer-chest"].stack_size = 100 +data.raw.item["active-provider-chest"].icon = nil data.raw.item["active-provider-chest"].icons = {{ icon = ENTICONPATH .. "chest-dispatch1.png", icon_size = 64 }} data.raw.item["active-provider-chest"].subgroup = "small-logistic-storage" data.raw.item["active-provider-chest"].order = "nullius-fc" data.raw.item["active-provider-chest"].stack_size = 100 +data.raw["logistic-container"]["storage-chest"].icon = nil data.raw["logistic-container"]["storage-chest"].icons = data.raw.item["storage-chest"].icons data.raw["logistic-container"]["storage-chest"].inventory_size = 30 +data.raw["logistic-container"]["passive-provider-chest"].icon = nil data.raw["logistic-container"]["passive-provider-chest"].icons = data.raw.item["passive-provider-chest"].icons data.raw["logistic-container"]["passive-provider-chest"].inventory_size = 30 +data.raw["logistic-container"]["requester-chest"].icon = nil data.raw["logistic-container"]["requester-chest"].icons = data.raw.item["requester-chest"].icons data.raw["logistic-container"]["requester-chest"].inventory_size = 30 data.raw["logistic-container"]["requester-chest"].max_logistic_slots = 10 +data.raw["logistic-container"]["buffer-chest"].icon = nil data.raw["logistic-container"]["buffer-chest"].icons = data.raw.item["buffer-chest"].icons data.raw["logistic-container"]["buffer-chest"].inventory_size = 30 data.raw["logistic-container"]["buffer-chest"].max_logistic_slots = 6 +data.raw["logistic-container"]["active-provider-chest"].icon = nil data.raw["logistic-container"]["active-provider-chest"].icons = data.raw.item["active-provider-chest"].icons data.raw["logistic-container"]["active-provider-chest"].inventory_size = 30 From 9736745aa385d070838e6e69054bd29521ae1354 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 00:14:21 +0200 Subject: [PATCH 161/236] Fixed concrete transitions --- nullius/prototypes/item/landfill.lua | 66 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index 15ea98e..a12e8cf 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -1269,7 +1269,8 @@ data:extend({ collision_mask = { layers = {ground_tile = true}}, walking_speed_modifier = 1.6, vehicle_friction_modifier = 0.5, - layer = 66, + layer = 40, + layer_group = "ground-artificial", map_color={r=0.85, g=0.85, b=0.85}, needs_correction = false, @@ -1283,46 +1284,47 @@ data:extend({ scorch_mark_color = data.raw.tile["refined-concrete"].scorch_mark_color, absorptions_per_second = data.raw.tile["refined-concrete"].absorptions_per_second, trigger_effect = data.raw.tile["refined-concrete"].trigger_effect, + driving_sound = data.raw.tile["refined-concrete"].driving_sound, variants = { - empty_transitions = true, material_background = { - picture = ENTITYPATH.."concrete/white-concrete.png", + picture = ENTITYPATH.."concrete/white-concrete.png", count = 8, scale = 0.5 }, - inner_corner = { - picture = ENTITYPATH.."concrete/white-concrete-inner-corner.png", - count = 16, - scale = 0.5 - }, - outer_corner = { - picture = ENTITYPATH.."concrete/white-concrete-outer-corner.png", - count = 8, - scale = 0.5 - }, - side = { - picture = ENTITYPATH.."concrete/white-concrete-side.png", - count = 16, - scale = 0.5 - }, - u_transition = { - picture = ENTITYPATH.."concrete/white-concrete-u.png", - count = 8, - scale = 0.5 - }, - o_transition = { - picture = ENTITYPATH.."concrete/white-concrete-o.png", - count = 4, - scale = 0.5 + transition = { + overlay_layout = { + inner_corner = { + spritesheet = ENTITYPATH.."concrete/white-concrete-inner-corner.png", + count = 16, + scale = 0.5 + }, + outer_corner = { + spritesheet = ENTITYPATH.."concrete/white-concrete-outer-corner.png", + count = 8, + scale = 0.5 + }, + side = { + spritesheet = ENTITYPATH.."concrete/white-concrete-side.png", + count = 16, + scale = 0.5 + }, + u_transition = { + spritesheet = ENTITYPATH.."concrete/white-concrete-u.png", + count = 8, + scale = 0.5 + }, + o_transition = { + spritesheet = ENTITYPATH.."concrete/white-concrete-o.png", + count = 4, + scale = 0.5 + }, + }, + mask_layout = data.raw.tile["refined-concrete"].variants.transition.mask_layout }, + main = data.raw.tile["refined-concrete"].variants.main, - inner_corner_mask = data.raw.tile["refined-concrete"].variants.inner_corner_mask, - outer_corner_mask = data.raw.tile["refined-concrete"].variants.outer_corner_mask, - side_mask = data.raw.tile["refined-concrete"].variants.side_mask, - u_transition_mask = data.raw.tile["refined-concrete"].variants.u_transition_mask, - o_transition_mask = data.raw.tile["refined-concrete"].variants.o_transition_mask } } }) From e44812d2fa7a89dff5e97e208e8822616855607a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 00:23:14 +0200 Subject: [PATCH 162/236] Fixed landfill minable property --- nullius/prototypes/item/landfill.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index a12e8cf..0778060 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -1018,7 +1018,7 @@ data:extend({ absorptions_per_second = {pollution = 0}, minable = { mining_time = 1, - name = "nullius-land-fill-sand" + result = "nullius-land-fill-sand" }, variants = { empty_transitions = true, @@ -1082,7 +1082,7 @@ data:extend({ absorptions_per_second = {pollution = 0}, minable = { mining_time = 1, - name = "nullius-land-fill-bauxite" + result = "nullius-land-fill-bauxite" }, variants = { empty_transitions = true, @@ -1146,7 +1146,7 @@ data:extend({ absorptions_per_second = {pollution = 0}, minable = { mining_time = 1, - name = "nullius-land-fill-iron" + result = "nullius-land-fill-iron" }, variants = { empty_transitions = true, @@ -1210,7 +1210,7 @@ data:extend({ absorptions_per_second = {pollution = 0}, minable = { mining_time = 1, - name = "nullius-land-fill-limestone" + result = "nullius-land-fill-limestone" }, variants = { empty_transitions = true, From c9559aa76a80158a8df4f863ba5f2a671360cdef Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 00:44:29 +0200 Subject: [PATCH 163/236] Fixed landfill variants --- nullius/prototypes/item/landfill.lua | 61 +++++++++++++++++----------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/nullius/prototypes/item/landfill.lua b/nullius/prototypes/item/landfill.lua index 0778060..b58e94b 100644 --- a/nullius/prototypes/item/landfill.lua +++ b/nullius/prototypes/item/landfill.lua @@ -1021,7 +1021,6 @@ data:extend({ result = "nullius-land-fill-sand" }, variants = { - empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/sand.png", count = 8 @@ -1060,11 +1059,15 @@ data:extend({ y = 160 } }, - inner_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, - o_transition_mask = { count = 1, line_length = 2, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, - outer_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, - side_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, - u_transition_mask = { count = 1, line_length = 1, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + transition = { + mask_layout = { + inner_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, + o_transition = { count = 1, line_length = 2, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, + outer_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, + side = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, + u_transition = { count = 1, line_length = 1, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + } + }, } }, { @@ -1085,7 +1088,6 @@ data:extend({ result = "nullius-land-fill-bauxite" }, variants = { - empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/dirt.png", count = 8 @@ -1124,11 +1126,16 @@ data:extend({ y = 160 } }, - inner_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, - o_transition_mask = { count = 1, line_length = 2, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, - outer_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, - side_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, - u_transition_mask = { count = 1, line_length = 1, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + transition = { + mask_layout = { + inner_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, + o_transition = { count = 1, line_length = 2, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, + outer_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, + side = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, + u_transition = { count = 1, line_length = 1, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + } + } + } }, { @@ -1149,7 +1156,6 @@ data:extend({ result = "nullius-land-fill-iron" }, variants = { - empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/iron.png", count = 8 @@ -1188,11 +1194,15 @@ data:extend({ y = 160 } }, - inner_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, - o_transition_mask = { count = 1, line_length = 2, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, - outer_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, - side_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, - u_transition_mask = { count = 1, line_length = 1, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + transition = { + mask_layout = { + inner_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, + o_transition = { count = 1, line_length = 2, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, + outer_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, + side = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, + u_transition = { count = 1, line_length = 1, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + } + } } }, { @@ -1213,7 +1223,6 @@ data:extend({ result = "nullius-land-fill-limestone" }, variants = { - empty_transitions = true, material_background = { picture = ENTITYPATH .. "landfill/limestone.png", count = 8 @@ -1252,11 +1261,15 @@ data:extend({ y = 160 } }, - inner_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, - o_transition_mask = { count = 1, line_length = 2, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, - outer_corner_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, - side_mask = { count = 8, line_length = 8, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, - u_transition_mask = { count = 1, line_length = 1, picture = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + transition = { + mask_layout = { + inner_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 0 }, + o_transition = { count = 1, line_length = 2, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 1152 }, + outer_corner = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 288 }, + side = { count = 8, line_length = 8, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 576 }, + u_transition = { count = 1, line_length = 1, spritesheet = "__base__/graphics/terrain/masks/transition-3.png", x = 864 } + } + } } }, From 73fe91f3742dc345c6d4733c68424c4d6739524d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 01:20:20 +0200 Subject: [PATCH 164/236] Removed warnings caused by crash site entities --- nullius/prototypes/entity/alignment.lua | 2 +- nullius/prototypes/entity/landing.lua | 85 ++++++++++++------------- 2 files changed, 42 insertions(+), 45 deletions(-) diff --git a/nullius/prototypes/entity/alignment.lua b/nullius/prototypes/entity/alignment.lua index dafb8b3..30d1696 100644 --- a/nullius/prototypes/entity/alignment.lua +++ b/nullius/prototypes/entity/alignment.lua @@ -155,7 +155,7 @@ data:extend({ layer = 234, map_color={r=8, g=8, b=32}, walking_speed_modifier = 0.2, - absorption_per_second = 0, + absorptions_per_second = {pollution = 0}, variants = { main = { { diff --git a/nullius/prototypes/entity/landing.lua b/nullius/prototypes/entity/landing.lua index adf69ce..586b1bb 100644 --- a/nullius/prototypes/entity/landing.lua +++ b/nullius/prototypes/entity/landing.lua @@ -27,8 +27,7 @@ data:extend({ alert_when_damaged = false, allow_copy_paste = false, inventory_size = 20, - enable_inventory_bar = false, - not_inventory_moveable = true, + inventory_type = "normal", minable = { mining_time = 4, results = { @@ -49,7 +48,7 @@ data:extend({ shift = util.by_pixel(-50, 61), dice_x = 4, dice_y = 3, - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5, }, @@ -92,7 +91,7 @@ data:extend({ max_health = 200, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "20x[item=small-lamp] 8x[item=nullius-solar-panel-1]"}, minable = { mining_time = 1, @@ -101,7 +100,7 @@ data:extend({ {type="item", name="nullius-solar-panel-1", amount=8} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.9, -0.1}, {1.4, 1.2}}, selection_box = {{-0.9, -0.1}, {1.4, 1.2}}, dying_explosion = "big-explosion", @@ -112,7 +111,7 @@ data:extend({ width = 348, height = 136, shift = util.by_pixel(-27, 31), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5, }, @@ -149,7 +148,7 @@ data:extend({ max_health = 200, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "1x[item=nullius-small-furnace-2] 2x[item=nullius-chimney-1] " .. "2x[item=nullius-outfall-1] 2x[item=storage-tank]"}, minable = { @@ -161,7 +160,7 @@ data:extend({ {type="item", name="storage-tank", amount=2} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-1.6, -1.6}, {1.3, 1.3}}, selection_box = {{-1.6, -1.6}, {1.3, 1.3}}, dying_explosion = "big-explosion", @@ -172,7 +171,7 @@ data:extend({ width = 450, height = 296, shift = util.by_pixel(-52, 8), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5, }, @@ -209,7 +208,7 @@ data:extend({ max_health = 100, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "3x[item=nullius-air-filter-1] 3x[item=nullius-broken-air-filter]"}, minable = { mining_time = 1, @@ -218,7 +217,7 @@ data:extend({ {type="item", name="nullius-broken-air-filter", amount=3} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-1.2, -1.0}, {1.2, 0.7}}, selection_box = {{-1.2, -1.0}, {1.2, 0.7}}, dying_explosion = "big-explosion", @@ -229,7 +228,7 @@ data:extend({ width = 352, height = 206, shift = util.by_pixel(-41, 13), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5, }, @@ -266,7 +265,7 @@ data:extend({ max_health = 100, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "2x[item=nullius-seawater-intake-1] 4x[item=storage-tank]"}, minable = { mining_time = 1, @@ -275,7 +274,7 @@ data:extend({ {type="item", name="storage-tank", amount=4} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-1.1, -0.6}, {1.0, 1.0}}, selection_box = {{-1.1, -0.6}, {1.0, 1.0}}, dying_explosion = "big-explosion", @@ -286,7 +285,7 @@ data:extend({ width = 396, height = 214, shift = util.by_pixel(-56, -1), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -324,7 +323,7 @@ data:extend({ max_health = 100, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "18x[item=nullius-broken-solar-panel] 10x[item=nullius-aluminum-ingot]"}, minable = { mining_time = 1, @@ -333,7 +332,7 @@ data:extend({ {type="item", name="nullius-aluminum-ingot", amount=10} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.8, -1.4}, {0.7, 1.4}}, selection_box = {{-0.8, -1.4}, {0.7, 1.4}}, dying_explosion = "big-explosion", @@ -344,7 +343,7 @@ data:extend({ width = 350, height = 284, shift = util.by_pixel(-44, 10), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -382,7 +381,7 @@ data:extend({ max_health = 50, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "40x[item=nullius-pipe-2] 24x[item=nullius-underground-pipe-2]" .. "3x[item=nullius-priority-valve] 3x[item=nullius-pump-1]"}, minable = { @@ -394,7 +393,7 @@ data:extend({ {type="item", name="nullius-pump-1", amount=3} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.7, -0.8}, {1.2, 0.6}}, selection_box = {{-0.7, -0.8}, {1.2, 0.6}}, dying_explosion = "medium-explosion", @@ -405,7 +404,7 @@ data:extend({ width = 274, height = 172, shift = util.by_pixel(-8, 3), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -443,13 +442,13 @@ data:extend({ max_health = 50, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "20x[item=nullius-aluminum-ingot]"}, minable = { mining_time = 0.5, results = { {type="item", name="nullius-aluminum-ingot", amount=20} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.9, -0.8}, {1.1, 0.6}}, selection_box = {{-0.9, -0.8}, {1.1, 0.6}}, dying_explosion = "medium-explosion", @@ -460,7 +459,7 @@ data:extend({ width = 256, height = 150, shift = util.by_pixel(-12, -2), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -497,7 +496,7 @@ data:extend({ max_health = 100, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "1x[item=nullius-lab-1] 20x[item=nullius-red-wire] 2x[item=nullius-broken-sensor-node]"}, minable = { mining_time = 1, @@ -507,7 +506,7 @@ data:extend({ {type="item", name="nullius-broken-sensor-node", amount=2} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-2.2, -1.2}, {2.2, 1.2}}, selection_box = {{-2.5, -1.5}, {2.5, 1.5}}, dying_explosion = "medium-explosion", @@ -518,7 +517,7 @@ data:extend({ width = 700, height = 344, shift = util.by_pixel(-49, 11), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -555,7 +554,7 @@ data:extend({ max_health = 50, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "30x[item=small-electric-pole] 10x[item=big-electric-pole]" .. "30x[item=nullius-broken-pylon] 5x[item=programmable-speaker]"}, minable = { @@ -567,7 +566,7 @@ data:extend({ {type="item", name="programmable-speaker", amount=5} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-1.5, -0.9}, {0.9, 0.9}}, selection_box = {{-1.5, -0.9}, {0.9, 0.9}}, dying_explosion = "medium-explosion", @@ -578,7 +577,7 @@ data:extend({ width = 384, height = 360, shift = util.by_pixel(-28, -38), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -617,13 +616,12 @@ data:extend({ alert_when_damaged = false, allow_copy_paste = false, inventory_size = 10, - enable_inventory_bar = false, - not_inventory_moveable = true, + inventory_type = "normal", minable = { mining_time = 0.5, results = { {type="item", name="nullius-large-chest-1", amount=1} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, dying_explosion = "medium-explosion", @@ -634,7 +632,7 @@ data:extend({ width = 220, height = 148, shift = util.by_pixel(-6, 12), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -674,13 +672,12 @@ data:extend({ alert_when_damaged = false, allow_copy_paste = false, inventory_size = 10, - enable_inventory_bar = false, - not_inventory_moveable = true, + inventory_type = "normal", minable = { mining_time = 0.5, results = { {type="item", name="nullius-large-chest-1", amount=1} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, dying_explosion = "medium-explosion", @@ -691,7 +688,7 @@ data:extend({ width = 218, height = 186, shift = util.by_pixel(-10, 5), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -729,7 +726,7 @@ data:extend({ max_health = 100, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "3x[item=nullius-small-miner-1] 12x[item=nullius-broken-grid-battery]"}, minable = { mining_time = 0.5, @@ -738,7 +735,7 @@ data:extend({ {type="item", name="nullius-broken-grid-battery", amount=12} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-1.2, -0.7}, {1.2, 0.7}}, selection_box = {{-1.5, -1}, {1.5, 1}}, dying_explosion = "medium-explosion", @@ -749,7 +746,7 @@ data:extend({ width = 446, height = 234, shift = util.by_pixel(-31, 12), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, @@ -786,7 +783,7 @@ data:extend({ max_health = 100, alert_when_damaged = false, allow_copy_paste = false, - localised_description = {"entity-description.nullius-minable", + localised_description = {"entity-description.nullius-minable", "1x[item=nullius-medium-assembler-1] 3x[item=nullius-broken-assembler] " .. "6x[item=nullius-grid-battery-1]"}, minable = { @@ -797,7 +794,7 @@ data:extend({ {type="item", name="nullius-grid-battery-1", amount=6} } }, - placeable_by = {item = "nullius-probe", count = 1}, + placeable_by = {item = "nullius-probe", count = 1}, collision_box = {{-0.7, -1.2}, {0.7, 1.2}}, selection_box = {{-1, -1.5}, {1, 1.5}}, dying_explosion = "medium-explosion", @@ -808,7 +805,7 @@ data:extend({ width = 290, height = 238, shift = util.by_pixel(-8, -10), - frame_count = 1, + --frame_count = 1, line_length = 1, scale = 0.5 }, From bf949411602c8dc6f395d964285f20eccf09e8c6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 02:04:19 +0200 Subject: [PATCH 165/236] Removed warnings caused by turbines --- nullius/prototypes/entity/turbine.lua | 28 ++++++++++++--------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index c5be0e9..6e9442a 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -2,7 +2,7 @@ local invisible = { filename = "__nullius__/graphics/icons/blank.png", width = 32, height = 32, - frame_count = 1, + --frame_count = 1, line_length = 1 } @@ -87,6 +87,7 @@ local function set_furnace_idle(proto, overlay, tint) local vertical = turbine_frame(true, overlay, tint) local horizontal = turbine_frame(false, overlay, tint) proto.graphics_set = { + always_draw_idle_animation = true, idle_animation = { north = vertical, east = horizontal, @@ -94,16 +95,16 @@ local function set_furnace_idle(proto, overlay, tint) west = horizontal } } - proto.graphics_set.working_visualisations = { - { - always_draw = true, - render_layer = "object-under", -- draw under the generator animation (only used for the preview) - north_animation = vertical, - east_animation = horizontal, - south_animation = vertical, - west_animation = horizontal - } - } + -- proto.graphics_set.working_visualisations = { + -- { + -- always_draw = true, + -- render_layer = "object-under", -- draw under the generator animation (only used for the preview) + -- north_animation = vertical, + -- east_animation = horizontal, + -- south_animation = vertical, + -- west_animation = horizontal + -- } + -- } end local function set_generator_animation(proto, overlay, tint) @@ -227,10 +228,8 @@ local furnace1cb = { close_sound = data.raw.generator["steam-turbine"].close_sound, impact_category = data.raw.generator["steam-turbine"].impact_category, water_reflection = data.raw.generator["steam-turbine"].water_reflection, - bottleneck_ignore = true, show_recipe_icon = false, show_recipe_icon_on_map = false, - always_draw_idle_animation = true, additional_pastable_entities = { "nullius-turbine-open-backup-1", "nullius-turbine-closed-backup-1", "nullius-turbine-open-standard-1", "nullius-turbine-closed-standard-1", @@ -310,8 +309,6 @@ local generator1ob = { energy_source = { type = "electric", usage_priority = "tertiary" }, smoke = data.raw.generator["steam-turbine"].smoke, working_sound = data.raw.generator["steam-turbine"].working_sound, - min_perceived_performance = 0.25, - performance_to_sound_speedup = 0.5, horizontal_animation = generator_horizontal, vertical_animation = generator_vertical, fluid_box = { @@ -388,7 +385,6 @@ local vent1 = { hidden = true, selectable_in_game = false, allow_copy_paste = false, - bottleneck_ignore = true, show_recipe_icon = false, show_recipe_icon_on_map = false, crafting_categories = {"nullius-power-sink"}, From f28377bf4604037ab745d14941ed69341b05bf6c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 02:05:13 +0200 Subject: [PATCH 166/236] Nerfed valves --- nullius/prototypes/entity/plumbing.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 00a175a..c34c372 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1345,7 +1345,7 @@ data:extend({ mode = "overflow", threshold = 0.25, - flow_rate = 200, + flow_rate = 50, animations = { north = { @@ -1437,7 +1437,7 @@ data:extend({ impact_category = "metal", mode = "one-way", - flow_rate = 200, + flow_rate = 50, animations = { north = { @@ -1530,7 +1530,7 @@ data:extend({ mode = "top-up", threshold = 0.5, - flow_rate = 200, + flow_rate = 50, animations = { north = { @@ -1623,7 +1623,7 @@ data:extend({ mode = "overflow", threshold = 0.75, - flow_rate = 200, + flow_rate = 50, animations = { north = { From 4b0d181caf53bc148871309968efb5be613ef44c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 02:18:18 +0200 Subject: [PATCH 167/236] Turbine generator perceived performance --- nullius/prototypes/entity/turbine.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 6e9442a..3dc37b4 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -309,6 +309,11 @@ local generator1ob = { energy_source = { type = "electric", usage_priority = "tertiary" }, smoke = data.raw.generator["steam-turbine"].smoke, working_sound = data.raw.generator["steam-turbine"].working_sound, + perceived_performance = { + minimum = 0.25, + performance_to_activity_rate = 0.5 + }, + horizontal_animation = generator_horizontal, vertical_animation = generator_vertical, fluid_box = { From b6b22d6a5f7341f3ce1a43bbfba850e1a3c97afa Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 02:24:19 +0200 Subject: [PATCH 168/236] Removed mining drills warnings, reintroduced base prod bonus --- nullius/prototypes/entity/miner.lua | 170 ++++++++++++++-------------- 1 file changed, 84 insertions(+), 86 deletions(-) diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index 1ec81fc..04c4261 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -476,8 +476,6 @@ data:extend({ graphics_set = { drilling_vertical_movement_duration = 10 / 0.4, animation_progress = 1, - min_animation_progress = 0, - max_animation_progress = 30, status_colors = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.status_colors, circuit_connector_layer = "object", @@ -494,7 +492,7 @@ data:extend({ height = 208, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, scale = 0.6666*0.5, @@ -508,7 +506,7 @@ data:extend({ height = 66, frame_count = 5, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-3*0.6666, -44*0.6666), scale = 0.6666*0.5 }, @@ -537,7 +535,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, scale = 0.6666*0.5, @@ -551,7 +549,7 @@ data:extend({ height = 74, frame_count = 5, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(30*0.6666, -8*0.6666), scale = 0.6666*0.5 }, @@ -580,7 +578,7 @@ data:extend({ height = 192, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -1*0.6666), repeat_count = 5, scale = 0.6666*0.5, @@ -611,7 +609,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*0.6666), repeat_count = 5, scale = 0.6666*0.5, @@ -625,7 +623,7 @@ data:extend({ height = 60, frame_count = 5, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-31*0.6666, -13*0.6666), scale = 0.6666*0.5 }, @@ -813,7 +811,7 @@ data:extend({ height = 148, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(21*0.6666, 10*0.6666), scale = 0.5*0.6666, tint = {0.6, 0.7, 0.8} @@ -854,7 +852,7 @@ data:extend({ height = 140, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-22*0.6666, 12*0.6666), scale = 0.6666*0.5, tint = {0.6, 0.7, 0.8} @@ -913,7 +911,10 @@ data:extend({ energy_usage = "400kW", monitor_visualization_tint = {r=78, g=173, b=255}, fast_replaceable_group = "small-miner", - base_productivity = 0.05, + --base_productivity = 0.05, + effect_receiver = { + base_effect = {productivity = 0.05} + }, damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, @@ -929,8 +930,6 @@ data:extend({ graphics_set = { drilling_vertical_movement_duration = 10 / 0.4, animation_progress = 1, - min_animation_progress = 0, - max_animation_progress = 30, status_colors = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.status_colors, circuit_connector_layer = "object", @@ -1160,8 +1159,7 @@ data:extend({ graphics_set = { drilling_vertical_movement_duration = 10 / 0.4, animation_progress = 1, - min_animation_progress = 0, - max_animation_progress = 30, + status_colors = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.status_colors, circuit_connector_layer = "object", circuit_connector_secondary_draw_order = { north = 14, east = 30, south = 30, west = 30 }, @@ -1177,7 +1175,7 @@ data:extend({ height = 208, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4), repeat_count = 5, scale = 0.5, @@ -1197,7 +1195,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4), repeat_count = 5, scale = 0.5, @@ -1217,7 +1215,7 @@ data:extend({ height = 192, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -1), repeat_count = 5, scale = 0.5, @@ -1236,7 +1234,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4), repeat_count = 5, scale = 0.5, @@ -1271,7 +1269,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1, -11), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1290,7 +1288,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2, -12), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1309,7 +1307,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1, -11), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1328,7 +1326,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2, -12), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1354,7 +1352,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3, 3), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1368,7 +1366,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3, 3), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1387,7 +1385,7 @@ data:extend({ height = 148, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(21, 10), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1418,7 +1416,7 @@ data:extend({ height = 140, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-22, 12), scale = 0.5, tint = {0.6, 0.7, 0.8} @@ -1457,7 +1455,10 @@ data:extend({ energy_usage = "750kW", module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - base_productivity = 0.05, + --base_productivity = 0.05, + effect_receiver = { + base_effect = {productivity = 0.05} + }, radius_visualisation_picture = data.raw["mining-drill"]["electric-mining-drill"].radius_visualisation_picture, monitor_visualization_tint = {r=78, g=173, b=255}, @@ -1518,8 +1519,6 @@ data:extend({ graphics_set = { drilling_vertical_movement_duration = 10 / 0.4, animation_progress = 1, - min_animation_progress = 0, - max_animation_progress = 30, status_colors = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.status_colors, @@ -1537,7 +1536,6 @@ data:extend({ height = 208, frame_count = 1, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(0, -4*1.3333), repeat_count = 5, scale = 0.6666, @@ -1551,7 +1549,6 @@ data:extend({ height = 66, frame_count = 5, animation_speed = 0.4, - direction_count = 1, shift = util.by_pixel(-3*1.3333, -44*1.3333), scale = 0.6666 }, @@ -1580,7 +1577,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*1.3333), repeat_count = 5, scale = 0.6666, @@ -1594,7 +1591,7 @@ data:extend({ height = 74, frame_count = 5, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(30*1.3333, -8*1.3333), scale = 0.6666 }, @@ -1623,7 +1620,7 @@ data:extend({ height = 192, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -1*1.3333), repeat_count = 5, scale = 0.6666, @@ -1654,7 +1651,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*1.3333), repeat_count = 5, scale = 0.6666, @@ -1668,7 +1665,7 @@ data:extend({ height = 60, frame_count = 5, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-31*1.3333, -13*1.3333), scale = 0.6666 }, @@ -1708,7 +1705,7 @@ data:extend({ height = 72, frame_count = 30, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, 3*1.3333), scale = 0.6666 }, @@ -1733,7 +1730,7 @@ data:extend({ height = 58, frame_count = 10, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-1*1.3333, -44*1.3333), scale = 0.6666 } @@ -1759,7 +1756,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1*1.3333, -11*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -1790,7 +1787,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*1.3333, -12*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -1821,7 +1818,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1*1.3333, -11*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -1852,7 +1849,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*1.3333, -12*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -1888,7 +1885,7 @@ data:extend({ height = 132, frame_count = 30, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 9*1.3333), scale = 0.6666 }, @@ -1914,7 +1911,7 @@ data:extend({ height = 56, frame_count = 10, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(24*1.3333, -12*1.3333), scale = 0.6666 } @@ -1930,7 +1927,7 @@ data:extend({ height = 36, frame_count = 10, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-2*1.3333, 20*1.3333), scale = 0.6666 } @@ -1946,7 +1943,7 @@ data:extend({ height = 54, frame_count = 10, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-25*1.3333, -11*1.3333), scale = 0.6666 } @@ -1967,7 +1964,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 3*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -1981,7 +1978,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 3*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -2000,7 +1997,7 @@ data:extend({ height = 148, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(21*1.3333, 10*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -2041,7 +2038,7 @@ data:extend({ height = 140, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-22*1.3333, 12*1.3333), scale = 0.6666, tint = {0.6, 0.7, 0.8} @@ -2052,7 +2049,7 @@ data:extend({ { apply_tint = "status", always_draw = true, - draw_as_sprite = true, + -- draw_as_sprite = true, -- draw_as_light = true, north_animation = { filename = BASEENTITY .. "electric-mining-drill/electric-mining-drill-N-light.png", @@ -2140,7 +2137,10 @@ data:extend({ energy_usage = "1.2MW", monitor_visualization_tint = {r=78, g=173, b=255}, fast_replaceable_group = "large-miner", - base_productivity = 0.05, + --base_productivity = 0.05, + effect_receiver = { + base_effect = {productivity = 0.05} + }, damaged_trigger_effect = data.raw["mining-drill"]["electric-mining-drill"].damaged_trigger_effect, working_sound = data.raw["mining-drill"]["electric-mining-drill"].working_sound, @@ -2156,8 +2156,6 @@ data:extend({ graphics_set = { drilling_vertical_movement_duration = 10 / 0.4, animation_progress = 1, - min_animation_progress = 0, - max_animation_progress = 30, status_colors = data.raw["mining-drill"]["electric-mining-drill"].graphics_set.status_colors, circuit_connector_layer = "object", circuit_connector_secondary_draw_order = { north = 14, east = 30, south = 30, west = 30 }, @@ -2173,7 +2171,7 @@ data:extend({ height = 208, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*1.3333), repeat_count = 5, scale = 0.6666 @@ -2192,7 +2190,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*1.3333), repeat_count = 5, scale = 0.6666 @@ -2211,7 +2209,7 @@ data:extend({ height = 192, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -1*1.3333), repeat_count = 5, scale = 0.6666 @@ -2229,7 +2227,7 @@ data:extend({ height = 188, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(0, -4*1.3333), repeat_count = 5, scale = 0.6666 @@ -2263,7 +2261,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1*1.3333, -11*1.3333), scale = 0.6666 }, @@ -2281,7 +2279,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*1.3333, -12*1.3333), scale = 0.6666 }, @@ -2299,7 +2297,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1*1.3333, -11*1.3333), scale = 0.6666 }, @@ -2317,7 +2315,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*1.3333, -12*1.3333), scale = 0.6666 }, @@ -2342,7 +2340,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 3*1.3333), scale = 0.6666 }, @@ -2355,7 +2353,7 @@ data:extend({ frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 3*1.3333), scale = 0.6666 } @@ -2373,7 +2371,7 @@ data:extend({ height = 148, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(21*1.3333, 10*1.3333), scale = 0.6666 }, @@ -2402,7 +2400,7 @@ data:extend({ height = 140, frame_count = 1, animation_speed = 0.4, - direction_count = 1, + shift = util.by_pixel(-22*1.3333, 12*1.3333), scale = 0.6666 } @@ -2430,7 +2428,7 @@ if mods["reskins-bobs"] then frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(0, -12*0.6666), tint = {240, 160, 0}, scale = 0.6666 @@ -2444,7 +2442,7 @@ if mods["reskins-bobs"] then frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(0, -12*0.6666), blend_mode = "additive", scale = 0.6666 @@ -2462,7 +2460,7 @@ if mods["reskins-bobs"] then frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*0.6666, -12*0.6666), tint = {240, 160, 0}, scale = 0.6666 @@ -2476,7 +2474,7 @@ if mods["reskins-bobs"] then frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*0.6666, -12*0.6666), blend_mode = "additive", scale = 0.6666 @@ -2494,7 +2492,7 @@ small_miner.working_visualisations[6].east_animation = { layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-2*0.6666, 4*0.6666), tint = {240, 160, 0}, scale = 0.6666 @@ -2508,7 +2506,7 @@ small_miner.working_visualisations[6].east_animation = { layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-2*0.6666, 4*0.6666), blend_mode = "additive", scale = 0.6666 @@ -2554,7 +2552,7 @@ medium_miner.working_visualisations[3].north_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1, -11), tint = {240, 160, 0}, scale = 0.5 @@ -2568,7 +2566,7 @@ medium_miner.working_visualisations[3].north_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1, -11), blend_mode = "additive", scale = 0.5 @@ -2586,7 +2584,7 @@ medium_miner.working_visualisations[3].east_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2, -12), tint = {240, 160, 0}, scale = 0.5 @@ -2600,7 +2598,7 @@ medium_miner.working_visualisations[3].east_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2, -12), blend_mode = "additive", scale = 0.5 @@ -2618,7 +2616,7 @@ medium_miner.working_visualisations[6].east_animation = { layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3, 3), tint = {240, 160, 0}, scale = 0.5 @@ -2632,7 +2630,7 @@ medium_miner.working_visualisations[6].east_animation = { layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3, 3), blend_mode = "additive", scale = 0.5 @@ -2678,7 +2676,7 @@ large_miner.working_visualisations[3].north_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1*1.3333, -11*1.3333), tint = {240, 160, 0}, scale = 0.6666 @@ -2692,7 +2690,7 @@ large_miner.working_visualisations[3].north_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(1*1.3333, -11*1.3333), blend_mode = "additive", scale = 0.6666 @@ -2710,7 +2708,7 @@ large_miner.working_visualisations[3].east_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*1.3333, -12*1.3333), tint = {240, 160, 0}, scale = 0.6666 @@ -2724,7 +2722,7 @@ large_miner.working_visualisations[3].east_animation.layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(2*1.3333, -12*1.3333), blend_mode = "additive", scale = 0.6666 @@ -2742,7 +2740,7 @@ large_miner.working_visualisations[6].east_animation = { layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 3*1.3333), tint = {240, 160, 0}, scale = 0.6666 @@ -2756,7 +2754,7 @@ large_miner.working_visualisations[6].east_animation = { layers = { frame_count = 30, animation_speed = 0.4, frame_sequence = drill_animation_sequence, - direction_count = 1, + shift = util.by_pixel(-3*1.3333, 3*1.3333), blend_mode = "additive", scale = 0.6666 From 7267dcde87384a4eda2b23ae7777a3982416ed0c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 02:28:49 +0200 Subject: [PATCH 169/236] Fixed valve pipe covers --- nullius/prototypes/entity/plumbing.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index c34c372..79833a6 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1335,8 +1335,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, -0}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1428,8 +1428,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, 0}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1520,8 +1520,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, 0}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, @@ -1613,8 +1613,8 @@ data:extend({ fluid_box = { volume = 100, pipe_connections = { - {flow_direction = "output", position = {0, 0.1}, direction = defines.direction.south}, - {flow_direction = "input-output", position = {0, -0.1}, direction = defines.direction.north } + {flow_direction = "output", position = {0, 0}, direction = defines.direction.south}, + {flow_direction = "input-output", position = {0, 0}, direction = defines.direction.north } }, pipe_covers = pipecoverspictures() }, From 0224476fea47cf0cee5fd7ead56d8ce43b428b83 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 12:21:12 +0200 Subject: [PATCH 170/236] Fixed warnings in energy.lua --- nullius/prototypes/entity/energy.lua | 29 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index cf5a76f..10eba7f 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -112,12 +112,8 @@ circuit_connector_definitions["nullius-compressor"] = circuit_connector_definiti } ) -circuit_connector_definitions["nullius-chemical-furnace"] = circuit_connector_definitions.create_vector(universal_connector_template, { - { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, - { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, - { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, - { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }, -}) +circuit_connector_definitions["nullius-geothermal-reactor"] = circuit_connector_definitions.create_single(universal_connector_template, + { variation = 4, main_offset = util.by_pixel(-4.75, 33), shadow_offset = util.by_pixel(-4.75, 33), show_shadow = true }) data:extend({ { @@ -1909,7 +1905,7 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", - circuit_connector = circuit_connector_definitions["nullius-chemical-furnace"], + circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { @@ -1974,7 +1970,7 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", - circuit_connector = circuit_connector_definitions["nullius-chemical-furnace"], + circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { @@ -2025,7 +2021,7 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", fast_replaceable_group = "geothermal-plant", - circuit_connector = circuit_connector_definitions["nullius-chemical-furnace"], + circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { -- TODO: integrate the graphics with the heat pipes correctly @@ -2337,8 +2333,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, - circuit_connector = circuit_connector_definitions["storage-tank"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["storage-tank"][1], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { layers = { { @@ -2429,8 +2425,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, - circuit_connector = circuit_connector_definitions["storage-tank"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["storage-tank"][1], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { layers = { { @@ -2521,8 +2517,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", light = {intensity = 0.4, size = 2.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, - circuit_connector = circuit_connector_definitions["storage-tank"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["storage-tank"][1], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, picture = { layers = { { @@ -2605,6 +2601,9 @@ local function thermal_tank(tier, vert) { position = {-1, 0}, direction = defines.direction.west } } end + + tank.circuit_connector = circuit_connector_definitions["storage-tank"][1] + tank.circuit_wire_max_distance = default_circuit_wire_max_distance tank.icons = { { From 340cee826b0ad79f00f9d90a207579c0b8ccd183 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 12:37:20 +0200 Subject: [PATCH 171/236] Removed warnings caused by character animation --- nullius/prototypes/entity/robot.lua | 1 + nullius/prototypes/reskin.lua | 42 +++++++++++++++-------------- nullius/prototypes/resource.lua | 1 - 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index a8df145..76c7522 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -1419,6 +1419,7 @@ android1.order = "nullius-akb" local android2 = util.table.deepcopy(android1) android2.name = "nullius-android-2" android2.localised_name = {"", {"item-name.nullius-android"}, " ", tostring(2)} +android2.icon = nil android2.icons = data.raw.item["nullius-android-2"].icons android2.order = "nullius-akc" android2.selection_box = {{-0.4, -1.55}, {0.4, 0.2}} diff --git a/nullius/prototypes/reskin.lua b/nullius/prototypes/reskin.lua index 1a4942c..e567e51 100644 --- a/nullius/prototypes/reskin.lua +++ b/nullius/prototypes/reskin.lua @@ -51,34 +51,36 @@ function scale_image(img, scale, offs) return end lookup[img] = true - for _, field in pairs(img) do - scale_subtable(field, scale, offs) + for fieldName, field in pairs(img) do + if fieldName ~= "stripes" then + scale_subtable(field, scale, offs) + end end if (img.filename ~= nil) then - img.shift = scale_shift(img.shift, scale) + img.shift = scale_shift(img.shift, scale) if (img.scale ~= nil) then img.scale = img.scale * scale else img.scale = scale end - if (offs ~= nil) then - if (img.shift ~= nil) then - if (img.shift.x ~= nil) then - img.shift.x = img.shift.x + offs.x - img.shift.y = img.shift.y + offs.y - else - img.shift[1] = img.shift[1] + offs.x - img.shift[2] = img.shift[2] + offs.y - end - else - img.shift = offs - end - end + if (offs ~= nil) then + if (img.shift ~= nil) then + if (img.shift.x ~= nil) then + img.shift.x = img.shift.x + offs.x + img.shift.y = img.shift.y + offs.y + else + img.shift[1] = img.shift[1] + offs.x + img.shift[2] = img.shift[2] + offs.y + end + else + img.shift = offs + end + end end - img.north_position = scale_shift(img.north_position, scale) - img.east_position = scale_shift(img.east_position, scale) - img.south_position = scale_shift(img.south_position, scale) - img.west_position = scale_shift(img.west_position, scale) + img.north_position = scale_shift(img.north_position, scale) + img.east_position = scale_shift(img.east_position, scale) + img.south_position = scale_shift(img.south_position, scale) + img.west_position = scale_shift(img.west_position, scale) end scale_subtable(ret, scale, offs) return ret diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index a64ef79..a70ac0e 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -22,7 +22,6 @@ local function make_particle(inputname, inputtint) { type = "optimized-particle", name = inputname.."-particle", - flags = {"not-on-map"}, life_time = 180, pictures = { { From 7b433054b8142ff567eb203102355152fc7ebbc0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 12:52:32 +0200 Subject: [PATCH 172/236] Removed warnings caused by beacons --- nullius/prototypes/entity/beacon.lua | 67 +++++++++++++--------------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/nullius/prototypes/entity/beacon.lua b/nullius/prototypes/entity/beacon.lua index 5f2c5f4..226a663 100644 --- a/nullius/prototypes/entity/beacon.lua +++ b/nullius/prototypes/entity/beacon.lua @@ -40,12 +40,11 @@ data:extend({ graphics_set = { module_icons_suppressed = true, animation_progress = 1, - min_animation_progress = 0, module_tint_mode = "mix", no_modules_tint = {1, 0, 0}, random_animation_offset = true, apply_module_tint = "secondary", - apply_module_tint_to_light = "none", + --apply_module_tint_to_light = "none", animation_list = { { @@ -88,8 +87,7 @@ data:extend({ { render_layer = "object", apply_tint = true, - draw_as_sprite = true, - draw_as_light = true, + --draw_as_sprite = true, always_draw = false, animation = { filename = BASEENTITY .. "beacon/beacon-light.png", @@ -100,6 +98,7 @@ data:extend({ animation_speed = 0.5, scale = 0.4, shift = util.by_pixel(0.5*0.8, -18*0.8), + draw_as_light = true, blend_mode = "additive" } } @@ -154,8 +153,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, @@ -163,6 +161,7 @@ data:extend({ height = 42, variation_count = 3, shift = util.by_pixel(-18*0.8, 13*0.8), + draw_as_light = true, scale = 0.4 } } @@ -207,12 +206,11 @@ data:extend({ graphics_set = { module_icons_suppressed = true, animation_progress = 1, - min_animation_progress = 0, module_tint_mode = "mix", no_modules_tint = {1, 0, 0}, random_animation_offset = true, apply_module_tint = "secondary", - apply_module_tint_to_light = "none", + --apply_module_tint_to_light = "none", animation_list = { { @@ -255,8 +253,7 @@ data:extend({ { render_layer = "object", apply_tint = true, - draw_as_sprite = true, - draw_as_light = true, + --draw_as_sprite = true, always_draw = false, animation = { filename = BASEENTITY .. "beacon/beacon-light.png", @@ -268,6 +265,7 @@ data:extend({ scale = 0.45, shift = util.by_pixel(0.5*0.9, -18*0.9), blend_mode = "additive", + draw_as_light = true, } } }, @@ -321,8 +319,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, @@ -330,6 +327,7 @@ data:extend({ height = 42, variation_count = 3, shift = util.by_pixel(-18*0.9, 13*0.9), + draw_as_light = true, scale = 0.45 } } @@ -377,8 +375,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-2.png", line_length = 3, @@ -386,6 +383,7 @@ data:extend({ height = 46, variation_count = 3, shift = util.by_pixel(22*0.9, -16*0.9), + draw_as_light = true, scale = 0.45 } } @@ -429,12 +427,11 @@ data:extend({ graphics_set = { module_icons_suppressed = true, animation_progress = 1, - min_animation_progress = 0, module_tint_mode = "mix", no_modules_tint = {1, 0, 0}, random_animation_offset = true, apply_module_tint = "secondary", - apply_module_tint_to_light = "none", + --apply_module_tint_to_light = "none", animation_list = { { @@ -476,8 +473,7 @@ data:extend({ { render_layer = "object", apply_tint = true, - draw_as_sprite = true, - draw_as_light = true, + --draw_as_sprite = true, always_draw = false, animation = { filename = BASEENTITY .. "beacon/beacon-light.png", @@ -489,6 +485,7 @@ data:extend({ scale = 0.5, shift = util.by_pixel(0.5, -18), blend_mode = "additive", + draw_as_light = true, } } }, @@ -542,8 +539,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, @@ -551,6 +547,7 @@ data:extend({ height = 42, variation_count = 3, shift = util.by_pixel(-18, 13), + draw_as_light = true, scale = 0.5 } } @@ -598,8 +595,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-2.png", line_length = 3, @@ -607,6 +603,7 @@ data:extend({ height = 46, variation_count = 3, shift = util.by_pixel(22, -16), + draw_as_light = true, scale = 0.5 } } @@ -650,12 +647,11 @@ data:extend({ graphics_set = { module_icons_suppressed = true, animation_progress = 1, - min_animation_progress = 0, module_tint_mode = "mix", no_modules_tint = {1, 0, 0}, random_animation_offset = true, apply_module_tint = "secondary", - apply_module_tint_to_light = "none", + --apply_module_tint_to_light = "none", animation_list = { { @@ -698,8 +694,7 @@ data:extend({ { render_layer = "object", apply_tint = true, - draw_as_sprite = true, - draw_as_light = true, + --draw_as_sprite = true, always_draw = false, animation = { filename = BASEENTITY .. "beacon/beacon-light.png", @@ -711,6 +706,7 @@ data:extend({ scale = 0.6, shift = util.by_pixel(0.5*1.2, -18*1.2), blend_mode = "additive", + draw_as_light = true, } } }, @@ -764,8 +760,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, @@ -773,6 +768,7 @@ data:extend({ height = 42, variation_count = 3, shift = util.by_pixel(-18*1.2, 13*1.2), + draw_as_light = true, scale = 0.6 } } @@ -815,12 +811,11 @@ data:extend({ graphics_set = { module_icons_suppressed = true, animation_progress = 1, - min_animation_progress = 0, module_tint_mode = "mix", no_modules_tint = {1, 0, 0}, random_animation_offset = true, apply_module_tint = "secondary", - apply_module_tint_to_light = "none", + --apply_module_tint_to_light = "none", animation_list = { { @@ -862,8 +857,7 @@ data:extend({ { render_layer = "object", apply_tint = true, - draw_as_sprite = true, - draw_as_light = true, + --draw_as_sprite = true, always_draw = false, animation = { filename = BASEENTITY .. "beacon/beacon-light.png", @@ -875,6 +869,7 @@ data:extend({ scale = 0.665, shift = util.by_pixel(0.5*1.33, -18*1.33), blend_mode = "additive", + draw_as_light = true, } } }, @@ -928,8 +923,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-1.png", line_length = 3, @@ -937,6 +931,7 @@ data:extend({ height = 42, variation_count = 3, shift = util.by_pixel(-18*1.33, 13*1.33), + draw_as_light = true, scale = 0.665 } } @@ -984,8 +979,7 @@ data:extend({ }, { apply_module_tint = "secondary", - draw_as_light = true, - draw_as_sprite = false, + --draw_as_sprite = false, pictures = { filename = BASEENTITY .. "beacon/beacon-module-lights-2.png", line_length = 3, @@ -993,6 +987,7 @@ data:extend({ height = 46, variation_count = 3, shift = util.by_pixel(22*1.33, -16*1.33), + draw_as_light = true, scale = 0.665 } } From 9acba267ec9af0ee14f0d4a6c305602ef6da96d7 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 13:07:57 +0200 Subject: [PATCH 173/236] Fixed artillery projectile picture and removed warnings --- nullius/prototypes/entity/drone.lua | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/nullius/prototypes/entity/drone.lua b/nullius/prototypes/entity/drone.lua index 37dd329..e76d4fe 100644 --- a/nullius/prototypes/entity/drone.lua +++ b/nullius/prototypes/entity/drone.lua @@ -20,8 +20,10 @@ data:extend({ open_sound = data.raw["artillery-turret"]["artillery-turret"].open_sound, close_sound = data.raw["artillery-turret"]["artillery-turret"].close_sound, mined_sound = {filename = "__core__/sound/deconstruct-large.ogg",volume = 0.8}, - rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.6 }}, - rotating_stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, + rotating_sound = { + sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.6 }, + stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, + }, max_health = 1000, corpse = "artillery-turret-remnants", dying_explosion = "artillery-turret-explosion", @@ -45,7 +47,7 @@ data:extend({ cannon_barrel_recoil_shiftings_load_correction_matrix = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_recoil_shiftings_load_correction_matrix, impact_category = data.raw["artillery-turret"]["artillery-turret"].impact_category, water_reflection = data.raw["artillery-turret"]["artillery-turret"].water_reflection, - base_shift = util.by_pixel(0, -22), + --base_shift = util.by_pixel(0, -22), base_picture_render_layer = "lower-object-above-shadow", cannon_barrel_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_base_pictures, @@ -63,7 +65,6 @@ data:extend({ width = 207, height = 199, frame_count = 1, - direction_count = 1, shift = util.by_pixel(-0, 22), scale = 0.5, tint = {0.7, 0.7, 0.9} @@ -75,7 +76,6 @@ data:extend({ width = 277, height = 149, frame_count = 1, - direction_count = 1, shift = util.by_pixel(18, 38), draw_as_shadow = true, scale = 0.5 @@ -99,8 +99,10 @@ data:extend({ open_sound = data.raw["artillery-turret"]["artillery-turret"].open_sound, close_sound = data.raw["artillery-turret"]["artillery-turret"].close_sound, mined_sound = {filename = "__core__/sound/deconstruct-large.ogg",volume = 0.8}, - rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.6 }}, - rotating_stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, + rotating_sound = { + sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.6 }, + stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, + }, max_health = 1200, corpse = "artillery-turret-remnants", dying_explosion = "artillery-turret-explosion", @@ -124,7 +126,7 @@ data:extend({ cannon_barrel_recoil_shiftings_load_correction_matrix = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_recoil_shiftings_load_correction_matrix, impact_category = data.raw["artillery-turret"]["artillery-turret"].impact_category, water_reflection = data.raw["artillery-turret"]["artillery-turret"].water_reflection, - base_shift = util.by_pixel(0, -22), + --base_shift = util.by_pixel(0, -22), base_picture_render_layer = "lower-object-above-shadow", cannon_barrel_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_barrel_pictures, cannon_base_pictures = data.raw["artillery-turret"]["artillery-turret"].cannon_base_pictures, @@ -142,7 +144,6 @@ data:extend({ width = 207, height = 199, frame_count = 1, - direction_count = 1, shift = util.by_pixel(-0, 22), scale = 0.5 }, @@ -153,7 +154,6 @@ data:extend({ width = 277, height = 149, frame_count = 1, - direction_count = 1, shift = util.by_pixel(18, 38), draw_as_shadow = true, scale = 0.5 @@ -402,8 +402,8 @@ local function create_projectile(base_name, suffix, drone_picture, drone_shadow) map_color = {r=1, g=1, b=0}, chart_picture = data.raw["artillery-projectile"]["artillery-projectile"].chart_picture, height_from_ground = 280 / 64, - drone_picture, - drone_shadow, + picture = drone_picture, + shadow = drone_shadow, action = { type = "direct", From 49aa0103a011b6dfe4892b789cce30f19ec092a8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 13:17:55 +0200 Subject: [PATCH 174/236] Fixed broken emissions_per_minute --- nullius/legacyMirror.lua | 7 ++----- nullius/prototypes/entity/chemistry.lua | 6 +++--- nullius/prototypes/entity/plumbing.lua | 16 ++++++++-------- nullius/prototypes/entity/vent.lua | 4 ++-- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/nullius/legacyMirror.lua b/nullius/legacyMirror.lua index a8ff8e7..41bb853 100644 --- a/nullius/legacyMirror.lua +++ b/nullius/legacyMirror.lua @@ -105,7 +105,7 @@ data:extend{ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, crafting_categories = {"nullius-water-treatment"}, crafting_speed = 2, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.05, drain="20kW"}, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions_per_minute = {pollution = 0.05}, drain="20kW"}, energy_usage = "480kW", ingredient_count = 4, resistances = data.raw["assembling-machine"]["nullius-hydro-plant-2"].resistances, @@ -170,7 +170,7 @@ data:extend{ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, crafting_categories = {"nullius-water-treatment"}, crafting_speed = 4, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.1, drain="40kW"}, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions_per_minute = {pollution = 0.1}, drain="40kW"}, energy_usage = "960kW", ingredient_count = 6, resistances = { @@ -214,7 +214,6 @@ data:extend{ pipe_connections = {{ flow_direction ="output", position = {1, 2}, direction = defines.direction.south }} }, }, - pipe_covers = pipecoverspictures(), }, { type = "assembling-machine", @@ -235,7 +234,6 @@ data:extend{ collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 2, energy_source = data.raw["assembling-machine"]["nullius-distillery-2"].energy_source, @@ -302,7 +300,6 @@ data:extend{ collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 4, energy_source = { diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 4fa96d6..0623d49 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -72,7 +72,7 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, crafting_categories = {"nullius-water-treatment"}, crafting_speed = 1, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.01, drain="10kW"}, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions_per_minute = {pollution = 0.01}, drain="10kW"}, energy_usage = "240kW", ingredient_count = 3, resistances = { @@ -363,7 +363,7 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, crafting_categories = {"nullius-water-treatment"}, crafting_speed = 2, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.05, drain="20kW"}, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions_per_minute = {pollution = 0.05}, drain="20kW"}, energy_usage = "480kW", ingredient_count = 4, resistances = { @@ -652,7 +652,7 @@ data:extend({ selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, crafting_categories = {"nullius-water-treatment"}, crafting_speed = 4, - energy_source = {type = "electric", usage_priority = "secondary-input", emissions = 0.1, drain="40kW"}, + energy_source = {type = "electric", usage_priority = "secondary-input", emissions_per_minute = {pollution = 0.1}, drain="40kW"}, energy_usage = "960kW", ingredient_count = 6, resistances = { diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 79833a6..c6fcd1b 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -38,7 +38,7 @@ local si1 = { energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.01, + emissions_per_minute = {pollution = 0.01}, drain = "10kW" }, energy_usage = "190kW", @@ -544,7 +544,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.02, + emissions_per_minute = {pollution = 0.02}, drain = "20kW" }, energy_usage = "280kW", @@ -799,7 +799,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.05, + emissions_per_minute = {pollution = 0.05}, drain = "100kW" }, energy_usage = "1100kW", @@ -1052,7 +1052,7 @@ lw1.hidden = true lw1.placeable_by = {item = "nullius-legacy-well-1", count = 1} lw1.fast_replaceable_group = nil lw1.next_upgrade = nil -lw1.energy_source = {type="electric", usage_priority="secondary-input", emissions=0.01, drain="1kW"} +lw1.energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute = {pollution = 0.01}, drain="1kW"} lw1.energy_usage = "49kW" lw1.crafting_speed = 1.25 @@ -1064,7 +1064,7 @@ lw2.flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-blue lw2.hidden = true lw2.placeable_by = {item = "nullius-legacy-well-2", count = 1} lw2.fast_replaceable_group = nil -lw2.energy_source = {type="electric", usage_priority="secondary-input", emissions=0.02, drain="5kW"} +lw2.energy_source = {type="electric", usage_priority="secondary-input", emissions_per_minute = {pollution = 0.02}, drain="5kW"} lw2.energy_usage = "175kW" lw2.crafting_speed = 5 @@ -1089,7 +1089,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.01, + emissions_per_minute = {pollution = 0.01}, drain = "5kW" }, energy_usage = "115kW", @@ -1181,7 +1181,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.03, + emissions_per_minute = {pollution = 0.03}, drain = "25kW" }, energy_usage = "375kW", @@ -1270,7 +1270,7 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.1, + emissions_per_minute = {pollution = 0.1}, drain = "100kW" }, energy_usage = "1100kW", diff --git a/nullius/prototypes/entity/vent.lua b/nullius/prototypes/entity/vent.lua index 2d13940..cf3272a 100644 --- a/nullius/prototypes/entity/vent.lua +++ b/nullius/prototypes/entity/vent.lua @@ -701,7 +701,7 @@ nc3.fluid_boxes = {{ nc3.energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.1, + emissions_per_minute = {pollution = 0.1}, drain = "5kW" } nc3.energy_usage = "295kW" @@ -904,7 +904,7 @@ no3.crafting_speed = 10 no3.energy_source = { type = "electric", usage_priority = "secondary-input", - emissions = 0.1, + emissions_per_minute = {pollution = 0.1}, drain = "5kW" } no3.energy_usage = "195kW" From 32802f84ece40f8eef66862be9c65aa18da3efa7 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 13:39:03 +0200 Subject: [PATCH 175/236] Fixed warnings from legacyMirror and more --- nullius/legacyMirror.lua | 8 +++- nullius/prototypes/entity/chemistry.lua | 21 +++------ nullius/prototypes/entity/energy.lua | 58 +++++++++++++++++-------- nullius/prototypes/entity/miner.lua | 3 -- 4 files changed, 52 insertions(+), 38 deletions(-) diff --git a/nullius/legacyMirror.lua b/nullius/legacyMirror.lua index 41bb853..2dd4193 100644 --- a/nullius/legacyMirror.lua +++ b/nullius/legacyMirror.lua @@ -826,7 +826,9 @@ data:extend{ placeable_by = {item = "nullius-combustion-chamber-2", count = 1}, crafting_categories = { "combustion" }, crafting_speed = 2.5, - base_productivity = 0.02, + effect_receiver = { + base_effect = {productivity = 0.02} + }, max_health = 300, corpse = "boiler-remnants", impact_category = "metal", @@ -884,7 +886,9 @@ data:extend{ placeable_by = {item = "nullius-combustion-chamber-3", count = 1}, crafting_categories = { "combustion" }, crafting_speed = 6, - base_productivity = 0.04, + effect_receiver = { + base_effect = {productivity = 0.04} + }, max_health = 400, corpse = "boiler-remnants", impact_category = "metal", diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index 0623d49..b79966d 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -343,8 +343,7 @@ data:extend({ volume = 500, pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} } - }, - pipe_covers = pipecoverspictures(), + } } }) @@ -634,8 +633,7 @@ data:extend({ volume = 500, pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} }, - }, - pipe_covers = pipecoverspictures(), + } }, { @@ -922,8 +920,7 @@ data:extend({ volume = 500, pipe_connections = {{ flow_direction ="output", position = {-1, 2}, direction = defines.direction.south }} }, - }, - pipe_covers = pipecoverspictures(), + } } }) @@ -949,7 +946,6 @@ data:extend({ collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 1, energy_source = { @@ -1068,7 +1064,6 @@ data:extend({ collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 2, energy_source = { @@ -1164,7 +1159,6 @@ data:extend({ collision_box = {{-2.3, -2.3}, {2.3, 2.3}}, selection_box = {{-2.5, -2.5}, {2.5, 2.5}}, - scale_entity_info_icon = true, crafting_categories = {"distillation"}, crafting_speed = 4, energy_source = { @@ -1319,9 +1313,9 @@ data:extend({ }, impact_category = "metal", working_sound = { - sound = { filename = "__angelspetrochemgraphics__/sound/electrolyser.ogg", volume = 0.15 }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.4 }, - audible_distance_modifier = 0.75 + sound = { filename = "__angelspetrochemgraphics__/sound/electrolyser.ogg", volume = 0.15, audible_distance_modifier = 0.75 }, + idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.4, audible_distance_modifier = 0.75 }, + }, fluid_boxes = { { @@ -1348,8 +1342,7 @@ data:extend({ volume = 500, pipe_connections = {{ flow_direction ="output", position = {1.5, 1.5}, direction = defines.direction.south }} } - }, - pipe_covers = pipecoverspictures() + } } }) diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 10eba7f..0c34fef 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -476,13 +476,12 @@ data:extend({ energy_source = { type = "void" }, working_sound = { sound = { filename = "__base__/sound/boiler.ogg", volume = 0.8 }, - max_sounds_per_type = 3 + max_sounds_per_prototype = 3 }, graphics_set = { animation = { north = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-N-idle.png", @@ -491,6 +490,7 @@ data:extend({ height = 221, shift = util.by_pixel(-1.25, 5.25), tint = {0.77, 0.77, 0.66, 1}, + frame_count = 1, scale = 0.5 }, { @@ -500,12 +500,12 @@ data:extend({ height = 164, scale = 0.5, shift = util.by_pixel(20.5, 9), + frame_count = 1, draw_as_shadow = true } } }, east = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-E-idle.png", @@ -514,6 +514,7 @@ data:extend({ height = 301, shift = util.by_pixel(-3, 1.25), tint = {0.77, 0.77, 0.66, 1}, + frame_count = 1, scale = 0.5 }, { @@ -523,12 +524,12 @@ data:extend({ height = 194, scale = 0.5, shift = util.by_pixel(30, 9.5), + frame_count = 1, draw_as_shadow = true } } }, south = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-S-idle.png", @@ -537,6 +538,7 @@ data:extend({ height = 192, shift = util.by_pixel(4, 13), tint = {0.77, 0.77, 0.66, 1}, + frame_count = 1, scale = 0.5 }, { @@ -546,12 +548,12 @@ data:extend({ height = 131, scale = 0.5, shift = util.by_pixel(29.75, 15.75), + frame_count = 1, draw_as_shadow = true } } }, west = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-W-idle.png", @@ -560,6 +562,7 @@ data:extend({ height = 273, shift = util.by_pixel(1.5, 7.75), tint = {0.77, 0.77, 0.66, 1}, + frame_count = 1, scale = 0.5 }, { @@ -569,6 +572,7 @@ data:extend({ height = 218, scale = 0.5, shift = util.by_pixel(19.5, 6.5), + frame_count = 1, draw_as_shadow = true } } @@ -679,7 +683,9 @@ data:extend({ minable = {mining_time = 0.9, result = "nullius-combustion-chamber-2"}, crafting_categories = { "combustion" }, crafting_speed = 2.5, - base_productivity = 0.02, + effect_receiver = { + base_effect = {productivity = 0.02} + }, max_health = 300, corpse = "boiler-remnants", impact_category = "metal", @@ -729,7 +735,6 @@ data:extend({ working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.working_visualisations, animation = { north = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-N-idle.png", @@ -738,6 +743,7 @@ data:extend({ height = 221, shift = util.by_pixel(-1.25, 5.25), tint = {0.8, 0.8, 1, 1}, + frame_count = 1, scale = 0.5 }, { @@ -747,12 +753,12 @@ data:extend({ height = 164, scale = 0.5, shift = util.by_pixel(20.5, 9), + frame_count = 1, draw_as_shadow = true } } }, east = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-E-idle.png", @@ -761,6 +767,7 @@ data:extend({ height = 301, shift = util.by_pixel(-3, 1.25), tint = {0.8, 0.8, 1, 1}, + frame_count = 1, scale = 0.5 }, { @@ -770,12 +777,12 @@ data:extend({ height = 194, scale = 0.5, shift = util.by_pixel(30, 9.5), + frame_count = 1, draw_as_shadow = true } } }, south = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-S-idle.png", @@ -784,6 +791,7 @@ data:extend({ height = 192, shift = util.by_pixel(4, 13), tint = {0.8, 0.8, 1, 1}, + frame_count = 1, scale = 0.5 }, { @@ -793,12 +801,12 @@ data:extend({ height = 131, scale = 0.5, shift = util.by_pixel(29.75, 15.75), + frame_count = 1, draw_as_shadow = true } } }, west = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-W-idle.png", @@ -807,6 +815,7 @@ data:extend({ height = 273, shift = util.by_pixel(1.5, 7.75), tint = {0.8, 0.8, 1, 1}, + frame_count = 1, scale = 0.5 }, { @@ -816,6 +825,7 @@ data:extend({ height = 218, scale = 0.5, shift = util.by_pixel(19.5, 6.5), + frame_count = 1, draw_as_shadow = true } } @@ -835,7 +845,9 @@ data:extend({ minable = {mining_time = 1.2, result = "nullius-combustion-chamber-3"}, crafting_categories = { "combustion" }, crafting_speed = 6, - base_productivity = 0.04, + effect_receiver = { + base_effect = {productivity = 0.04} + }, max_health = 400, corpse = "boiler-remnants", impact_category = "metal", @@ -854,7 +866,6 @@ data:extend({ working_visualisations = data.raw["assembling-machine"]["nullius-combustion-chamber-2"].graphics_set.working_visualisations, animation = { north = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-N-idle.png", @@ -862,6 +873,7 @@ data:extend({ width = 269, height = 221, shift = util.by_pixel(-1.25, 5.25), + frame_count = 1, scale = 0.5 }, { @@ -871,12 +883,12 @@ data:extend({ height = 164, scale = 0.5, shift = util.by_pixel(20.5, 9), + frame_count = 1, draw_as_shadow = true } } }, east = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-E-idle.png", @@ -884,6 +896,7 @@ data:extend({ width = 216, height = 301, shift = util.by_pixel(-3, 1.25), + frame_count = 1, scale = 0.5 }, { @@ -893,12 +906,12 @@ data:extend({ height = 194, scale = 0.5, shift = util.by_pixel(30, 9.5), + frame_count = 1, draw_as_shadow = true } } }, south = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-S-idle.png", @@ -906,6 +919,7 @@ data:extend({ width = 260, height = 192, shift = util.by_pixel(4, 13), + frame_count = 1, scale = 0.5 }, { @@ -915,12 +929,12 @@ data:extend({ height = 131, scale = 0.5, shift = util.by_pixel(29.75, 15.75), + frame_count = 1, draw_as_shadow = true } } }, west = { - frame_count = 1, layers = { { filename = BASEENTITY .. "boiler/boiler-W-idle.png", @@ -928,6 +942,7 @@ data:extend({ width = 196, height = 273, shift = util.by_pixel(1.5, 7.75), + frame_count = 1, scale = 0.5 }, { @@ -937,6 +952,7 @@ data:extend({ height = 218, scale = 0.5, shift = util.by_pixel(19.5, 6.5), + frame_count = 1, draw_as_shadow = true } } @@ -3816,7 +3832,7 @@ boil.energy_source = { } boil.energy_usage = "3400kW" boil.graphics_set.animation = { - north = { frame_count = 1, + north = { layers = { { filename = ENTITYPATH .. "boiler/boiler-north.png", @@ -3824,12 +3840,13 @@ boil.graphics_set.animation = { width = 269, height = 221, shift = util.by_pixel(-1.25, 5.25), + frame_count = 1, scale = 0.5 }, data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.north.layers[2] } }, - east = { frame_count = 1, + east = { layers = { { filename = ENTITYPATH .. "boiler/boiler-east.png", @@ -3837,12 +3854,13 @@ boil.graphics_set.animation = { width = 216, height = 301, shift = util.by_pixel(-3, 1.25), + frame_count = 1, scale = 0.5 }, data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.east.layers[2] } }, - south = { frame_count = 1, + south = { layers = { { filename = ENTITYPATH .. "boiler/boiler-south.png", @@ -3850,12 +3868,13 @@ boil.graphics_set.animation = { width = 260, height = 192, shift = util.by_pixel(4, 13), + frame_count = 1, scale = 0.5 }, data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.south.layers[2] } }, - west = { frame_count = 1, + west = { layers = { { filename = ENTITYPATH .. "boiler/boiler-west.png", @@ -3863,6 +3882,7 @@ boil.graphics_set.animation = { width = 196, height = 273, shift = util.by_pixel(1.5, 7.75), + frame_count = 1, scale = 0.5 }, data.raw["assembling-machine"]["nullius-combustion-chamber-1"].graphics_set.animation.west.layers[2] diff --git a/nullius/prototypes/entity/miner.lua b/nullius/prototypes/entity/miner.lua index 04c4261..2466c82 100644 --- a/nullius/prototypes/entity/miner.lua +++ b/nullius/prototypes/entity/miner.lua @@ -911,7 +911,6 @@ data:extend({ energy_usage = "400kW", monitor_visualization_tint = {r=78, g=173, b=255}, fast_replaceable_group = "small-miner", - --base_productivity = 0.05, effect_receiver = { base_effect = {productivity = 0.05} }, @@ -1455,7 +1454,6 @@ data:extend({ energy_usage = "750kW", module_slots = 2, allowed_effects = {"speed", "productivity", "consumption", "pollution"}, - --base_productivity = 0.05, effect_receiver = { base_effect = {productivity = 0.05} }, @@ -2137,7 +2135,6 @@ data:extend({ energy_usage = "1.2MW", monitor_visualization_tint = {r=78, g=173, b=255}, fast_replaceable_group = "large-miner", - --base_productivity = 0.05, effect_receiver = { base_effect = {productivity = 0.05} }, From ee3f5a358631a46066079fec67bdbd4b24851495 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 15:18:17 +0200 Subject: [PATCH 176/236] Fixed more warnings --- nullius/changelog_wip.txt | 5 +---- nullius/prototypes/entity/alignment.lua | 1 + nullius/prototypes/entity/assembler.lua | 6 ++---- nullius/prototypes/entity/furnace.lua | 24 +++++++++------------ nullius/prototypes/entity/logistics.lua | 24 ++++++--------------- nullius/prototypes/entity/pipe_graphics.lua | 3 +-- nullius/prototypes/entity/plumbing.lua | 14 ++++++------ nullius/prototypes/entity/power_pole.lua | 8 +++---- nullius/prototypes/override_final.lua | 2 +- 9 files changed, 33 insertions(+), 54 deletions(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 5977526..abc7080 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -7,20 +7,17 @@ Date: 2025 - Added landing pad: Now the results of rocket launches will be collected there - Re-introduced red and green wires so there is a seamless transition to 2.0 - Added essential techs - - Added command to flip all valves - - Added wire connexions to assemblers, boxer and nanofab + - Added command to flip all valves (i will remove it when i'm convinced it's not needed anymore) - Added display panels and selector combinator - Added setting to hide the voiding recipe icon from chimneys and outfalls - Added circuit connections to most buildings Changes: - Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted - Same thing with aai loaders - Removed mirror buildings, use 2.0 flipping instead, removed chirality research - Added a trigger tech "Salvage lab wreckage" - Removed regular artillery shortcut and discharge defense shortcut - Changed required techs for most shortcuts - Now uses the Valve prototype for valves - - Allowed medium assembler 1 to craft disabled recipes (to prevent a bug when a broken item is being fixed in early game) - Changed plumbing and pumping checkpoints to reflect lesser need for pumps in 2.0 fluid system Balancing: - Increased the pumping speeds of pumps (and max flow rate) diff --git a/nullius/prototypes/entity/alignment.lua b/nullius/prototypes/entity/alignment.lua index 30d1696..d40c8cd 100644 --- a/nullius/prototypes/entity/alignment.lua +++ b/nullius/prototypes/entity/alignment.lua @@ -18,6 +18,7 @@ turret.attack_parameters.range = 32 local radar = util.table.deepcopy(data.raw["radar"]["radar"]) radar.name = "nullius-align-concordance-transmitter" +radar.icon = nil radar.icons = data.raw.item["nullius-align-concordance-transmitter"].icons radar.integration_patch = scale_image(radar.integration_patch, 2) radar.pictures = scale_image(radar.pictures, 2) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 65f1c47..e62f365 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -73,7 +73,6 @@ data:extend({ { filename = "__base__/sound/assembling-machine-t1-2.ogg", volume = 0.8 } }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - apparent_volume = 0.8 }, circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, circuit_connector = scale_connector_points(circuit_connector_definitions["assembling-machine"], 0.7) @@ -166,7 +165,7 @@ data:extend({ { filename = "__base__/sound/assembling-machine-t1-2.ogg", volume = 0.8 } }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - apparent_volume = 1.2 + --apparent_volume = 1.2 }, circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, circuit_connector = circuit_connector_definitions["assembling-machine"] @@ -258,7 +257,7 @@ data:extend({ { filename = "__base__/sound/assembling-machine-t1-2.ogg", volume = 0.8 } }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - apparent_volume = 1.6 + --apparent_volume = 1.6 }, circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance, circuit_connector = scale_connector_points(circuit_connector_definitions["assembling-machine"], 1.4) @@ -865,7 +864,6 @@ data:extend({ { filename = "__base__/sound/assembling-machine-t1-2.ogg", volume = 0.6 } }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.5 }, - apparent_volume = 0.5 }, graphics_set = { animation = scale_image({ diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 1ec4076..529dda9 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -100,9 +100,9 @@ data:extend({ collision_box = {{-0.7, -0.7}, {0.7, 0.7}}, selection_box = {{-0.8, -1}, {0.8, 1}}, crafting_categories = {"dry-smelting"}, - result_inventory_size = 1, + --result_inventory_size = 1, + --source_inventory_size = 1, crafting_speed = 0.25, - source_inventory_size = 1, energy_source = { type = "electric", usage_priority = "secondary-input", @@ -136,9 +136,9 @@ data:extend({ collision_box = {{-0.7, -0.7}, {0.7, 0.7}}, selection_box = {{-0.8, -1}, {0.8, 1}}, crafting_categories = {"dry-smelting"}, - result_inventory_size = 1, + --result_inventory_size = 1, + --source_inventory_size = 1, crafting_speed = 0.5, - source_inventory_size = 1, energy_source = { type = "electric", usage_priority = "secondary-input", @@ -238,7 +238,7 @@ data:extend({ height = 202, repeat_count = 12, draw_as_glow = true, - util.by_pixel(1*0.6666, 0), + shift = util.by_pixel(1*0.6666, 0), scale = 0.6666*0.5 } } @@ -328,9 +328,9 @@ data:extend({ }, }, fluid_boxes_off_when_no_fluid_recipe = true, - result_inventory_size = 1, + --result_inventory_size = 1, + --source_inventory_size = 1, crafting_speed = 1, - source_inventory_size = 1, energy_source = { type = "electric", usage_priority = "secondary-input", @@ -380,7 +380,6 @@ data:extend({ width = 57, height = 81, frame_count = 48, - direction_count = 1, shift = util.by_pixel(-0.75*1.5, 5.75*1.5), scale = 0.75 } @@ -411,7 +410,6 @@ data:extend({ width = 128, height = 150, frame_count = 1, - direction_count = 1, shift = util.by_pixel(0, -5*1.5), blend_mode = "additive", scale = 0.75 @@ -582,7 +580,7 @@ data:extend({ allowed_effects = {"consumption", "speed", "productivity", "pollution"}, circuit_wire_max_distance = furnace_circuit_wire_max_distance, - scale_connector_points(circuit_connector_definitions["electric-furnace"],1.2), + circuit_connector = scale_connector_points(circuit_connector_definitions["electric-furnace"],1.2), graphics_set = { animation = { @@ -1734,8 +1732,7 @@ data:extend({ working_sound = { sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - pipe_covers = pipecoverspictures() + } }, { @@ -1945,8 +1942,7 @@ data:extend({ working_sound = { sound = { filename = "__angelsrefininggraphics__/sound/ore-floatation-cell.ogg", volume = 1 }, idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - }, - pipe_covers = pipecoverspictures() + } } }) diff --git a/nullius/prototypes/entity/logistics.lua b/nullius/prototypes/entity/logistics.lua index 0fb245a..1dc08ec 100644 --- a/nullius/prototypes/entity/logistics.lua +++ b/nullius/prototypes/entity/logistics.lua @@ -649,9 +649,7 @@ data:extend({ priority = "high", width = 83, height = 70, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, + --axially_symmetrical = false, shift = util.by_pixel(0.2,2.4), scale = 0.4 }, @@ -660,9 +658,7 @@ data:extend({ priority = "high", width = 76, height = 47, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, + --axially_symmetrical = false, shift = util.by_pixel(3.2, 3.8), draw_as_shadow = true, scale = 0.4 @@ -674,9 +670,7 @@ data:extend({ priority = "high", width = 90, height = 78, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, + --axially_symmetrical = false, shift = util.by_pixel(0, -5.6), scale = 0.4 } @@ -720,9 +714,7 @@ data:extend({ priority = "high", width = 83, height = 70, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, + --axially_symmetrical = false, shift = util.by_pixel(0.275,3.3), scale = 0.55 }, @@ -731,9 +723,7 @@ data:extend({ priority = "high", width = 76, height = 47, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, + --axially_symmetrical = false, shift = util.by_pixel(4.4, 5.225), draw_as_shadow = true, scale = 0.55 @@ -745,9 +735,7 @@ data:extend({ priority = "high", width = 90, height = 78, - frame_count = 1, - axially_symmetrical = false, - direction_count = 1, + --axially_symmetrical = false, shift = util.by_pixel(0, -7.7), scale = 0.55 } diff --git a/nullius/prototypes/entity/pipe_graphics.lua b/nullius/prototypes/entity/pipe_graphics.lua index 5a93181..8ba15cd 100644 --- a/nullius/prototypes/entity/pipe_graphics.lua +++ b/nullius/prototypes/entity/pipe_graphics.lua @@ -240,8 +240,7 @@ function pipepics(dir) width = 48, height = 30, frame_count = 60, - axially_symmetrical = false, - direction_count = 1 + --axially_symmetrical = false, } } end diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index c6fcd1b..cab9850 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -167,7 +167,7 @@ data:extend({ max_health = 150, corpse = "small-remnants", dying_explosion = "offshore-pump-explosion", - fluid = "nullius-seawater", + --fluid = "nullius-seawater", collision_box = {{-0.6, -1.05}, {0.6, 0.3}}, selection_box = {{-1, -1.49}, {1, 0.49}}, pumping_speed = 2, @@ -507,7 +507,7 @@ data:extend({ max_health = 300, corpse = "small-remnants", dying_explosion = "offshore-pump-explosion", - fluid = "nullius-seawater", + --fluid = "nullius-seawater", collision_box = {{-0.6, -1.05}, {0.6, 0.3}}, selection_box = {{-1, -1.49}, {1, 0.49}}, pumping_speed = 10, @@ -2501,9 +2501,9 @@ data:extend({ }, ingredient_count = 2, working_sound = { - sound = {filename = "__base__/sound/oil-refinery.ogg"}, + sound = {filename = "__base__/sound/oil-refinery.ogg", volume = 2.5}, idle_sound = {filename = "__base__/sound/idle1.ogg", volume = 0.6}, - apparent_volume = 2.5 + --apparent_volume = 2.5 }, impact_category = "metal", circuit_connector = circuit_connector_definitions["nullius-barreling-pump"], @@ -2612,9 +2612,9 @@ data:extend({ circuit_connector = circuit_connector_definitions["nullius-barreling-pump"], circuit_wire_max_distance = default_circuit_wire_max_distance, working_sound = { - sound = {filename = "__base__/sound/oil-refinery.ogg"}, + sound = {filename = "__base__/sound/oil-refinery.ogg", volume = 2.5}, idle_sound = {filename = "__base__/sound/idle1.ogg", volume = 0.6}, - apparent_volume = 2.5 + --apparent_volume = 2.5 }, impact_category = "metal", fluid_boxes = { @@ -3461,7 +3461,7 @@ data:extend({ { position = {0, 0}, connection_type = "underground", - max_underground_distance = 23, + max_underground_distance = 23, direction = defines.direction.south } }, diff --git a/nullius/prototypes/entity/power_pole.lua b/nullius/prototypes/entity/power_pole.lua index f05bd33..ce638ab 100644 --- a/nullius/prototypes/entity/power_pole.lua +++ b/nullius/prototypes/entity/power_pole.lua @@ -18,7 +18,7 @@ data:extend({ resistances = {{ type = "impact", decrease = 100, percent = 90 }}, corpse = "medium-electric-pole-remnants", dying_explosion = "medium-electric-pole-explosion", - track_coverage_during_build_by_moving = true, + --track_coverage_during_build_by_moving = true, -- todo: why is this still in the documentation ? The game tells me it's "unused" collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["electric-pole"]["medium-electric-pole"].damaged_trigger_effect, @@ -59,7 +59,7 @@ data:extend({ resistances = {{ type = "impact", decrease = 100, percent = 90 }}, corpse = "medium-electric-pole-remnants", dying_explosion = "medium-electric-pole-explosion", - track_coverage_during_build_by_moving = true, + --track_coverage_during_build_by_moving = true, collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, damaged_trigger_effect = data.raw["electric-pole"]["medium-electric-pole"].damaged_trigger_effect, @@ -176,7 +176,7 @@ data:extend({ next_upgrade = "nullius-substation-3", corpse = "substation-remnants", dying_explosion = "substation-explosion", - track_coverage_during_build_by_moving = true, + --track_coverage_during_build_by_moving = true, resistances = {{ type = "impact", decrease = 100, percent = 90 }}, collision_box = {{-0.65, -0.65}, {0.65, 0.65}}, selection_box = {{-1, -1}, {1, 1}}, @@ -204,7 +204,7 @@ data:extend({ fast_replaceable_group = "pylon", corpse = "substation-remnants", dying_explosion = "substation-explosion", - track_coverage_during_build_by_moving = true, + --track_coverage_during_build_by_moving = true, resistances = {{ type = "impact", decrease = 100, percent = 90 }}, collision_box = {{-0.65, -0.65}, {0.65, 0.65}}, selection_box = {{-1, -1}, {1, 1}}, diff --git a/nullius/prototypes/override_final.lua b/nullius/prototypes/override_final.lua index f125dcf..251d2fa 100644 --- a/nullius/prototypes/override_final.lua +++ b/nullius/prototypes/override_final.lua @@ -262,7 +262,7 @@ data.raw["logistic-container"]["active-provider-chest"].next_upgrade = nil data.raw["pipe"]["pipe"].next_upgrade = "nullius-pipe-2" data.raw["pipe-to-ground"]["pipe-to-ground"].next_upgrade = "nullius-underground-pipe-2" data.raw["pipe"]["pipe"].fluid_box.volume = 400 -data.raw["pipe-to-ground"]["pipe-to-ground"].fluid_box.max_underground_distance = 11 +data.raw["pipe-to-ground"]["pipe-to-ground"].fluid_box.pipe_connections[2].max_underground_distance = 11 data.raw.item["pipe"].stack_size = 200 data.raw.item["pipe-to-ground"].stack_size = 100 From 57598c6f8f6961b4c8ebaabdd564327778bf89e0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 17:00:05 +0200 Subject: [PATCH 177/236] Fixed remaining warnings --- nullius/prototypes/achievements.lua | 6 ++-- nullius/prototypes/entity/alignment.lua | 3 +- nullius/prototypes/entity/energy.lua | 21 ++++++++------ nullius/prototypes/entity/equipment.lua | 4 +-- nullius/prototypes/entity/plumbing.lua | 34 +++++++++------------- nullius/prototypes/entity/robot.lua | 24 ++++++---------- nullius/prototypes/entity/train.lua | 38 ++++++++++++------------- nullius/prototypes/entity/vehicle.lua | 31 ++++++++++---------- nullius/prototypes/entity/wind.lua | 3 +- nullius/prototypes/item/alignment.lua | 15 ++++------ nullius/prototypes/item/equipment.lua | 1 - nullius/prototypes/item/module.lua | 28 +++++------------- 12 files changed, 87 insertions(+), 121 deletions(-) diff --git a/nullius/prototypes/achievements.lua b/nullius/prototypes/achievements.lua index a1eb3e2..ef648f7 100644 --- a/nullius/prototypes/achievements.lua +++ b/nullius/prototypes/achievements.lua @@ -8,13 +8,13 @@ data:extend({ to_build = "nullius-wind-build-1", icon = ACHIEVEMENTPATH .. "breezy.png", icon_size = 128, - until_second = 45 * 60 -- 45 minutes + within = 45 * 60 * 60 -- 45 minutes }, { type = "complete-objective-achievement", name = "nullius-accelerated-timeline", order = "ac", - until_second = 60 * 60 * 24 * 6, -- 6 days + within = 60 * 60 * 60 * 24 * 6, -- 6 days objective_condition = "game-finished", icon = "__base__/graphics/achievement/there-is-no-spoon.png", icon_size = 128 @@ -75,7 +75,7 @@ data.raw["research-achievement"]["tech-maniac"].hidden = true data.raw["research-achievement"]["tech-maniac"].order = "b" data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].hidden = true data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].order = "b" -data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].until_second = 60 +data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].within = 60 * 60 data.raw["complete-objective-achievement"]["smoke-me-a-kipper-i-will-be-back-for-breakfast"].allowed_without_fight = false data.raw["group-attack-achievement"]["it-stinks-and-they-dont-like-it"].hidden = true data.raw["construct-with-robots-achievement"]["automated-construction"].hidden = true diff --git a/nullius/prototypes/entity/alignment.lua b/nullius/prototypes/entity/alignment.lua index d40c8cd..2ae7f37 100644 --- a/nullius/prototypes/entity/alignment.lua +++ b/nullius/prototypes/entity/alignment.lua @@ -3,9 +3,10 @@ if (settings.startup["nullius-alignment"].value) then local turret = util.table.deepcopy(data.raw["ammo-turret"]["gun-turret"]) turret.name = "nullius-align-conscription-turret" +turret.icon = nil turret.icons = data.raw.item["nullius-align-conscription-turret"].icons turret.minable.result = "nullius-align-conscription-turret" -turret.minable.max_health = 1000 +--turret.minable.max_health = 1000 turret.resistances = { { type = "impact", decrease = 10, percent = 50 }, { type = "laser", decrease = 5, percent = 25 }, diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 0c34fef..61b9399 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -15,7 +15,7 @@ function accumulator_picture(tint, repeat_count) repeat_count = repeat_count, shift = util.by_pixel(0, -11), tint = tint, - animation_speed = 0.5, + --animation_speed = 0.5, scale = 0.75 }, { @@ -2116,13 +2116,14 @@ data:extend({ working_sound = data.raw["heat-pipe"]["heat-pipe"].working_sound, impact_category = data.raw["heat-pipe"]["heat-pipe"].impact_category, damaged_trigger_effect = data.raw["heat-pipe"]["heat-pipe"].damaged_trigger_effect, - min_temperature_gradient = 4, + heat_buffer = { max_temperature = 250, specific_heat = "100kJ", max_transfer = "30MW", minimum_glow_temperature = 150, connections = data.raw["heat-pipe"]["heat-pipe"].heat_buffer.connections, + min_temperature_gradient = 4, heat_glow = data.raw["heat-pipe"]["heat-pipe"].heat_buffer.heat_glow }, @@ -2193,13 +2194,14 @@ data:extend({ working_sound = data.raw["heat-pipe"]["heat-pipe"].working_sound, impact_category = data.raw["heat-pipe"]["heat-pipe"].impact_category, damaged_trigger_effect = data.raw["heat-pipe"]["heat-pipe"].damaged_trigger_effect, - min_temperature_gradient = 2, + heat_buffer = { max_temperature = 500, specific_heat = "250kJ", max_transfer = "80MW", minimum_glow_temperature = 200, connections = data.raw["heat-pipe"]["heat-pipe"].heat_buffer.connections, + min_temperature_gradient = 2, heat_glow = data.raw["heat-pipe"]["heat-pipe"].heat_buffer.heat_glow }, @@ -2271,13 +2273,14 @@ data:extend({ damaged_trigger_effect = data.raw["heat-pipe"]["heat-pipe"].damaged_trigger_effect, connection_sprites = data.raw["heat-pipe"]["heat-pipe"].connection_sprites, heat_glow_sprites = data.raw["heat-pipe"]["heat-pipe"].heat_glow_sprites, - min_temperature_gradient = 1, + heat_buffer = { max_temperature = 1500, specific_heat = "500kJ", max_transfer = "200MW", minimum_glow_temperature = 250, connections = data.raw["heat-pipe"]["heat-pipe"].heat_buffer.connections, + min_temperature_gradient = 1, heat_glow = data.raw["heat-pipe"]["heat-pipe"].heat_buffer.heat_glow } } @@ -3268,8 +3271,8 @@ data:extend({ scale = 0.5 }, { - type = "animation", - name = "nullius-stirling-horizontal-shadow", + --type = "animation", + --name = "nullius-stirling-horizontal-shadow", filename = BASEENTITY .. "steam-engine/steam-engine-H-shadow.png", width = 508, height = 160, @@ -3487,7 +3490,7 @@ data:extend({ consumption = "150W", energy_source = { type = "void" }, neighbour_bonus = 0.1, - neighbour_collision_increase = 0.1, + --neighbour_collision_increase = 0.1, circuit_connector = circuit_connector_definitions["nullius-solar-collector"], circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { @@ -3567,7 +3570,7 @@ data:extend({ consumption = "300W", energy_source = { type = "void" }, neighbour_bonus = 0.1, - neighbour_collision_increase = 0.1, + --neighbour_collision_increase = 0.1, circuit_connector = circuit_connector_definitions["nullius-solar-collector"], circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { @@ -3646,7 +3649,7 @@ data:extend({ consumption = "600W", energy_source = { type = "void" }, neighbour_bonus = 0.1, - neighbour_collision_increase = 0.1, + --neighbour_collision_increase = 0.1, circuit_connector = circuit_connector_definitions["nullius-solar-collector"], circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { diff --git a/nullius/prototypes/entity/equipment.lua b/nullius/prototypes/entity/equipment.lua index d26e059..50981f9 100644 --- a/nullius/prototypes/entity/equipment.lua +++ b/nullius/prototypes/entity/equipment.lua @@ -1375,7 +1375,7 @@ data:extend({ { type = "destroy-cliffs", radius = 5.5, - explosion = "explosion" + explosion_at_cliff = "explosion" --todo }, { type = "nested-result", @@ -1436,7 +1436,7 @@ data:extend({ { type = "destroy-cliffs", radius = 21, - explosion = "explosion" + explosion_at_cliff = "explosion" }, data.raw.projectile["atomic-rocket"].action.action_delivery.target_effects[3], data.raw.projectile["atomic-rocket"].action.action_delivery.target_effects[4], diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index cab9850..257076c 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -59,7 +59,6 @@ local si1 = { filter = "nullius-seawater", pipe_connections = {{position = {0, 1}, flow_direction = "output", direction = defines.direction.south}} }}, - pipe_covers = pipecoverspictures(), module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "seawater-intake", @@ -571,7 +570,6 @@ data:extend({ } } }, - pipe_covers = pipecoverspictures(), module_slots = 1, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "well", @@ -826,7 +824,6 @@ data:extend({ } } }, - pipe_covers = pipecoverspictures(), module_slots = 2, allowed_effects = {"speed", "consumption", "pollution"}, fast_replaceable_group = "well", @@ -1164,8 +1161,7 @@ data:extend({ volume = 500, pipe_connections = {{ position = {0, 1}, flow_direction = "output", direction = defines.direction.south }} }, - }, - pipe_covers = pipecoverspictures() + } } }) @@ -1255,8 +1251,7 @@ data:extend({ volume = 500, pipe_connections = {{ position = {0, 1}, flow_direction = "output", direction = defines.direction.south }} }, - }, - pipe_covers = pipecoverspictures() + } }, { @@ -1311,8 +1306,7 @@ data:extend({ volume = 500, pipe_connections = {{ position = {0, 1}, flow_direction = "output", direction = defines.direction.south }} }, - }, - pipe_covers = pipecoverspictures() + } }, ---------------------------------------- VALVES ----------------------------------------------- @@ -1322,7 +1316,7 @@ data:extend({ icon = "__angelspetrochemgraphics__/graphics/icons/valve-inspector.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, - minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-priority-valve"}, + minable = {mining_time = 0.2, result = "nullius-priority-valve"}, max_health = 80, corpse = "small-remnants", resistances = { @@ -1415,7 +1409,7 @@ data:extend({ icon = "__angelspetrochemgraphics__/graphics/icons/valve-overflow.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, - minable = {hardness = 0.5, mining_time = 0.2, result = "nullius-one-way-valve"}, + minable = {mining_time = 0.2, result = "nullius-one-way-valve"}, max_health = 80, corpse = "small-remnants", resistances = { @@ -1507,7 +1501,7 @@ data:extend({ icon = "__angelspetrochemgraphics__/graphics/icons/valve-underflow.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, - minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-top-up-valve"}, + minable = {mining_time = 0.2, result = "nullius-top-up-valve"}, max_health = 80, corpse = "small-remnants", resistances = { @@ -1546,7 +1540,7 @@ data:extend({ { filename = "__angelspetrochemgraphics__/graphics/entity/valve/valve-underflow.png", priority = "extra-high", - frames = 1, + frame_count = 1, width = 64, height = 64 } @@ -1600,7 +1594,7 @@ data:extend({ icon = "__angelspetrochemgraphics__/graphics/icons/valve-return.png", icon_size = 32, flags = {"placeable-player", "player-creation"}, - minable = {hardness = 0.6, mining_time = 0.2, result = "nullius-relief-valve"}, + minable = {mining_time = 0.2, result = "nullius-relief-valve"}, max_health = 80, corpse = "small-remnants", resistances = { @@ -1833,7 +1827,7 @@ data:extend({ name = "nullius-small-tank-1", icons = data.raw.item["nullius-small-tank-1"].icons, flags = {"placeable-player", "player-creation"}, - minable = {hardness = 0.7, mining_time = 0.3, result = "nullius-small-tank-1"}, + minable = {mining_time = 0.3, result = "nullius-small-tank-1"}, max_health = 200, corpse = "medium-remnants", collision_box = {{-0.9, -0.9}, {0.9, 0.9}}, @@ -2040,7 +2034,7 @@ data:extend({ name = "nullius-small-tank-2", icons = data.raw.item["nullius-small-tank-2"].icons, flags = {"placeable-player", "player-creation"}, - minable = {hardness = 1, mining_time = 0.3, result = "nullius-small-tank-2"}, + minable = {mining_time = 0.3, result = "nullius-small-tank-2"}, max_health = 250, corpse = "medium-remnants", collision_box = {{-0.9, -0.9}, {0.9, 0.9}}, @@ -2086,7 +2080,7 @@ data:extend({ name = "nullius-large-tank-1", icons = data.raw.item["nullius-large-tank-1"].icons, flags = {"placeable-player", "player-creation", "not-rotatable"}, - minable = {hardness = 2, mining_time = 3, result = "nullius-large-tank-1"}, + minable = {mining_time = 3, result = "nullius-large-tank-1"}, collision_mask = collision_mask_util.get_default_mask("rocket-silo"), -- generic tall building max_health = 1000, corpse = "medium-remnants", @@ -2181,7 +2175,7 @@ data:extend({ name = "nullius-large-tank-2", icons = data.raw.item["nullius-large-tank-2"].icons, flags = {"placeable-player", "player-creation", "not-rotatable"}, - minable = {hardness = 2.5, mining_time = 3, result = "nullius-large-tank-2"}, + minable = {mining_time = 3, result = "nullius-large-tank-2"}, collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 1200, corpse = "medium-remnants", @@ -2214,7 +2208,7 @@ data:extend({ name = "nullius-large-tank-3", icons = data.raw.item["nullius-large-tank-3"].icons, flags = {"placeable-player", "player-creation", "not-rotatable"}, - minable = {hardness = 3, mining_time = 3, result = "nullius-large-tank-3"}, + minable = {mining_time = 3, result = "nullius-large-tank-3"}, collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 1500, corpse = "medium-remnants", @@ -2522,7 +2516,6 @@ data:extend({ pipe_connections = {{flow_direction ="output", position = {0, -1}, direction = defines.direction.north}} } }, - pipe_covers = pipecoverspictures(), graphics_set = { animation = { @@ -2631,7 +2624,6 @@ data:extend({ pipe_connections = {{flow_direction ="output", position = {0, -1}, direction = defines.direction.north}} } }, - pipe_covers = pipecoverspictures(), graphics_set = { animation = { north = { diff --git a/nullius/prototypes/entity/robot.lua b/nullius/prototypes/entity/robot.lua index 76c7522..d23fb86 100644 --- a/nullius/prototypes/entity/robot.lua +++ b/nullius/prototypes/entity/robot.lua @@ -51,7 +51,7 @@ data:extend({ repairing_sound = data.raw["construction-robot"]["construction-robot"].repairing_sound, working_sound = data.raw["construction-robot"]["construction-robot"].working_sound, water_reflection = data.raw["construction-robot"]["construction-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, construction_vector = {0.30, 0.22}, idle = data.raw["construction-robot"]["construction-robot"].idle, idle_with_cargo = data.raw["construction-robot"]["construction-robot"].idle_with_cargo, @@ -95,7 +95,7 @@ data:extend({ repairing_sound = data.raw["construction-robot"]["construction-robot"].repairing_sound, working_sound = data.raw["construction-robot"]["construction-robot"].working_sound, water_reflection = data.raw["construction-robot"]["construction-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, construction_vector = {0.30, 0.22}, idle = data.raw["construction-robot"]["bob-construction-robot-2"].idle, idle_with_cargo = data.raw["construction-robot"]["bob-construction-robot-2"].idle_with_cargo, @@ -139,7 +139,7 @@ data:extend({ repairing_sound = data.raw["construction-robot"]["construction-robot"].repairing_sound, working_sound = data.raw["construction-robot"]["construction-robot"].working_sound, water_reflection = data.raw["construction-robot"]["construction-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, construction_vector = {0.30, 0.22}, idle = data.raw["construction-robot"]["bob-construction-robot-3"].idle, idle_with_cargo = data.raw["construction-robot"]["bob-construction-robot-3"].idle_with_cargo, @@ -183,7 +183,7 @@ data:extend({ repairing_sound = data.raw["construction-robot"]["construction-robot"].repairing_sound, working_sound = data.raw["construction-robot"]["construction-robot"].working_sound, water_reflection = data.raw["construction-robot"]["construction-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, construction_vector = {0.30, 0.22}, idle = data.raw["construction-robot"]["bob-construction-robot-5"].idle, idle_with_cargo = data.raw["construction-robot"]["bob-construction-robot-5"].idle_with_cargo, @@ -223,7 +223,7 @@ data:extend({ max_to_charge = 0.9, working_sound = data.raw["logistic-robot"]["logistic-robot"].working_sound, water_reflection = data.raw["logistic-robot"]["logistic-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, idle = data.raw["logistic-robot"]["logistic-robot"].idle, idle_with_cargo = data.raw["logistic-robot"]["logistic-robot"].idle_with_cargo, in_motion = data.raw["logistic-robot"]["logistic-robot"].in_motion, @@ -260,7 +260,7 @@ data:extend({ max_to_charge = 0.95, working_sound = data.raw["logistic-robot"]["logistic-robot"].working_sound, water_reflection = data.raw["logistic-robot"]["logistic-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, idle = data.raw["logistic-robot"]["bob-logistic-robot-2"].idle, idle_with_cargo = data.raw["logistic-robot"]["bob-logistic-robot-2"].idle_with_cargo, in_motion = data.raw["logistic-robot"]["bob-logistic-robot-2"].in_motion, @@ -297,7 +297,7 @@ data:extend({ max_to_charge = 0.95, working_sound = data.raw["logistic-robot"]["logistic-robot"].working_sound, water_reflection = data.raw["logistic-robot"]["logistic-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, idle = data.raw["logistic-robot"]["bob-logistic-robot-3"].idle, idle_with_cargo = data.raw["logistic-robot"]["bob-logistic-robot-3"].idle_with_cargo, in_motion = data.raw["logistic-robot"]["bob-logistic-robot-3"].in_motion, @@ -334,7 +334,7 @@ data:extend({ max_to_charge = 0.95, working_sound = data.raw["logistic-robot"]["logistic-robot"].working_sound, water_reflection = data.raw["logistic-robot"]["logistic-robot"].water_reflection, - cargo_centered = {0.0, 0.2}, + --cargo_centered = {0.0, 0.2}, idle = data.raw["logistic-robot"]["bob-logistic-robot-5"].idle, idle_with_cargo = data.raw["logistic-robot"]["bob-logistic-robot-5"].idle_with_cargo, in_motion = data.raw["logistic-robot"]["bob-logistic-robot-5"].in_motion, @@ -419,7 +419,6 @@ data:extend({ width = 294, height = 201, draw_as_shadow = true, - force_hr_shadow = true, shift = util.by_pixel(28.5*0.75, 19.25*0.75), scale = 0.5*0.75 } @@ -430,7 +429,6 @@ data:extend({ priority = "medium", width = 138, height = 100, - frame_count = 1, shift = util.by_pixel(1.5*0.75, 5*0.75), scale = 0.5*0.75 }, @@ -538,7 +536,6 @@ data:extend({ width = 294, height = 201, draw_as_shadow = true, - force_hr_shadow = true, shift = util.by_pixel(28.5*0.75, 19.25*0.75), scale = 0.5*0.75 } @@ -549,7 +546,6 @@ data:extend({ priority = "medium", width = 138, height = 100, - frame_count = 1, shift = util.by_pixel(1.5*0.75, 5*0.75), scale = 0.5*0.75 }, @@ -656,7 +652,6 @@ data:extend({ width = 294, height = 201, draw_as_shadow = true, - force_hr_shadow = true, shift = util.by_pixel(28.5*0.75, 19.25*0.75), scale = 0.5*0.75 } @@ -667,7 +662,6 @@ data:extend({ priority = "medium", width = 138, height = 100, - frame_count = 1, shift = util.by_pixel(1.5*0.75, 5*0.75), scale = 0.5*0.75 }, @@ -774,7 +768,6 @@ data:extend({ width = 294, height = 201, draw_as_shadow = true, - force_hr_shadow = true, shift = util.by_pixel(28.5*0.5, 19.25*0.5), scale = 0.5*0.5 } @@ -785,7 +778,6 @@ data:extend({ priority = "medium", width = 138, height = 100, - frame_count = 1, shift = util.by_pixel(1.5*0.5, 5*0.5), scale = 0.5*0.5 }, diff --git a/nullius/prototypes/entity/train.lua b/nullius/prototypes/entity/train.lua index 072a553..ff57e17 100644 --- a/nullius/prototypes/entity/train.lua +++ b/nullius/prototypes/entity/train.lua @@ -62,8 +62,8 @@ data:extend({ close_sound = data.raw.locomotive["locomotive"].close_sound, water_reflection = data.raw.locomotive["locomotive"].water_reflection, tie_distance = 50, - sound_minimum_speed = 0.5, - sound_scaling_ratio = 0.35, + --sound_minimum_speed = 0.5, + --sound_scaling_ratio = 0.35, pictures = { slope_angle_between_frames = data.raw.locomotive["locomotive"].pictures.slope_angle_between_frames, @@ -165,8 +165,8 @@ data:extend({ close_sound = data.raw.locomotive["locomotive"].close_sound, water_reflection = data.raw.locomotive["locomotive"].water_reflection, tie_distance = 50, - sound_minimum_speed = 0.5, - sound_scaling_ratio = 0.35, + --sound_minimum_speed = 0.5, + --sound_scaling_ratio = 0.35, pictures = { rotated = { @@ -241,8 +241,8 @@ data:extend({ close_sound = data.raw.locomotive["locomotive"].close_sound, water_reflection = data.raw.locomotive["locomotive"].water_reflection, tie_distance = 50, - sound_minimum_speed = 0.5, - sound_scaling_ratio = 0.35, + --sound_minimum_speed = 0.5, + --sound_scaling_ratio = 0.35, pictures = { rotated = { @@ -310,8 +310,8 @@ data:extend({ close_sound = data.raw.locomotive["locomotive"].close_sound, water_reflection = data.raw.locomotive["locomotive"].water_reflection, tie_distance = 50, - sound_minimum_speed = 0.5, - sound_scaling_ratio = 0.35, + --sound_minimum_speed = 0.5, + --sound_scaling_ratio = 0.35, pictures = { rotated = { @@ -379,7 +379,7 @@ data:extend({ close_sound = data.raw["cargo-wagon"]["cargo-wagon"].close_sound, impact_category = data.raw["cargo-wagon"]["cargo-wagon"].impact_category, water_reflection = data.raw["cargo-wagon"]["cargo-wagon"].water_reflection, - sound_minimum_speed = 1, + --sound_minimum_speed = 1, pictures = data.raw["cargo-wagon"]["cargo-wagon"].pictures, horizontal_doors = data.raw["cargo-wagon"]["cargo-wagon"].horizontal_doors, vertical_doors = data.raw["cargo-wagon"]["cargo-wagon"].vertical_doors @@ -430,7 +430,7 @@ data:extend({ close_sound = data.raw["cargo-wagon"]["cargo-wagon"].close_sound, impact_category = data.raw["cargo-wagon"]["cargo-wagon"].impact_category, water_reflection = data.raw["cargo-wagon"]["cargo-wagon"].water_reflection, - sound_minimum_speed = 1, + --sound_minimum_speed = 1, pictures = data.raw["cargo-wagon"]["cargo-wagon"].pictures, horizontal_doors = data.raw["cargo-wagon"]["cargo-wagon"].horizontal_doors, vertical_doors = data.raw["cargo-wagon"]["cargo-wagon"].vertical_doors @@ -481,7 +481,7 @@ data:extend({ close_sound = data.raw["cargo-wagon"]["cargo-wagon"].close_sound, impact_category = data.raw["cargo-wagon"]["cargo-wagon"].impact_category, water_reflection = data.raw["cargo-wagon"]["cargo-wagon"].water_reflection, - sound_minimum_speed = 1, + --sound_minimum_speed = 1, pictures = data.raw["cargo-wagon"]["cargo-wagon"].pictures, horizontal_doors = data.raw["cargo-wagon"]["cargo-wagon"].horizontal_doors, vertical_doors = data.raw["cargo-wagon"]["cargo-wagon"].vertical_doors @@ -529,7 +529,7 @@ data:extend({ crash_trigger = data.raw["fluid-wagon"]["fluid-wagon"].crash_trigger, impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, - sound_minimum_speed = 0.1, + --sound_minimum_speed = 0.1, pictures = { rotated = { @@ -608,7 +608,7 @@ data:extend({ crash_trigger = data.raw["fluid-wagon"]["fluid-wagon"].crash_trigger, impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, - sound_minimum_speed = 0.1, + --sound_minimum_speed = 0.1, pictures = data.raw["fluid-wagon"]["nullius-fluid-wagon-1"].pictures }, @@ -655,7 +655,7 @@ data:extend({ crash_trigger = data.raw["fluid-wagon"]["fluid-wagon"].crash_trigger, impact_category = data.raw["fluid-wagon"]["fluid-wagon"].impact_category, water_reflection = data.raw["fluid-wagon"]["fluid-wagon"].water_reflection, - sound_minimum_speed = 0.1, + --sound_minimum_speed = 0.1, pictures = data.raw["fluid-wagon"]["nullius-fluid-wagon-1"].pictures }, @@ -719,9 +719,8 @@ data:extend({ close_sound = data.raw["artillery-wagon"]["artillery-wagon"].close_sound, impact_category = data.raw["artillery-wagon"]["artillery-wagon"].impact_category, water_reflection = data.raw["artillery-wagon"]["artillery-wagon"].water_reflection, - rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.2 }}, - rotating_stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, - sound_minimum_speed = 0.1, + rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.2}, stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }}, + --sound_minimum_speed = 0.1, pictures = { rotated = { @@ -816,8 +815,7 @@ data:extend({ close_sound = data.raw["artillery-wagon"]["artillery-wagon"].close_sound, impact_category = data.raw["artillery-wagon"]["artillery-wagon"].impact_category, water_reflection = data.raw["artillery-wagon"]["artillery-wagon"].water_reflection, - rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.2 }}, - rotating_stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }, - sound_minimum_speed = 0.1 + rotating_sound = { sound = { filename = "__base__/sound/fight/artillery-rotation-loop.ogg", volume = 0.2 },stopped_sound = { filename = "__base__/sound/fight/artillery-rotation-stop.ogg" }}, + --sound_minimum_speed = 0.1 } }) diff --git a/nullius/prototypes/entity/vehicle.lua b/nullius/prototypes/entity/vehicle.lua index 39add95..ff313fe 100644 --- a/nullius/prototypes/entity/vehicle.lua +++ b/nullius/prototypes/entity/vehicle.lua @@ -49,8 +49,8 @@ data:extend({ sound_no_fuel = data.raw["car"]["car"].sound_no_fuel, stop_trigger_speed = 0.15, stop_trigger = data.raw["car"]["car"].stop_trigger, - sound_minimum_speed = 0.25, - sound_scaling_ratio = 0.8, + -- sound_minimum_speed = 0.25, + -- sound_scaling_ratio = 0.8, impact_category = data.raw["car"]["car"].impact_category, working_sound = data.raw["car"]["car"].working_sound, open_sound = data.raw["car"]["car"].open_sound, @@ -126,8 +126,8 @@ data:extend({ sound_no_fuel = data.raw["car"]["car"].sound_no_fuel, stop_trigger_speed = 0.15, stop_trigger = data.raw["car"]["car"].stop_trigger, - sound_minimum_speed = 0.25, - sound_scaling_ratio = 0.8, + -- sound_minimum_speed = 0.25, + -- sound_scaling_ratio = 0.8, impact_category = data.raw["car"]["car"].impact_category, working_sound = data.raw["car"]["car"].working_sound, open_sound = data.raw["car"]["car"].open_sound, @@ -195,8 +195,8 @@ data:extend({ sound_no_fuel = data.raw["car"]["car"].sound_no_fuel, stop_trigger_speed = 0.15, stop_trigger = data.raw["car"]["car"].stop_trigger, - sound_minimum_speed = 0.25, - sound_scaling_ratio = 0.8, + -- sound_minimum_speed = 0.25, + -- sound_scaling_ratio = 0.8, impact_category = data.raw["car"]["car"].impact_category, working_sound = data.raw["car"]["car"].working_sound, open_sound = data.raw["car"]["car"].open_sound, @@ -276,8 +276,8 @@ data:extend({ light = data.raw["car"]["tank"].light, turret_animation = data.raw["car"]["tank"].turret_animation, sound_no_fuel = data.raw["car"]["tank"].sound_no_fuel, - sound_minimum_speed = 0.2, - sound_scaling_ratio = 0.8, + -- sound_minimum_speed = 0.2, + -- sound_scaling_ratio = 0.8, impact_category = data.raw["car"]["tank"].impact_category, working_sound = data.raw["car"]["tank"].working_sound, stop_trigger_speed = 0.1, @@ -341,8 +341,8 @@ data:extend({ light = data.raw["car"]["tank"].light, turret_animation = data.raw["car"]["tank"].turret_animation, sound_no_fuel = data.raw["car"]["tank"].sound_no_fuel, - sound_minimum_speed = 0.2, - sound_scaling_ratio = 0.8, + -- sound_minimum_speed = 0.2, + -- sound_scaling_ratio = 0.8, impact_category = data.raw["car"]["tank"].impact_category, working_sound = data.raw["car"]["tank"].working_sound, stop_trigger_speed = 0.1, @@ -384,8 +384,8 @@ data:extend({ sticker_box = {{-1.5 * 1, -1.5 * 1}, {1.5 * 1, 1.5 * 1}}, selection_box = {{-1 * 1, -1 * 1}, {1 * 1, 1 * 1}}, - sound_minimum_speed = 0.1, - sound_scaling_ratio = 0.6, + -- sound_minimum_speed = 0.1, + -- sound_scaling_ratio = 0.6, weight = 5000, braking_force = 1, friction_force = 1, @@ -437,8 +437,8 @@ data:extend({ sticker_box = {{-1.5 * 1, -1.5 * 1}, {1.5 * 1, 1.5 * 1}}, selection_box = {{-1 * 1, -1 * 1}, {1 * 1, 1 * 1}}, - sound_minimum_speed = 0.1, - sound_scaling_ratio = 0.6, + --sound_minimum_speed = 0.1, + --sound_scaling_ratio = 0.6, weight = 5000, braking_force = 1, friction_force = 1, @@ -489,7 +489,6 @@ data:extend({ crafting_categories = {"rocketry"}, rocket_parts_required = 1, crafting_speed = 1, - rocket_result_inventory_size = 12, module_slots = 4, fixed_recipe = "nullius-rocket", show_recipe_icon = false, @@ -520,7 +519,7 @@ data:extend({ drain = "200kW" }, energy_usage = "800kW", - idle_energy_usage = "200kW", + --idle_energy_usage = "200kW", lamp_energy_usage = "200kW", active_energy_usage = "2600kW", rocket_entity = "rocket-silo-rocket", diff --git a/nullius/prototypes/entity/wind.lua b/nullius/prototypes/entity/wind.lua index 9cd938a..3d872cb 100644 --- a/nullius/prototypes/entity/wind.lua +++ b/nullius/prototypes/entity/wind.lua @@ -140,11 +140,10 @@ for i=1,3 do filename = TURBINEP .. "hd"..i.."/base.png", width = 600, height = 800, - frame_count = 1, line_length = 1, shift = {0.15*scale, -11*scale}, scale = scale, - animation_speed = 0.2 + --animation_speed = 0.2 }, working_sound = { sound = { diff --git a/nullius/prototypes/item/alignment.lua b/nullius/prototypes/item/alignment.lua index 291e4bd..3435bfd 100644 --- a/nullius/prototypes/item/alignment.lua +++ b/nullius/prototypes/item/alignment.lua @@ -23,7 +23,6 @@ data:extend({ projectile_creation_distance = 0.5, range = 16, ammo_type = { - category = "grenade", target_type = "position", action = { { @@ -71,7 +70,6 @@ data:extend({ projectile_creation_distance = 0.25, range = 16, ammo_type = { - category = "grenade", target_type = "position", action = { { @@ -102,7 +100,7 @@ data:extend({ { type = "capsule", name = "nullius-align-transponder", - icons = {{ + icons = {{ icon = "__base__/graphics/icons/rocket-part.png", icon_size = 64, }}, @@ -118,7 +116,6 @@ data:extend({ cooldown = 600, range = 0, ammo_type = { - category = "capsule", target_type = "position", action = { type = "direct", @@ -127,7 +124,7 @@ data:extend({ target_effects = { { type = "camera-effect", - effect = "screen-burn", + --effect = "screen-burn", duration = 20, ease_in_duration = 10, ease_out_duration = 10, @@ -136,9 +133,9 @@ data:extend({ full_strength_max_distance = 500, max_distance = 2000 }, - { + { type = "script", - effect_id = "nullius-align-transponder" + effect_id = "nullius-align-transponder" } } } @@ -150,7 +147,7 @@ data:extend({ { type = "ammo", name = "nullius-align-conscription-charge", - icons = {{ + icons = {{ icon = "__base__/graphics/icons/piercing-shotgun-shell.png", icon_size = 64, }}, @@ -170,7 +167,7 @@ data:extend({ starting_speed = 0.6, source_effects = { type = "create-explosion", - entity_name = "spark-explosion" + entity_name = "spark-explosion" } } } diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index 3ef9076..46ae877 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -1402,7 +1402,6 @@ data:extend({ cooldown = 20, range = 0, ammo_type = { - category = "capsule", target_type = "position", action = { type = "direct", diff --git a/nullius/prototypes/item/module.lua b/nullius/prototypes/item/module.lua index 8473946..86e6661 100644 --- a/nullius/prototypes/item/module.lua +++ b/nullius/prototypes/item/module.lua @@ -217,9 +217,7 @@ data:extend({ tier = 0, order = "nullius-cb", stack_size = 50, - effect = { productivity = 0.03, speed = -0.05, consumption = 0.1 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.03, speed = -0.05, consumption = 0.1 } }, { type = "module", @@ -231,9 +229,7 @@ data:extend({ tier = 1, order = "nullius-cc", stack_size = 50, - effect = { productivity = 0.05, speed = -0.15, consumption = 0.4 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.05, speed = -0.15, consumption = 0.4 } }, { type = "module", @@ -245,9 +241,7 @@ data:extend({ tier = 2, order = "nullius-cd", stack_size = 50, - effect = { productivity = 0.07, speed = -0.25, consumption = 0.7 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.07, speed = -0.25, consumption = 0.7 } }, { type = "module", @@ -259,9 +253,7 @@ data:extend({ tier = 3, order = "nullius-ce", stack_size = 50, - effect = { productivity = 0.08, speed = -0.4, consumption = 1 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.08, speed = -0.4, consumption = 1 } }, { type = "module", @@ -274,9 +266,7 @@ data:extend({ tier = 1, order = "nullius-db", stack_size = 50, - effect = { productivity = 0.04 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.04 } }, { type = "module", @@ -289,9 +279,7 @@ data:extend({ tier = 2, order = "nullius-dc", stack_size = 50, - effect = { productivity = 0.06, consumption = 0.05 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.06, consumption = 0.05 } }, { type = "module", @@ -304,9 +292,7 @@ data:extend({ tier = 3, order = "nullius-dd", stack_size = 50, - effect = { productivity = 0.07, consumption = 0.1 }, - limitation = {}, - limitation_message_key = "production-module-not-usable" + effect = { productivity = 0.07, consumption = 0.1 } }, { From 86f5f1a61103cda74c79e4d06a867a847f97329c Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 17:30:17 +0200 Subject: [PATCH 178/236] removed the connector for solar collector, geothermal plant and seawater intakes Added circuit connector to rocket silo --- nullius/prototypes/entity/energy.lua | 24 ++++++++++++------------ nullius/prototypes/entity/plumbing.lua | 12 ++++++------ nullius/prototypes/entity/vehicle.lua | 2 ++ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 61b9399..d5f175e 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -1921,8 +1921,8 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-2", - circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], -- we decided to not have those for the geothermal plant + -- circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", @@ -1986,8 +1986,8 @@ data:extend({ impact_category = "metal", fast_replaceable_group = "geothermal-plant", next_upgrade = "nullius-geothermal-build-3", - circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", @@ -2037,8 +2037,8 @@ data:extend({ working_sound = data.raw["mining-drill"]["nullius-geothermal-build-1"].working_sound, impact_category = "metal", fast_replaceable_group = "geothermal-plant", - circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["nullius-geothermal-reactor"], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, light = {intensity = 0.4, size = 9.9, shift = {0.0, 0.0}, color = {r = 1.0, g = 0.5, b = 0.0}}, working_light_picture = { -- TODO: integrate the graphics with the heat pipes correctly filename = "__angelssmeltinggraphics__/graphics/entity/chemical-furnace/chemical-furnace-base_02.png", @@ -3491,8 +3491,8 @@ data:extend({ energy_source = { type = "void" }, neighbour_bonus = 0.1, --neighbour_collision_increase = 0.1, - circuit_connector = circuit_connector_definitions["nullius-solar-collector"], - circuit_wire_max_distance = reactor_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["nullius-solar-collector"], -- we decided not to have circuit connections for this building + -- circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { { type = "fire", decrease = 25, percent = 60 }, { type = "impact", decrease = 50, percent = 80 }, @@ -3571,8 +3571,8 @@ data:extend({ energy_source = { type = "void" }, neighbour_bonus = 0.1, --neighbour_collision_increase = 0.1, - circuit_connector = circuit_connector_definitions["nullius-solar-collector"], - circuit_wire_max_distance = reactor_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["nullius-solar-collector"], + -- circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { { type = "fire", decrease = 25, percent = 60 }, { type = "impact", decrease = 50, percent = 80 }, @@ -3650,8 +3650,8 @@ data:extend({ energy_source = { type = "void" }, neighbour_bonus = 0.1, --neighbour_collision_increase = 0.1, - circuit_connector = circuit_connector_definitions["nullius-solar-collector"], - circuit_wire_max_distance = reactor_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["nullius-solar-collector"], + -- circuit_wire_max_distance = reactor_circuit_wire_max_distance, resistances = { { type = "fire", decrease = 25, percent = 60 }, { type = "impact", decrease = 50, percent = 80 }, diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index 257076c..ac624ee 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -65,8 +65,8 @@ local si1 = { next_upgrade = "nullius-seawater-intake-2", working_sound = op.working_sound, impact_category = op.impact_category, - circuit_connector = circuit_connector_definitions["offshore-pump"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["offshore-pump"], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, graphics_set = {} } @@ -182,8 +182,8 @@ data:extend({ impact_category = op.impact_category, working_sound = op.working_sound, placeable_position_visualization = op.placeable_position_visualization, - circuit_connector = circuit_connector_definitions["offshore-pump"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["offshore-pump"], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, resistances = { { type = "impact", decrease = 100, percent = 90 }, { type = "fire", percent = 75 } @@ -523,8 +523,8 @@ data:extend({ impact_category = op.impact_category, working_sound = op.working_sound, placeable_position_visualization = op.placeable_position_visualization, - circuit_connector = circuit_connector_definitions["offshore-pump"], - circuit_wire_max_distance = default_circuit_wire_max_distance, + -- circuit_connector = circuit_connector_definitions["offshore-pump"], + -- circuit_wire_max_distance = default_circuit_wire_max_distance, water_reflection = op.water_reflection, resistances = { { type = "impact", decrease = 100, percent = 90 }, diff --git a/nullius/prototypes/entity/vehicle.lua b/nullius/prototypes/entity/vehicle.lua index ff313fe..15ab216 100644 --- a/nullius/prototypes/entity/vehicle.lua +++ b/nullius/prototypes/entity/vehicle.lua @@ -528,6 +528,8 @@ data:extend({ door_opening_speed = 1 / (4.25 * 60), can_launch_without_landing_pads = true, to_be_inserted_to_rocket_inventory_size = 1, + circuit_connector = circuit_connector_definitions["rocket-silo"], + circuit_wire_max_distance = default_circuit_wire_max_distance, base_engine_light = data.raw["rocket-silo"]["rocket-silo"].base_engine_light, shadow_sprite = data.raw["rocket-silo"]["rocket-silo"].shadow_sprite, From ef9edb719016f318503420ac3ace8686947f0a51 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 18:51:03 +0200 Subject: [PATCH 179/236] Fixed broken locale for wall and gate --- nullius/prototypes/item/recipe.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index 3b72d07..54deec3 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -1176,7 +1176,7 @@ data:extend({ { type = "recipe", name = "nullius-wall", - localised_name = {"item-name.nullius-wall"}, + localised_name = {"entity-name.stone-wall"}, enabled = false, category = "large-crafting", always_show_made_in = true, @@ -1212,7 +1212,7 @@ data:extend({ { type = "recipe", name = "nullius-gate", - localised_name = {"item-name.nullius-gate"}, + localised_name = {"entity-name.gate"}, enabled = false, category = "large-crafting", always_show_made_in = true, From 4ec1e7ada9d8731987a922944e57411060ca5cde Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 18:57:45 +0200 Subject: [PATCH 180/236] Removed disable fluid boxes on furnaces when no fluid recipe is set --- nullius/prototypes/entity/furnace.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nullius/prototypes/entity/furnace.lua b/nullius/prototypes/entity/furnace.lua index 529dda9..417626d 100644 --- a/nullius/prototypes/entity/furnace.lua +++ b/nullius/prototypes/entity/furnace.lua @@ -725,6 +725,7 @@ data:extend({ collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, fluid_boxes = data.raw["assembling-machine"]["nullius-medium-furnace-2"].fluid_boxes, + fluid_boxes_off_when_no_fluid_recipe = true, crafting_categories = {"dry-smelting", "vent-smelting", "wet-smelting"}, crafting_speed = 4, energy_usage = "1000kW", @@ -762,6 +763,7 @@ data:extend({ collision_box = {{-1.7, -1.7}, {1.7, 1.7}}, selection_box = {{-2.0, -2.0}, {2.0, 2.0}}, fluid_boxes = data.raw["assembling-machine"]["nullius-large-furnace-1"].fluid_boxes, + fluid_boxes_off_when_no_fluid_recipe = true, crafting_categories = {"bulk-smelting"}, crafting_speed = 2, energy_usage = "2200kW", From 08eda784e61bce38830a9bec41524cc7f6980bb2 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 22:06:07 +0200 Subject: [PATCH 181/236] Fixed thermal tank circuit connection and made it upgradable again --- nullius/prototypes/entity/energy.lua | 134 ++++++++++++++------------- nullius/scripts/geothermal.lua | 4 +- 2 files changed, 74 insertions(+), 64 deletions(-) diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index d5f175e..4c88400 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -2328,7 +2328,7 @@ data:extend({ localised_description = {"entity-description.nullius-thermal-tank-1"}, icons = data.raw.item["nullius-thermal-tank-1"].icons, flags = {"placeable-neutral", "player-creation", "not-upgradable"}, - hidden = true, + hidden_in_factoriopedia = true, minable = { mining_time = 1, result = "nullius-thermal-tank-1" }, placeable_by = {item = "nullius-thermal-tank-1", count = 1}, subgroup = "heat-storage", @@ -2373,25 +2373,25 @@ data:extend({ }, } }, - working_light_picture = { - layers = { - { - filename = ENTITYPATH .. "thermaltank/thermaltank1.png", - width = 180, - height = 180, - scale = 0.73, - shift = {0.28,-0.3} - }, - { - filename = ENTITYPATH .. "thermaltank/thermaltank-shadow.png", - width = 230, - height = 180, - scale = 0.73, - shift = {0.28,-0.3}, - draw_as_shadow = true, - }, - } - }, + -- working_light_picture = { + -- layers = { + -- { + -- filename = ENTITYPATH .. "thermaltank/thermaltank1.png", + -- width = 180, + -- height = 180, + -- scale = 0.73, + -- shift = {0.28,-0.3} + -- }, + -- { + -- filename = ENTITYPATH .. "thermaltank/thermaltank-shadow.png", + -- width = 230, + -- height = 180, + -- scale = 0.73, + -- shift = {0.28,-0.3}, + -- draw_as_shadow = true, + -- }, + -- } + -- }, neighbour_bonus = 0, heat_buffer = { max_temperature = 250, @@ -2420,7 +2420,7 @@ data:extend({ localised_description = {"entity-description.nullius-thermal-tank-2"}, icons = data.raw.item["nullius-thermal-tank-2"].icons, flags = {"placeable-neutral", "player-creation", "not-upgradable"}, - hidden = true, + hidden_in_factoriopedia = true, minable = { mining_time = 1.5, result = "nullius-thermal-tank-2" }, placeable_by = {item = "nullius-thermal-tank-2", count = 1}, subgroup = "heat-storage", @@ -2465,25 +2465,25 @@ data:extend({ }, } }, - working_light_picture = { - layers = { - { - filename = ENTITYPATH .. "thermaltank/thermaltank2.png", - width = 180, - height = 180, - scale = 0.73, - shift = {0.28,-0.3} - }, - { - filename = ENTITYPATH .. "thermaltank/thermaltank-shadow.png", - width = 230, - height = 180, - scale = 0.73, - shift = {0.28,-0.3}, - draw_as_shadow = true, - }, - } - }, + -- working_light_picture = { + -- layers = { + -- { + -- filename = ENTITYPATH .. "thermaltank/thermaltank2.png", + -- width = 180, + -- height = 180, + -- scale = 0.73, + -- shift = {0.28,-0.3} + -- }, + -- { + -- filename = ENTITYPATH .. "thermaltank/thermaltank-shadow.png", + -- width = 230, + -- height = 180, + -- scale = 0.73, + -- shift = {0.28,-0.3}, + -- draw_as_shadow = true, + -- }, + -- } + -- }, neighbour_bonus = 0, heat_buffer = { max_temperature = 500, @@ -2512,7 +2512,7 @@ data:extend({ localised_description = {"entity-description.nullius-thermal-tank-3"}, icons = data.raw.item["nullius-thermal-tank-3"].icons, flags = {"placeable-neutral", "player-creation", "not-upgradable"}, - hidden = true, + hidden_in_factoriopedia = true, minable = { mining_time = 2, result = "nullius-thermal-tank-3" }, placeable_by = {item = "nullius-thermal-tank-3", count = 1}, subgroup = "heat-storage", @@ -2557,25 +2557,25 @@ data:extend({ }, } }, - working_light_picture = { - layers = { - { - filename = ENTITYPATH .. "thermaltank/thermaltank3.png", - width = 180, - height = 180, - scale = 0.73, - shift = {0.3,-0.3} - }, - { - filename = ENTITYPATH .. "thermaltank/thermaltank-shadow.png", - width = 230, - height = 180, - scale = 0.73, - shift = {0.3,-0.3}, - draw_as_shadow = true, - }, - } - }, + -- working_light_picture = { --is drawn over circuit connector + -- layers = { + -- { + -- filename = ENTITYPATH .. "thermaltank/thermaltank3.png", + -- width = 180, + -- height = 180, + -- scale = 0.73, + -- shift = {0.3,-0.3} + -- }, + -- { + -- filename = ENTITYPATH .. "thermaltank/thermaltank-shadow.png", + -- width = 230, + -- height = 180, + -- scale = 0.73, + -- shift = {0.3,-0.3}, + -- draw_as_shadow = true, + -- }, + -- } + -- }, neighbour_bonus = 0, heat_buffer = { max_temperature = 1500, @@ -2621,8 +2621,11 @@ local function thermal_tank(tier, vert) } end - tank.circuit_connector = circuit_connector_definitions["storage-tank"][1] tank.circuit_wire_max_distance = default_circuit_wire_max_distance + tank.circuit_connector = circuit_connector_definitions.create_single( + universal_connector_template, + { variation = 25, main_offset = util.by_pixel(-33.5, 15.5), shadow_offset = util.by_pixel(-33.5, 19.5), show_shadow = false } + ) tank.icons = { { @@ -2672,7 +2675,7 @@ data:extend({ localised_description = {"entity-description.nullius-thermal-tank-1"}, icons = data.raw.item["nullius-thermal-tank-1"].icons, flags = {"placeable-neutral", "player-creation", "not-upgradable", "not-deconstructable" }, - hidden = true, + hidden_in_factoriopedia = true, minable = { mining_time = 1, result = "nullius-thermal-tank-1" }, subgroup = "heat-storage", order = "ubc", @@ -2683,6 +2686,9 @@ data:extend({ { type = "fire", decrease = 100, percent = 90 }, { type = "impact", decrease = 50, percent = 80 } }, + circuit_wire_max_distance = default_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["storage-tank"], + fast_replaceable_group = "thermal-tank", two_direction_only = true, fluid_box = { @@ -2790,6 +2796,8 @@ data:extend({ max_health = 300, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + circuit_wire_max_distance = default_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["storage-tank"], resistances = { { type = "fire", decrease = 80, percent = 90 }, { type = "impact", decrease = 50, percent = 80 } @@ -2821,6 +2829,8 @@ data:extend({ max_health = 400, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + circuit_wire_max_distance = default_circuit_wire_max_distance, + circuit_connector = circuit_connector_definitions["storage-tank"], resistances = { { type = "fire", decrease = 100, percent = 90 }, { type = "impact", decrease = 60, percent = 80 } diff --git a/nullius/scripts/geothermal.lua b/nullius/scripts/geothermal.lua index a129697..c16eaef 100644 --- a/nullius/scripts/geothermal.lua +++ b/nullius/scripts/geothermal.lua @@ -204,7 +204,7 @@ function build_thermal_tank(entity, level) local position = entity.position local force = entity.force local surface = entity.surface - entity.destroy() + --entity.destroy() surface.create_entity{name = "nullius-thermal-tank-"..dirname.."-"..level, - position = position, force = force, direction = direction} + position = position, force = force, direction = direction, fast_replace = true} end From 928c54baaee90f5f930c9d5c7677f100876fb80b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 22:26:45 +0200 Subject: [PATCH 182/236] Renamed recipe for one way valve --- nullius/migrations/nullius_2.0.0.json | 4 +++- nullius/prototypes/item/plumbing.lua | 2 +- nullius/prototypes/technology.lua | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index c25e009..25fa086 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -19,7 +19,9 @@ ["nullius-filter-inserter-4", "nullius-inserter-4"], ["nullius-boxed-filter-inserter-2", "nullius-boxed-inserter-2"], ["nullius-boxed-filter-inserter-3", "nullius-boxed-inserter-3"], - ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"] + ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"], + + ["nullius-one-way-valve-1", "nullius-one-way-valve"] ], "item": [ ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], diff --git a/nullius/prototypes/item/plumbing.lua b/nullius/prototypes/item/plumbing.lua index f30918f..0432c9f 100644 --- a/nullius/prototypes/item/plumbing.lua +++ b/nullius/prototypes/item/plumbing.lua @@ -910,7 +910,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-one-way-valve-1", + name = "nullius-one-way-valve", localised_name = {"", {"entity-name.nullius-one-way-valve"}, " ", tostring(1)}, enabled = false, category = "small-crafting", diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 9abc55a..a3d09c4 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -372,7 +372,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-one-way-valve-1" + recipe = "nullius-one-way-valve" }, { type = "unlock-recipe", From 6b932180da172f97efc55e81323c45b57a24587e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 27 Aug 2025 22:36:57 +0200 Subject: [PATCH 183/236] Hid some wind turbine entities --- nullius/prototypes/entity/wind.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/nullius/prototypes/entity/wind.lua b/nullius/prototypes/entity/wind.lua index 3d872cb..2fbb366 100644 --- a/nullius/prototypes/entity/wind.lua +++ b/nullius/prototypes/entity/wind.lua @@ -119,6 +119,7 @@ for i=1,3 do placeable_by = {item = "nullius-wind-turbine-"..i, count = 1}, max_health = 800*scale, corpse = "big-remnants", + hidden_in_factoriopedia = true, resistances = { { type = "impact", decrease = 100, percent = 90 } }, From c790e9078ab877eb75fccafe674dc8747aaf5969 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 01:10:19 +0200 Subject: [PATCH 184/236] Renamed main metals ingots recipes --- nullius/migrations/nullius_2.0.0.json | 5 ++++- nullius/prototypes/item/intermediate.lua | 8 ++++---- nullius/prototypes/technology.lua | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 25fa086..3588122 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -21,7 +21,10 @@ ["nullius-boxed-filter-inserter-3", "nullius-boxed-inserter-3"], ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"], - ["nullius-one-way-valve-1", "nullius-one-way-valve"] + ["nullius-one-way-valve-1", "nullius-one-way-valve"], + ["nullius-iron-ingot-1", "nullius-iron-ingot"], + ["nullius-steel-ingot-1", "nullius-steel-ingot"], + ["nullius-aluminum-ingot-1", "nullius-aluminum-ingot"] ], "item": [ ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 521c40e..69bd044 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -1531,7 +1531,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-iron-ingot-1", + name = "nullius-iron-ingot", localised_name = {"recipe-name.nullius-iron-ingot-1"}, enabled = false, category = "dry-smelting", @@ -1638,7 +1638,7 @@ data:extend({ { type = "recipe", name = "nullius-thermite", - localised_name = {"recipe-name.nullius-aluminothermic", {"item-name.nullius-iron-ingot"}}, + localised_name = {"recipe-name.nullius-aluminothermic", {"item-name.nullius-iron-ingot"}}, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", @@ -1723,7 +1723,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-steel-ingot-1", + name = "nullius-steel-ingot", localised_name = {"recipe-name.nullius-steel-ingot-1"}, enabled = false, category = "machine-casting", @@ -4985,7 +4985,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-aluminum-ingot-1", + name = "nullius-aluminum-ingot", localised_name = {"recipe-name.nullius-aluminum-ingot-1"}, enabled = false, category = "dry-smelting", diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index a3d09c4..9154f46 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -69,7 +69,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-iron-ingot-1" + recipe = "nullius-iron-ingot" } }, unit = { @@ -963,7 +963,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-steel-ingot-1" + recipe = "nullius-steel-ingot" }, { type = "unlock-recipe", @@ -1627,7 +1627,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-aluminum-ingot-1" + recipe = "nullius-aluminum-ingot" } }, unit = { From 717c21175381ec1297cf41c49a732e3cb2caee0d Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 01:29:13 +0200 Subject: [PATCH 185/236] Renamed recipes for iron/steel/aluminum/titanium ingot/plate/rod/wire/sheet to remove factoriopedia clutter --- nullius/migrations/nullius_2.0.0.json | 20 +++++++++++++++++- nullius/prototypes/item/intermediate.lua | 26 ++++++++++++------------ nullius/prototypes/technology.lua | 24 +++++++++++----------- 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 3588122..ddf470d 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -22,9 +22,27 @@ ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"], ["nullius-one-way-valve-1", "nullius-one-way-valve"], + ["nullius-iron-ingot-1", "nullius-iron-ingot"], ["nullius-steel-ingot-1", "nullius-steel-ingot"], - ["nullius-aluminum-ingot-1", "nullius-aluminum-ingot"] + ["nullius-aluminum-ingot-1", "nullius-aluminum-ingot"], + ["nullius-titanium-ingot-1", "nullius-titanium-ingot"], + + ["nullius-iron-plate-1", "nullius-iron-plate"], + ["nullius-steel-plate-1", "nullius-steel-plate"], + ["nullius-aluminum-plate-1", "nullius-aluminum-plate"], + + ["nullius-iron-rod-1", "nullius-iron-rod"], + ["nullius-steel-rod-1", "nullius-steel-rod"], + ["nullius-aluminum-rod-1", "nullius-aluminum-rod"], + + ["nullius-iron-sheet-1", "nullius-iron-sheet"], + ["nullius-steel-sheet-1", "nullius-steel-sheet"], + ["nullius-aluminum-sheet-1", "nullius-aluminum-sheet"], + + ["nullius-iron-wire-1", "nullius-iron-wire"], + ["nullius-aluminum-wire-1", "nullius-aluminum-wire"] + ], "item": [ ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 69bd044..d2af6f2 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -3199,7 +3199,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-iron-rod-1", + name = "nullius-iron-rod", localised_name = {"item-name.nullius-iron-rod"}, enabled = false, show_amount_in_title = false, @@ -3264,7 +3264,7 @@ data:extend({ { type = "recipe", - name = "nullius-steel-rod-1", + name = "nullius-steel-rod", localised_name = {"item-name.nullius-steel-rod"}, enabled = false, show_amount_in_title = false, @@ -3327,7 +3327,7 @@ data:extend({ { type = "recipe", - name = "nullius-aluminum-rod-1", + name = "nullius-aluminum-rod", localised_name = {"item-name.nullius-aluminum-rod"}, enabled = false, show_amount_in_title = false, @@ -3450,7 +3450,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-aluminum-plate-1", + name = "nullius-aluminum-plate", localised_name = {"item-name.nullius-aluminum-plate"}, enabled = false, show_amount_in_title = false, @@ -3513,7 +3513,7 @@ data:extend({ { type = "recipe", - name = "nullius-iron-plate-1", + name = "nullius-iron-plate", localised_name = {"item-name.nullius-iron-plate"}, enabled = false, show_amount_in_title = false, @@ -3578,7 +3578,7 @@ data:extend({ { type = "recipe", - name = "nullius-steel-plate-1", + name = "nullius-steel-plate", localised_name = {"item-name.nullius-steel-plate"}, enabled = false, show_amount_in_title = false, @@ -3682,7 +3682,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-iron-sheet-1", + name = "nullius-iron-sheet", localised_name = {"item-name.nullius-iron-sheet"}, enabled = false, category = "hand-casting", @@ -3752,7 +3752,7 @@ data:extend({ { type = "recipe", - name = "nullius-steel-sheet-1", + name = "nullius-steel-sheet", localised_name = {"item-name.nullius-steel-sheet"}, enabled = false, category = "hand-casting", @@ -3822,7 +3822,7 @@ data:extend({ { type = "recipe", - name = "nullius-aluminum-sheet-1", + name = "nullius-aluminum-sheet", localised_name = {"item-name.nullius-aluminum-sheet"}, enabled = false, category = "hand-casting", @@ -4066,7 +4066,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-iron-wire-1", + name = "nullius-iron-wire", localised_name = {"item-name.nullius-iron-wire"}, enabled = false, category = "hand-casting", @@ -4137,7 +4137,7 @@ data:extend({ { type = "recipe", - name = "nullius-aluminum-wire-1", + name = "nullius-aluminum-wire", localised_name = {"item-name.nullius-aluminum-wire"}, enabled = false, category = "hand-casting", @@ -7196,8 +7196,8 @@ data:extend({ { type = "recipe", - name = "nullius-titanium-ingot-1", - localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", tostring(1)}, + name = "nullius-titanium-ingot", + localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", tostring(1)}, enabled = false, category = "ore-flotation", order = "nullius-db", diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 9154f46..f1c692d 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -125,15 +125,15 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-iron-plate-1" + recipe = "nullius-iron-plate" }, { type = "unlock-recipe", - recipe = "nullius-iron-rod-1" + recipe = "nullius-iron-rod" }, { type = "unlock-recipe", - recipe = "nullius-iron-sheet-1" + recipe = "nullius-iron-sheet" }, { type = "unlock-recipe", @@ -212,7 +212,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-iron-wire-1" + recipe = "nullius-iron-wire" }, { type = "unlock-recipe", @@ -967,7 +967,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-steel-plate-1" + recipe = "nullius-steel-plate" } }, unit = { @@ -1089,7 +1089,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-steel-rod-1" + recipe = "nullius-steel-rod" }, { type = "unlock-recipe", @@ -1097,7 +1097,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-steel-sheet-1" + recipe = "nullius-steel-sheet" }, { type = "unlock-recipe", @@ -1770,19 +1770,19 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-aluminum-plate-1" + recipe = "nullius-aluminum-plate" }, { type = "unlock-recipe", - recipe = "nullius-aluminum-rod-1" + recipe = "nullius-aluminum-rod" }, { type = "unlock-recipe", - recipe = "nullius-aluminum-sheet-1" + recipe = "nullius-aluminum-sheet" }, { type = "unlock-recipe", - recipe = "nullius-aluminum-wire-1" + recipe = "nullius-aluminum-wire" } }, unit = { @@ -4868,7 +4868,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-titanium-ingot-1" + recipe = "nullius-titanium-ingot" }, { type = "unlock-recipe", From 2a6dd6fb4ae0e77429c1f45369c5063787654aef Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 01:48:07 +0200 Subject: [PATCH 186/236] Renamed sandstone, silicon and limestone related recipes --- nullius/migrations/nullius_2.0.0.json | 12 +++++++----- nullius/prototypes/item/intermediate.lua | 10 +++++----- nullius/prototypes/technology.lua | 10 +++++----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index ddf470d..1bd6cbd 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -27,21 +27,23 @@ ["nullius-steel-ingot-1", "nullius-steel-ingot"], ["nullius-aluminum-ingot-1", "nullius-aluminum-ingot"], ["nullius-titanium-ingot-1", "nullius-titanium-ingot"], - ["nullius-iron-plate-1", "nullius-iron-plate"], ["nullius-steel-plate-1", "nullius-steel-plate"], ["nullius-aluminum-plate-1", "nullius-aluminum-plate"], - ["nullius-iron-rod-1", "nullius-iron-rod"], ["nullius-steel-rod-1", "nullius-steel-rod"], ["nullius-aluminum-rod-1", "nullius-aluminum-rod"], - ["nullius-iron-sheet-1", "nullius-iron-sheet"], ["nullius-steel-sheet-1", "nullius-steel-sheet"], ["nullius-aluminum-sheet-1", "nullius-aluminum-sheet"], - ["nullius-iron-wire-1", "nullius-iron-wire"], - ["nullius-aluminum-wire-1", "nullius-aluminum-wire"] + ["nullius-aluminum-wire-1", "nullius-aluminum-wire"], + + ["nullius-crushed-sandstone", "nullius-sand"], + ["nullius-silica-1", "nullius-silica"], + ["nullius-silicon-ingot-1", "nullius-silicon-ingot"], + ["nullius-silica-glass", "nullius-glass"], + ["nullius-crushed-limestone-1", "nullius-crushed-limestone"] ], "item": [ diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index d2af6f2..1538aea 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -923,7 +923,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-crushed-limestone-1", + name = "nullius-crushed-limestone", localised_name = {"", {"item-name.nullius-crushed-limestone"}, " ", tostring(1)}, enabled = false, icon_size = 32, @@ -1078,7 +1078,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-crushed-sandstone", + name = "nullius-sand", localised_name = {"item-name.nullius-sand"}, enabled = false, category = "hand-crushing", @@ -2720,7 +2720,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-silica-1", + name = "nullius-silica", localised_name = {"recipe-name.nullius-silica-1"}, enabled = false, category = "ore-flotation", @@ -2876,7 +2876,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-silica-glass", + name = "nullius-glass", localised_name = {"recipe-name.nullius-silica-glass"}, show_amount_in_title = false, always_show_products = true, @@ -5260,7 +5260,7 @@ data:extend({ { type = "recipe", - name = "nullius-silicon-ingot-1", + name = "nullius-silicon-ingot", localised_name = {"recipe-name.nullius-silicon-ingot-1"}, enabled = false, show_amount_in_title = false, diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index f1c692d..5cf8fa3 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -266,7 +266,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-crushed-sandstone" + recipe = "nullius-sand" }, { type = "unlock-recipe", @@ -995,7 +995,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-crushed-limestone-1" + recipe = "nullius-crushed-limestone" } }, unit = { @@ -1247,11 +1247,11 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-silica-1" + recipe = "nullius-silica" }, { type = "unlock-recipe", - recipe = "nullius-silica-glass" + recipe = "nullius-glass" } }, unit = { @@ -1673,7 +1673,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-silicon-ingot-1" + recipe = "nullius-silicon-ingot" }, { type = "unlock-recipe", From ebfeac6802cdd588f315f5da8f3570d6073ae419 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 01:52:46 +0200 Subject: [PATCH 187/236] Bumped version number in order to not break 2.0 saves for beta testers --- nullius/info.json | 2 +- nullius/migrations/nullius_2.0.0.json | 27 +------------------------- nullius/migrations/nullius_2.0.1.json | 28 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 nullius/migrations/nullius_2.0.1.json diff --git a/nullius/info.json b/nullius/info.json index ca8b9e5..323e0e8 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -1,6 +1,6 @@ { "name": "nullius", - "version": "2.0.0", + "version": "2.0.1", "factorio_version": "2.0", "title": "Nullius", "author": "Anachrony", diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index 1bd6cbd..c25e009 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -19,32 +19,7 @@ ["nullius-filter-inserter-4", "nullius-inserter-4"], ["nullius-boxed-filter-inserter-2", "nullius-boxed-inserter-2"], ["nullius-boxed-filter-inserter-3", "nullius-boxed-inserter-3"], - ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"], - - ["nullius-one-way-valve-1", "nullius-one-way-valve"], - - ["nullius-iron-ingot-1", "nullius-iron-ingot"], - ["nullius-steel-ingot-1", "nullius-steel-ingot"], - ["nullius-aluminum-ingot-1", "nullius-aluminum-ingot"], - ["nullius-titanium-ingot-1", "nullius-titanium-ingot"], - ["nullius-iron-plate-1", "nullius-iron-plate"], - ["nullius-steel-plate-1", "nullius-steel-plate"], - ["nullius-aluminum-plate-1", "nullius-aluminum-plate"], - ["nullius-iron-rod-1", "nullius-iron-rod"], - ["nullius-steel-rod-1", "nullius-steel-rod"], - ["nullius-aluminum-rod-1", "nullius-aluminum-rod"], - ["nullius-iron-sheet-1", "nullius-iron-sheet"], - ["nullius-steel-sheet-1", "nullius-steel-sheet"], - ["nullius-aluminum-sheet-1", "nullius-aluminum-sheet"], - ["nullius-iron-wire-1", "nullius-iron-wire"], - ["nullius-aluminum-wire-1", "nullius-aluminum-wire"], - - ["nullius-crushed-sandstone", "nullius-sand"], - ["nullius-silica-1", "nullius-silica"], - ["nullius-silicon-ingot-1", "nullius-silicon-ingot"], - ["nullius-silica-glass", "nullius-glass"], - ["nullius-crushed-limestone-1", "nullius-crushed-limestone"] - + ["nullius-boxed-filter-inserter-4", "nullius-boxed-inserter-4"] ], "item": [ ["nullius-box-filter-inserter-2", "nullius-box-inserter-2"], diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json new file mode 100644 index 0000000..d5b842c --- /dev/null +++ b/nullius/migrations/nullius_2.0.1.json @@ -0,0 +1,28 @@ +{ + "recipe": + [ + ["nullius-one-way-valve-1", "nullius-one-way-valve"], + + ["nullius-iron-ingot-1", "nullius-iron-ingot"], + ["nullius-steel-ingot-1", "nullius-steel-ingot"], + ["nullius-aluminum-ingot-1", "nullius-aluminum-ingot"], + ["nullius-titanium-ingot-1", "nullius-titanium-ingot"], + ["nullius-iron-plate-1", "nullius-iron-plate"], + ["nullius-steel-plate-1", "nullius-steel-plate"], + ["nullius-aluminum-plate-1", "nullius-aluminum-plate"], + ["nullius-iron-rod-1", "nullius-iron-rod"], + ["nullius-steel-rod-1", "nullius-steel-rod"], + ["nullius-aluminum-rod-1", "nullius-aluminum-rod"], + ["nullius-iron-sheet-1", "nullius-iron-sheet"], + ["nullius-steel-sheet-1", "nullius-steel-sheet"], + ["nullius-aluminum-sheet-1", "nullius-aluminum-sheet"], + ["nullius-iron-wire-1", "nullius-iron-wire"], + ["nullius-aluminum-wire-1", "nullius-aluminum-wire"], + + ["nullius-crushed-sandstone", "nullius-sand"], + ["nullius-silica-1", "nullius-silica"], + ["nullius-silicon-ingot-1", "nullius-silicon-ingot"], + ["nullius-silica-glass", "nullius-glass"], + ["nullius-crushed-limestone-1", "nullius-crushed-limestone"] + ] +} \ No newline at end of file From 82c923a3057aac75438dd419460a54287f67cf8e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 13:16:01 +0200 Subject: [PATCH 188/236] Finished renamings in metallurgical tab --- nullius/migrations/nullius_2.0.1.json | 7 ++++++- nullius/prototypes/item/intermediate.lua | 12 ++++++------ nullius/prototypes/technology.lua | 10 +++++----- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index d5b842c..ecb4de3 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -23,6 +23,11 @@ ["nullius-silica-1", "nullius-silica"], ["nullius-silicon-ingot-1", "nullius-silicon-ingot"], ["nullius-silica-glass", "nullius-glass"], - ["nullius-crushed-limestone-1", "nullius-crushed-limestone"] + ["nullius-crushed-limestone-1", "nullius-crushed-limestone"], + ["nullius-gypsum-1", "nullius-gypsum"], + ["nullius-calcium-chloride-dehydration", "nullius-calcium-chloride"], + ["nullius-cement-1", "nullius-cement"], + ["nullius-crushed-stone", "nullius-gravel"], + ["nullius-gravel-disposal", "nullius-mineral-dust"] ] } \ No newline at end of file diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 1538aea..b0ec326 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -1111,7 +1111,7 @@ data:extend({ { type = "recipe", - name = "nullius-crushed-stone", + name = "nullius-gravel", localised_name = {"item-name.nullius-gravel"}, enabled = false, icon_size = 32, @@ -1156,7 +1156,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-gravel-disposal", + name = "nullius-mineral-dust", localised_name = {"recipe-name.nullius-gravel-disposal"}, show_amount_in_title = false, always_show_products = true, @@ -2148,7 +2148,7 @@ data:extend({ { type = "recipe", - name = "nullius-gypsum-1", + name = "nullius-gypsum", localised_name = {"recipe-name.nullius-gypsum-1"}, icons = { { @@ -2434,10 +2434,10 @@ data:extend({ }, { type = "recipe", - name = "nullius-calcium-chloride-dehydration", + name = "nullius-calcium-chloride", localised_name = {"recipe-name.nullius-dehydration", {"item-name.nullius-calcium-chloride"}}, enabled = false, - no_productivity = true, + no_productivity = true, category = "distillation", order = "nullius-ic", crafting_machine_tint = { @@ -5818,7 +5818,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-cement-1", + name = "nullius-cement", localised_name = {"recipe-name.nullius-cement-1"}, enabled = false, show_amount_in_title = false, diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 5cf8fa3..080b2b9 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -270,7 +270,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-crushed-stone" + recipe = "nullius-gravel" }, { type = "unlock-recipe", @@ -1436,7 +1436,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-gravel-disposal" + recipe = "nullius-mineral-dust" }, { type = "unlock-recipe", @@ -3126,7 +3126,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-cement-1" + recipe = "nullius-cement" }, { type = "unlock-recipe", @@ -4393,7 +4393,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-gypsum-1" + recipe = "nullius-gypsum" }, { type = "unlock-recipe", @@ -4401,7 +4401,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-calcium-chloride-dehydration" + recipe = "nullius-calcium-chloride" }, { type = "unlock-recipe", From 60eb23f62b80d3fc0b9ac4e9448a37d5a4d4bcb0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 13:39:58 +0200 Subject: [PATCH 189/236] Renamed recipes for graphite and textile --- nullius/migrations/nullius_2.0.1.json | 5 ++++- nullius/prototypes/item/biology.lua | 4 ++-- nullius/prototypes/item/fluid.lua | 6 ++++-- nullius/prototypes/item/intermediate.lua | 2 +- nullius/prototypes/technology.lua | 4 ++-- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index ecb4de3..8f11c18 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -28,6 +28,9 @@ ["nullius-calcium-chloride-dehydration", "nullius-calcium-chloride"], ["nullius-cement-1", "nullius-cement"], ["nullius-crushed-stone", "nullius-gravel"], - ["nullius-gravel-disposal", "nullius-mineral-dust"] + ["nullius-gravel-disposal", "nullius-mineral-dust"], + + ["nullius-carbon-monoxide-to-graphite", "nullius-graphite"], + ["nullius-textile-1", "nullius-textile"] ] } \ No newline at end of file diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index 9d191cc..932b7ba 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -460,7 +460,7 @@ data:extend({ {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]} ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, category = "distillation", subgroup = "biology-oil", @@ -640,7 +640,7 @@ data:extend({ }, enabled = false, allow_decomposition = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, category = "nanotechnology", subgroup = "biology-bacteria", diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index ec2ec2e..723c884 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -3205,7 +3205,8 @@ data:extend({ }, { type = "recipe", - name = "nullius-carbon-monoxide-to-graphite", + name = "nullius-graphite", + localised_name = {"recipe-name.nullius-carbon-monoxide-to-graphite"}, icons = { { icon = "__base__/graphics/icons/coal-dark-background.png", @@ -3235,7 +3236,8 @@ data:extend({ results = { {type="item", name="nullius-graphite", amount=1}, {type="fluid", name="nullius-water", amount=4} - } + }, + main_product = "nullius-graphite" }, { type = "recipe", diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index b0ec326..339774f 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -7025,7 +7025,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-textile-1", + name = "nullius-textile", localised_name = {"", {"item-name.nullius-textile"}, " ", tostring(1)}, enabled = false, always_show_made_in = true, diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 080b2b9..76a5862 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -561,7 +561,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-carbon-monoxide-to-graphite" + recipe = "nullius-graphite" } }, unit = { @@ -4697,7 +4697,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-textile-1" + recipe = "nullius-textile" } }, unit = { From f9c834aa60b95240f7d9f1fce6cd524bb6f22f62 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 14:11:08 +0200 Subject: [PATCH 190/236] Renamed recipes in intermediates tab --- nullius/migrations/nullius_2.0.1.json | 11 ++++++++++- nullius/prototypes/item/fluid.lua | 12 ++++++------ nullius/prototypes/item/intermediate.lua | 6 +++--- nullius/prototypes/technology.lua | 14 +++++++------- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index 8f11c18..b4af9e3 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -31,6 +31,15 @@ ["nullius-gravel-disposal", "nullius-mineral-dust"], ["nullius-carbon-monoxide-to-graphite", "nullius-graphite"], - ["nullius-textile-1", "nullius-textile"] + ["nullius-textile-1", "nullius-textile"], + ["nullius-soda-ash-1", "nullius-soda-ash"], + ["nullius-sodium-sulfate-1", "nullius-sodium-sulfate"], + ["nullius-hydrogen-canister-1", "nullius-hydrogen-canister"], + ["nullius-geology-pack-1", "nullius-geology-pack"], + ["nullius-climatology-pack-1", "nullius-climatology-pack"], + ["nullius-mechanical-pack-1", "nullius-mechanical-pack"], + ["nullius-refractory-brick-1", "nullius-refractory-brick"] + + ] } \ No newline at end of file diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 723c884..0c2d8ec 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -1116,12 +1116,12 @@ data:extend({ }, { type = "recipe", - name = "nullius-climatology-pack-1", - localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(1)}, + name = "nullius-climatology-pack", + localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(1)}, show_amount_in_title = false, always_show_products = true, enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "nullius-water-treatment", energy_required = 60, ingredients = { @@ -1637,7 +1637,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-soda-ash-1", + name = "nullius-soda-ash", localised_name = {"recipe-name.nullius-soda-ash-1"}, enabled = false, category = "basic-chemistry", @@ -1723,7 +1723,7 @@ data:extend({ { type = "recipe", - name = "nullius-sodium-sulfate-1", + name = "nullius-sodium-sulfate", localised_name = {"recipe-name.nullius-sodium-sulfate-1"}, icons = { { @@ -5335,7 +5335,7 @@ data:extend({ { type = "recipe", - name = "nullius-hydrogen-canister-1", + name = "nullius-hydrogen-canister", localised_name = {"item-name.nullius-hydrogen-canister"}, icons = { { diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 339774f..f176e04 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -144,7 +144,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-geology-pack-1", + name = "nullius-geology-pack", localised_name = {"", {"item-name.nullius-geology-pack"}, " ", tostring(1)}, show_amount_in_title = false, always_show_products = true, @@ -246,7 +246,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-mechanical-pack-1", + name = "nullius-mechanical-pack", localised_name = {"", {"item-name.nullius-mechanical-pack"}, " ", tostring(1)}, enabled = false, always_show_made_in = true, @@ -4621,7 +4621,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-refractory-brick-1", + name = "nullius-refractory-brick", localised_name = {"", {"item-name.nullius-refractory-brick"}, " ", tostring(1)}, order = "nullius-cb", enabled = false, diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 76a5862..349e243 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -47,7 +47,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-geology-pack-1" + recipe = "nullius-geology-pack" } }, unit = { @@ -102,7 +102,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-climatology-pack-1" + recipe = "nullius-climatology-pack" } }, unit = { @@ -684,7 +684,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-mechanical-pack-1" + recipe = "nullius-mechanical-pack" } }, unit = { @@ -1407,7 +1407,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-refractory-brick-1" + recipe = "nullius-refractory-brick" }, { type = "unlock-recipe", @@ -1846,7 +1846,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-hydrogen-canister-1" + recipe = "nullius-hydrogen-canister" }, { type = "unlock-recipe", @@ -2927,7 +2927,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-soda-ash-1" + recipe = "nullius-soda-ash" } }, unit = { @@ -4310,7 +4310,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-sodium-sulfate-1" + recipe = "nullius-sodium-sulfate" }, { type = "unlock-recipe", From 4eaa7739c7e9b47bcbf3599330bc15bf02f9d2be Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 14:33:39 +0200 Subject: [PATCH 191/236] Renamed recipes in biology tab --- nullius/migrations/nullius_2.0.1.json | 13 +++++++++++-- nullius/prototypes/item/biology.lua | 24 ++++++++++++------------ nullius/prototypes/technology.lua | 20 ++++++++++---------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index b4af9e3..cefe77d 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -38,8 +38,17 @@ ["nullius-geology-pack-1", "nullius-geology-pack"], ["nullius-climatology-pack-1", "nullius-climatology-pack"], ["nullius-mechanical-pack-1", "nullius-mechanical-pack"], - ["nullius-refractory-brick-1", "nullius-refractory-brick"] - + ["nullius-refractory-brick-1", "nullius-refractory-brick"], + ["nullius-protocell-1", "nullius-protocell"], + ["nullius-bacteria-1", "nullius-bacteria"], + ["nullius-sugar-1", "nullius-sugar"], + ["nullius-wood-chipping", "nullius-wood-chip"], + ["nullius-algae-1", "nullius-algae"], + ["nullius-grass-1", "nullius-grass"], + ["nullius-tree-1", "nullius-tree"], + ["nullius-worm-1", "nullius-worm"], + ["nullius-fish-1", "nullius-fish"], + ["nullius-arthropod-1", "nullius-arthropod"] ] } \ No newline at end of file diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index 932b7ba..0589db4 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -55,7 +55,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-sugar-1", + name = "nullius-sugar", localised_name = {"", {"item-name.nullius-sugar"}, " ", tostring(1)}, icons = { { @@ -326,7 +326,7 @@ data:extend({ { type = "recipe", - name = "nullius-protocell-1", + name = "nullius-protocell", localised_name = {"", {"fluid-name.nullius-protocell"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", @@ -624,7 +624,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-bacteria-1", + name = "nullius-bacteria", localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", tostring(1)}, icons = { { @@ -1136,7 +1136,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-algae-1", + name = "nullius-algae", localised_name = {"", {"item-name.nullius-algae"}, " ", tostring(1)}, icons = { { @@ -1603,7 +1603,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-grass-1", + name = "nullius-grass", localised_name = {"", {"item-name.nullius-grass"}, " ", tostring(1)}, icons = { { @@ -2571,7 +2571,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-worm-1", + name = "nullius-worm", localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(1)}, icons = { { @@ -3146,7 +3146,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-tree-1", + name = "nullius-tree", localised_name = {"", {"item-name.nullius-tree"}, " ", tostring(1)}, icons = { { @@ -3368,7 +3368,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-wood-chipping", + name = "nullius-wood-chip", localised_name = {"recipe-name.nullius-wood-chipping"}, icons = { { @@ -3388,7 +3388,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "bio-harvesting", - subgroup = "biology-material", + subgroup = "biology-material", order = "nullius-cd", energy_required = 1, ingredients = { @@ -3401,7 +3401,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-wood-chipping", - localised_name = {"recipe-name.nullius-boxed", {"recipe-name.nullius-wood-chipping"}}, + localised_name = {"recipe-name.nullius-boxed", {"recipe-name.nullius-wood-chipping"}}, icons = { { icon = ICONPATH .. "crate.png", @@ -3825,7 +3825,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-fish-1", + name = "nullius-fish", localised_name = {"", {"item-name.nullius-fish"}, " ", tostring(1)}, icons = { { @@ -4303,7 +4303,7 @@ data:extend({ }, { type = "recipe", - name = "nullius-arthropod-1", + name = "nullius-arthropod", localised_name = {"", {"item-name.nullius-arthropod"}, " ", tostring(1)}, icons = { { diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 349e243..f178a23 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -13097,7 +13097,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-sugar-1" + recipe = "nullius-sugar" }, { type = "unlock-recipe", @@ -13407,7 +13407,7 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "nullius-protocell-1" + recipe = "nullius-protocell" }, { type = "unlock-recipe", @@ -13415,7 +13415,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-bacteria-1" + recipe = "nullius-bacteria" }, { type = "unlock-recipe", @@ -13518,7 +13518,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-algae-1" + recipe = "nullius-algae" }, { type = "unlock-recipe", @@ -13868,7 +13868,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-grass-1" + recipe = "nullius-grass" }, { type = "unlock-recipe", @@ -14199,7 +14199,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-worm-1" + recipe = "nullius-worm" }, { type = "unlock-recipe", @@ -14511,7 +14511,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-tree-1" + recipe = "nullius-tree" }, { type = "unlock-recipe", @@ -14523,7 +14523,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-wood-chipping" + recipe = "nullius-wood-chip" }, { type = "unlock-recipe", @@ -14647,7 +14647,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-fish-1" + recipe = "nullius-fish" }, { type = "unlock-recipe", @@ -14876,7 +14876,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "nullius-arthropod-1" + recipe = "nullius-arthropod" }, { type = "unlock-recipe", From 57a7595af69649eff44eb116ff30f940ef2a412a Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 16:54:59 +0200 Subject: [PATCH 192/236] Script to dynamically rename recipes -> Renamed all duplicated recipes to their vanilla counterpart in the logistics tab --- nullius/clutterpedia.lua | 66 +++++++++++++++++++++++++++ nullius/data-final-fixes.lua | 4 +- nullius/migrations/nullius_2.0.1.json | 43 ++++++++++++++++- 3 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 nullius/clutterpedia.lua diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua new file mode 100644 index 0000000..3283b77 --- /dev/null +++ b/nullius/clutterpedia.lua @@ -0,0 +1,66 @@ +local clutterpedia = {} +clutterpedia["nullius-small-chest-1"] = {name = "wooden-chest", tech = "nullius-storage-1"} +clutterpedia["nullius-small-chest-2"] = {name = "iron-chest", tech = "nullius-storage-2"} +clutterpedia["nullius-small-chest-3"] = {name = "steel-chest", tech = "nullius-storage-3"} +clutterpedia["nullius-small-storage-chest-2"] = {name = "storage-chest", tech = "nullius-distribution-4"} +clutterpedia["nullius-small-supply-chest-2"] = {name = "passive-provider-chest", tech = "nullius-distribution-4"} +clutterpedia["nullius-small-demand-chest-2"] = {name = "requester-chest", tech = "nullius-distribution-4"} +clutterpedia["nullius-small-buffer-chest-2"] = {name = "buffer-chest", tech = "nullius-distribution-4"} +clutterpedia["nullius-small-dispatch-chest-2"] ={name = "active-provider-chest", tech = "nullius-distribution-4"} +clutterpedia["nullius-inserter-1"] = {name = "inserter", tech = "nullius-actuation-1"} +clutterpedia["nullius-inserter-2"] = {name = "bob-turbo-inserter", tech = "nullius-actuation-2"} +clutterpedia["nullius-inserter-3"] = {name = "bulk-inserter", tech = "nullius-actuation-3"} +clutterpedia["nullius-inserter-4"] = {name = "bob-express-bulk-inserter", tech = "nullius-actuation-4"} +clutterpedia["nullius-conveyor-belt-1"] = {name = "transport-belt", tech = "nullius-logistics-1"} +clutterpedia["nullius-conveyor-belt-2"] = {name = "fast-transport-belt", tech = "nullius-logistics-2"} +clutterpedia["nullius-conveyor-belt-3"] = {name = "express-transport-belt", tech = "nullius-logistics-3"} +clutterpedia["nullius-conveyor-belt-4"] = {name = "bob-ultimate-transport-belt", tech = "nullius-logistics-4"} +clutterpedia["nullius-underground-belt-1"] = {name = "underground-belt", tech = "nullius-logistics-1"} +clutterpedia["nullius-underground-belt-2"] = {name = "fast-underground-belt", tech = "nullius-logistics-2"} +clutterpedia["nullius-underground-belt-3"] = {name = "express-underground-belt", tech = "nullius-logistics-3"} +clutterpedia["nullius-underground-belt-4"] = {name = "bob-ultimate-underground-belt", tech = "nullius-logistics-4"} +clutterpedia["nullius-splitter-1"] = {name = "splitter", tech = "nullius-mechanical-separation"} +clutterpedia["nullius-splitter-2"] = {name = "fast-splitter", tech = "nullius-logistics-2"} +clutterpedia["nullius-splitter-3"] = {name = "express-splitter", tech = "nullius-logistics-3"} +clutterpedia["nullius-splitter-4"] = {name = "bob-ultimate-splitter", tech = "nullius-logistics-4"} +clutterpedia["nullius-power-pole-1"] = {name = "small-electric-pole", tech = "nullius-energy-distribution-1"} +clutterpedia["nullius-power-pole-2"] = {name = "medium-electric-pole", tech = "nullius-energy-distribution-2"} +clutterpedia["nullius-pylon-1"] = {name = "big-electric-pole", tech = "nullius-energy-distribution-2"} +clutterpedia["nullius-substation-1"] = {name = "substation", tech = "nullius-energy-distribution-3"} +clutterpedia["nullius-logic-circuit"] = {name = "decider-combinator", tech = "nullius-electronics-1"} +clutterpedia["nullius-arithmetic-circuit"] = {name = "arithmetic-combinator", tech = "nullius-computation"} +clutterpedia["nullius-memory-circuit"] = {name = "constant-combinator", tech = "nullius-computation"} +clutterpedia["nullius-display-panel"] = {name = "display-panel", tech = "nullius-computation"} +clutterpedia["nullius-selector-circuit"] = {name = "selector-combinator", tech = "nullius-electronics-2"} +clutterpedia["nullius-power-switch"] = {name = "power-switch", tech = "nullius-energy-distribution-2"} +clutterpedia["nullius-antenna"] = {name = "programmable-speaker", tech = "nullius-signal-processing"} +clutterpedia["nullius-rail"] = {name = "rail", tech = "nullius-freight-transportation-1"} +clutterpedia["nullius-train-stop"] = {name = "train-stop", tech = "nullius-freight-logistics"} +clutterpedia["nullius-rail-signal"] = {name = "rail-signal", tech = "nullius-traffic-control"} +clutterpedia["nullius-chain-signal"] = {name = "rail-chain-signal", tech = "nullius-traffic-control"} + + +function generate_migrations() + local contents = "\n---- Generated migrations ----\n" + for ogRecipe, entry in pairs(clutterpedia) do + contents = contents.."[\""..ogRecipe.."\", \""..entry.name.."\"],\n" + end + log(contents) +end + +function recipe_renaming() + for ogRecipeName, entry in pairs(clutterpedia) do + local recipe = data.raw.recipe[ogRecipeName] + data.raw.recipe[ogRecipeName] = nil + recipe.name = entry.name + data:extend{recipe} + for _,effect in pairs(data.raw.technology[entry.tech].effects) do + if effect.type == "unlock-recipe" and effect.recipe == ogRecipeName then + effect.recipe = entry.name + end + end + end +end + +generate_migrations() +recipe_renaming() \ No newline at end of file diff --git a/nullius/data-final-fixes.lua b/nullius/data-final-fixes.lua index 1851400..550c1e0 100644 --- a/nullius/data-final-fixes.lua +++ b/nullius/data-final-fixes.lua @@ -9,4 +9,6 @@ for _, recipe in pairs(data.raw.recipe) do if recipe.GCKI_ignore ~= nil then recipe.GCKI_ignore = nil end -end \ No newline at end of file +end + +require("clutterpedia") \ No newline at end of file diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index cefe77d..b943ee2 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -49,6 +49,47 @@ ["nullius-tree-1", "nullius-tree"], ["nullius-worm-1", "nullius-worm"], ["nullius-fish-1", "nullius-fish"], - ["nullius-arthropod-1", "nullius-arthropod"] + ["nullius-arthropod-1", "nullius-arthropod"], + + + ["nullius-small-chest-1", "wooden-chest"], + ["nullius-small-chest-2", "iron-chest"], + ["nullius-small-chest-3", "steel-chest"], + ["nullius-small-storage-chest-2", "storage-chest"], + ["nullius-small-supply-chest-2", "passive-provider-chest"], + ["nullius-small-demand-chest-2", "requester-chest"], + ["nullius-small-buffer-chest-2", "buffer-chest"], + ["nullius-small-dispatch-chest-2", "active-provider-chest"], + ["nullius-inserter-1", "inserter"], + ["nullius-inserter-2", "bob-turbo-inserter"], + ["nullius-inserter-3", "bulk-inserter"], + ["nullius-inserter-4", "bob-express-bulk-inserter"], + ["nullius-conveyor-belt-1", "transport-belt"], + ["nullius-conveyor-belt-2", "fast-transport-belt"], + ["nullius-conveyor-belt-3", "express-transport-belt"], + ["nullius-conveyor-belt-4", "bob-ultimate-transport-belt"], + ["nullius-underground-belt-1", "underground-belt"], + ["nullius-underground-belt-2", "fast-underground-belt"], + ["nullius-underground-belt-3", "express-underground-belt"], + ["nullius-underground-belt-4", "bob-ultimate-underground-belt"], + ["nullius-splitter-1", "splitter"], + ["nullius-splitter-2", "fast-splitter"], + ["nullius-splitter-3", "express-splitter"], + ["nullius-splitter-4", "bob-ultimate-splitter"], + ["nullius-power-pole-1", "small-electric-pole"], + ["nullius-power-pole-2", "medium-electric-pole"], + ["nullius-pylon-1", "big-electric-pole"], + ["nullius-substation-1", "substation"], + ["nullius-logic-circuit", "decider-combinator"], + ["nullius-arithmetic-circuit", "arithmetic-combinator"], + ["nullius-memory-circuit", "constant-combinator"], + ["nullius-display-panel", "display-panel"], + ["nullius-selector-circuit", "selector-combinator"], + ["nullius-power-switch", "power-switch"], + ["nullius-antenna", "programmable-speaker"], + ["nullius-rail", "rail"], + ["nullius-train-stop", "train-stop"], + ["nullius-rail-signal", "rail-signal"], + ["nullius-chain-signal", "rail-chain-signal"] ] } \ No newline at end of file From 55c4789fece94c5e222ca6a3b2622432b410d303 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 18:16:23 +0200 Subject: [PATCH 193/236] Renamed more vanilla recipes --- nullius/clutterpedia.lua | 17 +++++++++++++++++ nullius/migrations/nullius_2.0.1.json | 19 ++++++++++++++++++- nullius/prototypes/item/intermediate.lua | 2 +- nullius/prototypes/item/recipe.lua | 2 +- nullius/prototypes/item/weapon.lua | 16 +++++++--------- 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index 3283b77..b5989b0 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -38,6 +38,23 @@ clutterpedia["nullius-rail"] = {name = "rail", clutterpedia["nullius-train-stop"] = {name = "train-stop", tech = "nullius-freight-logistics"} clutterpedia["nullius-rail-signal"] = {name = "rail-signal", tech = "nullius-traffic-control"} clutterpedia["nullius-chain-signal"] = {name = "rail-chain-signal", tech = "nullius-traffic-control"} +clutterpedia["nullius-iron-pipe"] = {name = "pipe", tech = "nullius-plumbing-1"} +clutterpedia["nullius-underground-pipe-1"] = {name = "pipe-to-ground", tech = "nullius-plumbing-2"} +clutterpedia["nullius-steel-pipe"] = {name = "nullius-pipe-2", tech = "nullius-plumbing-3"} --- not vanilla !! +clutterpedia["nullius-medium-tank-1"] = {name = "storage-tank", tech = "nullius-plumbing-1"} +clutterpedia["nullius-pump-3"] = {name = "pump", tech = "nullius-pumping-3"} +clutterpedia["nullius-sensor-node-1"] = {name = "radar", tech = "nullius-sensors-2"} +clutterpedia["nullius-repair-pack"] = {name = "repair-pack", tech = "nullius-maintenance"} +clutterpedia["nullius-barrel-1"] = {name = "barrel", tech = "nullius-barreling-1"} +clutterpedia["nullius-rocket-fuel"] = {name = "rocket-fuel", tech = "nullius-rocket-science-1"} +clutterpedia["nullius-insulated-wire-1"] = {name = "copper-cable", tech = "nullius-insulation-1"} +clutterpedia["nullius-stone-block"] = {name = "stone-brick", tech = "nullius-masonry-2"} +clutterpedia["nullius-concrete-1"] = {name = "concrete", tech = "nullius-concrete-1"} +clutterpedia["nullius-reinforced-concrete"] = {name = "refined-concrete", tech = "nullius-concrete-2"} +clutterpedia["nullius-wall"] = {name = "stone-wall", tech = "nullius-architecture-1"} +clutterpedia["nullius-gate"] = {name = "gate", tech = "nullius-architecture-1"} +clutterpedia["nullius-hazard-concrete"] = {name = "refined-hazard-concrete", tech = "nullius-aesthetics-2"} +clutterpedia["nullius-explosive"] = {name = "cliff-explosives", tech = "nullius-explosives-2"} function generate_migrations() diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index b943ee2..8d4a6ce 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -90,6 +90,23 @@ ["nullius-rail", "rail"], ["nullius-train-stop", "train-stop"], ["nullius-rail-signal", "rail-signal"], - ["nullius-chain-signal", "rail-chain-signal"] + ["nullius-chain-signal", "rail-chain-signal"], + ["nullius-iron-pipe", "pipe"], + ["nullius-underground-pipe-1", "pipe-to-ground"], + ["nullius-steel-pipe", "nullius-pipe-2"], + ["nullius-medium-tank-1", "storage-tank"], + ["nullius-pump-3", "pump"], + ["nullius-sensor-node-1", "radar"], + ["nullius-repair-pack", "repair-pack"], + ["nullius-barrel-1", "barrel"], + ["nullius-rocket-fuel", "rocket-fuel"], + ["nullius-insulated-wire-1", "copper-cable"], + ["nullius-stone-block", "stone-brick"], + ["nullius-concrete-1", "concrete"], + ["nullius-reinforced-concrete", "refined-concrete"], + ["nullius-wall", "stone-wall"], + ["nullius-gate", "gate"], + ["nullius-hazard-concrete", "refined-hazard-concrete"], + ["nullius-explosive", "cliff-explosives"] ] } \ No newline at end of file diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index f176e04..b546b19 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -4349,7 +4349,7 @@ data:extend({ type = "recipe", name = "nullius-insulated-wire-2", localised_name = {"", {"item-name.nullius-insulated-wire"}, " ", tostring(2)}, - icons = { + icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64, diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index 54deec3..9a7dd08 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -1254,7 +1254,7 @@ data:extend({ type = "recipe", name = "nullius-barrel-1", localised_name = {"", {"item-name.barrel"}, " ", tostring(1)}, - icons = { + icons = { { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, diff --git a/nullius/prototypes/item/weapon.lua b/nullius/prototypes/item/weapon.lua index 0eff602..c319984 100644 --- a/nullius/prototypes/item/weapon.lua +++ b/nullius/prototypes/item/weapon.lua @@ -880,7 +880,7 @@ data:extend({ type = "recipe", name = "nullius-explosive-2", localised_name = {"", {"item-name.nullius-explosive"}, " ", tostring(2)}, - icons = { + icons = { { icon = "__base__/graphics/icons/explosives.png", icon_size = 64, @@ -890,11 +890,10 @@ data:extend({ { icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-7, -7} } - }, + }, order = "nullius-xd", enabled = false, always_show_made_in = true, @@ -923,9 +922,9 @@ data:extend({ { type = "recipe", name = "nullius-boxed-explosive-2", - localised_name = {"recipe-name.nullius-boxed", + localised_name = {"recipe-name.nullius-boxed", {"", {"item-name.nullius-explosive"}, " ", tostring(2)}}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 @@ -939,11 +938,10 @@ data:extend({ { icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - - scale = 0.27, + scale = 0.27, shift = {-6, -6} } - }, + }, enabled = false, always_show_made_in = true, category = "basic-chemistry", From 42dad6a575329e676061f916fd08b3065f37fd16 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 28 Aug 2025 19:40:30 +0200 Subject: [PATCH 194/236] First attempt at renaming fluid recipes, it's a bit difficult, I don't think we can rename everything properly. Haven't done the proper migrations yet --- nullius/clutterpedia.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index b5989b0..dd750d1 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -57,6 +57,18 @@ clutterpedia["nullius-hazard-concrete"] = {name = "refined-hazard-concrete clutterpedia["nullius-explosive"] = {name = "cliff-explosives", tech = "nullius-explosives-2"} +-- Attempt at fluids renamings +clutterpedia["nullius-desalination"] = {name = "nullius-water", tech = "nullius-desalination", main_product = true} +clutterpedia["nullius-seawater-filtration"] = {name = "nullius-saline", tech = "nullius-water-filtration-1"} +clutterpedia["nullius-hydrogen-chloride-neutralization"] = {name = "nullius-brine", tech = "nullius-inorganic-chemistry-1"} +clutterpedia["nullius-air-separation-1"] = {name = "nullius-nitrogen", tech = "nullius-air-separation-1", main_product = true} +clutterpedia["nullius-residual-separation"] = {name = "nullius-argon", tech = "nullius-air-separation-2", main_product = true} +clutterpedia["nullius-carbon-dioxide-to-monoxide"] = {name = "nullius-carbon-monoxide", tech = "nullius-carbon-sequestration-2"} +clutterpedia["nullius-carbon-dioxide-to-methane"] = {name = "nullius-methane", tech = "nullius-carbon-sequestration-1"} +clutterpedia["nullius-methane-to-ethylene"] = {name = "nullius-ethylene", tech = "nullius-organic-chemistry-1"} +--clutterpedia["nullius-hydrogen-chloride-electrolysis"] = {name = "nullius-chlorine", tech = "nullius-electrolysis-3"} -- far in the tech tree + + function generate_migrations() local contents = "\n---- Generated migrations ----\n" for ogRecipe, entry in pairs(clutterpedia) do @@ -70,6 +82,9 @@ function recipe_renaming() local recipe = data.raw.recipe[ogRecipeName] data.raw.recipe[ogRecipeName] = nil recipe.name = entry.name + if entry.main_product then + recipe.main_product = entry.name + end data:extend{recipe} for _,effect in pairs(data.raw.technology[entry.tech].effects) do if effect.type == "unlock-recipe" and effect.recipe == ogRecipeName then From 2a5a7007f8cf980fca8ed2af22efba053b38eb63 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 00:20:15 +0200 Subject: [PATCH 195/236] Follow up of fluid recipes renames --- nullius/clutterpedia.lua | 34 +++++++++++++++++++++++---- nullius/migrations/nullius_2.0.1.json | 28 +++++++++++++++++++++- nullius/prototypes/item/fluid.lua | 12 +++++----- nullius/prototypes/technology.lua | 2 +- 4 files changed, 63 insertions(+), 13 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index dd750d1..84ff112 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -61,12 +61,33 @@ clutterpedia["nullius-explosive"] = {name = "cliff-explosives", clutterpedia["nullius-desalination"] = {name = "nullius-water", tech = "nullius-desalination", main_product = true} clutterpedia["nullius-seawater-filtration"] = {name = "nullius-saline", tech = "nullius-water-filtration-1"} clutterpedia["nullius-hydrogen-chloride-neutralization"] = {name = "nullius-brine", tech = "nullius-inorganic-chemistry-1"} -clutterpedia["nullius-air-separation-1"] = {name = "nullius-nitrogen", tech = "nullius-air-separation-1", main_product = true} -clutterpedia["nullius-residual-separation"] = {name = "nullius-argon", tech = "nullius-air-separation-2", main_product = true} +clutterpedia["nullius-air-separation-1"] = {name = "nullius-nitrogen", tech = "nullius-air-separation-1", main_product = true, locale = true} +clutterpedia["nullius-residual-separation"] = {name = "nullius-argon", tech = "nullius-air-separation-2", main_product = true, locale = true} clutterpedia["nullius-carbon-dioxide-to-monoxide"] = {name = "nullius-carbon-monoxide", tech = "nullius-carbon-sequestration-2"} -clutterpedia["nullius-carbon-dioxide-to-methane"] = {name = "nullius-methane", tech = "nullius-carbon-sequestration-1"} -clutterpedia["nullius-methane-to-ethylene"] = {name = "nullius-ethylene", tech = "nullius-organic-chemistry-1"} ---clutterpedia["nullius-hydrogen-chloride-electrolysis"] = {name = "nullius-chlorine", tech = "nullius-electrolysis-3"} -- far in the tech tree +clutterpedia["nullius-carbon-dioxide-to-methane"] = {name = "nullius-methane", tech = "nullius-carbon-sequestration-1", locale = true} +clutterpedia["nullius-methane-to-ethylene"] = {name = "nullius-ethylene", tech = "nullius-organic-chemistry-1", locale = true} + +clutterpedia["nullius-hydrogen-chloride-electrolysis"] = {name = "nullius-chlorine", tech = "nullius-electrolysis-3", main_product = true, locale = true} +clutterpedia["nullius-salt-electrolysis"] = {name = "nullius-sodium", tech = "nullius-sodium-processing"} +clutterpedia["nullius-brine-electrolysis"] = {name = "nullius-sodium-hydroxide", tech = "nullius-electrolysis-2", main_product = true, locale = true} +clutterpedia["nullius-trace-separation"] = {name = "nullius-helium", tech = "nullius-air-separation-3", main_product = true, locale = true} + +clutterpedia["nullius-volcanic-separation-1"] = {name = "nullius-sulfur-dioxide", tech = "nullius-sulfur-processing-1", main_product = true} +clutterpedia["nullius-volcanic-separation-2"] = {name = "nullius-acid-boric", tech = "nullius-sulfur-processing-2", main_product = true} +clutterpedia["nullius-volcanic-separation-3"] = {name = "nullius-trace-gas", tech = "nullius-volcanism-2", main_product = true} + +clutterpedia["nullius-air-separation-2"] = {name = "nullius-residual-gas", tech = "nullius-air-separation-2", main_product = true, locale = true} +clutterpedia["nullius-calcium-chloride-1"] = {name = "nullius-calcium-chloride-solution",tech = "nullius-limestone-processing-2"} +clutterpedia["nullius-hydrogen-combustion-1"] = {name = "nullius-steam", tech = "nullius-energy-storage-1", main_product = true} +clutterpedia["nullius-sand-disposal"] = {name = "nullius-wastewater", tech = "nullius-waste-management"} +clutterpedia["nullius-wastewater-filtration"] = {name = "nullius-sludge", tech = "nullius-water-filtration-3", main_product = true} + +clutterpedia["nullius-water-electrolysis"] = {name = "nullius-hydrogen", tech = "nullius-electrolysis-2", main_product = true, locale = true} +clutterpedia["nullius-oxygen-separation"] = {name = "nullius-oxygen", tech = "nullius-air-separation-5", main_product = true, locale = true} + +clutterpedia["nullius-dust-disposal-1"] = {name = "nullius-carbon-dioxide", tech = "nullius-waste-management", main_product = true} -- that would change the main product from sludge!! +--clutterpedia["nullius-air-filtration"] = {name = "nullius-air", tech = "nullius-air-filtration-1"} +--clutterpedia["nullius-salination"] = {name = "nullius-seawater", tech = "nullius-sodium-processing", main_product = true} -- seawater is a fixed recipe for intakes ! function generate_migrations() @@ -85,6 +106,9 @@ function recipe_renaming() if entry.main_product then recipe.main_product = entry.name end + if entry.locale then -- or I could manually set it the original recipe definition + recipe.localised_name = {"recipe-name."..ogRecipeName} + end data:extend{recipe} for _,effect in pairs(data.raw.technology[entry.tech].effects) do if effect.type == "unlock-recipe" and effect.recipe == ogRecipeName then diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index 8d4a6ce..2d456d3 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -107,6 +107,32 @@ ["nullius-wall", "stone-wall"], ["nullius-gate", "gate"], ["nullius-hazard-concrete", "refined-hazard-concrete"], - ["nullius-explosive", "cliff-explosives"] + ["nullius-explosive", "cliff-explosives"], + + + ["nullius-desalination", "nullius-water"], + ["nullius-seawater-filtration", "nullius-saline"], + ["nullius-hydrogen-chloride-neutralization", "nullius-brine"], + ["nullius-air-separation-1", "nullius-nitrogen"], + ["nullius-residual-separation", "nullius-argon"], + ["nullius-carbon-dioxide-to-monoxide", "nullius-carbon-monoxide"], + ["nullius-carbon-dioxide-to-methane", "nullius-methane"], + ["nullius-methane-to-ethylene", "nullius-ethylene"], + ["nullius-hydrogen-chloride-electrolysis", "nullius-chlorine"], + ["nullius-salt-electrolysis", "nullius-sodium"], + ["nullius-brine-electrolysis", "nullius-sodium-hydroxide"], + ["nullius-trace-separation", "nullius-helium"], + ["nullius-volcanic-separation-1", "nullius-sulfur-dioxide"], + ["nullius-volcanic-separation-2", "nullius-acid-boric"], + ["nullius-volcanic-separation-3", "nullius-trace-gas"], + ["nullius-air-separation-2", "nullius-residual-gas"], + ["nullius-calcium-chloride-1", "nullius-calcium-chloride-solution"], + ["nullius-hydrogen-combustion-1", "nullius-steam"], + ["nullius-sand-disposal", "nullius-wastewater"], + ["nullius-wastewater-filtration", "nullius-sludge"], + ["nullius-water-electrolysis", "nullius-hydrogen"], + ["nullius-oxygen-separation", "nullius-oxygen"], + ["nullius-dust-disposal-1", "nullius-carbon-dioxide"] + ] } \ No newline at end of file diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 0c2d8ec..26484ec 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -1963,7 +1963,7 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "nullius-water-treatment", subgroup = "waste-management", order = "nullius-eb", @@ -2594,7 +2594,7 @@ data:extend({ results = { {type="item", name="nullius-salt", amount=18}, {type="item", name="nullius-lithium-chloride", amount=1}, - {type="item", name="nullius-calcium-chloride", amount=1}, + {type="item", name="nullius-calcium-chloride", amount=1}, {type="fluid", name="nullius-saline", amount=120}, {type="fluid", name="nullius-steam", amount=200} }, @@ -2785,7 +2785,7 @@ data:extend({ category = "distillation", subgroup = "air-filtration", order = "nullius-cob", - crafting_machine_tint = { primary = data.raw.fluid["nullius-nitrogen"].flow_color }, + crafting_machine_tint = { primary = data.raw.fluid["nullius-nitrogen"].flow_color }, energy_required = 4, ingredients = { {type="fluid", name="nullius-air", amount=400} @@ -2958,7 +2958,7 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "distillation", subgroup = "inorganic-chemistry", order = "nullius-eb", @@ -2984,7 +2984,7 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "distillation", subgroup = "inorganic-chemistry", order = "nullius-ec", @@ -3034,7 +3034,7 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "distillation", subgroup = "inorganic-chemistry", order = "nullius-ed", diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index f178a23..9f9a637 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -15243,7 +15243,7 @@ data:extend({ type = "technology", name = "nullius-air-separation-5", order = "nullius-gj", - icons = data.raw.recipe["nullius-oxygen-separation"].icons, + icons = data.raw.recipe["nullius-oxygen-separation"].icons, effects = { { type = "unlock-recipe", From 5532a8e5f51605bd0bd9baeb4af494279536b625 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 17:10:55 +0200 Subject: [PATCH 196/236] Finishing touches: lamp, methanol canister, stone, android-1 renames --- nullius/clutterpedia.lua | 5 +++++ nullius/migrations/nullius_2.0.1.json | 9 +++++++++ nullius/prototypes/entity/logistics.lua | 1 + nullius/prototypes/item/drone.lua | 19 ++++++++++++------- nullius/prototypes/item/fluid.lua | 2 +- nullius/prototypes/override_final_only.lua | 2 +- nullius/scripts/body.lua | 3 ++- 7 files changed, 31 insertions(+), 10 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index 84ff112..603aaa0 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -55,6 +55,11 @@ clutterpedia["nullius-wall"] = {name = "stone-wall", clutterpedia["nullius-gate"] = {name = "gate", tech = "nullius-architecture-1"} clutterpedia["nullius-hazard-concrete"] = {name = "refined-hazard-concrete", tech = "nullius-aesthetics-2"} clutterpedia["nullius-explosive"] = {name = "cliff-explosives", tech = "nullius-explosives-2"} +clutterpedia["nullius-lamp-1a"] = {name = "small-lamp", tech = "nullius-illumination-1"} +clutterpedia["nullius-stone-recovery"] = {name = "stone", tech = "nullius-waste-reclamation"} +clutterpedia["nullius-methanol-canister-1"] = {name = "processed-fuel", tech = "nullius-hydrocarbon-combustion-2", main_product = true} -- not vanilla, comes from aai-industry + +clutterpedia["nullius-android-1"] = {name = "character", tech = "nullius-artificial-intelligence-1"} -- don't forget to also rename the item nullius-android-1 in item/drone.lua AND the item migration ! And in script/body.lua !! -- Attempt at fluids renamings diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index 2d456d3..0fba74e 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -108,6 +108,11 @@ ["nullius-gate", "gate"], ["nullius-hazard-concrete", "refined-hazard-concrete"], ["nullius-explosive", "cliff-explosives"], + ["nullius-lamp-1a", "small-lamp"], + ["nullius-stone-recovery", "stone"], + ["nullius-methanol-canister-1", "processed-fuel"], + + ["nullius-android-1", "character"], ["nullius-desalination", "nullius-water"], @@ -134,5 +139,9 @@ ["nullius-oxygen-separation", "nullius-oxygen"], ["nullius-dust-disposal-1", "nullius-carbon-dioxide"] + ], + + "item":[ + ["nullius-android-1", "character"] ] } \ No newline at end of file diff --git a/nullius/prototypes/entity/logistics.lua b/nullius/prototypes/entity/logistics.lua index 1dc08ec..5c97952 100644 --- a/nullius/prototypes/entity/logistics.lua +++ b/nullius/prototypes/entity/logistics.lua @@ -618,6 +618,7 @@ data:extend({ flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.3, result = "small-lamp"}, max_health = 100, + hidden_in_factoriopedia = true, fast_replaceable_group = "lamp", next_upgrade = "nullius-lamp-2", corpse = "lamp-remnants", diff --git a/nullius/prototypes/item/drone.lua b/nullius/prototypes/item/drone.lua index 05f9bb3..7684299 100644 --- a/nullius/prototypes/item/drone.lua +++ b/nullius/prototypes/item/drone.lua @@ -842,7 +842,8 @@ data:extend({ }, { type = "item", - name = "nullius-android-1", + --name = "nullius-android-1", + name = "character", localised_name = {"", {"item-name.nullius-android"}, " ", tostring(1)}, localised_description = {"item-description.nullius-android"}, icons = {{ @@ -886,14 +887,15 @@ data:extend({ {type = "item", name = "nullius-large-cargo-pod-2", amount = 2} }, results = { - {type="item", name="nullius-android-1", amount = 1} + --{type="item", name="nullius-android-1", amount = 1} + {type="item", name="character", amount = 1} } }, { type = "recipe", name = "nullius-legacy-android-1", enabled = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, always_show_made_in = true, @@ -911,7 +913,8 @@ data:extend({ {type = "item", name = "bob-express-bulk-inserter", amount = 4} }, results = { - {type="item", name="nullius-android-1", amount = 1} + --{type="item", name="nullius-android-1", amount = 1} + {type="item", name="character", amount = 1} } }, { @@ -922,7 +925,8 @@ data:extend({ category = "nanotechnology", energy_required = 400, ingredients = { - {type = "item", name = "nullius-android-1", amount = 1}, + --{type = "item", name = "nullius-android-1", amount = 1}, + {type = "item", name = "character", amount = 1}, {type = "item", name = "nullius-chassis-5", amount = 1}, {type = "item", name = "nullius-construction-bot-4", amount = 2}, {type = "item", name = "nullius-leg-augmentation-3", amount = 1}, @@ -938,14 +942,15 @@ data:extend({ type = "recipe", name = "nullius-legacy-android-2", enabled = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, always_show_made_in = true, category = "nanotechnology", energy_required = 400, ingredients = { - {type = "item", name = "nullius-android-1", amount = 1}, + --{type = "item", name = "nullius-android-1", amount = 1}, + {type = "item", name = "character", amount = 1}, {type = "item", name = "nullius-chassis-5", amount = 1}, {type = "item", name = "nullius-construction-bot-4", amount = 2}, {type = "item", name = "nullius-leg-augmentation-3", amount = 1}, diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 26484ec..36a39cb 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -7538,7 +7538,7 @@ data:extend({ allow_as_intermediate = false, allow_decomposition = false, category = "ore-flotation", - subgroup = "ore-recovery", + subgroup = "ore-recovery", order = "nullius-of", energy_required = 30, ingredients = { diff --git a/nullius/prototypes/override_final_only.lua b/nullius/prototypes/override_final_only.lua index d22aea9..c7202db 100644 --- a/nullius/prototypes/override_final_only.lua +++ b/nullius/prototypes/override_final_only.lua @@ -32,4 +32,4 @@ for _,character in pairs(data.raw["character"]) do (character.name ~= "nullius-android-2")) then character.hidden = true end -end +end \ No newline at end of file diff --git a/nullius/scripts/body.lua b/nullius/scripts/body.lua index e22c368..0e23e35 100644 --- a/nullius/scripts/body.lua +++ b/nullius/scripts/body.lua @@ -2,7 +2,8 @@ function add_chart_tag(player, character) if ((player == nil) or (character == nil)) then return end - local icon = "nullius-android-1" + --local icon = "nullius-android-1" + local icon = "character" if (character.name == "nullius-android-2") then icon = "nullius-android-2" end From 150dd4951348e14811a09b094a1cc1cb82260f78 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 17:27:01 +0200 Subject: [PATCH 197/236] Changed order for green and red wire, protocell, changed order and subgroup for bacteria so that they appear in a better order in factoriopedia --- nullius/prototypes/category.lua | 12 ++++++++++++ nullius/prototypes/item/biology.lua | 2 +- nullius/prototypes/item/fluid.lua | 6 ++++-- nullius/prototypes/override.lua | 4 ++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index a86fbc3..d04c938 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -1077,6 +1077,12 @@ data:extend({ name = "fill-biochemistry", group = "barreling", }, + { + type = "item-subgroup", + order = "fd", + name = "fill-biology-bacteria", + group = "barreling", + }, { type = "item-subgroup", order = "g", @@ -1132,6 +1138,12 @@ data:extend({ name = "empty-biochemistry", group = "unbarreling", }, + { + type = "item-subgroup", + order = "ed", + name = "empty-biology-bacteria", + group = "unbarreling", + }, { type = "item-subgroup", order = "f", diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index 0589db4..0787951 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -363,7 +363,7 @@ data:extend({ }, enabled = false, category = "nanotechnology", - order = "nullius-fc", + order = "nullius-h", energy_required = 8, ingredients = { {type="fluid", name="nullius-bacteria", amount=12}, diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 36a39cb..b09e620 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -621,8 +621,10 @@ data:extend({ icon = ICONPATH .. "bacteria.png", icon_size = 64 }}, - subgroup = "biochemistry", - order = "nullius-i", + --subgroup = "biochemistry", + --order = "nullius-i", + subgroup = "biology-bacteria", + order = "nullius-ca", base_color = {r = 0.8, g = 0.5, b = 0.3}, flow_color = {r = 0.8, g = 0.5, b = 0.3}, heat_capacity = "0.08kJ", diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 4760ceb..e80db50 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -28,8 +28,8 @@ data.raw.item["stone"].subgroup = "masonry-material" data.raw.item["stone"].order = "nullius-k" data.raw.item["stone"].stack_size = 50 -data.raw.item["nullius-red-wire"].order = "nullius-c" -data.raw.item["nullius-green-wire"].order = "nullius-d" +data.raw.item["nullius-red-wire"].order = "nullius-ca" +data.raw.item["nullius-green-wire"].order = "nullius-ca" data.raw.item["power-switch"].order = "nullius-h" data.raw["power-switch"]["power-switch"].localised_description = {"", {"entity-description.power-switch"}, {"entity-description.nullius-power-switch", From e5f35cd9d91a45b7242846ddbc72f7f7ce988fa6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 17:39:31 +0200 Subject: [PATCH 198/236] Removed nullius-landing-pad item -> use base game item instead --- nullius/prototypes/item/buildings.lua | 24 +++++++++++++----------- nullius/prototypes/override.lua | 5 ++++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/nullius/prototypes/item/buildings.lua b/nullius/prototypes/item/buildings.lua index ad00ff6..92a4859 100644 --- a/nullius/prototypes/item/buildings.lua +++ b/nullius/prototypes/item/buildings.lua @@ -3578,20 +3578,21 @@ data:extend({ } }, - { - type = "item", - name = "nullius-landing-pad", - icon = "__base__/graphics/icons/cargo-landing-pad.png", - icon_size = 64, + -- { + -- type = "item", -- removed, using base game item instead + -- name = "nullius-landing-pad", + -- icon = "__base__/graphics/icons/cargo-landing-pad.png", + -- icon_size = 64, - subgroup = "space", - order = "nullius-c", - place_result = "cargo-landing-pad", - stack_size = 1 - }, + -- subgroup = "space", + -- order = "nullius-c", + -- place_result = "cargo-landing-pad", + -- stack_size = 1 + -- }, { type = "recipe", name = "nullius-landing-pad", + localised_name = {"item-name.nullius-landing-pad"}, enabled = false, always_show_made_in = true, category = "huge-crafting", @@ -3614,7 +3615,8 @@ data:extend({ --{type="item", name="nullius-armor-plate", amount=50}, --unlocked too late }, results = { - {type = "item", name = "nullius-landing-pad", amount = 1} + --{type = "item", name = "nullius-landing-pad", amount = 1} + {type = "item", name = "cargo-landing-pad", amount = 1} } }, diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 4760ceb..07d76d8 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -970,7 +970,6 @@ if settings.startup["nullius-hide-void-alt"].value then end data.raw["utility-constants"]["default"].max_fluid_flow = 500 -data.raw["cargo-landing-pad"]["cargo-landing-pad"].hidden_in_factoriopedia = true data.raw["artillery-flare"]["artillery-flare"].shot_category = "artillery-shell" --regular remote will only fire artillery shells data.raw["custom-input"]["give-artillery-targeting-remote"].enabled = false @@ -993,6 +992,10 @@ for _, sc in pairs(data.raw.shortcut) do end data.raw["cargo-landing-pad"]["cargo-landing-pad"].localised_name = {"item-name.nullius-landing-pad"} +--data.raw["cargo-landing-pad"]["cargo-landing-pad"].hidden_in_factoriopedia = true +data.raw.item["cargo-landing-pad"].subgroup = "space" +data.raw.item["cargo-landing-pad"].order = "nullius-c" + data.raw["inserter"]["inserter"].filter_count = 0 data.raw["offshore-pump"]["offshore-pump"] = nil From a6730926ca5a0bee7b31d4b201a7a0a0e26d7f2e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 18:03:34 +0200 Subject: [PATCH 199/236] Changed nullius-lamp-1 entity to small-lamp --- nullius/migrations/nullius_2.0.0.json | 3 ++- nullius/prototypes/override.lua | 17 +++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/nullius/migrations/nullius_2.0.0.json b/nullius/migrations/nullius_2.0.0.json index c25e009..d767a8a 100644 --- a/nullius/migrations/nullius_2.0.0.json +++ b/nullius/migrations/nullius_2.0.0.json @@ -36,7 +36,8 @@ ["nullius-priority-valve","nullius-legacy-priority-valve"], ["nullius-one-way-valve","nullius-legacy-one-way-valve"], ["nullius-top-up-valve","nullius-legacy-top-up-valve"], - ["nullius-relief-valve","nullius-legacy-relief-valve"] + ["nullius-relief-valve","nullius-legacy-relief-valve"], + ["nullius-lamp-1", "small-lamp"] ], "technology": [ ["nullius-SNTD-nixie-tubes-basic", "nullius-reinforced-nixie-tubes-basic"], diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 07d76d8..1c60a08 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -82,19 +82,24 @@ data.raw["programmable-speaker"]["programmable-speaker"].energy_source = { data.raw["programmable-speaker"]["programmable-speaker"].energy_usage_per_tick = "250W" data.raw["programmable-speaker"]["programmable-speaker"].minable.mining_time = 1 -data.raw["lamp"]["small-lamp"].localised_name = {"entity-name.nullius-lamp-1"} data.raw.item["small-lamp"].localised_name = {"entity-name.nullius-lamp-1"} data.raw.item["small-lamp"].subgroup = "railway" data.raw.item["small-lamp"].order = "nullius-bb" -data.raw.item["small-lamp"].place_result = "nullius-lamp-1" -data.raw["lamp"]["small-lamp"].placeable_by = {item = "small-lamp", count = 1} -data.raw["lamp"]["small-lamp"].minable.mining_time = 0.3 +--data.raw.item["small-lamp"].place_result = "nullius-lamp-1" data.raw.item["small-lamp"].icon = nil data.raw.item["small-lamp"].icons = {{icon = ENTICONPATH .. "lamp1.png", icon_size = 64}} label_icon("small-lamp", 1, "yellow") -data.raw["lamp"]["small-lamp"].icon = nil -data.raw["lamp"]["small-lamp"].icons = data.raw.item["small-lamp"].icons + +-- data.raw["lamp"]["small-lamp"].localised_name = {"entity-name.nullius-lamp-1"} +-- data.raw["lamp"]["small-lamp"].placeable_by = {item = "small-lamp", count = 1} +-- data.raw["lamp"]["small-lamp"].minable.mining_time = 0.3 +-- data.raw["lamp"]["small-lamp"].icon = nil +-- data.raw["lamp"]["small-lamp"].icons = data.raw.item["small-lamp"].icons + +data.raw["lamp"]["small-lamp"] = data.raw["lamp"]["nullius-lamp-1"] -- rename nullius-lamp-1 to small-lamp (better to follow the same pattern as everything else (helps with factoriopedia clutter)) +data.raw["lamp"]["nullius-lamp-1"] = nil +data.raw["lamp"]["small-lamp"].name = "small-lamp" data.raw.item["stone-wall"].stack_size = 200 data.raw.item["stone-wall"].subgroup = "concrete" From 952fb815a8253eb9adb3d03021161805df71f99e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 18:12:37 +0200 Subject: [PATCH 200/236] Renaming nullius-landing-pad --- nullius/clutterpedia.lua | 1 + nullius/migrations/nullius_2.0.1.json | 1 + 2 files changed, 2 insertions(+) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index 603aaa0..ae3c9a0 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -58,6 +58,7 @@ clutterpedia["nullius-explosive"] = {name = "cliff-explosives", clutterpedia["nullius-lamp-1a"] = {name = "small-lamp", tech = "nullius-illumination-1"} clutterpedia["nullius-stone-recovery"] = {name = "stone", tech = "nullius-waste-reclamation"} clutterpedia["nullius-methanol-canister-1"] = {name = "processed-fuel", tech = "nullius-hydrocarbon-combustion-2", main_product = true} -- not vanilla, comes from aai-industry +clutterpedia["nullius-landing-pad"] = {name = "cargo-landing-pad", tech = "nullius-rocket-science-2"} clutterpedia["nullius-android-1"] = {name = "character", tech = "nullius-artificial-intelligence-1"} -- don't forget to also rename the item nullius-android-1 in item/drone.lua AND the item migration ! And in script/body.lua !! diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index 0fba74e..f92673e 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -111,6 +111,7 @@ ["nullius-lamp-1a", "small-lamp"], ["nullius-stone-recovery", "stone"], ["nullius-methanol-canister-1", "processed-fuel"], + ["nullius-landing-pad", "cargo-landing-pad"], ["nullius-android-1", "character"], From 0da17ac9976f8dc259ea922a0a992a7be2f34944 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 19:01:49 +0200 Subject: [PATCH 201/236] Fixed bug when using prod coprocessors --- nullius/scripts/equipment.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nullius/scripts/equipment.lua b/nullius/scripts/equipment.lua index 12dabcd..2d3bda7 100644 --- a/nullius/scripts/equipment.lua +++ b/nullius/scripts/equipment.lua @@ -479,7 +479,7 @@ script.on_event(defines.events.on_player_crafted_item, local num = math.floor(odds) if ((odds - num) > math.random()) then num = num + 1 end if (num >= 1) then - if recipe.prototype.allow_productivity then + if recipe.prototype.allowed_effects["productivity"] then player.insert({name=event.item_stack.name, count=num}) end end From c35608109ac6e9ab1f9fe0aa39cc392237c236c7 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 29 Aug 2025 22:32:56 +0200 Subject: [PATCH 202/236] Suggestions from eggplantade on discord --- nullius/clutterpedia.lua | 24 ++++++++++++------------ nullius/migrations/nullius_2.0.1.json | 15 ++------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index ae3c9a0..cd24295 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -73,25 +73,25 @@ clutterpedia["nullius-carbon-dioxide-to-monoxide"] = {name = "nullius-car clutterpedia["nullius-carbon-dioxide-to-methane"] = {name = "nullius-methane", tech = "nullius-carbon-sequestration-1", locale = true} clutterpedia["nullius-methane-to-ethylene"] = {name = "nullius-ethylene", tech = "nullius-organic-chemistry-1", locale = true} -clutterpedia["nullius-hydrogen-chloride-electrolysis"] = {name = "nullius-chlorine", tech = "nullius-electrolysis-3", main_product = true, locale = true} +--clutterpedia["nullius-hydrogen-chloride-electrolysis"] = {name = "nullius-chlorine", tech = "nullius-electrolysis-3", main_product = true, locale = true} clutterpedia["nullius-salt-electrolysis"] = {name = "nullius-sodium", tech = "nullius-sodium-processing"} -clutterpedia["nullius-brine-electrolysis"] = {name = "nullius-sodium-hydroxide", tech = "nullius-electrolysis-2", main_product = true, locale = true} +--clutterpedia["nullius-brine-electrolysis"] = {name = "nullius-sodium-hydroxide", tech = "nullius-electrolysis-2", main_product = true, locale = true} clutterpedia["nullius-trace-separation"] = {name = "nullius-helium", tech = "nullius-air-separation-3", main_product = true, locale = true} -clutterpedia["nullius-volcanic-separation-1"] = {name = "nullius-sulfur-dioxide", tech = "nullius-sulfur-processing-1", main_product = true} -clutterpedia["nullius-volcanic-separation-2"] = {name = "nullius-acid-boric", tech = "nullius-sulfur-processing-2", main_product = true} -clutterpedia["nullius-volcanic-separation-3"] = {name = "nullius-trace-gas", tech = "nullius-volcanism-2", main_product = true} +--clutterpedia["nullius-volcanic-separation-1"] = {name = "nullius-sulfur-dioxide", tech = "nullius-sulfur-processing-1", main_product = true} +--clutterpedia["nullius-volcanic-separation-2"] = {name = "nullius-acid-boric", tech = "nullius-sulfur-processing-2", main_product = true} +--clutterpedia["nullius-volcanic-separation-3"] = {name = "nullius-trace-gas", tech = "nullius-volcanism-2", main_product = true} -clutterpedia["nullius-air-separation-2"] = {name = "nullius-residual-gas", tech = "nullius-air-separation-2", main_product = true, locale = true} +--clutterpedia["nullius-air-separation-2"] = {name = "nullius-residual-gas", tech = "nullius-air-separation-2", main_product = true, locale = true} clutterpedia["nullius-calcium-chloride-1"] = {name = "nullius-calcium-chloride-solution",tech = "nullius-limestone-processing-2"} -clutterpedia["nullius-hydrogen-combustion-1"] = {name = "nullius-steam", tech = "nullius-energy-storage-1", main_product = true} -clutterpedia["nullius-sand-disposal"] = {name = "nullius-wastewater", tech = "nullius-waste-management"} -clutterpedia["nullius-wastewater-filtration"] = {name = "nullius-sludge", tech = "nullius-water-filtration-3", main_product = true} +--clutterpedia["nullius-hydrogen-combustion-1"] = {name = "nullius-steam", tech = "nullius-energy-storage-1", main_product = true} +--clutterpedia["nullius-sand-disposal"] = {name = "nullius-wastewater", tech = "nullius-waste-management"} +--clutterpedia["nullius-wastewater-filtration"] = {name = "nullius-sludge", tech = "nullius-water-filtration-3", main_product = true} -clutterpedia["nullius-water-electrolysis"] = {name = "nullius-hydrogen", tech = "nullius-electrolysis-2", main_product = true, locale = true} -clutterpedia["nullius-oxygen-separation"] = {name = "nullius-oxygen", tech = "nullius-air-separation-5", main_product = true, locale = true} +--clutterpedia["nullius-water-electrolysis"] = {name = "nullius-hydrogen", tech = "nullius-electrolysis-2", main_product = true, locale = true} +--clutterpedia["nullius-oxygen-separation"] = {name = "nullius-oxygen", tech = "nullius-air-separation-5", main_product = true, locale = true} -clutterpedia["nullius-dust-disposal-1"] = {name = "nullius-carbon-dioxide", tech = "nullius-waste-management", main_product = true} -- that would change the main product from sludge!! +--clutterpedia["nullius-dust-disposal-1"] = {name = "nullius-carbon-dioxide", tech = "nullius-waste-management", main_product = true} -- that would change the main product from sludge!! --clutterpedia["nullius-air-filtration"] = {name = "nullius-air", tech = "nullius-air-filtration-1"} --clutterpedia["nullius-salination"] = {name = "nullius-seawater", tech = "nullius-sodium-processing", main_product = true} -- seawater is a fixed recipe for intakes ! diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index f92673e..207326b 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -124,21 +124,10 @@ ["nullius-carbon-dioxide-to-monoxide", "nullius-carbon-monoxide"], ["nullius-carbon-dioxide-to-methane", "nullius-methane"], ["nullius-methane-to-ethylene", "nullius-ethylene"], - ["nullius-hydrogen-chloride-electrolysis", "nullius-chlorine"], + ["nullius-salt-electrolysis", "nullius-sodium"], - ["nullius-brine-electrolysis", "nullius-sodium-hydroxide"], ["nullius-trace-separation", "nullius-helium"], - ["nullius-volcanic-separation-1", "nullius-sulfur-dioxide"], - ["nullius-volcanic-separation-2", "nullius-acid-boric"], - ["nullius-volcanic-separation-3", "nullius-trace-gas"], - ["nullius-air-separation-2", "nullius-residual-gas"], - ["nullius-calcium-chloride-1", "nullius-calcium-chloride-solution"], - ["nullius-hydrogen-combustion-1", "nullius-steam"], - ["nullius-sand-disposal", "nullius-wastewater"], - ["nullius-wastewater-filtration", "nullius-sludge"], - ["nullius-water-electrolysis", "nullius-hydrogen"], - ["nullius-oxygen-separation", "nullius-oxygen"], - ["nullius-dust-disposal-1", "nullius-carbon-dioxide"] + ["nullius-calcium-chloride-1", "nullius-calcium-chloride-solution"] ], From cf3ff7ca30a5eff500a7bfcfa1063ffe3e673552 Mon Sep 17 00:00:00 2001 From: Chris Rodrigues <1834111+cirodrig@users.noreply.github.com> Date: Fri, 29 Aug 2025 22:33:20 -0700 Subject: [PATCH 203/236] Factoriopedia rows for priority variants of buildings --- nullius/prototypes/category.lua | 30 +++++++++++++++++++++++++ nullius/prototypes/entity/chemistry.lua | 6 +++++ nullius/prototypes/entity/energy.lua | 6 +++++ nullius/prototypes/entity/turbine.lua | 1 + 4 files changed, 43 insertions(+) diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index a86fbc3..31c09f0 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -766,6 +766,18 @@ data:extend({ group = "chemistry", order = "hc" }, + { + type = "item-subgroup", + name = "electrolyzer-mode-priority", + group = "chemistry", + order = "hcm" + }, + { + type = "item-subgroup", + name = "electrolyzer-mode-surge", + group = "chemistry", + order = "hcn" + }, { type = "item-subgroup", name = "energy-storage", @@ -778,6 +790,24 @@ data:extend({ group = "chemistry", order = "he" }, + { + type = "item-subgroup", + name = "energy-backup-mode-backup", + group = "chemistry", + order = "hea" + }, + { + type = "item-subgroup", + name = "energy-backup-mode-standard", + group = "chemistry", + order = "heb" + }, + { + type = "item-subgroup", + name = "energy-backup-mode-exhaust", + group = "chemistry", + order = "hec" + }, { type = "item-subgroup", name = "prioritization", diff --git a/nullius/prototypes/entity/chemistry.lua b/nullius/prototypes/entity/chemistry.lua index b79966d..c89a851 100644 --- a/nullius/prototypes/entity/chemistry.lua +++ b/nullius/prototypes/entity/chemistry.lua @@ -1236,6 +1236,7 @@ data:extend({ order = data.raw.item["nullius-electrolyzer-1"].order .. "d", localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, + subgroup = "electrolyzer-mode-surge", flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1, result = "nullius-electrolyzer-1"}, placeable_by = {item = "nullius-electrolyzer-1", count = 1}, @@ -1358,6 +1359,7 @@ data:extend({ order = data.raw.item["nullius-electrolyzer-1"].order .. "b", localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, + subgroup = "electrolyzer-mode-priority", flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1, result = "nullius-electrolyzer-1"}, placeable_by = {item = "nullius-electrolyzer-1", count = 1}, @@ -1444,6 +1446,7 @@ data:extend({ order = data.raw.item["nullius-electrolyzer-2"].order .. "d", localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, + subgroup = "electrolyzer-mode-surge", flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, placeable_by = {item = "nullius-electrolyzer-2", count = 1}, @@ -1562,6 +1565,7 @@ data:extend({ order = data.raw.item["nullius-electrolyzer-2"].order .. "b", localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, + subgroup = "electrolyzer-mode-priority", flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 1.5, result = "nullius-electrolyzer-2"}, placeable_by = {item = "nullius-electrolyzer-2", count = 1}, @@ -1647,6 +1651,7 @@ data:extend({ order = data.raw.item["nullius-electrolyzer-3"].order .. "d", localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-electrolyzer"}}, + subgroup = "electrolyzer-mode-surge", flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, placeable_by = {item = "nullius-electrolyzer-3", count = 1}, @@ -1760,6 +1765,7 @@ data:extend({ order = data.raw.item["nullius-electrolyzer-3"].order .. "b", localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-electrolyzer"}}, + subgroup = "electrolyzer-mode-priority", flags = {"placeable-neutral","player-creation"}, minable = {mining_time = 2, result = "nullius-electrolyzer-3"}, placeable_by = {item = "nullius-electrolyzer-3", count = 1}, diff --git a/nullius/prototypes/entity/energy.lua b/nullius/prototypes/entity/energy.lua index 4c88400..b9d0132 100644 --- a/nullius/prototypes/entity/energy.lua +++ b/nullius/prototypes/entity/energy.lua @@ -973,6 +973,7 @@ data:extend({ }}, localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-compressor"}}, + subgroup = "electrolyzer-mode-surge", flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-compressor-1"}, placeable_by = {item = "nullius-compressor-1", count = 1}, @@ -1129,6 +1130,7 @@ data:extend({ }}, localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-compressor"}}, + subgroup = "electrolyzer-mode-priority", flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 0.8, result = "nullius-compressor-1"}, placeable_by = {item = "nullius-compressor-1", count = 1}, @@ -1261,6 +1263,7 @@ data:extend({ }}, localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-compressor"}}, + subgroup = "electrolyzer-mode-surge", flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-compressor-2"}, placeable_by = {item = "nullius-compressor-2", count = 1}, @@ -1410,6 +1413,7 @@ data:extend({ }}, localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-compressor"}}, + subgroup = "electrolyzer-mode-priority", flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.2, result = "nullius-compressor-2"}, placeable_by = {item = "nullius-compressor-2", count = 1}, @@ -1507,6 +1511,7 @@ data:extend({ }}, localised_description = {"entity-description.nullius-surge", {"entity-description.nullius-compressor"}}, + subgroup = "electrolyzer-mode-surge", flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-compressor-3"}, placeable_by = {item = "nullius-compressor-3", count = 1}, @@ -1653,6 +1658,7 @@ data:extend({ }}, localised_description = {"entity-description.nullius-priority", {"entity-description.nullius-compressor"}}, + subgroup = "electrolyzer-mode-priority", flags = {"placeable-neutral", "player-creation"}, minable = {mining_time = 1.6, result = "nullius-compressor-3"}, placeable_by = {item = "nullius-compressor-3", count = 1}, diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 3dc37b4..588878f 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -124,6 +124,7 @@ local function finish_furnace(furnace, generator, overlay, {"entity-description.nullius-turbine-" .. openness}, {"entity-description.nullius-turbine-" .. priority}}} furnace.order = data.raw.item[furnace.minable.result].order .. suborder + furnace.subgroup = "energy-backup-mode-" .. priority generator.name = "nullius-turbine-generator-" .. suffix generator.localised_name = furnace.localised_name generator.localised_description = furnace.localised_description From 747060fdef6c344e7eff1749504a915e8ed9fbc6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 30 Aug 2025 16:26:39 +0200 Subject: [PATCH 204/236] Changed fluidboxes of turbines --- nullius/prototypes/entity/turbine.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/nullius/prototypes/entity/turbine.lua b/nullius/prototypes/entity/turbine.lua index 3dc37b4..1b8bfb0 100644 --- a/nullius/prototypes/entity/turbine.lua +++ b/nullius/prototypes/entity/turbine.lua @@ -151,7 +151,7 @@ local function turbine_variants(tier, furnacecb, generatorob, furnaceob.placeable_by.item = "nullius-turbine-open-" .. tier furnaceob.crafting_categories = {"turbine-open"} furnaceob.fluid_boxes[3] = nil - furnaceob.fluid_boxes[1].volume = 500 + furnaceob.fluid_boxes[1].volume = 1000 furnaceob.fluid_boxes[1].pipe_connections = { { flow_direction = "input-output", position = {0, 2}, direction = defines.direction.south }, { flow_direction = "input-output", position = {0, -2}, direction = defines.direction.north } @@ -246,7 +246,7 @@ local furnace1cb = { production_type = "input", pipe_connections = {{ flow_direction = "input-output", position = {0, -2}, direction = defines.direction.north }}, pipe_covers = pipecoverspictures(), - volume = 500, + volume = 1000, secondary_draw_orders = { north = -1 } }, { @@ -262,7 +262,7 @@ local furnace1cb = { production_type = "output", pipe_connections = {{ flow_direction = "output", position = {0, 2}, direction = defines.direction.south }}, pipe_covers = pipecoverspictures(), - volume = 500, + volume = 2000, secondary_draw_orders = { north = -1 } } } @@ -273,18 +273,18 @@ furnace2cb.minable = {mining_time = 1.2, result = "nullius-turbine-closed-2"} furnace2cb.placeable_by = {item = "nullius-turbine-closed-2", count = 1} furnace2cb.max_health = 400 furnace2cb.crafting_speed = 2.4 -furnace2cb.fluid_boxes[1].volume = 500 +furnace2cb.fluid_boxes[1].volume = 1000 furnace2cb.fluid_boxes[2].volume = 500 -furnace2cb.fluid_boxes[3].volume = 500 +furnace2cb.fluid_boxes[3].volume = 2000 local furnace3cb = util.table.deepcopy(furnace1cb) furnace3cb.minable = {mining_time = 1.6, result = "nullius-turbine-closed-3"} furnace3cb.placeable_by = {item = "nullius-turbine-closed-3", count = 1} furnace3cb.max_health = 500 furnace3cb.crafting_speed = 5.4 -furnace3cb.fluid_boxes[1].volume = 500 +furnace3cb.fluid_boxes[1].volume = 1000 furnace3cb.fluid_boxes[2].volume = 500 -furnace3cb.fluid_boxes[3].volume = 500 +furnace3cb.fluid_boxes[3].volume = 2000 local generator1ob = { From eff24eb05c2a1912214901d95f80334a6bcb3e17 Mon Sep 17 00:00:00 2001 From: Chris Rodrigues <1834111+cirodrig@users.noreply.github.com> Date: Sat, 30 Aug 2025 12:49:12 -0700 Subject: [PATCH 205/236] Re-layout air filtration --- nullius/clutterpedia.lua | 10 ++++----- nullius/prototypes/category.lua | 6 +++++ nullius/prototypes/entity/plumbing.lua | 6 ++--- nullius/prototypes/item/fluid.lua | 22 +++++++++---------- nullius/prototypes/item/module_limitation.lua | 2 +- nullius/prototypes/resource.lua | 2 +- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index cd24295..f837a77 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -67,8 +67,8 @@ clutterpedia["nullius-android-1"] = {name = "character", clutterpedia["nullius-desalination"] = {name = "nullius-water", tech = "nullius-desalination", main_product = true} clutterpedia["nullius-seawater-filtration"] = {name = "nullius-saline", tech = "nullius-water-filtration-1"} clutterpedia["nullius-hydrogen-chloride-neutralization"] = {name = "nullius-brine", tech = "nullius-inorganic-chemistry-1"} -clutterpedia["nullius-air-separation-1"] = {name = "nullius-nitrogen", tech = "nullius-air-separation-1", main_product = true, locale = true} -clutterpedia["nullius-residual-separation"] = {name = "nullius-argon", tech = "nullius-air-separation-2", main_product = true, locale = true} +--clutterpedia["nullius-air-separation-1"] = {name = "nullius-nitrogen", tech = "nullius-air-separation-1", main_product = true, locale = true} +--clutterpedia["nullius-residual-separation"] = {name = "nullius-argon", tech = "nullius-air-separation-2", main_product = true, locale = true} clutterpedia["nullius-carbon-dioxide-to-monoxide"] = {name = "nullius-carbon-monoxide", tech = "nullius-carbon-sequestration-2"} clutterpedia["nullius-carbon-dioxide-to-methane"] = {name = "nullius-methane", tech = "nullius-carbon-sequestration-1", locale = true} clutterpedia["nullius-methane-to-ethylene"] = {name = "nullius-ethylene", tech = "nullius-organic-chemistry-1", locale = true} @@ -76,7 +76,7 @@ clutterpedia["nullius-methane-to-ethylene"] = {name = "nullius-eth --clutterpedia["nullius-hydrogen-chloride-electrolysis"] = {name = "nullius-chlorine", tech = "nullius-electrolysis-3", main_product = true, locale = true} clutterpedia["nullius-salt-electrolysis"] = {name = "nullius-sodium", tech = "nullius-sodium-processing"} --clutterpedia["nullius-brine-electrolysis"] = {name = "nullius-sodium-hydroxide", tech = "nullius-electrolysis-2", main_product = true, locale = true} -clutterpedia["nullius-trace-separation"] = {name = "nullius-helium", tech = "nullius-air-separation-3", main_product = true, locale = true} +--clutterpedia["nullius-trace-separation"] = {name = "nullius-helium", tech = "nullius-air-separation-3", main_product = true, locale = true} --clutterpedia["nullius-volcanic-separation-1"] = {name = "nullius-sulfur-dioxide", tech = "nullius-sulfur-processing-1", main_product = true} --clutterpedia["nullius-volcanic-separation-2"] = {name = "nullius-acid-boric", tech = "nullius-sulfur-processing-2", main_product = true} @@ -92,7 +92,7 @@ clutterpedia["nullius-calcium-chloride-1"] = {name = "nullius-cal --clutterpedia["nullius-oxygen-separation"] = {name = "nullius-oxygen", tech = "nullius-air-separation-5", main_product = true, locale = true} --clutterpedia["nullius-dust-disposal-1"] = {name = "nullius-carbon-dioxide", tech = "nullius-waste-management", main_product = true} -- that would change the main product from sludge!! ---clutterpedia["nullius-air-filtration"] = {name = "nullius-air", tech = "nullius-air-filtration-1"} +clutterpedia["nullius-air-filtration"] = {name = "nullius-air", tech = "nullius-air-filtration-1"} --clutterpedia["nullius-salination"] = {name = "nullius-seawater", tech = "nullius-sodium-processing", main_product = true} -- seawater is a fixed recipe for intakes ! @@ -125,4 +125,4 @@ function recipe_renaming() end generate_migrations() -recipe_renaming() \ No newline at end of file +recipe_renaming() diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index d04c938..5c244c3 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -895,6 +895,12 @@ data:extend({ name = "air-filtration", group = "fluids", }, + { + type = "item-subgroup", + order = "ca", + name = "air-filtration-recipe", + group = "fluids", + }, { type = "item-subgroup", order = "db", diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index ac624ee..faf519c 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -1082,7 +1082,7 @@ data:extend({ flags = {"placeable-neutral", "player-creation"}, crafting_categories = {"air-filtration"}, crafting_speed = 1, - fixed_recipe = "nullius-air-filtration", + fixed_recipe = "nullius-air", energy_source = { type = "electric", usage_priority = "secondary-input", @@ -1173,7 +1173,7 @@ data:extend({ flags = {"placeable-neutral", "player-creation"}, crafting_categories = {"air-filtration"}, crafting_speed = 3, - fixed_recipe = "nullius-air-filtration", + fixed_recipe = "nullius-air", energy_source = { type = "electric", usage_priority = "secondary-input", @@ -1261,7 +1261,7 @@ data:extend({ flags = {"placeable-neutral", "player-creation"}, crafting_categories = {"air-filtration"}, crafting_speed = 8, - fixed_recipe = "nullius-air-filtration", + fixed_recipe = "nullius-air", energy_source = { type = "electric", usage_priority = "secondary-input", diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index b09e620..613e328 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -1879,7 +1879,7 @@ data:extend({ enabled = true, hide_from_player_crafting = true, category = "air-filtration", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-bb", energy_required = 3, ingredients = {}, @@ -2711,7 +2711,7 @@ data:extend({ enabled = false, allow_decomposition = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-cb", crafting_machine_tint = { primary = data.raw.fluid["nullius-air"].flow_color }, energy_required = 1, @@ -2735,7 +2735,7 @@ data:extend({ enabled = false, allow_decomposition = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-cc", crafting_machine_tint = { primary = {r = 62, g = 154, b = 247} }, energy_required = 1, @@ -2760,7 +2760,7 @@ data:extend({ enabled = false, allow_decomposition = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-cd", crafting_machine_tint = { primary = {r = 62, g = 154, b = 247} }, energy_required = 2, @@ -2785,7 +2785,7 @@ data:extend({ enabled = false, allow_decomposition = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-cob", crafting_machine_tint = { primary = data.raw.fluid["nullius-nitrogen"].flow_color }, energy_required = 4, @@ -2810,7 +2810,7 @@ data:extend({ enabled = false, allow_decomposition = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-coc", crafting_machine_tint = { primary = data.raw.fluid["nullius-compressed-nitrogen"].flow_color }, energy_required = 3, @@ -2835,7 +2835,7 @@ data:extend({ allow_decomposition = false, allow_as_intermediate = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-cr", crafting_machine_tint = { primary = {r = 77, g = 160, b = 244} }, energy_required = 1, @@ -2861,7 +2861,7 @@ data:extend({ enabled = false, allow_as_intermediate = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-db", crafting_machine_tint = { primary = data.raw.fluid["nullius-residual-gas"].flow_color }, energy_required = 5, @@ -2886,7 +2886,7 @@ data:extend({ enabled = false, allow_as_intermediate = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-dc", crafting_machine_tint = { primary = data.raw.fluid["nullius-residual-gas"].flow_color }, energy_required = 10, @@ -2911,7 +2911,7 @@ data:extend({ enabled = false, allow_as_intermediate = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-eb", crafting_machine_tint = { primary = data.raw.fluid["nullius-trace-gas"].flow_color }, energy_required = 2, @@ -2936,7 +2936,7 @@ data:extend({ enabled = false, allow_as_intermediate = false, category = "distillation", - subgroup = "air-filtration", + subgroup = "air-filtration-recipe", order = "nullius-ec", crafting_machine_tint = { primary = data.raw.fluid["nullius-trace-gas"].flow_color }, energy_required = 10, diff --git a/nullius/prototypes/item/module_limitation.lua b/nullius/prototypes/item/module_limitation.lua index ec6273c..f4c43ba 100644 --- a/nullius/prototypes/item/module_limitation.lua +++ b/nullius/prototypes/item/module_limitation.lua @@ -8,7 +8,7 @@ nullius_non_productivity_categories = { ["nullius-power-sink"] = true, ["nullius-barrel"] = true, ["nullius-unbarrel"] = true, - ["air-filtration"] = true, + ["air-filtration-recipe"] = true, ["compression"] = true, ["decompression"] = true, ["water-pumping"] = true, diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index a70ac0e..888cbae 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -312,7 +312,7 @@ data:extend({ flags = {"placeable-neutral"}, category = "basic-fluid", - subgroup = "air-filtration", + subgroup = "mineable-fluids", infinite = true, highlight = true, minimum = 75000, From 46f2889dd956bdf999599d4e74e7a2a686da7a74 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 30 Aug 2025 22:11:40 +0200 Subject: [PATCH 206/236] Fixed crash in checkpoints --- nullius/scripts/checkpoint.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nullius/scripts/checkpoint.lua b/nullius/scripts/checkpoint.lua index 6323cd2..429507b 100644 --- a/nullius/scripts/checkpoint.lua +++ b/nullius/scripts/checkpoint.lua @@ -87,7 +87,7 @@ local checkpoint_data = { { CHK_BUILD, STT_NET, 4, {{"nullius-relay-construction-2"}} }}, ["large-tank"] = {{ CHK_BUILD, STT_NET, 4, {{"nullius-large-tank-2"}} }}, ["substation"] = {{ CHK_BUILD, STT_NET, 4, {{"nullius-substation-2"}} }}, - ["logistics-2"] = {{ CHK_BUILD, STT_NET, 40, {{"stack-inserter"}} }, + ["logistics-2"] = {{ CHK_BUILD, STT_NET, 40, {{"bulk-inserter"}} }, { CHK_BUILD, STT_NET, 40, {{"express-underground-belt"}} }}, ["lab-2"] = {{ CHK_BUILD, STT_NET, 10, {{"nullius-lab-2"}} }}, ["productivity-module"] = {{ CHK_ITEM, STT_PRODUCE, 50, {{"nullius-productivity-module-1"}} }}, From f72c70b32b42d3b2694d50144b0a1c01eb7661bd Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 30 Aug 2025 22:18:40 +0200 Subject: [PATCH 207/236] Added missing migrations --- nullius/migrations/nullius_2.0.1.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index 207326b..98b3602 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -119,15 +119,13 @@ ["nullius-desalination", "nullius-water"], ["nullius-seawater-filtration", "nullius-saline"], ["nullius-hydrogen-chloride-neutralization", "nullius-brine"], - ["nullius-air-separation-1", "nullius-nitrogen"], - ["nullius-residual-separation", "nullius-argon"], ["nullius-carbon-dioxide-to-monoxide", "nullius-carbon-monoxide"], ["nullius-carbon-dioxide-to-methane", "nullius-methane"], ["nullius-methane-to-ethylene", "nullius-ethylene"], ["nullius-salt-electrolysis", "nullius-sodium"], - ["nullius-trace-separation", "nullius-helium"], - ["nullius-calcium-chloride-1", "nullius-calcium-chloride-solution"] + ["nullius-calcium-chloride-1", "nullius-calcium-chloride-solution"], + ["nullius-air-filtration", "nullius-air"] ], From 99ad88ff1e8b07f696caa11696de89402b704eb9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 31 Aug 2025 16:20:38 +0200 Subject: [PATCH 208/236] Updated changelog (wip) --- nullius/changelog_wip.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index abc7080..3a3ec9a 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -1,5 +1,29 @@ changelog in construction --------------------------------------------------------------------------------------------------- +Version: 2.0.1 +Date: 2025 + Changes: + -Renamed a lot of recipe's internal names in order to merge them with their products in factoriopedia + Comments: + Here is the list of renames I was unsure of, in the end I did not do most of them, but I keep a record of the ideas: (also see the commented lines in clutterpedia.lua) + -wastewater -> sand disposal (does it make sense to have one main recipe though ?? + -air -> nullius-air-filtration (have to rename the fixed recipe for air filters) + -seawater -> salination (have to rename the fixed recipe for air filters) + -sludge -> wastewater filtration/dust disolution + -carbon dioxide -> oxygenated air separation ?/dust disolution sulfuric(that would changes the main_product of the original recipe) + -hydrogen -> water electrolysis + -oxygen -> oxygenated air separation/steam electrolysis + -steam -> hydrogen combustion + -calcium chloride solution -> calcium chloride 1 + -residual gas -> air separation 2 + -sulfur dioxide -> volcanic separation 1 + -boric acid -> volcanic separation 2 + -trace gas -> volcanic separation 3 + -sodium hydroxide -> brine electrolysis + -sodium -> salt electrolysis + -chlorine -> hydrogen chloride electrolysis + -helium -> trace separation +--------------------------------------------------------------------------------------------------- Version: 2.0.0 Date: 2025 Features: From 2d5d989089cfc6a228ffc4d2dbbd32ae38cde558 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 2 Sep 2025 14:51:11 +0200 Subject: [PATCH 209/236] Added small patch to prevent previously hidden techs to remain hidden if they become included in nullius --- nullius/scripts/startup.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nullius/scripts/startup.lua b/nullius/scripts/startup.lua index 50695d4..9142139 100644 --- a/nullius/scripts/startup.lua +++ b/nullius/scripts/startup.lua @@ -106,6 +106,9 @@ local function init_tech(force) if ((string.sub(tech.name, 1, 8) ~= "nullius-") and (string.sub(tech.order, 1, 8) ~= "nullius-")) then tech.enabled = false + elseif not tech.enabled then + log("Re enabling tech: " .. tech.name) + tech.enabled = true end end From f0e9553be8b148eaad45fa3f1d905f347bc33b27 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 2 Sep 2025 17:04:20 +0200 Subject: [PATCH 210/236] Fixed brick recipe icons --- nullius/prototypes/item/recipe.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index 54deec3..17e1a1a 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -53,8 +53,8 @@ data:extend({ { icon = "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-3.png", tint = {0.898, 0.773, 0.688}, - icon_size = 32, - scale = 0.5, + icon_size = 64, + scale = 0.25, shift = {-12, -12} } }, @@ -87,8 +87,8 @@ data:extend({ { icon = "__angelsrefininggraphics__/graphics/icons/angels-ore6/angels-ore6-2.png", tint = {0.690, 0.611, 0.427}, - icon_size = 32, - scale = 0.5, + icon_size = 64, + scale = 0.25, shift = {-12, -12} } }, From 9c6aa0ea1833943e8df74c35f7907209ad3aa956 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 2 Sep 2025 20:46:29 +0200 Subject: [PATCH 211/236] Added renames for mods --- nullius/clutterpedia.lua | 186 +++++++++++++++++++++++++- nullius/migrations/nullius_2.0.1.json | 114 +++++++++++++++- 2 files changed, 296 insertions(+), 4 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index f837a77..12459e4 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -96,6 +96,180 @@ clutterpedia["nullius-air-filtration"] = {name = "nullius-air --clutterpedia["nullius-salination"] = {name = "nullius-seawater", tech = "nullius-sodium-processing", main_product = true} -- seawater is a fixed recipe for intakes ! +---------------------------------------------------- Mods ---------------------------------------------------- +if mods["elevated-rails"] then + clutterpedia["nullius-rail-support"] = {name = "rail-support", tech = "nullius-elevated-rails"} + clutterpedia["nullius-rail-ramp"] = {name = "rail-ramp", tech = "nullius-elevated-rails"} +end +if mods["LogisticTrainNetwork"] then + clutterpedia["nullius-logistic-train-stop"] = {name = "logistic-train-stop", tech = "nullius-logistic-train-network"} +end +if mods["LTN_Combinator_Modernized"] then + clutterpedia["nullius-ltn-combinator"] = {name = "ltn-combinator", tech = {"nullius-logistic-train-network","nullius-traffic-control"}} +end +if mods["aai-signal-transmission"] then + clutterpedia["nullius-aai-signal-sender"] = {name = "aai-signal-sender", tech = "nullius-aai-signal-transmission"} + clutterpedia["nullius-aai-signal-receiver"] = {name = "aai-signal-receiver", tech = "nullius-aai-signal-transmission"} +end +if mods["Factorissimo2"] or mods["factorissimo-2-notnotmelon"] then + clutterpedia["nullius-factory-1"] = {name = "factory-1", tech = "factory-architecture-t1"} + clutterpedia["nullius-factory-2"] = {name = "factory-2", tech = "factory-architecture-t2"} + clutterpedia["nullius-factory-3"] = {name = "factory-3", tech = "factory-architecture-t3"} + if mods["factorissimo-2-notnotmelon"] then + clutterpedia["nullius-factory-circuit-connector"] = {name = "factory-circuit-connector", tech = "factory-connection-type-circuit"} + else + clutterpedia["nullius-factory-requester-chest"] = {name = "factory-requester-chest", tech = "factory-requester-chest"} + clutterpedia["nullius-factory-input-pipe"] = {name = "factory-input-pipe", tech = "factory-connection-type-fluid"} + clutterpedia["nullius-factory-output-pipe"] = {name = "factory-output-pipe", tech = "factory-connection-type-fluid"} + clutterpedia["nullius-factory-circuit-input"] = {name = "factory-circuit-input", tech = "factory-connection-type-circuit"} + clutterpedia["nullius-factory-circuit-output"] = {name = "factory-circuit-output", tech = "factory-connection-type-circuit"} + end +end +if mods["aai-loaders"] then + clutterpedia["nullius-loader-1"] = {name = "aai-basic-loader", tech = "nullius-loader-1"} + clutterpedia["nullius-loader-2"] = {name = "aai-loader", tech = "nullius-loader-2"} + clutterpedia["nullius-loader-3"] = {name = "aai-fast-loader", tech = "nullius-loader-3"} + clutterpedia["nullius-loader-4"] = {name = "aai-express-loader", tech = "nullius-loader-4"} + clutterpedia["nullius-loader-5"] = {name = "aai-ultimate-loader", tech = "nullius-loader-5"} +end +if mods["train-pubsub"] then + clutterpedia["nullius-train-publisher"] = {name = "train-publisher", tech = "train-manager"} + clutterpedia["nullius-subscriber-train-stop"] = {name = "subscriber-train-stop", tech = "train-manager"} + clutterpedia["nullius-publisher-train-stop"] = {name = "publisher-train-stop", tech = "train-manager"} + clutterpedia["nullius-train-config"] = {name = "train-config", tech = "train-manager"} +end +if mods["Teleporters"] then + clutterpedia["nullius-teleporter"] = {name = "teleporter", tech = "teleporter"} +end +if mods["jetpack"] then + clutterpedia["nullius-jetpack-1"] = {name = "jetpack-1", tech = "nullius-jetpack-1"} + clutterpedia["nullius-jetpack-2"] = {name = "jetpack-2", tech = "nullius-jetpack-2"} + clutterpedia["nullius-jetpack-3"] = {name = "jetpack-3", tech = "nullius-jetpack-3"} + clutterpedia["nullius-jetpack-4"] = {name = "jetpack-4", tech = "nullius-jetpack-4"} +end +if mods["underground-pipe-pack"] then + clutterpedia["nullius-surface-two-way-junction-1"] = {name = "one-to-one-forward-t2-pipe", tech = "advanced-underground-piping"} + clutterpedia["nullius-surface-three-way-junction-1"] = {name = "one-to-two-perpendicular-t2-pipe", tech = "advanced-underground-piping"} + clutterpedia["nullius-surface-four-way-junction-1"] = {name = "one-to-three-forward-t2-pipe", tech = "advanced-underground-piping"} + clutterpedia["nullius-underground-straight-junction-1"] = {name = "underground-i-t2-pipe", tech = "advanced-underground-piping"} + clutterpedia["nullius-underground-elbow-junction-1"] = {name = "underground-L-t2-pipe", tech = "advanced-underground-piping"} + clutterpedia["nullius-underground-three-way-junction-1"] = {name = "underground-t-t2-pipe", tech = "advanced-underground-piping"} + clutterpedia["nullius-adjustable-relief-valve"] = {name = "80-overflow-valve", tech = "advanced-underground-piping"} + clutterpedia["nullius-adjustable-top-up-valve"] = {name = "80-top-up-valve", tech = "advanced-underground-piping"} + clutterpedia["nullius-surface-two-way-junction-2"] = {name = "one-to-one-forward-t3-pipe", tech = "advanced-underground-piping-t2"} + clutterpedia["nullius-surface-three-way-junction-2"] = {name = "one-to-two-perpendicular-t3-pipe", tech = "advanced-underground-piping-t2"} + clutterpedia["nullius-surface-four-way-junction-2"] = {name = "one-to-three-forward-t3-pipe", tech = "advanced-underground-piping-t2"} + clutterpedia["nullius-underground-straight-junction-2"] = {name = "underground-i-t3-pipe", tech = "advanced-underground-piping-t2"} + clutterpedia["nullius-underground-elbow-junction-2"] = {name = "underground-L-t3-pipe", tech = "advanced-underground-piping-t2"} + clutterpedia["nullius-underground-three-way-junction-2"] = {name = "underground-t-t3-pipe", tech = "advanced-underground-piping-t2"} + clutterpedia["nullius-surface-two-way-junction-3"] = {name = "one-to-one-forward-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-surface-three-way-junction-3"] = {name = "one-to-two-perpendicular-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-surface-four-way-junction-3"] = {name = "one-to-three-forward-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-surface-five-way-junction-3"] = {name = "one-to-four-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-underground-straight-junction-3"] = {name = "underground-i-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-underground-elbow-junction-3"] = {name = "underground-L-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-underground-three-way-junction-3"] = {name = "underground-t-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-underground-four-way-junction-3"] = {name = "underground-cross-pipe", tech = "advanced-underground-piping-t3"} + clutterpedia["nullius-underground-pump"] = {name = "underground-mini-pump", tech = "advanced-underground-piping-t3"} +end +if mods["Warehousing"] then + clutterpedia["nullius-storehouse"] = {name = "storehouse-basic", tech = "nullius-warehousing-1"} + clutterpedia["nullius-warehouse"] = {name = "warehouse-basic", tech = "nullius-warehousing-2"} + clutterpedia["nullius-warehouse-passive-provider"] = {name = "warehouse-passive-provider", tech = "nullius-warehousing-3"} + clutterpedia["nullius-warehouse-storage"] = {name = "warehouse-storage", tech = "nullius-warehousing-3"} + clutterpedia["nullius-warehouse-requester"] = {name = "warehouse-requester", tech = "nullius-warehousing-3"} + clutterpedia["nullius-storehouse-passive-provider"] = {name = "storehouse-passive-provider", tech = "nullius-warehousing-3"} + clutterpedia["nullius-storehouse-storage"] = {name = "storehouse-storage", tech = "nullius-warehousing-3"} + clutterpedia["nullius-storehouse-requester"] = {name = "storehouse-requester", tech = "nullius-warehousing-3"} + clutterpedia["nullius-warehouse-buffer"] = {name = "warehouse-buffer", tech = "nullius-warehousing-4"} + clutterpedia["nullius-warehouse-active-provider"] = {name = "warehouse-active-provider", tech = "nullius-warehousing-4"} + clutterpedia["nullius-storehouse-buffer"] = {name = "storehouse-buffer", tech = "nullius-warehousing-4"} + clutterpedia["nullius-storehouse-active-provider"] = {name = "storehouse-active-provider", tech = "nullius-warehousing-4"} +end +if mods["botReplacer"] then + clutterpedia["nullius-bot-upgrade-chest"] = {name = "logistic-chest-botUpgrader", tech = "nullius-logistic-robot-2"} +end +if mods["railway-motor-car"] then + clutterpedia["nullius-railway-motorcar-1"] = {name = "railway-motor-car-base", tech = "nullius-personal-transportation-1"} + clutterpedia["nullius-railway-motorcar-2"] = {name = "railway-motor-car-nuclear", tech = "nullius-personal-transportation-4"} +end +if mods["Inventory Sensor"] then + clutterpedia["nullius-item-sensor"] = {name = "item-sensor", tech = "nullius-sensors-2"} +end +if mods["UPSFriendlyNixieTubeDisplay"] then + clutterpedia["nullius-classic-nixie-tube"] = {name = "classic-nixie-tube", tech = "nullius-reinforced-nixie-tubes-basic"} + clutterpedia["nullius-reinforced-nixie-tube"] = {name = "reinforced-nixie-tube", tech = "nullius-reinforced-nixie-tubes-reinforced"} + clutterpedia["nullius-small-reinforced-nixie-tube"] = {name = "small-reinforced-nixie-tube", tech = "nullius-reinforced-nixie-tubes-reinforced"} +end +if mods["holographic_signs"] then + clutterpedia["nullius-holographic-sign"] = {name = "hs_holo_sign", tech = "nullius-holographics"} +end +if mods["FluidMustFlow"] then + clutterpedia["nullius-duct-small"] = {name = "duct-small", tech = "nullius-ducts"} + clutterpedia["nullius-duct-curve"] = {name = "duct-curve", tech = "nullius-ducts"} + clutterpedia["nullius-duct-t-junction"] = {name = "duct-t-junction", tech = "nullius-ducts"} + clutterpedia["nullius-duct-cross"] = {name = "duct-cross", tech = "nullius-ducts"} + clutterpedia["nullius-duct-exhaust"] = {name = "duct-exhaust", tech = "nullius-ducts"} + clutterpedia["nullius-duct-intake"] = {name = "duct-intake", tech = "nullius-ducts"} + clutterpedia["nullius-duct-underground"] = {name = "duct-underground", tech = "nullius-ducts"} + clutterpedia["nullius-non-return-duct"] = {name = "non-return-duct", tech = "nullius-ducts"} + if not settings.startup["fmf-enable-duct-auto-join"].value then + clutterpedia["nullius-duct"] = {name = "duct", tech = "nullius-ducts"} + clutterpedia["nullius-duct-long"] = {name = "duct-long", tech = "nullius-ducts"} + end +end +if mods["RenaiTransportation"] then + if settings.startup["RTThrowersSetting"].value then + clutterpedia["nullius-open-chest"] = {name = "OpenContainer", tech = "nullius-logistic-ballistics-1"} + clutterpedia["nullius-closed-chest"] = {name = "wooden-chest", tech = "nullius-logistic-ballistics-1"} + + clutterpedia["nullius-thrower-1"] = {name = "RTThrower-inserter-Item", tech = "nullius-logistic-ballistics-1"} + clutterpedia["nullius-thrower-2"] = {name = "RTThrower-bob-turbo-inserter-Item",tech = "nullius-logistic-ballistics-5"} + clutterpedia["nullius-thrower-3"] = {name = "RTThrower-bulk-inserter-Item", tech = "nullius-logistic-ballistics-7"} + clutterpedia["nullius-thrower-4"] = {name = "RTThrower-bob-express-bulk-inserter-Item",tech = "nullius-logistic-ballistics-8"} + + clutterpedia["nullius-player-thrower"] = {name = "PlayerLauncher", tech = "nullius-logistic-ballistics-2"} + clutterpedia["nullius-hatch"] = {name = "HatchRT", tech = "nullius-logistic-ballistics-3"} + clutterpedia["nullius-bounce-plate"] = {name = "RTBouncePlate", tech = "nullius-logistic-ballistics-4"} + clutterpedia["nullius-directed-bounce-plate"] = {name = "DirectedBouncePlate", tech = "nullius-logistic-ballistics-4"} + clutterpedia["nullius-ejector-hatch"] = {name = "RTThrower-EjectorHatchRT", tech = "nullius-logistic-ballistics-6"} + clutterpedia["nullius-director-bounce-plate"] = {name = "DirectorBouncePlate", tech = "nullius-logistic-ballistics-6"} + end + if settings.startup["RTZiplineSetting"].value then + clutterpedia["nullius-zipline-trolley"] = {name = "RTZiplineTrolley", tech = "nullius-ziplining-1"} + clutterpedia["nullius-zipline-control"] = {name = "RTZiplineControls", tech = "nullius-ziplining-1"} + clutterpedia["nullius-zipline-crank-control"] = {name = "RTZiplineCrankControls", tech = "nullius-ziplining-1"} + clutterpedia["nullius-zipline-trolley-2"] = {name = "RTZiplineTrolley2", tech = "nullius-ziplining-2"} + clutterpedia["nullius-zipline-smart-control"] = {name = "RTProgrammableZiplineControls", tech = "nullius-ziplining-2"} + clutterpedia["nullius-zipline-terminal"] = {name = "RTZiplineTerminal", tech = "nullius-ziplining-2"} + clutterpedia["nullius-zipline-trolley-3"] = {name = "RTZiplineTrolley3", tech = "nullius-ziplining-3"} + clutterpedia["nullius-zipline-trolley-4"] = {name = "RTZiplineTrolley4", tech = "nullius-ziplining-4"} + clutterpedia["nullius-zipline-trolley-5"] = {name = "RTZiplineTrolley5", tech = "nullius-ziplining-5"} + end + if settings.startup["RTTrainRampSetting"].value then + clutterpedia["nullius-train-ramp"] = {name = "RTTrainRamp", tech = "nullius-freight-ballistics-1"} + clutterpedia["nullius-impact-unloader"] = {name = "RTImpactUnloader", tech = "nullius-freight-ballistics-3"} + clutterpedia["nullius-impact-wagon"] = {name = "RTImpactWagon", tech = "nullius-freight-ballistics-3"} + clutterpedia["nullius-magnetic-ramp"] = {name = "RTMagnetTrainRamp", tech = "nullius-freight-ballistics-4"} + if settings.startup["RTThrowersSetting"].value then + clutterpedia["nullius-train-bounce-plate"] = {name = "RTTrainBouncePlate", tech = "nullius-freight-ballistics-2"} + clutterpedia["nullius-train-directed-bounce-plate"] = {name = "RTTrainDirectedBouncePlate", tech = "nullius-freight-ballistics-2"} + end + end +end +if (mods["rec-blue-plus"] or mods["recursive-blueprints"]) then + clutterpedia["nullius-blueprint-deployer"] = {name = "blueprint-deployer", tech = "nullius-construction-robot-1"} + clutterpedia["nullius-recursive-blueprints-scanner"] = {name = "recursive-blueprints-scanner", tech = "nullius-sensors-2"} +end +if mods["ch-concentrated-solar"] then + clutterpedia["nullius-heliostat-mirror"] = {name = "chcs-heliostat-mirror", tech = "nullius-concentrated-solar-energy"} + clutterpedia["nullius-solar-tower"] = {name = "chcs-solar-power-tower", tech = "nullius-concentrated-solar-energy"} +end +if mods["fcpu"] then + clutterpedia["nullius-fcpu"] = {name = "fcpu", tech = "nullius-fcpu"} +end + + function generate_migrations() local contents = "\n---- Generated migrations ----\n" for ogRecipe, entry in pairs(clutterpedia) do @@ -116,9 +290,15 @@ function recipe_renaming() recipe.localised_name = {"recipe-name."..ogRecipeName} end data:extend{recipe} - for _,effect in pairs(data.raw.technology[entry.tech].effects) do - if effect.type == "unlock-recipe" and effect.recipe == ogRecipeName then - effect.recipe = entry.name + local techs = entry.tech + if type(entry.tech) ~= "table" then + techs = {entry.tech} + end + for _,tech in pairs(techs) do + for _,effect in pairs(data.raw.technology[tech].effects) do + if effect.type == "unlock-recipe" and effect.recipe == ogRecipeName then + effect.recipe = entry.name + end end end end diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index 98b3602..e8dd2be 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -125,7 +125,119 @@ ["nullius-salt-electrolysis", "nullius-sodium"], ["nullius-calcium-chloride-1", "nullius-calcium-chloride-solution"], - ["nullius-air-filtration", "nullius-air"] + ["nullius-air-filtration", "nullius-air"], + + + + ["nullius-rail-support", "rail-support"], + ["nullius-rail-ramp", "rail-ramp"], + ["nullius-logistic-train-stop", "logistic-train-stop"], + ["nullius-ltn-combinator", "ltn-combinator"], + ["nullius-aai-signal-sender", "aai-signal-sender"], + ["nullius-aai-signal-receiver", "aai-signal-receiver"], + ["nullius-factory-1", "factory-1"], + ["nullius-factory-2", "factory-2"], + ["nullius-factory-3", "factory-3"], + ["nullius-factory-circuit-connector", "factory-circuit-connector"], + ["nullius-loader-1", "aai-basic-loader"], + ["nullius-loader-2", "aai-loader"], + ["nullius-loader-3", "aai-fast-loader"], + ["nullius-loader-4", "aai-express-loader"], + ["nullius-loader-5", "aai-ultimate-loader"], + ["nullius-train-publisher", "train-publisher"], + ["nullius-subscriber-train-stop", "subscriber-train-stop"], + ["nullius-publisher-train-stop", "publisher-train-stop"], + ["nullius-train-config", "train-config"], + ["nullius-teleporter", "teleporter"], + ["nullius-jetpack-1", "jetpack-1"], + ["nullius-jetpack-2", "jetpack-2"], + ["nullius-jetpack-3", "jetpack-3"], + ["nullius-jetpack-4", "jetpack-4"], + ["nullius-surface-two-way-junction-1", "one-to-one-forward-t2-pipe"], + ["nullius-surface-three-way-junction-1", "one-to-two-perpendicular-t2-pipe"], + ["nullius-surface-four-way-junction-1", "one-to-three-forward-t2-pipe"], + ["nullius-underground-straight-junction-1", "underground-i-t2-pipe"], + ["nullius-underground-elbow-junction-1", "underground-L-t2-pipe"], + ["nullius-underground-three-way-junction-1", "underground-t-t2-pipe"], + ["nullius-adjustable-relief-valve", "80-overflow-valve"], + ["nullius-adjustable-top-up-valve", "80-top-up-valve"], + ["nullius-surface-two-way-junction-2", "one-to-one-forward-t3-pipe"], + ["nullius-surface-three-way-junction-2", "one-to-two-perpendicular-t3-pipe"], + ["nullius-surface-four-way-junction-2", "one-to-three-forward-t3-pipe"], + ["nullius-underground-straight-junction-2", "underground-i-t3-pipe"], + ["nullius-underground-elbow-junction-2", "underground-L-t3-pipe"], + ["nullius-underground-three-way-junction-2", "underground-t-t3-pipe"], + ["nullius-surface-two-way-junction-3", "one-to-one-forward-pipe"], + ["nullius-surface-three-way-junction-3", "one-to-two-perpendicular-pipe"], + ["nullius-surface-four-way-junction-3", "one-to-three-forward-pipe"], + ["nullius-surface-five-way-junction-3", "one-to-four-pipe"], + ["nullius-underground-straight-junction-3", "underground-i-pipe"], + ["nullius-underground-elbow-junction-3", "underground-L-pipe"], + ["nullius-underground-three-way-junction-3", "underground-t-pipe"], + ["nullius-underground-four-way-junction-3", "underground-cross-pipe"], + ["nullius-underground-pump", "underground-mini-pump"], + ["nullius-storehouse", "storehouse-basic"], + ["nullius-warehouse", "warehouse-basic"], + ["nullius-warehouse-passive-provider", "warehouse-passive-provider"], + ["nullius-warehouse-storage", "warehouse-storage"], + ["nullius-warehouse-requester", "warehouse-requester"], + ["nullius-storehouse-passive-provider", "storehouse-passive-provider"], + ["nullius-storehouse-storage", "storehouse-storage"], + ["nullius-storehouse-requester", "storehouse-requester"], + ["nullius-warehouse-buffer", "warehouse-buffer"], + ["nullius-warehouse-active-provider", "warehouse-active-provider"], + ["nullius-storehouse-buffer", "storehouse-buffer"], + ["nullius-storehouse-active-provider", "storehouse-active-provider"], + ["nullius-bot-upgrade-chest", "logistic-chest-botUpgrader"], + ["nullius-railway-motorcar-1", "railway-motor-car-base"], + ["nullius-railway-motorcar-2", "railway-motor-car-nuclear"], + ["nullius-item-sensor", "item-sensor"], + ["nullius-classic-nixie-tube", "classic-nixie-tube"], + ["nullius-reinforced-nixie-tube", "reinforced-nixie-tube"], + ["nullius-small-reinforced-nixie-tube", "small-reinforced-nixie-tube"], + ["nullius-holographic-sign", "hs_holo_sign"], + ["nullius-duct-small", "duct-small"], + ["nullius-duct-curve", "duct-curve"], + ["nullius-duct-t-junction", "duct-t-junction"], + ["nullius-duct-cross", "duct-cross"], + ["nullius-duct-exhaust", "duct-exhaust"], + ["nullius-duct-intake", "duct-intake"], + ["nullius-duct-underground", "duct-underground"], + ["nullius-non-return-duct", "non-return-duct"], + ["nullius-duct-long", "duct-long"], + ["nullius-duct", "duct"], + ["nullius-open-chest", "OpenContainer"], + ["nullius-closed-chest", "wooden-chest"], + ["nullius-thrower-1", "RTThrower-inserter-Item"], + ["nullius-thrower-2", "RTThrower-bob-turbo-inserter-Item"], + ["nullius-thrower-3", "RTThrower-bulk-inserter-Item"], + ["nullius-thrower-4", "RTThrower-bob-express-bulk-inserter-Item"], + ["nullius-player-thrower", "PlayerLauncher"], + ["nullius-hatch", "HatchRT"], + ["nullius-bounce-plate", "RTBouncePlate"], + ["nullius-directed-bounce-plate", "DirectedBouncePlate"], + ["nullius-ejector-hatch", "RTThrower-EjectorHatchRT"], + ["nullius-director-bounce-plate", "DirectorBouncePlate"], + ["nullius-zipline-trolley", "RTZiplineTrolley"], + ["nullius-zipline-control", "RTZiplineControls"], + ["nullius-zipline-crank-control", "RTZiplineCrankControls"], + ["nullius-zipline-trolley-2", "RTZiplineTrolley2"], + ["nullius-zipline-smart-control", "RTProgrammableZiplineControls"], + ["nullius-zipline-terminal", "RTZiplineTerminal"], + ["nullius-zipline-trolley-3", "RTZiplineTrolley3"], + ["nullius-zipline-trolley-4", "RTZiplineTrolley4"], + ["nullius-zipline-trolley-5", "RTZiplineTrolley5"], + ["nullius-train-ramp", "RTTrainRamp"], + ["nullius-impact-unloader", "RTImpactUnloader"], + ["nullius-impact-wagon", "RTImpactWagon"], + ["nullius-magnetic-ramp", "RTMagnetTrainRamp"], + ["nullius-train-bounce-plate", "RTTrainBouncePlate"], + ["nullius-train-directed-bounce-plate", "RTTrainDirectedBouncePlate"], + ["nullius-blueprint-deployer", "blueprint-deployer"], + ["nullius-recursive-blueprints-scanner", "recursive-blueprints-scanner"], + ["nullius-heliostat-mirror", "chcs-heliostat-mirror"], + ["nullius-solar-tower", "chcs-solar-power-tower"], + ["nullius-fcpu", "fcpu"] ], From 782164b65843bb402bad904aefd4684bc0071da6 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 2 Sep 2025 20:47:21 +0200 Subject: [PATCH 212/236] Fixed ingredient format for textplates mod --- nullius/prototypes/override_mod.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 1b61bd2..1f6b12b 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -1467,10 +1467,10 @@ for _, recipe in pairs(data.raw.recipe) do local order = "nullius-"..newmaterial.order local sz = string.sub(recipe.name, 11, 15) if (sz == "large") then - recipe.ingredients = {{"textplate-small-"..material, 4}} + recipe.ingredients = {{type = "item", name = "textplate-small-"..material, amount = 4}} order = order.."c" else - recipe.ingredients = {{newmaterial.material, 1}} + recipe.ingredients = {{type = "item", name = newmaterial.material, amount = 1}} order = order.."b" end From e269400ed85cc92e5e4df910bca3718519352772 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 2 Sep 2025 20:48:53 +0200 Subject: [PATCH 213/236] Fixed ingredient format for compatibility with nullius --- train-upgrader/prototypes/nullius.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/train-upgrader/prototypes/nullius.lua b/train-upgrader/prototypes/nullius.lua index 7908da0..f01d16d 100644 --- a/train-upgrader/prototypes/nullius.lua +++ b/train-upgrader/prototypes/nullius.lua @@ -19,13 +19,13 @@ recipe_receiver.order = item_receiver.order recipe_supplier.always_show_made_in = true recipe_receiver.always_show_made_in = true recipe_supplier.ingredients = { - {"nullius-large-supply-chest-1", 1}, - {"nullius-relay-2", 1}, - {"nullius-construction-bot-2", 1} + {type = "item", name = "nullius-large-supply-chest-1", amount = 1}, + {type = "item", name = "nullius-relay-2", amount = 1}, + {type = "item", name = "nullius-construction-bot-2", amount = 1} } recipe_receiver.ingredients = { - {"nullius-large-demand-chest-1", 1}, - {"rail-chain-signal", 1} + {type = "item", name = "nullius-large-demand-chest-1", amount = 1}, + {type = "item", name = "rail-chain-signal", amount = 1} } local tech = data.raw.technology["tu-rail-modernization"] From 26c7e9d85a0649e043ce1b48a8663c1b57a574c8 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 2 Sep 2025 21:05:34 +0200 Subject: [PATCH 214/236] Fixed red and green wires stack size --- nullius/prototypes/item/intermediate.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 521c40e..ebe1714 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -8385,7 +8385,7 @@ data:extend({ inventory_move_sound = data.raw["item"]["red-wire"].inventory_move_sound, pick_sound = data.raw["item"]["red-wire"].pick_sound, drop_sound = data.raw["item"]["red-wire"].drop_sound, - stack_size = 50 + stack_size = 200 }, { type = "item", @@ -8399,7 +8399,7 @@ data:extend({ inventory_move_sound = data.raw["item"]["green-wire"].inventory_move_sound, pick_sound = data.raw["item"]["green-wire"].pick_sound, drop_sound = data.raw["item"]["green-wire"].drop_sound, - stack_size = 50 + stack_size = 200 }, }) From 4a935a36f1020ac584dbe681248688eccd7223bc Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 5 Sep 2025 23:44:05 +0200 Subject: [PATCH 215/236] Added proper recipe signals for the set recipe function (intermediate.lua) --- nullius/changelog_wip.txt | 1 + nullius/data-final-fixes.lua | 6 + nullius/prototypes/entity/assembler.lua | 2 +- nullius/prototypes/item/boxing.lua | 1 + nullius/prototypes/item/intermediate.lua | 215 +++++++++++++++-------- 5 files changed, 150 insertions(+), 75 deletions(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index abc7080..3fcb64d 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -26,6 +26,7 @@ Date: 2025 Graphics: - Added icons for drones ammo categories - Reworked voiding recipes icons to make them standout more in factoriopedia + - Altered lime recipe so that it's distinguishable from the item in the signals gui Info: - Added description to inserters - Renamed the extension tech to inserter extension diff --git a/nullius/data-final-fixes.lua b/nullius/data-final-fixes.lua index 1851400..faa3b31 100644 --- a/nullius/data-final-fixes.lua +++ b/nullius/data-final-fixes.lua @@ -9,4 +9,10 @@ for _, recipe in pairs(data.raw.recipe) do if recipe.GCKI_ignore ~= nil then recipe.GCKI_ignore = nil end +end + +for _,recipe in pairs(data.raw.recipe) do + if string.sub(recipe.name, 1, 14) == "nullius-boxed-" or string.sub(recipe.name, 1, 14) == "nullius-unbox-" then + recipe.hide_from_signal_gui = false + end end \ No newline at end of file diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index e62f365..1cd0821 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -507,7 +507,7 @@ data:extend({ } }, crafting_categories = { - "small-crafting", "medium-crafting", "large-crafting", + "small-crafting","medium-crafting", "large-crafting", "small-assembly", "medium-assembly", "large-assembly", "medium-only-assembly", "small-fluid-assembly", "large-fluid-assembly" }, diff --git a/nullius/prototypes/item/boxing.lua b/nullius/prototypes/item/boxing.lua index ddbb040..741ee4e 100644 --- a/nullius/prototypes/item/boxing.lua +++ b/nullius/prototypes/item/boxing.lua @@ -89,6 +89,7 @@ local function create_boxed_item(base_name, group, box_order, always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, + hide_from_signal_gui = false, no_productivity = true, hide_from_stats = true, requester_paste_multiplier = 4, diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index ebe1714..181bb2d 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -165,6 +165,7 @@ data:extend({ type = "recipe", name = "nullius-geology-pack-2", localised_name = {"", {"item-name.nullius-geology-pack"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/utility-science-pack.png", @@ -203,6 +204,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, always_show_made_in = true, + hide_from_signal_gui = false, enabled = false, category = "large-assembly", subgroup = "boxed-science", @@ -271,6 +273,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "large-assembly", subgroup = "boxed-science", order = "nullius-db", @@ -287,6 +290,7 @@ data:extend({ type = "recipe", name = "nullius-mechanical-pack-2", localised_name = {"", {"item-name.nullius-mechanical-pack"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/automation-science-pack.png", @@ -321,6 +325,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-mechanical-pack-2", localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-mechanical-pack"}}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = ICONPATH .. "crate.png", @@ -410,6 +415,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "large-assembly", subgroup = "boxed-science", energy_required = 60, @@ -427,6 +433,7 @@ data:extend({ type = "recipe", name = "nullius-electrical-pack-2", localised_name = {"", {"item-name.nullius-electrical-pack"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/production-science-pack.png", @@ -463,6 +470,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-electrical-pack-2", localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-electrical-pack"}}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = ICONPATH .. "crate.png", @@ -597,6 +605,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-crushed-copper-ore", enabled = false, + hide_from_signal_gui = false, category = "ore-crushing", subgroup = "boxed-copper", energy_required = 20, @@ -839,27 +848,27 @@ data:extend({ { type = "recipe", name = "nullius-iron-oxidation", - localised_name = {"recipe-name.nullius-oxidation", {"item-name.nullius-iron"}}, - icons = { + localised_name = {"recipe-name.nullius-oxidation", {"item-name.nullius-iron"}}, + icons = { { - icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", icon_size = 32, tint = {0.77, 0.54, 0.48} }, { - icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-7, -7} } }, enabled = false, - no_productivity = true, - show_amount_in_title = false, + no_productivity = true, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "ore-flotation", - order = "nullius-o", + order = "nullius-o", energy_required = 3, ingredients = { {type="item", name="nullius-iron-wire", amount=11}, @@ -873,34 +882,33 @@ data:extend({ { type = "recipe", name = "nullius-boxed-iron-oxidation", - localised_name = {"recipe-name.nullius-boxed", + localised_name = {"recipe-name.nullius-boxed", {"recipe-name.nullius-oxidation", {"item-name.nullius-iron"}}}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { - icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", + icon = "__angelssmeltinggraphics__/graphics/icons/solid-iron-hydroxide.png", icon_size = 32, tint = {0.77, 0.54, 0.48}, - scale = 0.9 + scale = 0.9 }, { - icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", - icon_size = 64, - - scale = 0.27, + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", + icon_size = 64, + scale = 0.27, shift = {-6, -6} } }, enabled = false, - no_productivity = true, - show_amount_in_title = false, + no_productivity = true, + show_amount_in_title = false, always_show_products = true, category = "ore-flotation", - subgroup = "boxed-iron", - order = "nullius-o", + subgroup = "boxed-iron", + order = "nullius-o", energy_required = 15, ingredients = { {type="item", name="nullius-box-iron-wire", amount=11}, @@ -958,6 +966,7 @@ data:extend({ type = "recipe", name = "nullius-crushed-limestone-2", localised_name = {"", {"item-name.nullius-crushed-limestone"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", @@ -1040,7 +1049,7 @@ data:extend({ name = "nullius-crushed-bauxite", enabled = false, category = "ore-crushing", - subgroup = "alumina", + subgroup = "alumina", energy_required = 5, ingredients = {{type="item", name="nullius-bauxite", amount = 7}}, results = { @@ -1084,6 +1093,7 @@ data:extend({ category = "hand-crushing", always_show_made_in = true, allow_decomposition = false, + hide_from_signal_gui = false, energy_required = 4, ingredients = {{type="item", name="nullius-sandstone", amount = 5}}, results = { @@ -1120,6 +1130,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_decomposition = false, + hide_from_signal_gui = false, energy_required = 0.5, ingredients = {{type="item", name="stone", amount = 1}}, results = { @@ -1160,6 +1171,7 @@ data:extend({ localised_name = {"recipe-name.nullius-gravel-disposal"}, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, enabled = false, icon_size = 32, category = "ore-crushing", @@ -1205,6 +1217,7 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, enabled = false, icon_size = 32, category = "ore-crushing", @@ -1311,9 +1324,9 @@ data:extend({ show_amount_in_title = false, always_show_products = true, enabled = false, - no_productivity = true, + no_productivity = true, category = "ore-crushing", - subgroup = "boxed-aluminum-1", + subgroup = "boxed-aluminum-1", order = "nullius-n", energy_required = 10, ingredients = {{type="item", name="nullius-box-crushed-iron-ore", amount = 4}}, @@ -1341,9 +1354,10 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, enabled = false, category = "ore-crushing", - subgroup = "alumina", + subgroup = "alumina", order = "nullius-n", energy_required = 2, ingredients = {{type="item", name="nullius-crushed-bauxite", amount = 5}}, @@ -1364,8 +1378,7 @@ data:extend({ { icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - - scale = 0.45 + scale = 0.45 }, { icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-6.png", @@ -1379,7 +1392,7 @@ data:extend({ always_show_products = true, enabled = false, category = "ore-crushing", - subgroup = "boxed-aluminum-1", + subgroup = "boxed-aluminum-1", order = "nullius-l", energy_required = 10, ingredients = {{type="item", name="nullius-box-crushed-bauxite", amount = 5}}, @@ -1408,6 +1421,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, no_productivity = true, + hide_from_signal_gui = false, enabled = false, category = "ore-crushing", subgroup = "titanium-product", @@ -1431,13 +1445,11 @@ data:extend({ { icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, - - scale = 0.45 + scale = 0.45 }, { icon = "__angelssmeltinggraphics__/graphics/icons/powder-titanium.png", icon_size = 64, - scale = 0.22, shift = {9, -8} } @@ -1474,6 +1486,7 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, enabled = false, category = "ore-crushing", subgroup = "calcium-product", @@ -1550,6 +1563,7 @@ data:extend({ type = "recipe", name = "nullius-iron-ingot-2", localised_name = {"recipe-name.nullius-iron-ingot-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", @@ -1582,6 +1596,7 @@ data:extend({ type = "recipe", name = "nullius-iron-ingot-3", localised_name = {"recipe-name.nullius-iron-ingot-3"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", @@ -1638,7 +1653,8 @@ data:extend({ { type = "recipe", name = "nullius-thermite", - localised_name = {"recipe-name.nullius-aluminothermic", {"item-name.nullius-iron-ingot"}}, + localised_name = {"recipe-name.nullius-aluminothermic", {"item-name.nullius-iron-ingot"}}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-iron.png", @@ -1672,7 +1688,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-thermite", - localised_name = {"recipe-name.nullius-aluminothermic", + localised_name = {"recipe-name.nullius-aluminothermic", {"item-name.nullius-box", {"item-name.nullius-iron-ingot"}}}, icons = { { @@ -1743,6 +1759,7 @@ data:extend({ type = "recipe", name = "nullius-steel-ingot-2", localised_name = {"recipe-name.nullius-steel-ingot-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", @@ -1796,6 +1813,7 @@ data:extend({ type = "recipe", name = "nullius-steel-ingot-3", localised_name = {"", {"item-name.nullius-steel-ingot"}, " ", tostring(3)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", @@ -1869,6 +1887,7 @@ data:extend({ type = "recipe", name = "nullius-steel-ingot-hydrogen", localised_name = {"recipe-name.nullius-hydrogen", {"item-name.nullius-box", {"item-name.nullius-steel-ingot"}}}, + hide_from_signal_gui = false, icons = { { icon = ICONPATH .. "crate.png", @@ -1988,8 +2007,21 @@ data:extend({ { type = "recipe", name = "nullius-lime", + icons = { + { + icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", + icon_size = 32 + }, + { + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", + icon_size = 32, + scale = 0.4, + shift = {-11, -11} + } + }, enabled = false, category = "vent-smelting", + hide_from_signal_gui = false, energy_required = 5, ingredients = {{type="item", name="nullius-crushed-limestone", amount = 3}}, results = { @@ -2016,6 +2048,7 @@ data:extend({ type = "recipe", name = "nullius-limestone-precipitation", localised_name = {"recipe-name.nullius-limestone-precipitation"}, + hide_from_signal_gui = false, icons = { { icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", @@ -2087,6 +2120,7 @@ data:extend({ type = "recipe", name = "nullius-gypsum-decomposition", localised_name = {"recipe-name.nullius-gypsum-decomposition"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", @@ -2150,6 +2184,7 @@ data:extend({ type = "recipe", name = "nullius-gypsum-1", localised_name = {"recipe-name.nullius-gypsum-1"}, + hide_from_signal_gui = false, --todo: check if this is still needed after renaming to merge the factoriopedia entry icons = { { icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", @@ -2227,6 +2262,7 @@ data:extend({ type = "recipe", name = "nullius-gypsum-2", localised_name = {"recipe-name.nullius-gypsum-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", @@ -2305,6 +2341,7 @@ data:extend({ type = "recipe", name = "nullius-calcium-chloride-1", localised_name = {"", {"item-name.nullius-calcium-chloride"}, " ", tostring(1)}, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "chlorine-chemistry", order = "nullius-fb", @@ -2362,6 +2399,7 @@ data:extend({ type = "recipe", name = "nullius-calcium-chloride-2", localised_name = {"", {"item-name.nullius-calcium-chloride"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { data.raw.fluid["nullius-calcium-chloride-solution"].icons[2], data.raw.fluid["nullius-calcium-chloride-solution"].icons[3], @@ -2437,7 +2475,7 @@ data:extend({ name = "nullius-calcium-chloride-dehydration", localised_name = {"recipe-name.nullius-dehydration", {"item-name.nullius-calcium-chloride"}}, enabled = false, - no_productivity = true, + no_productivity = true, category = "distillation", order = "nullius-ic", crafting_machine_tint = { @@ -2460,7 +2498,7 @@ data:extend({ localised_name = {"recipe-name.nullius-dehydration", {"item-name.nullius-box", {"item-name.nullius-calcium-chloride"}}}, enabled = false, - no_productivity = true, + no_productivity = true, category = "distillation", subgroup = "boxed-calcium", order = "nullius-fc", @@ -2564,7 +2602,7 @@ data:extend({ name = "nullius-boxed-calcium-chloride-hydration", localised_name = {"recipe-name.nullius-hydration", {"item-name.nullius-box", {"item-name.nullius-calcium-chloride"}}}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 @@ -2580,11 +2618,11 @@ data:extend({ } }, enabled = false, - no_productivity = true, - show_amount_in_title = false, + no_productivity = true, + show_amount_in_title = false, always_show_products = true, category = "ore-flotation", - subgroup = "boxed-fluid", + subgroup = "boxed-fluid", order = "nullius-cd", energy_required = 5, ingredients = { @@ -2599,6 +2637,7 @@ data:extend({ type = "recipe", name = "nullius-calcium-chloride-decomposition", localised_name = {"recipe-name.nullius-calcium-chloride-decomposition"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/solid-lime.png", @@ -2739,6 +2778,7 @@ data:extend({ type = "recipe", name = "nullius-silica-2", localised_name = {"recipe-name.nullius-silica-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/powder-silica.png", @@ -2893,6 +2933,7 @@ data:extend({ type = "recipe", name = "nullius-soda-lime-glass-1", localised_name = {"recipe-name.nullius-soda-lime-glass-1"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/plate-glass.png", @@ -2927,6 +2968,7 @@ data:extend({ type = "recipe", name = "nullius-soda-lime-glass-2", localised_name = {"recipe-name.nullius-soda-lime-glass-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/plate-glass.png", @@ -3217,6 +3259,7 @@ data:extend({ type = "recipe", name = "nullius-iron-rod-2", localised_name = {"recipe-name.nullius-iron-rod-2"}, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/iron-stick.png", @@ -3282,6 +3325,7 @@ data:extend({ type = "recipe", name = "nullius-steel-rod-2", localised_name = {"recipe-name.nullius-steel-rod-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/rod-steel.png", @@ -3345,6 +3389,7 @@ data:extend({ type = "recipe", name = "nullius-aluminum-rod-2", localised_name = {"recipe-name.nullius-aluminum-rod-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/rod-aluminium.png", @@ -3468,6 +3513,7 @@ data:extend({ type = "recipe", name = "nullius-aluminum-plate-2", localised_name = {"recipe-name.nullius-aluminum-plate-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/plate-aluminium.png", @@ -3531,6 +3577,7 @@ data:extend({ type = "recipe", name = "nullius-iron-plate-2", localised_name = {"recipe-name.nullius-iron-plate-2"}, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/iron-plate.png", @@ -3596,6 +3643,7 @@ data:extend({ type = "recipe", name = "nullius-steel-plate-2", localised_name = {"recipe-name.nullius-steel-plate-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/plate-steel.png", @@ -3701,6 +3749,7 @@ data:extend({ type = "recipe", name = "nullius-iron-sheet-2", localised_name = {"recipe-name.nullius-iron-sheet-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/roll-iron.png", @@ -3771,6 +3820,7 @@ data:extend({ type = "recipe", name = "nullius-steel-sheet-2", localised_name = {"recipe-name.nullius-steel-sheet-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/roll-steel.png", @@ -3841,6 +3891,7 @@ data:extend({ type = "recipe", name = "nullius-aluminum-sheet-2", localised_name = {"recipe-name.nullius-aluminum-sheet-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/roll-aluminium.png", @@ -3911,6 +3962,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + --hide_from_signal_gui = false, --useless energy_required = 4, ingredients = { {type = "item", name = "nullius-iron-plate", amount = 2}, @@ -4085,6 +4137,7 @@ data:extend({ type = "recipe", name = "nullius-iron-wire-2", localised_name = {"recipe-name.nullius-iron-wire-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-silver.png", @@ -4156,6 +4209,7 @@ data:extend({ type = "recipe", name = "nullius-aluminum-wire-2", localised_name = {"recipe-name.nullius-aluminum-wire-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-gold.png", @@ -4349,7 +4403,8 @@ data:extend({ type = "recipe", name = "nullius-insulated-wire-2", localised_name = {"", {"item-name.nullius-insulated-wire"}, " ", tostring(2)}, - icons = { + hide_from_signal_gui = false, + icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/wire-coil-tin.png", icon_size = 64, @@ -4640,6 +4695,7 @@ data:extend({ type = "recipe", name = "nullius-refractory-brick-2", localised_name = {"", {"item-name.nullius-refractory-brick"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/brick-clay.png", @@ -4698,7 +4754,7 @@ data:extend({ { type = "recipe", name = "nullius-crucible", - localised_name = {"", {"item-name.nullius-crucible"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-crucible"}, " ", tostring(1)}, enabled = false, show_amount_in_title = false, always_show_products = true, @@ -4716,6 +4772,7 @@ data:extend({ type = "recipe", name = "nullius-crucible-2", localised_name = {"", {"item-name.nullius-crucible"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/silicon-crucible.png", @@ -4775,7 +4832,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-aluminum-hydroxide"}, " ", tostring(1)}, enabled = false, category = "ore-flotation", - subgroup = "alumina", + subgroup = "alumina", order = "nullius-db", energy_required = 5, ingredients = { @@ -4811,6 +4868,7 @@ data:extend({ type = "recipe", name = "nullius-bauxite-flotation-2", localised_name = {"", {"item-name.nullius-aluminum-hydroxide"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", @@ -4825,7 +4883,7 @@ data:extend({ }, enabled = false, category = "ore-flotation", - subgroup = "alumina", + subgroup = "alumina", order = "nullius-dc", energy_required = 7, ingredients = { @@ -4887,7 +4945,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "dry-smelting", - subgroup = "alumina", + subgroup = "alumina", order = "nullius-eb", energy_required = 2, ingredients = { @@ -4901,6 +4959,7 @@ data:extend({ type = "recipe", name = "nullius-alumina-2", localised_name = {"recipe-name.nullius-alumina-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-oxide.png", @@ -4915,7 +4974,7 @@ data:extend({ }, enabled = false, category = "wet-smelting", - subgroup = "alumina", + subgroup = "alumina", order = "nullius-ec", energy_required = 2, ingredients = { @@ -5005,6 +5064,7 @@ data:extend({ type = "recipe", name = "nullius-aluminum-ingot-2", localised_name = {"recipe-name.nullius-aluminum-ingot-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", @@ -5037,21 +5097,20 @@ data:extend({ type = "recipe", name = "nullius-boxed-aluminum-carbide", localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-carbide"}}, " ", tostring(1)}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", - icon_size = 64, - - scale = 0.45 + icon_size = 64, + scale = 0.45 }, { icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-oxide.png", icon_size = 32, - scale = 0.5, + scale = 0.5, shift = {-6, -6} } }, @@ -5093,6 +5152,7 @@ data:extend({ type = "recipe", name = "nullius-aluminum-ingot-3", localised_name = {"", {"item-name.nullius-aluminum-ingot"}, " ", tostring(3)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", @@ -5170,6 +5230,7 @@ data:extend({ name = "nullius-aluminum-ingot-electrolytic", localised_name = {"recipe-name.nullius-electrolytic", {"item-name.nullius-box", {"item-name.nullius-aluminum-ingot"}}}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", @@ -5181,7 +5242,7 @@ data:extend({ icon = ICONPATH .. "salt.png", icon_size = 64, tint = {0.4, 0.6, 0.8}, - scale = 0.23, + scale = 0.23, shift = {9, -10} } }, @@ -5204,9 +5265,10 @@ data:extend({ type = "recipe", name = "nullius-aluminum-carbide", enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "dry-smelting", order = "nullius-hb", energy_required = 2, @@ -5222,31 +5284,29 @@ data:extend({ type = "recipe", name = "nullius-boxed-aluminum-carbide-2", localised_name = {"", {"item-name.nullius-box", {"item-name.nullius-aluminum-carbide"}}, " ", tostring(2)}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, { icon = "__angelssmeltinggraphics__/graphics/icons/powder-lead.png", - icon_size = 64, - - scale = 0.45 + icon_size = 64, + scale = 0.45 }, { icon = "__angelssmeltinggraphics__/graphics/icons/powder-aluminium.png", icon_size = 64, - - scale = 0.27, + scale = 0.27, shift = {-6, -6} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, category = "bulk-smelting", - subgroup = "boxed-aluminum-2", + subgroup = "boxed-aluminum-2", order = "nullius-gbc", energy_required = 2, ingredients = { @@ -5279,6 +5339,7 @@ data:extend({ type = "recipe", name = "nullius-silicon-ingot-2", localised_name = {"recipe-name.nullius-silicon-ingot-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-silicon.png", @@ -5403,6 +5464,7 @@ data:extend({ type = "recipe", name = "nullius-polycrystalline-silicon-2", localised_name = {"", {"item-name.nullius-polycrystalline-silicon"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/silicon-mono.png", @@ -5414,7 +5476,7 @@ data:extend({ icon_size = 64, scale = 0.2, shift = {-11, -11}, - tint = {164, 140, 204} + tint = {164, 140, 204} } }, enabled = false, @@ -5450,14 +5512,14 @@ data:extend({ icon = "__angelssmeltinggraphics__/graphics/icons/silicon-mono.png", icon_size = 32, tint = {0.8, 0.75, 0.7, 0.9}, - scale = 0.9 + scale = 0.9 }, { icon = FLUIDPATH .. "atom.png", icon_size = 64, scale = 0.18, shift = {-10, -10}, - tint = {164, 140, 204} + tint = {164, 140, 204} } }, enabled = false, @@ -5667,6 +5729,7 @@ data:extend({ type = "recipe", name = "nullius-pressure-filter-1", localised_name = {"recipe-name.nullius-pressure", {"item-name.nullius-filter-1"}}, + hide_from_signal_gui = false, icons = { { icon = "__angelsrefininggraphics__/graphics/icons/filter-coal.png", @@ -5838,6 +5901,7 @@ data:extend({ type = "recipe", name = "nullius-cement-2", localised_name = {"recipe-name.nullius-cement-2"}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/solid-cement.png", @@ -5965,6 +6029,7 @@ data:extend({ type = "recipe", name = "nullius-concrete-2", localised_name = {"", {"item-name.concrete"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/concrete.png", @@ -6958,8 +7023,8 @@ data:extend({ scale = 0.4, shift = {5, -8} } - }, - enabled = false, + }, + enabled = false, always_show_made_in = true, show_amount_in_title = false, always_show_products = true, @@ -6983,10 +7048,10 @@ data:extend({ icon = ICONPATH .. "boxing.png", icon_size = 64 }, - { - icon = ICONPATH .. "carbon-fiber.png", + { + icon = ICONPATH .. "carbon-fiber.png", icon_size = 128, - scale = 0.225 + scale = 0.225 }, { icon = ICONPATH .. "plate.png", @@ -6996,7 +7061,7 @@ data:extend({ shift = {4, -7} } }, - enabled = false, + enabled = false, always_show_made_in = true, show_amount_in_title = false, always_show_products = true, @@ -7066,6 +7131,7 @@ data:extend({ type = "recipe", name = "nullius-textile-2", localised_name = {"", {"item-name.nullius-textile"}, " ", tostring(2)}, + hide_from_signal_gui = false, icons = { { icon = "__angelssmeltinggraphics__/graphics/icons/roll-zinc.png", @@ -7197,7 +7263,7 @@ data:extend({ { type = "recipe", name = "nullius-titanium-ingot-1", - localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-titanium-ingot"}, " ", tostring(1)}, enabled = false, category = "ore-flotation", order = "nullius-db", @@ -8271,7 +8337,7 @@ data:extend({ fuel_value = "4GJ", fuel_acceleration_multiplier = 2.2, fuel_top_speed_multiplier = 1.6, - fuel_glow_color = {r=0, g=1, b=0, a=1}, + fuel_glow_color = {r=0, g=1, b=0, a=1}, subgroup = "nuclear", order = "nullius-eb", stack_size = 20 @@ -8312,6 +8378,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "ore-flotation", subgroup = "nuclear", order = "nullius-ec", @@ -8336,7 +8403,7 @@ data:extend({ fuel_category = "nullius-nuclear", burnt_result = "nullius-antimatter", fuel_value = "1GJ", - fuel_glow_color = {r=0.9, g=0.6, b=0, a=1}, + fuel_glow_color = {r=0.9, g=0.6, b=0, a=1}, subgroup = "nuclear", order = "nullius-fb", stack_size = 20 From d91cf5f4299d47f2af885b7c0f449946fdef18db Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 6 Sep 2025 00:55:42 +0200 Subject: [PATCH 216/236] More recipe signals - fluids --- nullius/prototypes/item/fluid.lua | 474 +++++++++++++++++------------ nullius/prototypes/item/recipe.lua | 39 +-- 2 files changed, 304 insertions(+), 209 deletions(-) diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index ec2ec2e..cb9a782 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -2,8 +2,6 @@ local ICONPATH = "__nullius__/graphics/icons/" local FLUIDPATH = ICONPATH .. "fluid/" local ENTITYPATH = "__nullius__/graphics/entity/" ---angelsLegacy = require("legacyAngels") - element_tint = { ["carbon"] = { 32, 32, 32 }, ["hydrogen"] = { 240, 240, 240 }, @@ -222,7 +220,7 @@ data:extend({ icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["volcanic"], element_tint["air"], element_tint["volcanic"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(20), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(20), {"fluid-description.nullius-volcanic-gas"}}, subgroup = "air-filtration", order = "nullius-e", @@ -302,7 +300,7 @@ data:extend({ {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), {"fluid-description.nullius-carbon-monoxide"}}, subgroup = "carbon", order = "nullius-c", @@ -320,7 +318,7 @@ data:extend({ {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), {"fluid-description.nullius-methane"}}, subgroup = "carbon", order = "nullius-d", @@ -381,7 +379,7 @@ data:extend({ { type = "fluid", name = "nullius-petroleum", - icon = "__base__/graphics/icons/fluid/crude-oil.png", + icon = "__base__/graphics/icons/fluid/crude-oil.png", icon_size = 64, subgroup = "carbon", @@ -636,7 +634,7 @@ data:extend({ icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), {"fluid-description.nullius-hydrogen"}}, subgroup = "inorganic-chemistry", order = "nullius-bb", @@ -653,7 +651,7 @@ data:extend({ icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["hydrogen"], element_tint["heavy"], element_tint["heavy"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(50), {"fluid-description.nullius-deuterium"}}, subgroup = "inorganic-chemistry", order = "nullius-bc", @@ -685,7 +683,7 @@ data:extend({ icons = angelsLegacy.functions.create_gas_fluid_icon(nil, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygenation", tostring(100), + localised_description = {"fluid-description.nullius-oxygenation", tostring(100), {"fluid-description.nullius-oxygen"}}, subgroup = "inorganic-chemistry", order = "nullius-c", @@ -845,7 +843,7 @@ data:extend({ {"__angelspetrochemgraphics__/graphics/icons/molecules/ammonia.png", 72 }, {element_tint["nitrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(100), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(100), {"fluid-description.nullius-ammonia"}}, subgroup = "acid-chemistry", order = "nullius-j", @@ -879,7 +877,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["air"], element_tint["residual"], element_tint["air"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(85), + localised_description = {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-air"}}, subgroup = "compressed-air", order = "nullius-b", @@ -896,7 +894,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["residual"], element_tint["trace"], element_tint["residual"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(90), + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-residual-gas"}}, subgroup = "compressed-air", order = "nullius-cc", @@ -913,7 +911,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["trace"], element_tint["volcanic"], element_tint["trace"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(90), + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-trace-gas"}}, subgroup = "compressed-air", order = "nullius-dc", @@ -930,7 +928,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["nitrogen"], element_tint["nitrogen"], element_tint["nitrogen"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(90), + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-nitrogen"}}, subgroup = "compressed-air", order = "nullius-e", @@ -947,7 +945,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["argon"], element_tint["argon"], element_tint["argon"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(96), + localised_description = {"fluid-description.nullius-recapture", tostring(96), {"fluid-description.nullius-compressed-argon"}}, subgroup = "compressed-air", order = "nullius-f", @@ -964,7 +962,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["helium"], element_tint["helium"], element_tint["helium"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(99), + localised_description = {"fluid-description.nullius-recapture", tostring(99), {"fluid-description.nullius-compressed-helium"}}, subgroup = "compressed-air", order = "nullius-g", @@ -981,7 +979,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["hydrogen"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-hydrogen"}}}, subgroup = "compression", @@ -999,7 +997,7 @@ data:extend({ icons = angelsLegacy.functions.create_liquid_fluid_icon(nil, {element_tint["oxygen"], element_tint["oxygen"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygenation", tostring(400), + localised_description = {"fluid-description.nullius-oxygenation", tostring(400), {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-oxygen"}}}, subgroup = "compression", @@ -1018,7 +1016,7 @@ data:extend({ {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72 }, {element_tint["carbon"], element_tint["oxygen"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-recapture", tostring(90), + localised_description = {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-carbon-dioxide"}}, subgroup = "compression", order = "nullius-j", @@ -1036,7 +1034,7 @@ data:extend({ {"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72 }, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), {"fluid-description.nullius-recapture", tostring(90), {"fluid-description.nullius-compressed-carbon-monoxide"}}}, subgroup = "compression", @@ -1055,7 +1053,7 @@ data:extend({ {"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72 }, {element_tint["carbon"], element_tint["hydrogen"], element_tint["hydrogen"]} ), - localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(800), + localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(800), {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-methane"}}}, subgroup = "compression", @@ -1070,17 +1068,17 @@ data:extend({ { type = "fluid", name = "nullius-energy", - icons = {{ + icons = {{ icon = FLUIDPATH .. "energy.png", icon_size = 32 - }}, - hidden = true, + }}, + hidden = true, subgroup = "compressed-air", order = "nullius-x", base_color = {r=1, g=1, b=0}, flow_color = {r=1, g=1, b=0}, heat_capacity = "0.1kJ", - fuel_value = "10kJ", + fuel_value = "10kJ", default_temperature = 100, max_temperature = 200, gas_temperature = 0 @@ -1117,11 +1115,11 @@ data:extend({ { type = "recipe", name = "nullius-climatology-pack-1", - localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(1)}, show_amount_in_title = false, always_show_products = true, enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "nullius-water-treatment", energy_required = 60, ingredients = { @@ -1135,7 +1133,7 @@ data:extend({ { type = "recipe", name = "nullius-climatology-pack-2", - localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(2)}, + localised_name = {"", {"item-name.nullius-climatology-pack"}, " ", tostring(2)}, icons = { { icon = "__base__/graphics/icons/chemical-science-pack.png", @@ -1153,7 +1151,8 @@ data:extend({ show_amount_in_title = false, always_show_products = true, enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "research-pack-2", crafting_machine_tint = { @@ -1176,7 +1175,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "basic-chemistry", subgroup = "boxed-science", crafting_machine_tint = { @@ -1285,6 +1284,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "research-pack-2", order = "nullius-fd", @@ -1327,6 +1327,7 @@ data:extend({ order = "nullius-bb", show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="fluid", name="nullius-saline", amount=60}, @@ -1352,6 +1353,7 @@ data:extend({ order = "nullius-bc", show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="fluid", name="nullius-water", amount=80}, @@ -1408,6 +1410,7 @@ data:extend({ always_show_products = true, energy_required = 1, no_productivity = true, + hide_from_signal_gui = false, -- todo: icon ingredients = { {type="fluid", name="nullius-hydrogen", amount=30}, {type="fluid", name="nullius-chlorine", amount=30} @@ -1436,6 +1439,7 @@ data:extend({ }, energy_required = 1, no_productivity = true, + hide_from_signal_gui = false, ingredients = { {type="fluid", name="nullius-hydrogen-chloride", amount=240} }, @@ -1457,6 +1461,7 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, -- todo: icon energy_required = 1, ingredients = { {type="fluid", name="nullius-hydrogen-chloride", amount=35}, @@ -1497,6 +1502,7 @@ data:extend({ order = "nullius-cb", energy_required = 1, no_productivity = true, + hide_from_signal_gui = false, ingredients = { {type="fluid", name="nullius-hydrogen-chloride", amount=56}, {type="fluid", name="nullius-caustic-solution", amount=64} @@ -1537,6 +1543,7 @@ data:extend({ order = "nullius-cc", energy_required = 1, no_productivity = true, + hide_from_signal_gui = false, ingredients = { {type="fluid", name="nullius-acid-hydrochloric", amount=100}, {type="fluid", name="nullius-caustic-solution", amount=100} @@ -1812,6 +1819,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", order = "nullius-ec", crafting_machine_tint = { @@ -1905,7 +1913,7 @@ data:extend({ name = "nullius-seawater", enabled = true, hide_from_player_crafting = true, - crafting_machine_tint = { primary = + crafting_machine_tint = { primary = data.raw.fluid["nullius-seawater"].flow_color }, category = "seawater-pumping", subgroup = "nullius-water-treatment", @@ -1922,6 +1930,7 @@ data:extend({ localised_name = {"recipe-name.nullius-seawater-filtration"}, order = "nullius-b", enabled = false, + hide_from_signal_gui = false, -- todo: icon category = "nullius-water-treatment", subgroup = "nullius-water-treatment", energy_required = 1, @@ -1940,6 +1949,7 @@ data:extend({ localised_name = {"recipe-name.nullius-freshwater-filtration"}, order = "nullius-c", enabled = false, + hide_from_signal_gui = false, -- todo: icon category = "nullius-water-treatment", subgroup = "nullius-water-treatment", energy_required = 1, @@ -1963,7 +1973,8 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", subgroup = "waste-management", order = "nullius-eb", @@ -1980,7 +1991,8 @@ data:extend({ type = "recipe", name = "nullius-heavy-water", enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "waste-management", order = "nullius-ecb", @@ -1998,10 +2010,10 @@ data:extend({ { type = "recipe", name = "nullius-sludge-dehydration", - localised_name = {"recipe-name.nullius-dehydration", {"fluid-name.nullius-sludge"}}, - icons = { + localised_name = {"recipe-name.nullius-dehydration", {"fluid-name.nullius-sludge"}}, + icons = { { - icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", + icon = "__angelssmeltinggraphics__/graphics/icons/powder-tungsten.png", icon_size = 64, }, @@ -2013,7 +2025,8 @@ data:extend({ } }, enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "waste-management", order = "nullius-ea", @@ -2024,7 +2037,7 @@ data:extend({ results = { {type="item", name="nullius-mineral-dust", amount=2}, {type="fluid", name="nullius-steam", amount=80}, - {type="fluid", name="nullius-carbon-monoxide", amount=6} + {type="fluid", name="nullius-carbon-monoxide", amount=6} } }, { @@ -2038,6 +2051,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "nullius-water-treatment", order = "nullius-ebb", @@ -2063,6 +2077,7 @@ data:extend({ {{"__base__/graphics/icons/fluid/steam.png", 64}} ), enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "nullius-water-treatment", order = "nullius-ebc", @@ -2117,6 +2132,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-i", @@ -2141,6 +2157,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-hb", @@ -2163,6 +2180,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-hd", @@ -2178,7 +2196,7 @@ data:extend({ { type = "recipe", name = "nullius-steam-electrolysis", - localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}, + localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}, icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, @@ -2186,6 +2204,7 @@ data:extend({ {{"__base__/graphics/icons/fluid/steam.png", 64}} ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-hc", @@ -2201,7 +2220,7 @@ data:extend({ { type = "recipe", name = "nullius-pressure-steam-electrolysis", - localised_name = {"recipe-name.nullius-pressure", + localised_name = {"recipe-name.nullius-pressure", {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-steam"}}}, icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, @@ -2210,6 +2229,7 @@ data:extend({ {{"__base__/graphics/icons/fluid/steam.png", 64}} ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-he", @@ -2225,7 +2245,7 @@ data:extend({ { type = "recipe", name = "nullius-high-pressure-steam-electrolysis", - localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-pressure-steam"}}, + localised_name = {"recipe-name.nullius-electrolysis", {"fluid-name.nullius-pressure-steam"}}, icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/oxygen.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/hydrogen.png", 72}}, @@ -2233,6 +2253,7 @@ data:extend({ {{FLUIDPATH .. "steam2.png", 64}} ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-hf", @@ -2256,6 +2277,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "nullius-electrolysis", order = "nullius-j", @@ -2293,7 +2315,7 @@ data:extend({ name = "nullius-deuterium", enabled = false, category = "nullius-electrolysis", - subgroup = "waste-management", + subgroup = "waste-management", order = "nullius-ecc", energy_required = 8, ingredients = { @@ -2384,6 +2406,7 @@ data:extend({ always_show_products = true, allow_as_intermediate = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-ec", energy_required = 1, @@ -2446,6 +2469,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", order = "nullius-db", energy_required = 2, @@ -2510,6 +2534,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", order = "nullius-dc", energy_required = 2, @@ -2625,7 +2650,7 @@ data:extend({ type = "recipe", name = "nullius-legacy-lithium-chloride", enabled = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "nullius-water-treatment", @@ -2646,7 +2671,7 @@ data:extend({ type = "recipe", name = "nullius-legacy-boxed-lithium-chloride", enabled = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "nullius-water-treatment", @@ -2708,6 +2733,7 @@ data:extend({ ), enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-cb", @@ -2732,6 +2758,7 @@ data:extend({ ), enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-cc", @@ -2757,6 +2784,7 @@ data:extend({ ), enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-cd", @@ -2782,10 +2810,11 @@ data:extend({ ), enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-cob", - crafting_machine_tint = { primary = data.raw.fluid["nullius-nitrogen"].flow_color }, + crafting_machine_tint = { primary = data.raw.fluid["nullius-nitrogen"].flow_color }, energy_required = 4, ingredients = { {type="fluid", name="nullius-air", amount=400} @@ -2806,11 +2835,12 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, allow_decomposition = false, category = "distillation", subgroup = "air-filtration", order = "nullius-coc", - crafting_machine_tint = { primary = data.raw.fluid["nullius-compressed-nitrogen"].flow_color }, + crafting_machine_tint = { primary = data.raw.fluid["nullius-compressed-nitrogen"].flow_color }, energy_required = 3, ingredients = { {type="fluid", name="nullius-compressed-air", amount=180} @@ -2830,8 +2860,9 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-cr", @@ -2858,6 +2889,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-db", @@ -2883,6 +2915,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-dc", @@ -2908,6 +2941,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-eb", @@ -2933,6 +2967,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "air-filtration", order = "nullius-ec", @@ -2958,7 +2993,8 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "inorganic-chemistry", order = "nullius-eb", @@ -2984,7 +3020,8 @@ data:extend({ nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "inorganic-chemistry", order = "nullius-ec", @@ -3003,10 +3040,10 @@ data:extend({ { type = "recipe", name = "nullius-boxed-volcanic", - localised_name = {"", {"recipe-name.nullius-boxed", + localised_name = {"", {"recipe-name.nullius-boxed", {"recipe-name.nullius-volcanic-separation"}}, " ", tostring(1)}, enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "distillation", subgroup = "boxed-fluid", order = "nullius-bb", @@ -3029,12 +3066,13 @@ data:extend({ localised_name = {"", {"recipe-name.nullius-volcanic-separation"}, " ", tostring(3)}, icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", 72}, - {FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}}, - {element_tint["sulfur"], element_tint["helium"], element_tint["boron"]}, - nil + {FLUIDPATH .. "atom.png", 64, nil, nil, element_tint["helium"]}}, + {element_tint["sulfur"], element_tint["helium"], element_tint["boron"]}, + nil ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "inorganic-chemistry", order = "nullius-ed", @@ -3055,27 +3093,27 @@ data:extend({ name = "nullius-boxed-volcanic-2", localised_name = {"", {"recipe-name.nullius-boxed", {"recipe-name.nullius-volcanic-separation"}}, " ", tostring(2)}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 }, - { + { icon = ICONPATH .. "lye.png", icon_size = 64, tint = { 240, 172, 172 }, - scale = 0.45 + scale = 0.45 }, - { + { icon = FLUIDPATH .. "atom.png", - icon_size = 64, - scale = 0.2, - shift = {10, 10}, + icon_size = 64, + scale = 0.2, + shift = {10, 10}, tint = {164, 140, 204} } }, enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "distillation", subgroup = "boxed-fluid", order = "nullius-bc", @@ -3103,6 +3141,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "carbon", order = "nullius-bb", @@ -3130,6 +3169,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, + hide_from_signal_gui = false, -- todo: maybe useless ? category = "basic-chemistry", subgroup = "carbon", order = "nullius-bc", @@ -3158,6 +3198,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "carbon", order = "nullius-db", @@ -3186,6 +3227,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "carbon", order = "nullius-dc", @@ -3254,6 +3296,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "organic-material-1", order = "nullius-bc", @@ -3274,7 +3317,7 @@ data:extend({ { type = "recipe", name = "nullius-carbon-gasification-1", - localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(1)}, + localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(1)}, icons = angelsLegacy.functions.create_gas_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, @@ -3282,6 +3325,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "carbon", order = "nullius-cb", @@ -3302,7 +3346,7 @@ data:extend({ { type = "recipe", name = "nullius-carbon-gasification-2", - localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(2)}, + localised_name = {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(2)}, icons = angelsLegacy.functions.create_liquid_recipe_icon( {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-monoxide.png", 72}}, {element_tint["carbon"], element_tint["carbon"], element_tint["oxygen"]}, @@ -3310,6 +3354,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "carbon", order = "nullius-cc", @@ -3333,9 +3378,9 @@ data:extend({ { type = "recipe", name = "nullius-boxed-carbon-gasification-1", - localised_name = {"recipe-name.nullius-boxed", + localised_name = {"recipe-name.nullius-boxed", {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(1)}}, - icons = { + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 @@ -3369,7 +3414,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-carbon-gasification-2", - localised_name = {"recipe-name.nullius-boxed", + localised_name = {"recipe-name.nullius-boxed", {"", {"recipe-name.nullius-carbon-gasification"}, " ", tostring(2)}}, icons = { { @@ -3478,6 +3523,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "nullius-electrolysis", subgroup = "carbon", order = "nullius-bd", @@ -3503,6 +3549,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "hydrocarbon", order = "nullius-i", @@ -3530,6 +3577,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "hydrocarbon", order = "nullius-fb", @@ -3557,6 +3605,7 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "hydrocarbon", order = "nullius-fc", @@ -3582,6 +3631,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "hydrocarbon", order = "nullius-f", @@ -3609,6 +3659,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "hydrocarbon", order = "nullius-d", @@ -3635,6 +3686,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "hydrocarbon", order = "nullius-h", @@ -3663,6 +3715,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "hydrocarbon", order = "nullius-e", @@ -3692,8 +3745,9 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + --hide_from_signal_gui = false, -- todo: probably useless category = "basic-chemistry", - order = "nullius-bb", + order = "nullius-bb", crafting_machine_tint = { primary = data.raw.fluid["nullius-oxygen"].flow_color, secondary = data.raw.fluid["nullius-methane"].flow_color @@ -3720,6 +3774,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "organic-chemistry", order = "nullius-bc", @@ -3759,15 +3814,16 @@ data:extend({ { type = "recipe", name = "nullius-pressure-butadiene", - localised_name = {"recipe-name.nullius-pressure", {"fluid-name.nullius-butadiene"}}, - icons = angelsLegacy.functions.create_liquid_fluid_icon( + localised_name = {"recipe-name.nullius-pressure", {"fluid-name.nullius-butadiene"}}, + icons = angelsLegacy.functions.create_liquid_fluid_icon( {"__angelspetrochemgraphics__/graphics/icons/molecules/butadiene.png", 75 }, {element_tint["hydrogen"], element_tint["carbon"], element_tint["carbon"]} ), - enabled = false, + enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", - order = "nullius-cc", + order = "nullius-cc", crafting_machine_tint = { primary = data.raw.fluid["nullius-ethylene"].flow_color }, energy_required = 1, ingredients = { @@ -3922,6 +3978,7 @@ data:extend({ localised_name = {"recipe-name.nullius-boiling", {"fluid-name.nullius-water"}}, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, icons = { { icon = FLUIDPATH .. "purewater.png", @@ -3962,13 +4019,14 @@ data:extend({ { icon = FLUIDPATH .. "purewater.png", icon_size = 64, - scale = 0.36 + scale = 0.36 } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "pressure-boiling", order = "nullius-b", @@ -3987,6 +4045,7 @@ data:extend({ localised_name = {"recipe-name.nullius-boiling", {"fluid-name.nullius-saline"}}, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, icons = { { icon = "__base__/graphics/icons/fluid/water.png", @@ -4029,14 +4088,14 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/water.png", icon_size = 64, - - scale = 0.36 + scale = 0.36 } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "pressure-boiling", order = "nullius-c", @@ -4056,6 +4115,7 @@ data:extend({ localised_name = {"recipe-name.nullius-boiling", {"fluid-name.nullius-brine"}}, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, icons = { { icon = FLUIDPATH .. "brine.png", @@ -4064,7 +4124,6 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4097,13 +4156,14 @@ data:extend({ { icon = FLUIDPATH .. "brine.png", icon_size = 64, - scale = 0.36 + scale = 0.36 } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "pressure-boiling", order = "nullius-d", @@ -4143,6 +4203,7 @@ data:extend({ order = "nullius-d", energy_required = 1, no_productivity = true, + hide_from_signal_gui = false, ingredients = { {type="fluid", name="nullius-seawater", amount=65} }, @@ -4164,13 +4225,14 @@ data:extend({ { icon = FLUIDPATH .. "seawater.png", icon_size = 64, - scale = 0.36 + scale = 0.36 } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "pressure-boiling", order = "nullius-e", @@ -4198,7 +4260,6 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} @@ -4210,6 +4271,7 @@ data:extend({ order = "nullius-e", energy_required = 1, no_productivity = true, + hide_from_signal_gui = false, ingredients = { {type="fluid", name="nullius-freshwater", amount=60} }, @@ -4231,13 +4293,14 @@ data:extend({ { icon = FLUIDPATH .. "freshwater.png", icon_size = 64, - scale = 0.36 + scale = 0.36 } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "pressure-boiling", order = "nullius-f", @@ -4265,14 +4328,14 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 0.45, tint = {0.8, 0.8, 0.8, 0.8}, shift = {2, -2} } }, enabled = false, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "boiling", subgroup = "boiling", order = "nullius-f", @@ -4299,13 +4362,14 @@ data:extend({ { icon = FLUIDPATH .. "wastewater.png", icon_size = 64, - scale = 0.36 + scale = 0.36 } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "pressure-boiling", subgroup = "pressure-boiling", order = "nullius-g", @@ -4326,6 +4390,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, icon_size = 64, icons = { { @@ -4333,7 +4398,6 @@ data:extend({ }, { icon = "__base__/graphics/icons/fluid/steam.png", - scale = 0.25, shift = {-8, -8} } @@ -4364,8 +4428,8 @@ data:extend({ { icon = "__angelsrefininggraphics__/graphics/icons/barreling-pump.png", icon_size = 32, - scale = 0.5, - shift = {-8, -8} + scale = 0.5, + shift = {-8, -8} } }, enabled = false, @@ -4373,7 +4437,8 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, + hide_from_signal_gui = false, category = "decompression", subgroup = "pressure-boiling", order = "nullius-i", @@ -4392,7 +4457,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", subgroup = "pressure-boiling", order = "nullius-h", @@ -4429,6 +4494,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="fluid", name="nullius-hydrogen", amount=200}, @@ -4461,6 +4527,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="fluid", name="nullius-compressed-hydrogen", amount=65}, @@ -4494,6 +4561,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="fluid", name="nullius-compressed-hydrogen", amount=90}, @@ -4513,7 +4581,6 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - }, { icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", @@ -4524,6 +4591,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-eb", @@ -4557,6 +4625,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-ec", @@ -4580,7 +4649,6 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - }, { icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", @@ -4591,6 +4659,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-fb", @@ -4624,6 +4693,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-fc", @@ -4646,7 +4716,6 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 0.5 }, { @@ -4658,6 +4727,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-fd", @@ -4680,11 +4750,10 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 0.5 }, { - icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/methanol.png", icon_size = 72, scale = 0.2, shift = {-8, -8} @@ -4692,6 +4761,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-fe", @@ -4719,13 +4789,13 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/heavy-oil.png", icon_size = 64, - scale = 0.25, shift = {-8, -8} } }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "combustion", order = "nullius-ff", @@ -4760,8 +4830,9 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", - subgroup = "boiling", + subgroup = "boiling", order = "nullius-g", energy_required = 1, ingredients = { @@ -4788,11 +4859,10 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - scale = 0.45 }, { - icon = "__base__/graphics/icons/coal-dark-background.png", + icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, scale = 0.27, shift = {-5, -5} @@ -4801,7 +4871,7 @@ data:extend({ enabled = false, allow_as_intermediate = false, category = "combustion", - subgroup = "boxed-organic-1", + subgroup = "boxed-organic-1", order = "nullius-dg", energy_required = 5, ingredients = { @@ -4822,22 +4892,20 @@ data:extend({ icons = { { icon = "__base__/graphics/icons/fluid/steam.png", - icon_size = 64, - + icon_size = 64, }, { - icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-7, -7} }, - { - icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", + { + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32, - scale = 0.5, - shift = {7, 7} - } + scale = 0.5, + shift = {7, 7} + } }, enabled = false, category = "combustion", @@ -4846,15 +4914,16 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="item", name="nullius-aluminum-powder", amount=8}, {type="fluid", name="nullius-water", amount=100} }, results = { - {type="item", name="nullius-aluminum-hydroxide", amount=1}, + {type="item", name="nullius-aluminum-hydroxide", amount=1}, {type="fluid", name="nullius-steam", amount=180}, - {type="fluid", name="nullius-hydrogen", amount=90} + {type="fluid", name="nullius-hydrogen", amount=90} } }, { @@ -4869,23 +4938,21 @@ data:extend({ }, { icon = "__base__/graphics/icons/fluid/steam.png", - icon_size = 64, - - scale = 0.45 + icon_size = 64, + scale = 0.45 }, { - icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", + icon = "__angelssmeltinggraphics__/graphics/icons/ingot-aluminium.png", icon_size = 64, - - scale = 0.27, + scale = 0.27, shift = {-6, -6} }, - { - icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", + { + icon = "__angelssmeltinggraphics__/graphics/icons/solid-aluminium-hydroxide.png", icon_size = 32, - scale = 0.45, - shift = {6, 6} - } + scale = 0.45, + shift = {6, 6} + } }, enabled = false, category = "combustion", @@ -4924,6 +4991,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "wet-smelting", subgroup = "organic-material-1", order = "nullius-bd", @@ -4977,7 +5045,6 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - scale = 0.45 }, { @@ -5049,7 +5116,6 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - scale = 0.45 }, { @@ -5060,6 +5126,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "compression", subgroup = "boxed-organic-1", order = "nullius-bf", @@ -5081,11 +5148,12 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/methane.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/benzene.png", 72}, {"__angelspetrochemgraphics__/graphics/icons/molecules/propene.png", 72}}, - {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, - {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}} + {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]}, + {{"__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", 72}} ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "reforming", order = "nullius-pb", @@ -5113,6 +5181,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "reforming", order = "nullius-pc", @@ -5139,6 +5208,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "reforming", order = "nullius-g", @@ -5166,6 +5236,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "reforming", order = "nullius-qb", @@ -5195,6 +5266,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "reforming", order = "nullius-qc", @@ -5287,10 +5359,11 @@ data:extend({ name = "nullius-canister-emptying", icon = ICONPATH .. "canister-water.png", icon_size = 64, - enabled = false, - no_productivity = true, - category = "nullius-unbarrel", - subgroup = "canister-emptying", + enabled = false, + no_productivity = true, + hide_from_signal_gui = false, -- todo: maybe remove it + category = "nullius-unbarrel", + subgroup = "canister-emptying", order = "nullius-e", energy_required = 0.2, ingredients = { @@ -5317,7 +5390,7 @@ data:extend({ } }, enabled = false, - no_productivity = true, + no_productivity = true, category = "nullius-unbarrel", subgroup = "boxed-canister", order = "nullius-h", @@ -5427,6 +5500,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "basic-chemistry", order = "nullius-dc", crafting_machine_tint = { @@ -5586,6 +5660,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "basic-chemistry", order = "nullius-ec", crafting_machine_tint = { @@ -5690,9 +5765,9 @@ data:extend({ { type = "recipe", name = "nullius-hydrogen-canister-flushing", - localised_name = {"recipe-name.nullius-flushing", + localised_name = {"recipe-name.nullius-flushing", {"item-name.nullius-hydrogen-canister"}}, - icons = { + icons = { { icon = ICONPATH .. "canister-empty.png", icon_size = 64 @@ -5705,7 +5780,8 @@ data:extend({ } }, enabled = false, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "nullius-unbarrel", subgroup = "canister-emptying", order = "nullius-fb", @@ -5721,9 +5797,9 @@ data:extend({ { type = "recipe", name = "nullius-methanol-canister-flushing", - localised_name = {"recipe-name.nullius-flushing", + localised_name = {"recipe-name.nullius-flushing", {"item-name.nullius-methanol-canister"}}, - icons = { + icons = { { icon = ICONPATH .. "canister-empty.png", icon_size = 64 @@ -5736,7 +5812,7 @@ data:extend({ } }, enabled = false, - no_productivity = true, + no_productivity = true, category = "nullius-unbarrel", subgroup = "canister-emptying", order = "nullius-fc", @@ -5752,9 +5828,9 @@ data:extend({ { type = "recipe", name = "nullius-biodiesel-canister-flushing", - localised_name = {"recipe-name.nullius-flushing", + localised_name = {"recipe-name.nullius-flushing", {"item-name.nullius-biodiesel-canister"}}, - icons = { + icons = { { icon = ICONPATH .. "canister-empty.png", icon_size = 64 @@ -5768,7 +5844,8 @@ data:extend({ } }, enabled = false, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "nullius-unbarrel", subgroup = "canister-emptying", order = "nullius-fd", @@ -5914,7 +5991,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -5931,7 +6008,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -5948,7 +6025,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -5965,7 +6042,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -5982,7 +6059,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -5999,7 +6076,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -6016,7 +6093,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -6033,7 +6110,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -6050,7 +6127,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -6067,7 +6144,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -6084,7 +6161,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_stats = true, + hide_from_stats = true, category = "compression", energy_required = 1, ingredients = { @@ -6109,7 +6186,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "decompression", order = "nullius-bb", @@ -6135,7 +6212,8 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, + hide_from_signal_gui = false, category = "decompression", subgroup = "decompression", order = "nullius-c", @@ -6161,7 +6239,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "decompression", order = "nullius-d", @@ -6187,7 +6265,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "decompression", order = "nullius-e", @@ -6213,7 +6291,8 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, + hide_from_signal_gui = false, category = "decompression", subgroup = "decompression", order = "nullius-f", @@ -6239,7 +6318,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "decompression", order = "nullius-g", @@ -6265,9 +6344,9 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", - subgroup = "compression", + subgroup = "compression", order = "nullius-pb", energy_required = 1, ingredients = { @@ -6291,7 +6370,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "compression", order = "nullius-pc", @@ -6317,9 +6396,9 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", - subgroup = "compression", + subgroup = "compression", order = "nullius-pd", energy_required = 1, ingredients = { @@ -6344,7 +6423,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "decompression", order = "nullius-bc", @@ -6370,7 +6449,7 @@ data:extend({ always_show_products = true, allow_decomposition = false, allow_as_intermediate = false, - hide_from_stats = true, + hide_from_stats = true, category = "decompression", subgroup = "decompression", order = "nullius-bd", @@ -6405,6 +6484,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nullius-water-treatment", subgroup = "waste-management", order = "nullius-cb", @@ -6438,6 +6518,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nullius-water-treatment", subgroup = "waste-management", order = "nullius-cc", @@ -6471,6 +6552,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nullius-water-treatment", subgroup = "waste-management", order = "nullius-d", @@ -6502,6 +6584,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "ore-flotation", subgroup = "waste-management", order = "nullius-bb", @@ -6569,6 +6652,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "ore-flotation", subgroup = "waste-management", order = "nullius-bc", @@ -6719,6 +6803,7 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, enabled = false, category = "basic-chemistry", order = "nullius-be", @@ -6749,8 +6834,7 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - - scale = 0.45 + scale = 0.45 }, { icon = "__angelspetrochemgraphics__/graphics/icons/molecules/styrene.png", @@ -6799,6 +6883,7 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, enabled = false, category = "basic-chemistry", order = "nullius-bd", @@ -6831,8 +6916,7 @@ data:extend({ { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - - scale = 0.45 + scale = 0.45 }, { icon = "__angelspetrochemgraphics__/graphics/icons/molecules/ethylene.png", @@ -7044,8 +7128,9 @@ data:extend({ nil ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", - subgroup = "organic-chemistry", + subgroup = "organic-chemistry", order = "nullius-ic", crafting_machine_tint = { primary = data.raw.fluid["nullius-methane"].flow_color, @@ -7118,6 +7203,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "organic-material-1", order = "nullius-cc", @@ -7212,7 +7298,7 @@ data:extend({ localised_name = {"", {"fluid-name.nullius-ech"}, " ", tostring(1)}, enabled = false, category = "basic-chemistry", - subgroup = "chlorine-chemistry", + subgroup = "chlorine-chemistry", order = "nullius-hb", crafting_machine_tint = { primary = data.raw.fluid["nullius-propene"].flow_color, @@ -7235,7 +7321,7 @@ data:extend({ name = "nullius-glycerol", enabled = false, category = "basic-chemistry", - subgroup = "chlorine-chemistry", + subgroup = "chlorine-chemistry", order = "nullius-i", crafting_machine_tint = { primary = data.raw.fluid["nullius-ech"].flow_color, @@ -7298,8 +7384,9 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", 72}} ), enabled = false, + hide_from_signal_gui = false, category = "basic-chemistry", - subgroup = "chlorine-chemistry", + subgroup = "chlorine-chemistry", order = "nullius-hc", crafting_machine_tint = { primary = data.raw.fluid["nullius-glycerol"].flow_color, @@ -7394,8 +7481,9 @@ data:extend({ enabled = false, allow_as_intermediate = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", - subgroup = "ore-recovery", + subgroup = "ore-recovery", order = "nullius-oe", energy_required = 20, ingredients = { @@ -7429,6 +7517,7 @@ data:extend({ enabled = false, allow_as_intermediate = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", subgroup = "ore-recovery", order = "nullius-ob", @@ -7464,8 +7553,9 @@ data:extend({ enabled = false, allow_as_intermediate = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", - subgroup = "ore-recovery", + subgroup = "ore-recovery", order = "nullius-oc", energy_required = 20, ingredients = { @@ -7499,8 +7589,9 @@ data:extend({ enabled = false, allow_as_intermediate = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", - subgroup = "ore-recovery", + subgroup = "ore-recovery", order = "nullius-od", energy_required = 20, ingredients = { @@ -7535,8 +7626,9 @@ data:extend({ enabled = false, allow_as_intermediate = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", - subgroup = "ore-recovery", + subgroup = "ore-recovery", order = "nullius-of", energy_required = 30, ingredients = { @@ -7620,7 +7712,7 @@ data:extend({ fuel_value = "1GJ", fuel_acceleration_multiplier = 1.6, fuel_top_speed_multiplier = 1.3, - fuel_glow_color = {r=0.8, g=0.7, b=0, a=1}, + fuel_glow_color = {r=0.8, g=0.7, b=0, a=1}, subgroup = "nuclear", order = "nullius-can", stack_size = 20 @@ -7635,7 +7727,7 @@ data:extend({ fuel_value = "3GJ", fuel_acceleration_multiplier = 2, fuel_top_speed_multiplier = 1.5, - fuel_glow_color = {r=0.9, g=0, b=0.8, a=1}, + fuel_glow_color = {r=0.9, g=0, b=0.8, a=1}, subgroup = "nuclear", order = "nullius-cb", stack_size = 20 @@ -7719,6 +7811,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, -- todo: maybe icon category = "basic-chemistry", subgroup = "nuclear", order = "nullius-cc", @@ -7765,6 +7858,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, -- todo: maybe icon category = "distillation", subgroup = "nuclear", order = "nullius-dc", diff --git a/nullius/prototypes/item/recipe.lua b/nullius/prototypes/item/recipe.lua index 17e1a1a..0384f75 100644 --- a/nullius/prototypes/item/recipe.lua +++ b/nullius/prototypes/item/recipe.lua @@ -64,6 +64,7 @@ data:extend({ allow_decomposition = false, allow_as_intermediate = false, always_show_made_in = true, + hide_from_signal_gui = false, energy_required = 5, ingredients = { {type = "item", name = "nullius-limestone", amount = 4} @@ -98,6 +99,7 @@ data:extend({ allow_decomposition = false, allow_as_intermediate = false, always_show_made_in = true, + hide_from_signal_gui = false, energy_required = 4, ingredients = { {type = "item", name = "nullius-sandstone", amount = 3} @@ -963,8 +965,8 @@ data:extend({ name = "nullius-rail-signal", localised_name = {"entity-name.rail-signal"}, enabled = false, - always_show_made_in = true, - show_amount_in_title = false, + always_show_made_in = true, + show_amount_in_title = false, always_show_products = true, category = "small-crafting", energy_required = 8, @@ -1001,7 +1003,7 @@ data:extend({ type = "recipe", name = "nullius-boxed-rail-signal", enabled = false, - always_show_made_in = true, + always_show_made_in = true, category = "large-assembly", subgroup = "boxed-rail", energy_required = 40, @@ -1330,7 +1332,7 @@ data:extend({ { type = "recipe", name = "nullius-barrel-2", - localised_name = {"", {"item-name.barrel"}, " ", tostring(2)}, + localised_name = {"", {"item-name.barrel"}, " ", tostring(2)}, enabled = false, category = "hand-casting", subgroup = "canisters", @@ -1339,6 +1341,7 @@ data:extend({ allow_decomposition = false, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, -- todo: proper icon energy_required = 6, ingredients = { {type="item", name="nullius-small-tank-1", amount=1}, @@ -1351,11 +1354,11 @@ data:extend({ { type = "recipe", name = "nullius-boxed-barrel-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(2)}, + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(2)}, enabled = false, category = "machine-casting", subgroup = "boxed-canister", - order = "nullius-bc", + order = "nullius-bc", always_show_made_in = true, allow_decomposition = false, show_amount_in_title = false, @@ -1378,7 +1381,7 @@ data:extend({ enabled = false, category = "hand-casting", - subgroup = "canister-emptying", + subgroup = "canister-emptying", order = "nullius-b", always_show_made_in = true, no_productivity = true, @@ -1398,7 +1401,7 @@ data:extend({ { type = "recipe", name = "nullius-legacy-barrel-1", - localised_name = {"", {"item-name.barrel"}, " ", tostring(1)}, + localised_name = {"", {"item-name.barrel"}, " ", tostring(1)}, enabled = false, category = "large-crafting", subgroup = "canisters", @@ -1421,11 +1424,11 @@ data:extend({ { type = "recipe", name = "nullius-legacy-boxed-barrel-1", - localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(1)}, enabled = false, category = "huge-assembly", subgroup = "boxed-canister", - order = "nullius-bb", + order = "nullius-bb", always_show_made_in = true, show_amount_in_title = false, always_show_products = true, @@ -1445,7 +1448,7 @@ data:extend({ type = "recipe", name = "nullius-legacy-barrel-2", localised_name = {"", {"item-name.barrel"}, " ", tostring(2)}, - icons = { + icons = { { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, @@ -1466,7 +1469,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, energy_required = 4, @@ -1482,8 +1485,8 @@ data:extend({ { type = "recipe", name = "nullius-legacy-boxed-barrel-2", - localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(2)}, - icons = { + localised_name = {"", {"item-name.nullius-box", {"item-name.barrel"}}, " ", tostring(2)}, + icons = { { icon = ICONPATH .. "crate.png", icon_size = 64 @@ -1491,13 +1494,11 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png", icon_size = 64, - - scale = 0.45 + scale = 0.45 }, { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", icon_size = 64, - scale = 0.27, shift = {7, -8} } @@ -1509,7 +1510,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, energy_required = 20, @@ -1531,7 +1532,7 @@ data:extend({ enabled = false, category = "medium-crafting", - subgroup = "canister-emptying", + subgroup = "canister-emptying", order = "nullius-b", always_show_made_in = true, no_productivity = true, From 1544f3169ecf60b1a6a984759e7f154f23ab5fbf Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 6 Sep 2025 18:10:00 +0200 Subject: [PATCH 217/236] Added more recipe signals --- nullius/prototypes/item/biology.lua | 639 ++++++++++++++-------------- 1 file changed, 327 insertions(+), 312 deletions(-) diff --git a/nullius/prototypes/item/biology.lua b/nullius/prototypes/item/biology.lua index 9d191cc..225beb8 100644 --- a/nullius/prototypes/item/biology.lua +++ b/nullius/prototypes/item/biology.lua @@ -142,7 +142,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 15, ingredients = { {type="item", name="nullius-sugar", amount=5}, @@ -231,7 +231,8 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - allow_decomposition = false, + allow_decomposition = false, + --hide_from_signal_gui = false, category = "distillation", subgroup = "biology-oil", order = "nullius-bc", @@ -252,14 +253,12 @@ data:extend({ localised_name = {"recipe-name.nullius-biolubricant"}, icons = { { - icon = "__base__/graphics/icons/fluid/lubricant.png", - icon_size = 64, - + icon = "__base__/graphics/icons/fluid/lubricant.png", + icon_size = 64, }, { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - scale = 0.2, shift = {-12, -10} } @@ -267,7 +266,8 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - allow_decomposition = false, + allow_decomposition = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-oil", order = "nullius-bd", @@ -362,6 +362,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", order = "nullius-fc", energy_required = 8, @@ -379,13 +380,13 @@ data:extend({ type = "recipe", name = "nullius-fertilizer", localised_name = {"", {"item-name.nullius-fertilizer"}, " ", tostring(1)}, - icons = { - { - icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", + icons = { + { + icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", icon_size = 32 }, { - icon = ICONPATH .. "algae.png", + icon = ICONPATH .. "algae.png", icon_size = 64, scale = 0.33, shift = {-8, -4} @@ -394,7 +395,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - order = "nullius-db", + order = "nullius-db", category = "basic-chemistry", crafting_machine_tint = { primary = data.raw.fluid["nullius-ammonia"].flow_color, @@ -415,14 +416,14 @@ data:extend({ { type = "recipe", name = "nullius-fertilizer-2", - localised_name = {"", {"item-name.nullius-fertilizer"}, " ", tostring(2)}, - icons = { - { - icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", + localised_name = {"", {"item-name.nullius-fertilizer"}, " ", tostring(2)}, + icons = { + { + icon = "__angelsrefininggraphics__/graphics/icons/solid-mud.png", icon_size = 32 }, { - icon = ICONPATH .. "wood-chip.png", + icon = ICONPATH .. "wood-chip.png", icon_size = 64, scale = 0.33, shift = {-8, -6} @@ -431,7 +432,8 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - order = "nullius-dc", + hide_from_signal_gui = false, + order = "nullius-dc", category = "basic-chemistry", crafting_machine_tint = { primary = data.raw.fluid["nullius-bacteria"].flow_color, @@ -460,7 +462,7 @@ data:extend({ {element_tint["carbon"], element_tint["carbon"], element_tint["hydrogen"]} ), enabled = false, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, category = "distillation", subgroup = "biology-oil", @@ -492,7 +494,7 @@ data:extend({ data.raw.fluid["nullius-fatty-acids"].icons[4] }, enabled = false, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, category = "distillation", subgroup = "boxed-biology", @@ -522,6 +524,7 @@ data:extend({ ), enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-oil", order = "nullius-h", @@ -545,7 +548,7 @@ data:extend({ { icon = ICONPATH .. "bacteria.png", icon_size = 64, - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -560,10 +563,10 @@ data:extend({ { type = "recipe", name = "nullius-bacteria-genome", - localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-bb", + order = "nullius-bb", energy_required = 30, ingredients = { {type="fluid", name="nullius-nucleotides", amount=18, fluidbox_index=1}, @@ -581,11 +584,11 @@ data:extend({ type = "recipe", name = "nullius-bacteria-genome-2", localised_name = {"", {"item-name.nullius-bacteria-genome"}, " ", tostring(2)}, - icons = { + icons = { { icon = ICONPATH .. "bacteria.png", icon_size = 64, - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -593,20 +596,20 @@ data:extend({ scale = 0.4, shift = {-3, 2} }, - { + { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-bc", + order = "nullius-bc", energy_required = 45, ingredients = { {type="fluid", name="nullius-nucleotides", amount=25, fluidbox_index=1}, @@ -640,7 +643,7 @@ data:extend({ }, enabled = false, allow_decomposition = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, category = "nanotechnology", subgroup = "biology-bacteria", @@ -686,20 +689,21 @@ data:extend({ type = "recipe", name = "nullius-bacteria-3", localised_name = {"", {"fluid-name.nullius-bacteria"}, " ", tostring(3)}, - icons = { - { + icons = { + { icon = ICONPATH .. "bacteria.png", icon_size = 64 }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", subgroup = "biology-bacteria", order = "nullius-cd", @@ -737,6 +741,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-bacteria", order = "nullius-f", @@ -811,14 +816,15 @@ data:extend({ { icon = "__angelspetrochemgraphics__/graphics/icons/molecules/glycerol.png", icon_size = 72, - scale = 0.23, - shift = {-8, 12} + scale = 0.23, + shift = {-8, 12} } }, enabled = false, always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-bacteria", order = "nullius-fg", @@ -936,6 +942,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-bacteria", order = "nullius-g", @@ -961,7 +968,7 @@ data:extend({ { icon = ICONPATH .. "algae.png", icon_size = 64, - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -1017,9 +1024,9 @@ data:extend({ { type = "recipe", name = "nullius-algae-genome", - localised_name = {"", {"item-name.nullius-algae-genome"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-algae-genome"}, " ", tostring(1)}, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, category = "nanotechnology", energy_required = 20, @@ -1038,11 +1045,11 @@ data:extend({ type = "recipe", name = "nullius-algae-genome-2", localised_name = {"", {"item-name.nullius-algae-genome"}, " ", tostring(2)}, - icons = { + icons = { { icon = ICONPATH .. "algae.png", icon_size = 64, - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -1050,20 +1057,20 @@ data:extend({ scale = 0.4, shift = {-3, 2} }, - { + { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-bc", + order = "nullius-bc", energy_required = 30, ingredients = { {type="item", name="nullius-bacteria-genome", amount=1}, @@ -1080,10 +1087,10 @@ data:extend({ { type = "recipe", name = "nullius-algae-progenitor", - localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 150, ingredients = { {type="item", name="nullius-algae-genome", amount=1}, @@ -1102,22 +1109,23 @@ data:extend({ { type = "recipe", name = "nullius-algae-progenitor-2", - localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", tostring(2)}, - icons = { - { + localised_name = {"", {"item-name.nullius-algae-progenitor"}, " ", tostring(2)}, + icons = { + { icon = ICONPATH .. "algae-progenitor.png", icon_size = 64 }, - { + { icon = ICONPATH .. "algae.png", icon_size = 64, - scale = 0.36, + scale = 0.36, shift = {-8, -8} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-cc", + order = "nullius-cc", energy_required = 250, ingredients = { {type="item", name="nullius-algae-genome", amount=1}, @@ -1174,6 +1182,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-algae"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", order = "nullius-dc", energy_required = 26, @@ -1194,20 +1203,21 @@ data:extend({ type = "recipe", name = "nullius-algae-3", localised_name = {"", {"item-name.nullius-algae"}, " ", tostring(3)}, - icons = { - { + icons = { + { icon = ICONPATH .. "algae.png", icon_size = 64 }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", order = "nullius-dd", energy_required = 24, @@ -1232,7 +1242,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "bio-harvesting", - order = "nullius-eb", + order = "nullius-eb", energy_required = 8, ingredients = { {type="item", name="nullius-algae", amount=5} @@ -1247,7 +1257,7 @@ data:extend({ { type = "recipe", name = "nullius-algae-harvest", - localised_name = {"recipe-name.nullius-harvest", {"item-name.nullius-algae"}}, + localised_name = {"recipe-name.nullius-harvest", {"item-name.nullius-algae"}}, icons = { { icon = ICONPATH .. "protocell.png", @@ -1259,36 +1269,37 @@ data:extend({ icon_size = 64, scale = 0.4 }, - { - icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", + { + icon = "__angelsrefininggraphics__/graphics/icons/solid-limestone.png", icon_size = 32, - scale = 0.48, - shift = {11, 10} - }, - { - icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", + scale = 0.48, + shift = {11, 10} + }, + { + icon = "__angelspetrochemgraphics__/graphics/icons/molecules/sulfur-dioxide.png", icon_size = 72, - scale = 0.2, - shift = {-10, 10} - } + scale = 0.2, + shift = {-10, 10} + } }, enabled = false, always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", crafting_machine_tint = { primary = data.raw.fluid["nullius-fatty-acids"].flow_color }, - order = "nullius-ec", + order = "nullius-ec", energy_required = 40, ingredients = { {type="item", name="nullius-algae", amount=18}, - {type="fluid", name="nullius-saline", amount=100} + {type="fluid", name="nullius-saline", amount=100} }, results = { {type="item", name="nullius-algae-spore", amount=33}, {type="fluid", name="nullius-wastewater", amount=120}, - {type="fluid", name="nullius-sulfur-dioxide", amount=65}, - {type="fluid", name="nullius-fatty-acids", amount=40}, + {type="fluid", name="nullius-sulfur-dioxide", amount=65}, + {type="fluid", name="nullius-fatty-acids", amount=40}, {type="item", name="nullius-cellulose", amount=7}, {type="item", name="nullius-crushed-limestone", amount=5} }, @@ -1321,13 +1332,14 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-c", energy_required = 1, ingredients = { {type="item", name="nullius-algae-spore", amount=4}, - {type="fluid", name="nullius-seawater", amount=12} + {type="fluid", name="nullius-seawater", amount=12} }, results = { {type="fluid", name="nullius-wastewater", amount=18} @@ -1342,7 +1354,6 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - scale = 0.5 }, { @@ -1356,8 +1367,9 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "ore-flotation", subgroup = "biology-algae", order = "nullius-f", @@ -1401,7 +1413,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, category = "ore-flotation", subgroup = "boxed-biology", @@ -1428,7 +1440,7 @@ data:extend({ { icon = ICONPATH .. "grass.png", icon_size = 64, - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -1484,7 +1496,7 @@ data:extend({ { type = "recipe", name = "nullius-grass-genome", - localised_name = {"", {"item-name.nullius-grass-genome"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-grass-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 30, @@ -1504,11 +1516,11 @@ data:extend({ type = "recipe", name = "nullius-grass-genome-2", localised_name = {"", {"item-name.nullius-grass-genome"}, " ", tostring(2)}, - icons = { + icons = { { icon = ICONPATH .. "grass.png", icon_size = 64, - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -1516,20 +1528,20 @@ data:extend({ scale = 0.4, shift = {-3, 2} }, - { + { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-bc", + order = "nullius-bc", energy_required = 45, ingredients = { {type="fluid", name="nullius-nucleotides", amount=20, fluidbox_index=1}, @@ -1547,10 +1559,10 @@ data:extend({ { type = "recipe", name = "nullius-grass-progenitor", - localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 200, ingredients = { {type="item", name="nullius-grass-genome", amount=1}, @@ -1569,22 +1581,23 @@ data:extend({ { type = "recipe", name = "nullius-grass-progenitor-2", - localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", tostring(2)}, - icons = { - { + localised_name = {"", {"item-name.nullius-grass-progenitor"}, " ", tostring(2)}, + icons = { + { icon = ICONPATH .. "grass-progenitor.png", icon_size = 64 }, - { + { icon = ICONPATH .. "grass.png", icon_size = 64, - scale = 0.36, + scale = 0.36, shift = {-8, -8} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-cc", + order = "nullius-cc", energy_required = 350, ingredients = { {type="item", name="nullius-grass-genome", amount=1}, @@ -1593,7 +1606,7 @@ data:extend({ {type="fluid", name="nullius-fatty-acids", amount=5}, {type="item", name="nullius-sugar", amount=3}, {type="item", name="nullius-grass", amount=10}, - {type="item", name="nullius-grass-seed", amount=25} + {type="item", name="nullius-grass-seed", amount=25} }, results = { {type="item", name="nullius-grass-progenitor", amount=2}, @@ -1641,6 +1654,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-grass"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-dc", energy_required = 40, @@ -1662,20 +1676,21 @@ data:extend({ type = "recipe", name = "nullius-grass-3", localised_name = {"", {"item-name.nullius-grass"}, " ", tostring(3)}, - icons = { - { + icons = { + { icon = ICONPATH .. "grass.png", icon_size = 64 }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-dd", energy_required = 36, @@ -1762,6 +1777,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", subgroup = "biology-grass", order = "nullius-g", @@ -1837,6 +1853,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "biology-burning", order = "nullius-d", @@ -1893,7 +1910,6 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - }, { icon = "__base__/graphics/decorative/brown-asterisk/brown-asterisk-11.png", @@ -1903,6 +1919,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "wet-smelting", subgroup = "biology-burning", order = "nullius-e", @@ -1959,7 +1976,7 @@ data:extend({ localised_name = {"", {"recipe-name.nullius-pyrolysis", {"item-name.nullius-cellulose"}}, " ", tostring(2)}, icons = { - { + { icon = ICONPATH .. "carbon-fiber.png", icon_size = 128 }, @@ -1969,8 +1986,9 @@ data:extend({ scale = 0.37, shift = {-7, -7} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "wet-smelting", subgroup = "biology-burning", order = "nullius-f", @@ -2030,17 +2048,16 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - scale = 0.3, shift = {-8, -7} } }, enabled = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "biology-burning", order = "nullius-ca", @@ -2106,16 +2123,16 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - }, { - icon = ICONPATH .. "wood-chip.png", + icon = ICONPATH .. "wood-chip.png", icon_size = 64, scale = 0.3, shift = {-8, -9} } }, enabled = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "biology-burning", order = "nullius-cb", @@ -2178,18 +2195,18 @@ data:extend({ localised_name = {"recipe-name.nullius-pyrolysis", {"item-name.nullius-wood-chip"}}, icons = { { - icon = "__base__/graphics/icons/coal-dark-background.png", + icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - }, { - icon = ICONPATH .. "wood-chip.png", + icon = ICONPATH .. "wood-chip.png", icon_size = 64, scale = 0.3, shift = {-8, -9} } }, enabled = false, + hide_from_signal_gui = false, category = "wet-smelting", subgroup = "biology-burning", order = "nullius-cc", @@ -2214,13 +2231,12 @@ data:extend({ icon_size = 64 }, { - icon = "__base__/graphics/icons/coal-dark-background.png", + icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - scale = 0.45 }, { - icon = ICONPATH .. "wood-chip.png", + icon = ICONPATH .. "wood-chip.png", icon_size = 64, scale = 0.27, shift = {-7, -8} @@ -2231,7 +2247,7 @@ data:extend({ subgroup = "boxed-biology-burning", order = "nullius-cc", energy_required = 5, - ingredients = { + ingredients = { {type="item", name="nullius-box-wood-chip", amount=4}, {type="fluid", name="nullius-nitrogen", amount=175} }, @@ -2246,15 +2262,15 @@ data:extend({ enabled = false, category = "distillation", subgroup = "biology-burning", - order = "nullius-b", - crafting_machine_tint = { + order = "nullius-b", + crafting_machine_tint = { primary = data.raw.fluid["nullius-petroleum"].flow_color, secondary = data.raw.fluid["nullius-petroleum"].flow_color }, - energy_required = 15, + energy_required = 15, ingredients = { {type="item", name="nullius-graphite", amount=12}, - {type="item", name="nullius-rubber", amount=1}, + {type="item", name="nullius-rubber", amount=1}, {type="fluid", name="nullius-biodiesel", amount=10}, {type="fluid", name="nullius-compressed-nitrogen", amount=50} }, @@ -2271,15 +2287,15 @@ data:extend({ enabled = false, category = "distillation", subgroup = "boxed-biology-burning", - order = "nullius-b", - crafting_machine_tint = { + order = "nullius-b", + crafting_machine_tint = { primary = data.raw.fluid["nullius-petroleum"].flow_color, secondary = data.raw.fluid["nullius-petroleum"].flow_color }, energy_required = 75, ingredients = { {type="item", name="nullius-box-graphite", amount=12}, - {type="item", name="nullius-box-rubber", amount=1}, + {type="item", name="nullius-box-rubber", amount=1}, {type="fluid", name="nullius-biodiesel", amount=50}, {type="fluid", name="nullius-compressed-nitrogen", amount=250} }, @@ -2295,9 +2311,9 @@ data:extend({ name = "nullius-petroleum", enabled = false, category = "basic-chemistry", - subgroup = "biology-oil", + subgroup = "biology-oil", order = "nullius-e", - crafting_machine_tint = { + crafting_machine_tint = { primary = data.raw.fluid["nullius-petroleum"].flow_color, secondary = data.raw.fluid["nullius-petroleum"].flow_color }, @@ -2360,7 +2376,7 @@ data:extend({ {type="item", name="nullius-petroleum-barrel", amount=10000}, {type="item", name="nullius-extractor-2", amount=3} }, - results = { + results = { {type="item", name="nullius-sequestration-petroleum-drone", amount=1}, {type="item", name="nullius-box-barrel", amount=1500} }, @@ -2450,7 +2466,7 @@ data:extend({ { type = "recipe", name = "nullius-worm-genome", - localised_name = {"", {"item-name.nullius-worm-genome"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-worm-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 40, @@ -2470,12 +2486,11 @@ data:extend({ type = "recipe", name = "nullius-worm-genome-2", localised_name = {"", {"item-name.nullius-worm-genome"}, " ", tostring(2)}, - icons = { + icons = { { - icon = "__base__/graphics/icons/small-worm.png", + icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -2483,20 +2498,20 @@ data:extend({ scale = 0.4, shift = {-3, 2} }, - { + { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-bc", + order = "nullius-bc", energy_required = 60, ingredients = { {type="fluid", name="nullius-nucleotides", amount=25, fluidbox_index=1}, @@ -2514,10 +2529,10 @@ data:extend({ { type = "recipe", name = "nullius-worm-progenitor", - localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 240, ingredients = { {type="item", name="nullius-worm-genome", amount=1}, @@ -2535,24 +2550,23 @@ data:extend({ { type = "recipe", name = "nullius-worm-progenitor-2", - localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", tostring(2)}, - icons = { - { - icon = "__base__/graphics/icons/big-worm.png", + localised_name = {"", {"item-name.nullius-worm-progenitor"}, " ", tostring(2)}, + icons = { + { + icon = "__base__/graphics/icons/big-worm.png", icon_size = 64, - }, - { - icon = "__base__/graphics/icons/small-worm.png", + { + icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-cc", + order = "nullius-cc", energy_required = 420, ingredients = { {type="item", name="nullius-worm-genome", amount=1}, @@ -2577,7 +2591,6 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - }, { icon = ICONPATH .. "protocell.png", @@ -2601,7 +2614,7 @@ data:extend({ results = { {type="item", name="nullius-worm", amount=1}, {type="item", name="nullius-worm-egg", amount=2}, - {type="item", name="nullius-mineral-dust", amount=1}, + {type="item", name="nullius-mineral-dust", amount=1}, {type="fluid", name="nullius-carbon-dioxide", amount=125, fluidbox_index=1} }, main_product = "nullius-worm" @@ -2612,6 +2625,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", order = "nullius-dc", energy_required = 60, @@ -2625,7 +2639,7 @@ data:extend({ results = { {type="item", name="nullius-worm", amount=8}, {type="item", name="nullius-worm-egg", amount=12}, - {type="item", name="nullius-mineral-dust", amount=5}, + {type="item", name="nullius-mineral-dust", amount=5}, {type="fluid", name="nullius-carbon-dioxide", amount=400, fluidbox_index=1} }, main_product = "nullius-worm" @@ -2634,21 +2648,21 @@ data:extend({ type = "recipe", name = "nullius-worm-3", localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(3)}, - icons = { - { - icon = "__base__/graphics/icons/small-worm.png", + icons = { + { + icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", order = "nullius-dd", energy_required = 55, @@ -2662,7 +2676,7 @@ data:extend({ results = { {type="item", name="nullius-worm", amount=9}, {type="item", name="nullius-worm-egg", amount=13}, - {type="item", name="nullius-mineral-dust", amount=6}, + {type="item", name="nullius-mineral-dust", amount=6}, {type="fluid", name="nullius-carbon-dioxide", amount=450, fluidbox_index=1} }, main_product = "nullius-worm" @@ -2672,8 +2686,7 @@ data:extend({ name = "nullius-legacy-worm-2", localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(2)}, enabled = false, - allow_decomposition = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "ore-flotation", @@ -2697,22 +2710,21 @@ data:extend({ type = "recipe", name = "nullius-legacy-worm-3", localised_name = {"", {"item-name.nullius-worm"}, " ", tostring(3)}, - icons = { - { - icon = "__base__/graphics/icons/small-worm.png", + icons = { + { + icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "ore-flotation", @@ -2743,7 +2755,6 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - scale = 0.4, shift = {-8, -4} } @@ -2752,6 +2763,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-worm", order = "nullius-fb", @@ -2775,14 +2787,12 @@ data:extend({ localised_name = {"recipe-name.nullius-disposal", {"item-name.nullius-worm"}}, icons = { { - icon = "__base__/graphics/icons/small-worm-corpse.png", + icon = "__base__/graphics/icons/small-worm-corpse.png", icon_size = 64, - }, { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - scale = 0.3, shift = {-9, -6} } @@ -2792,7 +2802,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-db", energy_required = 1, ingredients = { @@ -2821,7 +2831,6 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - scale = 0.32, shift = {-8, -7} } @@ -2830,6 +2839,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-worm", order = "nullius-gb", @@ -2874,7 +2884,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "distillation", @@ -2912,7 +2922,6 @@ data:extend({ { icon = "__base__/graphics/icons/small-worm.png", icon_size = 64, - scale = 0.32, shift = {-8, -7} } @@ -2921,8 +2930,9 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-dc", energy_required = 1, ingredients = { @@ -3024,7 +3034,7 @@ data:extend({ { type = "recipe", name = "nullius-tree-genome", - localised_name = {"", {"item-name.nullius-tree-genome"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-tree-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 60, @@ -3043,12 +3053,11 @@ data:extend({ type = "recipe", name = "nullius-tree-genome-2", localised_name = {"", {"item-name.nullius-tree-genome"}, " ", tostring(2)}, - icons = { + icons = { { - icon = "__base__/graphics/icons/tree-08.png", + icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -3056,21 +3065,21 @@ data:extend({ scale = 0.4, shift = {-3, 2} }, - { + { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-bc", - energy_required = 40, + order = "nullius-bc", + energy_required = 40, ingredients = { {type="fluid", name="nullius-nucleotides", amount=5, fluidbox_index=1}, {type="item", name="nullius-grass-genome", amount=1}, @@ -3086,10 +3095,10 @@ data:extend({ { type = "recipe", name = "nullius-tree-progenitor", - localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 270, ingredients = { {type="item", name="nullius-tree-genome", amount=1}, @@ -3109,24 +3118,23 @@ data:extend({ { type = "recipe", name = "nullius-tree-progenitor-2", - localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", tostring(2)}, - icons = { - { - icon = "__base__/graphics/icons/tree-08-red.png", + localised_name = {"", {"item-name.nullius-tree-progenitor"}, " ", tostring(2)}, + icons = { + { + icon = "__base__/graphics/icons/tree-08-red.png", icon_size = 64, - }, - { - icon = "__base__/graphics/icons/tree-08.png", + { + icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-10, -10} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-cc", + order = "nullius-cc", energy_required = 420, ingredients = { {type="item", name="nullius-tree-genome", amount=1}, @@ -3135,7 +3143,7 @@ data:extend({ {type="fluid", name="nullius-oil", amount=15}, {type="item", name="nullius-rubber", amount=3}, {type="item", name="nullius-cellulose", amount=25}, - {type="item", name="nullius-tree", amount=4}, + {type="item", name="nullius-tree", amount=4}, {type="item", name="nullius-tree-seed", amount=6} }, results = { @@ -3186,6 +3194,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-tree"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-dc", energy_required = 110, @@ -3208,21 +3217,21 @@ data:extend({ type = "recipe", name = "nullius-tree-3", localised_name = {"", {"item-name.nullius-tree"}, " ", tostring(3)}, - icons = { - { - icon = "__base__/graphics/icons/tree-08.png", + icons = { + { + icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-dd", energy_required = 100, @@ -3297,12 +3306,12 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - scale = 0.3, shift = {-8, -8} } }, enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-tree", order = "nullius-fc", @@ -3378,7 +3387,6 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - scale = 0.33, shift = {-8, -4} } @@ -3388,7 +3396,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "bio-harvesting", - subgroup = "biology-material", + subgroup = "biology-material", order = "nullius-cd", energy_required = 1, ingredients = { @@ -3401,7 +3409,7 @@ data:extend({ { type = "recipe", name = "nullius-boxed-wood-chipping", - localised_name = {"recipe-name.nullius-boxed", {"recipe-name.nullius-wood-chipping"}}, + localised_name = {"recipe-name.nullius-boxed", {"recipe-name.nullius-wood-chipping"}}, icons = { { icon = ICONPATH .. "crate.png", @@ -3410,12 +3418,11 @@ data:extend({ { icon = ICONPATH .. "wood-chip.png", icon_size = 64, - scale = 0.45 + scale = 0.45 }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - scale = 0.3, shift = {-7, -4} } @@ -3455,16 +3462,17 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, - no_productivity = true, + no_productivity = true, + hide_from_signal_gui = false, category = "machine-casting", - subgroup = "woodworking", + subgroup = "woodworking", order = "nullius-p", energy_required = 10, ingredients = { {type="item", name="nullius-wood-chip", amount=26}, - {type="fluid", name="nullius-epoxy", amount=5} + {type="fluid", name="nullius-epoxy", amount=5} }, results = { {type="item", name="nullius-wood", amount=20}, @@ -3485,7 +3493,7 @@ data:extend({ { icon = "__nullius__/graphics/icons/wood-panel.png", icon_size = 128, - scale = 0.23 + scale = 0.23 }, { icon = ICONPATH .. "wood-chip.png", @@ -3498,11 +3506,11 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - allow_decomposition = false, + allow_decomposition = false, allow_as_intermediate = false, - no_productivity = true, + no_productivity = true, category = "machine-casting", - subgroup = "boxed-wood", + subgroup = "boxed-wood", order = "nullius-wp", energy_required = 50, ingredients = { @@ -3535,6 +3543,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-material", order = "nullius-cc", @@ -3611,7 +3620,6 @@ data:extend({ { icon = "__base__/graphics/icons/tree-08.png", icon_size = 64, - scale = 0.28, shift = {-8, -7} } @@ -3620,6 +3628,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", subgroup = "biology-tree", order = "nullius-i", @@ -3703,7 +3712,7 @@ data:extend({ { type = "recipe", name = "nullius-fish-genome", - localised_name = {"", {"item-name.nullius-fish-genome"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-fish-genome"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", energy_required = 60, @@ -3722,12 +3731,11 @@ data:extend({ type = "recipe", name = "nullius-fish-genome-2", localised_name = {"", {"item-name.nullius-fish-genome"}, " ", tostring(2)}, - icons = { + icons = { { - icon = "__base__/graphics/icons/fish.png", + icon = "__base__/graphics/icons/fish.png", icon_size = 64, - - scale = 0.5 + scale = 0.5 }, { icon = ICONPATH .. "genome.png", @@ -3735,21 +3743,21 @@ data:extend({ scale = 0.4, shift = {-3, 2} }, - { + { icon = "__base__/graphics/icons/military-science-pack.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {9, -8}, tint = {0.75, 0.72, 0.78} } }, enabled = false, - show_amount_in_title = false, + show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-bc", - energy_required = 40, + order = "nullius-bc", + energy_required = 40, ingredients = { {type="fluid", name="nullius-nucleotides", amount=6, fluidbox_index=1}, {type="item", name="nullius-worm-genome", amount=1}, @@ -3765,10 +3773,10 @@ data:extend({ { type = "recipe", name = "nullius-fish-progenitor", - localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 300, ingredients = { {type="item", name="nullius-fish-genome", amount=1}, @@ -3787,25 +3795,24 @@ data:extend({ { type = "recipe", name = "nullius-fish-progenitor-2", - localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", tostring(2)}, - icons = { - { - icon = "__base__/graphics/icons/fish.png", + localised_name = {"", {"item-name.nullius-fish-progenitor"}, " ", tostring(2)}, + icons = { + { + icon = "__base__/graphics/icons/fish.png", icon_size = 64, - tint = {0.75, 0.9, 1} }, - { - icon = "__base__/graphics/icons/fish.png", + { + icon = "__base__/graphics/icons/fish.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-10, -10} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-cc", + order = "nullius-cc", energy_required = 540, ingredients = { {type="item", name="nullius-fish-genome", amount=1}, @@ -3814,7 +3821,7 @@ data:extend({ {type="fluid", name="nullius-oil", amount=50}, {type="item", name="nullius-calcium", amount=2}, {type="item", name="nullius-sugar", amount=10}, - {type="item", name="nullius-fish", amount=5}, + {type="item", name="nullius-fish", amount=5}, {type="item", name="nullius-fish-egg", amount=12} }, results = { @@ -3866,6 +3873,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-fish"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", order = "nullius-dc", energy_required = 90, @@ -3888,21 +3896,21 @@ data:extend({ type = "recipe", name = "nullius-fish-3", localised_name = {"", {"item-name.nullius-fish"}, " ", tostring(3)}, - icons = { - { - icon = "__base__/graphics/icons/fish.png", + icons = { + { + icon = "__base__/graphics/icons/fish.png", icon_size = 64, - }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "ore-flotation", order = "nullius-dd", energy_required = 80, @@ -3939,6 +3947,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-fish", order = "nullius-fb", @@ -3977,8 +3986,9 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-eb", energy_required = 1, ingredients = { @@ -4005,7 +4015,6 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - scale = 0.25, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4015,6 +4024,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-fish", order = "nullius-gb", @@ -4058,7 +4068,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "distillation", @@ -4096,7 +4106,6 @@ data:extend({ { icon = "__base__/graphics/icons/fish.png", icon_size = 64, - scale = 0.25, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4106,8 +4115,9 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-ec", energy_required = 1, ingredients = { @@ -4139,8 +4149,9 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "nullius-water-treatment", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-b", energy_required = 2, ingredients = { @@ -4241,10 +4252,10 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-progenitor", - localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", tostring(1)}, + localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", tostring(1)}, enabled = false, category = "nanotechnology", - order = "nullius-cb", + order = "nullius-cb", energy_required = 360, ingredients = { {type="item", name="nullius-arthropod-genome", amount=1}, @@ -4265,24 +4276,23 @@ data:extend({ { type = "recipe", name = "nullius-arthropod-progenitor-2", - localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", tostring(2)}, - icons = { - { - icon = "__base__/graphics/icons/big-biter.png", + localised_name = {"", {"item-name.nullius-arthropod-progenitor"}, " ", tostring(2)}, + icons = { + { + icon = "__base__/graphics/icons/big-biter.png", icon_size = 64, - }, - { - icon = "__base__/graphics/icons/small-biter.png", + { + icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - - scale = 0.3, + scale = 0.3, shift = {-9, -10} } - }, + }, enabled = false, + hide_from_signal_gui = false, category = "nanotechnology", - order = "nullius-cc", + order = "nullius-cc", energy_required = 640, ingredients = { {type="item", name="nullius-arthropod-genome", amount=1}, @@ -4292,7 +4302,7 @@ data:extend({ {type="item", name="nullius-plastic", amount=3}, {type="item", name="nullius-graphene", amount=1}, {type="item", name="nullius-sugar", amount=8}, - {type="item", name="nullius-arthropod", amount=6}, + {type="item", name="nullius-arthropod", amount=6}, {type="item", name="nullius-arthropod-egg", amount=15} }, results = { @@ -4309,7 +4319,6 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - }, { icon = ICONPATH .. "protocell.png", @@ -4347,6 +4356,7 @@ data:extend({ localised_name = {"", {"item-name.nullius-arthropod"}, " ", tostring(2)}, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-dc", energy_required = 100, @@ -4372,21 +4382,21 @@ data:extend({ type = "recipe", name = "nullius-arthropod-3", localised_name = {"", {"item-name.nullius-arthropod"}, " ", tostring(3)}, - icons = { - { - icon = "__base__/graphics/icons/small-biter.png", + icons = { + { + icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - }, - { + { icon = ICONPATH .. "genome.png", icon_size = 64, - scale = 0.3, + scale = 0.3, shift = {-10, -9} } - }, + }, enabled = false, allow_decomposition = false, + hide_from_signal_gui = false, category = "nullius-water-treatment", order = "nullius-dd", energy_required = 95, @@ -4430,6 +4440,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-arthropod", order = "nullius-fb", @@ -4518,7 +4529,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-fb", energy_required = 4, ingredients = { @@ -4592,7 +4603,6 @@ data:extend({ { icon = "__base__/graphics/icons/small-biter.png", icon_size = 64, - scale = 0.28, tint = {1, 1, 1, 0.9}, shift = {-8, -7} @@ -4602,6 +4612,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-arthropod", order = "nullius-gb", @@ -4648,7 +4659,7 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - hidden = true, + hidden = true, allow_decomposition = false, allow_as_intermediate = false, category = "distillation", @@ -4697,8 +4708,9 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, + hide_from_signal_gui = false, category = "bio-harvesting", - subgroup = "biology-disposal", + subgroup = "biology-disposal", order = "nullius-fc", energy_required = 1, ingredients = { @@ -4718,17 +4730,16 @@ data:extend({ { icon = "__base__/graphics/icons/coal-dark-background.png", icon_size = 64, - }, { icon = "__base__/graphics/icons/plastic-bar.png", icon_size = 64, - scale = 0.3, shift = {-8, -8} } }, enabled = false, + hide_from_signal_gui = false, category = "wet-smelting", subgroup = "biology-burning", order = "nullius-pb", @@ -4760,6 +4771,7 @@ data:extend({ } }, enabled = false, + hide_from_signal_gui = false, category = "distillation", subgroup = "biology-burning", order = "nullius-pc", @@ -4801,7 +4813,7 @@ data:extend({ }, enabled = false, category = "bulk-smelting", - subgroup = "boxed-biology-burning", + subgroup = "boxed-biology-burning", order = "nullius-p", energy_required = 1, ingredients = { @@ -4825,13 +4837,13 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/light-oil.png", icon_size = 64, - scale = 0.25, shift = {-8, -8} } }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "biology-oil", order = "nullius-ib", @@ -4843,11 +4855,11 @@ data:extend({ results = { {type="fluid", name="nullius-compressed-carbon-monoxide", amount=100}, {type="fluid", name="nullius-compressed-carbon-dioxide", amount=75}, - {type="item", name="nullius-graphite", amount=1} + {type="item", name="nullius-graphite", amount=1} }, main_product = "nullius-compressed-carbon-monoxide" }, - { + { -- todo: wtf same recipe twice type = "recipe", name = "nullius-oil-incineration", localised_name = {"recipe-name.nullius-incineration", {"fluid-name.nullius-oil"}}, @@ -4866,6 +4878,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "biology-oil", order = "nullius-i", @@ -4877,7 +4890,7 @@ data:extend({ results = { {type="fluid", name="nullius-compressed-carbon-monoxide", amount=100}, {type="fluid", name="nullius-compressed-carbon-dioxide", amount=75}, - {type="item", name="nullius-graphite", amount=1} + {type="item", name="nullius-graphite", amount=1} }, main_product = "nullius-compressed-carbon-monoxide" }, @@ -4890,8 +4903,7 @@ data:extend({ { icon = "__base__/graphics/icons/fluid/steam.png", icon_size = 64, - - scale = 0.6 + scale = 0.6 }, data.raw.fluid["nullius-fatty-acids"].icons[2], data.raw.fluid["nullius-fatty-acids"].icons[3], @@ -4899,6 +4911,7 @@ data:extend({ }, enabled = false, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "combustion", subgroup = "biology-oil", order = "nullius-ic", @@ -4908,7 +4921,7 @@ data:extend({ {type="fluid", name="nullius-compressed-oxygen", amount=60} }, results = { - {type="fluid", name="nullius-steam", amount=300}, + {type="fluid", name="nullius-steam", amount=300}, {type="fluid", name="nullius-compressed-carbon-dioxide", amount=60} } }, @@ -5018,6 +5031,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "large-fluid-assembly", subgroup = "woodworking", order = "nullius-cc", @@ -5080,12 +5094,10 @@ data:extend({ { icon = "__base__/graphics/icons/rail.png", icon_size = 64, - }, { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - scale = 0.3, shift = {-8, -8} } @@ -5095,6 +5107,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "large-crafting", subgroup = "woodworking", order = "nullius-d", @@ -5175,6 +5188,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "large-crafting", subgroup = "woodworking", order = "nullius-ec", @@ -5254,12 +5268,12 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "medium-assembly", - subgroup = "woodworking", + subgroup = "woodworking", order = "nullius-eb", energy_required = 8, ingredients = { {type = "item", name = "nullius-steel-wire", amount = 1}, - {type = "item", name = "nullius-gypsum", amount = 2}, + {type = "item", name = "nullius-gypsum", amount = 2}, {type = "item", name = "nullius-wood", amount = 4}, {type = "item", name = "nullius-textile", amount = 1} }, @@ -5288,7 +5302,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, category = "huge-assembly", - subgroup = "boxed-wood", + subgroup = "boxed-wood", order = "nullius-wdb", energy_required = 40, ingredients = { @@ -5312,7 +5326,6 @@ data:extend({ { icon = "__base__/graphics/icons/wood.png", icon_size = 64, - scale = 0.3, shift = {-8, -8} } @@ -5322,6 +5335,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "large-crafting", subgroup = "woodworking", order = "nullius-f", @@ -5355,6 +5369,7 @@ data:extend({ show_amount_in_title = false, always_show_products = true, allow_as_intermediate = false, + hide_from_signal_gui = false, category = "large-crafting", subgroup = "woodworking", order = "nullius-g", @@ -5651,7 +5666,7 @@ data:extend({ type = "recipe", name = "nullius-ichthyology-pack", enabled = false, - allow_decomposition = false, + allow_decomposition = false, category = "small-fluid-assembly", energy_required = 120, ingredients = { From b729e6436bd15d246609d0e314a88bbb90f550ea Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 6 Sep 2025 18:32:52 +0200 Subject: [PATCH 218/236] Added setting to disable recipe signals --- nullius/data-final-fixes.lua | 15 ++++++++++++--- nullius/locale/en/misc.cfg | 2 ++ nullius/settings.lua | 6 ++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/nullius/data-final-fixes.lua b/nullius/data-final-fixes.lua index faa3b31..54adcf7 100644 --- a/nullius/data-final-fixes.lua +++ b/nullius/data-final-fixes.lua @@ -11,8 +11,17 @@ for _, recipe in pairs(data.raw.recipe) do end end -for _,recipe in pairs(data.raw.recipe) do - if string.sub(recipe.name, 1, 14) == "nullius-boxed-" or string.sub(recipe.name, 1, 14) == "nullius-unbox-" then - recipe.hide_from_signal_gui = false +if settings.startup["nullius-hide-recipe-signals"].value then + for _,recipe in pairs(data.raw.recipe) do + --recipe.hide_from_signal_gui = true + if recipe.hide_from_signal_gui == false then + recipe.hide_from_signal_gui = nil + end + end +else + for _,recipe in pairs(data.raw.recipe) do + if string.sub(recipe.name, 1, 14) == "nullius-boxed-" or string.sub(recipe.name, 1, 14) == "nullius-unbox-" then + recipe.hide_from_signal_gui = false + end end end \ No newline at end of file diff --git a/nullius/locale/en/misc.cfg b/nullius/locale/en/misc.cfg index dd71b64..40b7769 100644 --- a/nullius/locale/en/misc.cfg +++ b/nullius/locale/en/misc.cfg @@ -132,11 +132,13 @@ nullius-wind-turbine-energy-multiplier=Wind turbine energy multiplier nullius-hydrothermal=Enable hydrothermal vents and offshore extractors. nullius-infinite-fumaroles=Infinite fumaroles nullius-hide-void-alt=Hide venting building alt-icon +nullius-hide-recipe-signals=Hide most recipe signals [mod-setting-description] nullius-alignment=Players start in separate factions before teaming up. nullius-infinite-fumaroles=Don't limit land deposits of volcanic gas when water desposits are available. nullius-hide-void-alt=Hides the alt-icon for Chimney and Outfall +nullius-hide-recipe-signals=Hides all the recipe signals that are not in the signal GUI by default. [alignment] nullius-align-first-intro=You're a von Neumann android. Your probe has arrived at a barren planet with a mandate to terraform it, seed it with life, and build a wave of successors to continue on to new planets. You've detected signs that other probes may be approaching this planet, but you're the first to arrive. Use this head start to prepare for potentially hostile interference, until you can determine if they're operating according to compatible directives. If so, work together to achieve them faster, otherwise reprogram them to share your goals or race to outcompete them. Prepare for a rough landing as you begin to enter the atmosphere. diff --git a/nullius/settings.lua b/nullius/settings.lua index 8416a12..8ba40aa 100644 --- a/nullius/settings.lua +++ b/nullius/settings.lua @@ -20,4 +20,10 @@ data:extend({ setting_type = "startup", default_value = false }, + { + type = "bool-setting", + name = "nullius-hide-recipe-signals", + setting_type = "startup", + default_value = false + }, }) \ No newline at end of file From 953ec3f74d63a5071bb5f6f5282333f961cbb945 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 7 Sep 2025 00:16:17 +0200 Subject: [PATCH 219/236] Changed orders for compressed hydrogen/oxygen recipes Removed the merging for brine and saline water following the suggestion from eggplantade --- nullius/clutterpedia.lua | 4 ++-- nullius/migrations/nullius_2.0.1.json | 2 -- nullius/prototypes/category.lua | 4 ++-- nullius/prototypes/item/fluid.lua | 4 ++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/nullius/clutterpedia.lua b/nullius/clutterpedia.lua index 12459e4..5caaf81 100644 --- a/nullius/clutterpedia.lua +++ b/nullius/clutterpedia.lua @@ -65,8 +65,8 @@ clutterpedia["nullius-android-1"] = {name = "character", -- Attempt at fluids renamings clutterpedia["nullius-desalination"] = {name = "nullius-water", tech = "nullius-desalination", main_product = true} -clutterpedia["nullius-seawater-filtration"] = {name = "nullius-saline", tech = "nullius-water-filtration-1"} -clutterpedia["nullius-hydrogen-chloride-neutralization"] = {name = "nullius-brine", tech = "nullius-inorganic-chemistry-1"} +--clutterpedia["nullius-seawater-filtration"] = {name = "nullius-saline", tech = "nullius-water-filtration-1"} +--clutterpedia["nullius-hydrogen-chloride-neutralization"] = {name = "nullius-brine", tech = "nullius-inorganic-chemistry-1"} --clutterpedia["nullius-air-separation-1"] = {name = "nullius-nitrogen", tech = "nullius-air-separation-1", main_product = true, locale = true} --clutterpedia["nullius-residual-separation"] = {name = "nullius-argon", tech = "nullius-air-separation-2", main_product = true, locale = true} clutterpedia["nullius-carbon-dioxide-to-monoxide"] = {name = "nullius-carbon-monoxide", tech = "nullius-carbon-sequestration-2"} diff --git a/nullius/migrations/nullius_2.0.1.json b/nullius/migrations/nullius_2.0.1.json index e8dd2be..2b9e1ce 100644 --- a/nullius/migrations/nullius_2.0.1.json +++ b/nullius/migrations/nullius_2.0.1.json @@ -117,8 +117,6 @@ ["nullius-desalination", "nullius-water"], - ["nullius-seawater-filtration", "nullius-saline"], - ["nullius-hydrogen-chloride-neutralization", "nullius-brine"], ["nullius-carbon-dioxide-to-monoxide", "nullius-carbon-monoxide"], ["nullius-carbon-dioxide-to-methane", "nullius-methane"], ["nullius-methane-to-ethylene", "nullius-ethylene"], diff --git a/nullius/prototypes/category.lua b/nullius/prototypes/category.lua index 28c9d30..2862662 100644 --- a/nullius/prototypes/category.lua +++ b/nullius/prototypes/category.lua @@ -982,13 +982,13 @@ data:extend({ { type = "item-subgroup", order = "l", - name = "compression", + name = "decompression", group = "fluids", }, { type = "item-subgroup", order = "m", - name = "decompression", + name = "compression", group = "fluids", }, { diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index 3a154df..17b25d7 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -984,7 +984,7 @@ data:extend({ localised_description = {"fluid-description.nullius-oxygen-reduction", tostring(200), {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-hydrogen"}}}, - subgroup = "compression", + subgroup = "compressed-air", order = "nullius-h", base_color = {r = 1, g = 1, b = 1}, flow_color = {r = 1, g = 1, b = 1}, @@ -1002,7 +1002,7 @@ data:extend({ localised_description = {"fluid-description.nullius-oxygenation", tostring(400), {"fluid-description.nullius-recapture", tostring(85), {"fluid-description.nullius-compressed-oxygen"}}}, - subgroup = "compression", + subgroup = "compressed-air", order = "nullius-i", base_color = {r = 1, g = 0, b = 0}, flow_color = {r = 1, g = 0, b = 0}, From 1742673e522aa8946b2a7f442414764e9311b88b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 7 Sep 2025 16:06:42 +0200 Subject: [PATCH 220/236] Modified more recipe icons to distinguish them in the signals gui --- nullius/graphics/icons/factorio-logo-gear.png | Bin 0 -> 8918 bytes nullius/prototypes/item/fluid.lua | 48 +++++++++++++----- nullius/prototypes/item/intermediate.lua | 11 ++-- nullius/prototypes/reskin.lua | 12 +++++ 4 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 nullius/graphics/icons/factorio-logo-gear.png diff --git a/nullius/graphics/icons/factorio-logo-gear.png b/nullius/graphics/icons/factorio-logo-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1a8a66e07f0d7325cd7652cedc5e0d88dcb87e GIT binary patch literal 8918 zcmV;{A}QU8P)FIa(eczk!@10S0g}`yjK$XKk_1B&5zJ2e1&iT%F zzVqM4FUBv%FUBv%|Ib6(m{IT5&v=}?7e`V>TwSUlo=;)USMc=%_rcxx_-8VN@s}Te zrjD5UQ#o2k8hWRVY{KU%G$=6->$AYMpLl*vKh+^`9EIUOQ{$VDyyg$93nBDU8wdk9 zp^5gght52pYWl`mKmE~j!2bRC+1+tt%%2NByj0h*Iv2pSRVIR zWq6ucpO`;2G|1!Q`E;>}aO3qqc$~Qpzwvi>;lmp*|F6b4U|jg-Lz&zPgTEYMdBTGM z4Xe)tSYB4qOl8rjh9BXn`#DEBw{aFZ)0`>JBxj6M$qmQnf*f`~i@#t?Ux3`u2k(kxW{|;^Jk_Ca1MAH*a>u7iT_>KWi@Gov|SU z?UfLc>OrFWnr#KEP2~YMox3YoCj|M`2~cfPSCJsxpvEaCDI7HiGMj=5@Fd;f+83#T|Z*#oB5ijZliQ{9my37BCcVFmXkrKlAi=4}x7v8lC z&ax z%oPloE|S><=4Lub7YxJ=7cN(lDMnZxj}4DwP1+1VhAWElvI1A7t{+E@Z7lVlF&=y61#V2V9W~J(i^tNWPMB>8&ekq`?kwP zx*5otgcM<&>@Xb&^Yb$va-=iWbubf*p*j=6D(e`_w=wY~({0LwVwk9$TV-y_2z3(* z?`7qaSb1O#=N6KXs;ndiO%Y~teJmpQ_;rn{8mtb}c&%70(k(q(gz;huyL!9sWR1c89M+~P(6^1E`b-IGwutiS3T9{8=%xp7@MYV`87}IH0v0Z;WBcom zpuE_^Kq`)N&$ZEx5}3Dj=z)#MQ<3uP7|3auXk?Jhs4#sG$*_qkg;TVvAIkYQ2oh9E zbexpJpFEksOxM72xucb9ZoeIdV^JXOrBQph^fAtzoL6z~-Ecr;ixdbWcrWGvani59 zB6Ulr>3~WVCFbch+g0p5+>iXy3~F|WY}QA)l|WK*(F|3zJOit%4$Q$VC_TN1T}QW} zHrauHtcWj&4=EEr;c4jUm=cWwF}3JkRhRN zACZut3P>j+Tv!ZH9PcN3D(K&rM)`4@d=kTbXJb%x1)a7BRhCGO^6*OCUy>zRp?x+@ zNz%qF%@V1dRa8Z~n>O?QQI{VmM8l7;rSQhga%f+-J2}2wbKrOqe(g=W&@U~)C`8cm z8TjiK@&}8st1Z+n((pnI{W%k*xh^K3wlV)?1B>MVldRksX5=(sIz%A$EA)DbsZe!r z>ph3zwK`a<)REa*#LM6PR!p5MW58O2VkY6MI{fJd>M;q$ohD{ZcQH0(V)kMO5*g4r z)5cUbh0ygNbJ1o@ffdQ<&&HI+HS2U3MWVC|rq~Ry#M?`+;0L`bK<}t@f*4mIK#WQ^ zT)O?5{J7ESq+j=Ihmdv`;I;xRt;*PvZDG}lqdrxILlsf7O{^}pQGce5W6xTs^R_z# zdD7@7IVZ?AB?owx1@=@!#>67g!~ehh%{e-(gWX0QuYBVzsIHVTb^07``i(zE^V}m? zKI5XD)gjky^ijOatbKNuu(uQ(*he{i&c-pOwj6};y$Gp{0*Ch*$f@}YE6!XHhE>`q zEPOu5y%gYavjr7p??;T^91lL%{@Pn_>wo?Adp%fdYY4Im)`_G!h}Wk-aBYR@&c%K2T#=unE5!$B;O$7y;Pn| zlm)VivvckLB^ZwBenq=29P$YsJ;4J!{#fHT#>CV&?*3}`2mb>p*6eO9j#@)UnhLL7 zk7KDxHYXX{Ot#~X)uGaz|C0iiB#lB+?-`gjBs2(1Nu%tw0>oGXb>>~i^3nDqn9N(3 zbe$!Jllp6l~$0MJ8ANu7Al_N!1Ku#f`RhA}${X>g-Wb*H-_+%@I zWJ0Fe3}L%beW~hBSf2kBWu8p~uL!b0z^iGz$PJMK`eq8eVGj--8r1e2&W1Z)x{IszRbyp z5axn7fA7tohDYI4pP9taOMa7l6hqa_!U|1fJqMbhp`+-CM{6kVRdBFLB9f%)V%>dE zQTPGXEQ70VME{B*hhfy>oqN%zmz-;IQvWZ#`#*>7Ltk9DHf-nL2UIo_-Xb7 zEei=YCsx&GHL>Bcyw;mCw0RdJG_ik|h6Prg9Z?NZpOU~@H6n54gJb?53*RL6^&!z*L_><yTD*lvWc*w2xec1yKy%_4S~C{LZ)A0011859Om;gqbd)FCcxsNqD?<+2VW7>V zXD1CMZo($1JT$9f|5&OpwQNrlU5esHL0*-VdvDD+H;J11U6wA@WN*&CyT=w}{bjOz zt=z^{eKKmZ)4jTFMG6`;wzERUt=A#5wz)gUFjwgyta&hrq>~+ZHA$T$0j-8%xJHVz zY3#aSB6^=Sug4Lh3k?lJIYyl@xj(O)4LQE7%0bZWxaVD2>26hn+g`CBT3jxpv2YQy zPt|eN{s@h=0GS=s6IFJds}y78gL6v?j0OpHAci7kdWwQ6k)gf_x_IDO;6j5z)4k&4 zviBINCgg3R!q$XW6fhHu?vR8OmL!d}TO<3BuX?po^p79<#0ea{@hYS<5;U=gPaCu( zmEG<>r241?J0-mKRVgg9Hy4y!h5DfF1(U8HEXaza@?Q0gYD4H#HVVSOL`qAJ6HM^v zDRIpmNFWg?@umJ;0&y8rCmsDOM~)<6v!YF%n8&q;Jfw;d28PKoT~Urh^s`Hx=^G*M z1f+gol zV5zZS8#F}p$Zp%|ZNmy>rXGAHJVL!O-()`KpfTb5;_Tz44jI0QXP&6wmtH@DYuRhP zYfEsQNJTCB<3GUB-?^9Yn}Snuuysca%PXwqY)S|ycv@vJN*Pqv~-8Z1<& zXtsEj-rl3Ah`s+g&!in^Q5k6m&s=CaHx3V*Cl=OP!^6=2{T{c-M*ZHJK7gU5(A5@K z&c2rU(`|*ATcQY}C!ReOV)a-R-|QOb+m;~`SWda7+<-}4U_&!yT%2VYC0B_DF`=wr z?^t|TcD!(e8qt4}8lGJtmqVq%4<*9C;fM{8KzNIDc0;^@StGj=$N3a|s=f*CP#s&H|KDlh-D0*cL0~oOGV$m^HKO=@>8gI4+(u7;LS{ zL2VMA!~FH@tQ7RI*KuHxna^M7P<^r@*z9H4D=4Zgzo}_QPEuF5Ns6pSWCm3i789F9 zK&R_s8%0;1B#>YV)Jc?YdEXrvJg^7G(kU#Ly5xxviBufALFyFA^6 zPVVW%3^Z9p6I6XR#ZSb9SIiVv$+%y0`I>=X4}dgtoxH;J`$$nU5PneU_gGv7#SbKg zKu@rW@PkilsxrU@h-xc#NDDDd(&@--PE&?M*Nq)!ge?+FjsRhq$De)SJ=lKZEeQFw z@4n~N7&)AT(rQ8#h#~7rVL0*#tB#~9+ev?Jif^P~nN?CoPg*lk$th)HOj}Way zMlPv=@}8v4pzxdyg+!xavkPTeOe%=TaSlaUoJ|`04%RYBx{Wl_W_em+lPV~M)hC#- zoUmK9gYvZl*wG2h+sXX@H^9MNjAO0hBB132H%}*1iTNTRK z7~+FDRF_DOip5mo3Mfdj%*i#gh#RhAex}*d4j9rkTLZ})SF!6V9X@k>Y=oU5;htt# zvSX}7yuY7Qpc^cETu7BFzj7hK{ZHuFyJq3fPZ8q%nO>CRG}0$;wJoMVz?`MfP?-uk z#el>2%T)(DE1a*YSZ{=7K}@&PV;z!VfPBE0t8rrPS zvO`u+2biJIGPt->&BrKFI9mq# zViImVQovk2M5|6oOn7GqZ;xGPmVFId5Hwk>ENXHkrlU%EnxIaft9svHwFoCU^Mk zLFg1V=@LI%EGe)9N?%Vwz0yT3OyYB&Tg7pT=r)ueHhaHS<*AN8?)WAlZ`FiZ@$6yR4vAD8?op-(gv9N)u^A+febv7v^ z8mGg)n`tCA0#ylp6e%%XVq2|Xy=G$P7$Hg-YJ@7vWwu1DLMAJacuEuy9pYKT+IfeK zRUeioS~&3}6)4lh~&jjc{kidO^ZsP~b8rfb!wH=FlrQB*Y8W?p<@9W*+Klp z@ecmelM(*wv*Za|MS*4G6QBDPOguFW*Nre_uEEcbpxqGSNJnY8gD+3AQfLZ1hH$;< zpCt_}QL+pBL|-IE$fKynLgWhjpGSZ}1c+4VNdR$>WhwEJWOPG5hMTsM#97%e@5zk5 zj3qaQ7E4T*4T!_i)}eqh*?VW1-@?u7tpI(wn9xAvO9DBBjrq~Z-115H9Qfz1p7OF&2#(J5KWB=c;M)(&;6WCQ?8cB78@g!18 zn~D|qlZTT;2(S!S6MPlQCR53r}e3k9xd1h9KJjx`eC z2i|@Vs_kG$%*NpM3TJ9Y-H?yTiK6E|&@}gu%Sd7L&cL z^>00G;iKPZVE@e{kWCjKe<+53{eX#OI*A#EYQveQ@$3pBvEweb!=5*u!KKvc*(}DS zr~PnWso=F*c1CBhiC`XjM1Zu{Q)7#32mA9MiG4IVrv+qAy$~Zr~G& zVsleCr`u~T0%(jL#U?ejjtuL)D#VX;Nt?H6z$^xlh|vg^Qt`kuWD0HV@4`sM@XbXD zP4bE8M#b}4ovhno1G7@`AoE@l(@GdD93j?I^VoqQl1B@irJ7qXR~ZN%4N3(X~alB0U(4P<1L*r$ueM?4}E?vp8Xn{6*$ z>jv|D>Ct_{N3=;G`w9fmSV%`%0f^p9<&VY-d-$)UE_LNL+1+7P*^;9w6ULPz0~8R< zJJx4nrb`Hn4yD_680j$@-fjm-W;D##By5elC{^enN@az5v|h9Doe2wPmLoj3ZsKc? zSa^Io!ne<;Jt0&f4QI1#RtRH}*A980%W#XQMGDhQgwLR&?6#fW^Tr%?2^Ag{w+@+5 z6%t&eBz-74IW#+w<+xFufo;X2#1TE5J!sJrFE{x~@v@>co-DtiM$a5(L z2P^`rM)6n?4FQ^@8q)MmRHmSwu?D-z1yg0#4ZlM&xVIc5YQJ7Ry;awvF`uS@}f0A2$zU*A@ju$4iHo9KRnF& z1TP_dl<)Omzwx28K^BXg$2sSc$)xJKZmy8jex=;7Px3pCEX!5Jbtz5Y9~L+4}k@@T2hzUb!puQxPSx*kUiRC9Y61_Y#wBsW9Fn(>GWy6C@5* zC^-_IWrwqkmRE87phN>ymb8X=n`=^4RqESnN(b|LFqDibD7zF!I>`MRM+)S z2u>#ON@PD_i}=}};BoOxqQWVD{zrTQ_i+lth0y{gQ=GGT(=1mlOZ;%szj`#2o|tQh zA5m!i{fVT>aAU1opJRC$ABQ?U4QF(8G&VOkCn}{#D?O1ZZJGb=!m4am*Ens)A4 zR+(%hvm_PbBFmn^$ZJ$~YCML8nVNWN+*%Kn^F$ukBS$QU^9+U{ealdlBGb}xgHZfj zPu3NAP?Du5S?foy?!)^QyOPneqVEuy$Jx<}2Q3qtCUuoSsz#buO?1&>*oA!p>B3fF zb8oSGIVU-v*qCRBfl|r$Yq#72X>JZdso~f+4iD>#&8F4qc%7l`o;$tPyI5GQ_AV$j z8q~ME=;6UZBa@b5iF~`&Xq$`Vr#^P1wUHRE@u*b{Vpp(~N9bE!wytpv2Fqc!?qS7K zCPc>;gwYBU!6wQCLPdk-69sd`sCcgG(m{$BhVzE3d^^kVpRc%|)ph+WRo#=U7C&rT z?)QfCu}Zb&PV>CV%RF>WUy8n1YtQh_AsjHvIm5a6+grPN>BOG#;wUDK7t!sF{re&H z^+8!#K`4G{E`BT`ewE4dafD^yk(S#Lj&WF<3aPllwlpcJ{(*c}8*&LApJXZ?l^aBZ z%cD#E-k`{7dCGa_tcZGrja!GGEpWL!gsdq-??|L8615}==Rc7zn$xS5_Q^uQtgltO zkI~T+sZ6fC%{2X)^=AF>VSsD&xU3&Ldd6{H;gugVHqR4BF*d&=-@WnPUtdY25c~WM z*~yox*3h0p@Ud)0JJKYJ`y{(qf~AjSS8K6vXB7}?Z>fvV@oS=NiC=SV+=s6sEb$*f z)Z!?9%Unt^Sd5l`=<(~_&A#x0ifM%7_DT<|oEJ?Q=-5dWms^&{`OAZ}iu*Un?wnfM3Ih#c2pQq^i zzUv19jdN6Sf~Zz?o$}x9{fOHi7(iGmJ)g(ozMHw+TZ2F$kG;|VFrvTDcrh+F<{x9c z&>3O~hs2qq!%WxPS-NlF34NC5pI2nD@h*NYB&E61xwh?p(epeJRnfq><1~=e{e0?i z2!l5rym_xp8(u63FSed5#y_?LE+1kMVnl<3gQgyK`^!z&Ehf}!Dh+!jQX@8uO3F0! z!L_z?EE9_bYt5#BxJ$w{jGc?#Wxw9Hl*lLLxMy zwC9Iv&8jzYiPV7A2y3NIr@d=9pEEtJeyUUw(HCRWa54U$4g7hJo`VG$@vw;qL0D<= z{Ez=iLO+P(#yOXdpLTG5K7$M`+S4nBATKdDobXT1@E-g(=JP1HJmTX2%U=JJjQpli kmpfteJ@NYIWHj)<0hJ1aMEJj0SO5S307*qoM6N<$g8ZXBjsO4v literal 0 HcmV?d00001 diff --git a/nullius/prototypes/item/fluid.lua b/nullius/prototypes/item/fluid.lua index cb9a782..b614d83 100644 --- a/nullius/prototypes/item/fluid.lua +++ b/nullius/prototypes/item/fluid.lua @@ -1398,6 +1398,7 @@ data:extend({ { type = "recipe", name = "nullius-hydrogen-chloride", + icons = add_recipe_gear_icon(data.raw.fluid["nullius-hydrogen-chloride"].icons), enabled = false, category = "basic-chemistry", subgroup = "chlorine-chemistry", @@ -1410,7 +1411,7 @@ data:extend({ always_show_products = true, energy_required = 1, no_productivity = true, - hide_from_signal_gui = false, -- todo: icon + hide_from_signal_gui = false, ingredients = { {type="fluid", name="nullius-hydrogen", amount=30}, {type="fluid", name="nullius-chlorine", amount=30} @@ -1451,6 +1452,7 @@ data:extend({ { type = "recipe", name = "nullius-acid-hydrochloric", + icons = add_recipe_gear_icon(data.raw.fluid["nullius-acid-hydrochloric"].icons), enabled = false, category = "basic-chemistry", subgroup = "chlorine-chemistry", @@ -1461,7 +1463,7 @@ data:extend({ }, show_amount_in_title = false, always_show_products = true, - hide_from_signal_gui = false, -- todo: icon + hide_from_signal_gui = false, energy_required = 1, ingredients = { {type="fluid", name="nullius-hydrogen-chloride", amount=35}, @@ -1928,9 +1930,15 @@ data:extend({ type = "recipe", name = "nullius-seawater-filtration", localised_name = {"recipe-name.nullius-seawater-filtration"}, + icons = add_recipe_gear_icon({ + { + icon = "__base__/graphics/icons/fluid/water.png", + icon_size = 64, + } + }), order = "nullius-b", enabled = false, - hide_from_signal_gui = false, -- todo: icon + hide_from_signal_gui = false, category = "nullius-water-treatment", subgroup = "nullius-water-treatment", energy_required = 1, @@ -1947,9 +1955,15 @@ data:extend({ type = "recipe", name = "nullius-freshwater-filtration", localised_name = {"recipe-name.nullius-freshwater-filtration"}, + icons = add_recipe_gear_icon({ + { + icon = FLUIDPATH .. "purewater.png", + icon_size = 64 + } + }), order = "nullius-c", enabled = false, - hide_from_signal_gui = false, -- todo: icon + hide_from_signal_gui = false, category = "nullius-water-treatment", subgroup = "nullius-water-treatment", energy_required = 1, @@ -3169,7 +3183,7 @@ data:extend({ {{"__angelspetrochemgraphics__/graphics/icons/molecules/carbon-dioxide.png", 72}} ), enabled = false, - hide_from_signal_gui = false, -- todo: maybe useless ? + --hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "carbon", order = "nullius-bc", @@ -3745,7 +3759,7 @@ data:extend({ enabled = false, show_amount_in_title = false, always_show_products = true, - --hide_from_signal_gui = false, -- todo: probably useless + --hide_from_signal_gui = false, category = "basic-chemistry", order = "nullius-bb", crafting_machine_tint = { @@ -5361,7 +5375,7 @@ data:extend({ icon_size = 64, enabled = false, no_productivity = true, - hide_from_signal_gui = false, -- todo: maybe remove it + hide_from_signal_gui = false, -- maybe remove it category = "nullius-unbarrel", subgroup = "canister-emptying", order = "nullius-e", @@ -7806,12 +7820,16 @@ data:extend({ { type = "recipe", name = "nullius-fusion-recycling", - icon = ICONPATH .. "fusion-spent.png", - icon_size = 64, + icons = add_recipe_gear_icon({ + { + icon = ICONPATH .. "fusion-spent.png", + icon_size = 64 + }, + }), enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_signal_gui = false, -- todo: maybe icon + hide_from_signal_gui = false, category = "basic-chemistry", subgroup = "nuclear", order = "nullius-cc", @@ -7853,12 +7871,16 @@ data:extend({ { type = "recipe", name = "nullius-breeder-recycling", - icon = ICONPATH .. "breeder-spent.png", - icon_size = 64, + icons = add_recipe_gear_icon({ + { + icon = ICONPATH .. "breeder-spent.png", + icon_size = 64 + }, + }), enabled = false, show_amount_in_title = false, always_show_products = true, - hide_from_signal_gui = false, -- todo: maybe icon + hide_from_signal_gui = false, category = "distillation", subgroup = "nuclear", order = "nullius-dc", diff --git a/nullius/prototypes/item/intermediate.lua b/nullius/prototypes/item/intermediate.lua index 181bb2d..cdeb50e 100644 --- a/nullius/prototypes/item/intermediate.lua +++ b/nullius/prototypes/item/intermediate.lua @@ -2184,7 +2184,6 @@ data:extend({ type = "recipe", name = "nullius-gypsum-1", localised_name = {"recipe-name.nullius-gypsum-1"}, - hide_from_signal_gui = false, --todo: check if this is still needed after renaming to merge the factoriopedia entry icons = { { icon = "__angelsrefininggraphics__/graphics/icons/crushed/crushed-4.png", @@ -3962,7 +3961,6 @@ data:extend({ always_show_made_in = true, show_amount_in_title = false, always_show_products = true, - --hide_from_signal_gui = false, --useless energy_required = 4, ingredients = { {type = "item", name = "nullius-iron-plate", amount = 2}, @@ -8372,9 +8370,12 @@ data:extend({ { type = "recipe", name = "nullius-fission-recycling", - icon = "__base__/graphics/icons/depleted-uranium-fuel-cell.png", - icon_size = 64, - + icons = add_recipe_gear_icon({ + { + icon = "__base__/graphics/icons/depleted-uranium-fuel-cell.png", + icon_size = 64 + }, + }), enabled = false, show_amount_in_title = false, always_show_products = true, diff --git a/nullius/prototypes/reskin.lua b/nullius/prototypes/reskin.lua index e567e51..61c3aeb 100644 --- a/nullius/prototypes/reskin.lua +++ b/nullius/prototypes/reskin.lua @@ -36,6 +36,18 @@ function label_icon(name, tier, color, etype) end end +function add_recipe_gear_icon(icons) + icons = table.deepcopy(icons) + table.insert(icons,{ + --icon = "__base__/graphics/icons/iron-gear-wheel.png", + icon = "__nullius__/graphics/icons/factorio-logo-gear.png", + icon_size = 64, + scale = 0.25, + shift = {-10, 10} + }) + return icons +end + function scale_shift(vec, scale) if (vec == nil) then return nil end vec[1] = vec[1] * scale From edfcd58f5d97b94d65c8ea35f220c48d397b3422 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 7 Sep 2025 18:52:35 +0200 Subject: [PATCH 221/236] Disable icon changes for recipe signals when the setting to hide the signals is set --- nullius/prototypes/reskin.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nullius/prototypes/reskin.lua b/nullius/prototypes/reskin.lua index 61c3aeb..94d7bd6 100644 --- a/nullius/prototypes/reskin.lua +++ b/nullius/prototypes/reskin.lua @@ -37,6 +37,9 @@ function label_icon(name, tier, color, etype) end function add_recipe_gear_icon(icons) + if settings.startup["nullius-hide-recipe-signals"].value == true then + return icons + end icons = table.deepcopy(icons) table.insert(icons,{ --icon = "__base__/graphics/icons/iron-gear-wheel.png", From f030fc8d7a4e5c66a87395d84cb7a06632b028b9 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sun, 7 Sep 2025 19:15:50 +0200 Subject: [PATCH 222/236] Added missing line in changelog --- nullius/changelog_wip.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 3fcb64d..8cbbc33 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -26,7 +26,8 @@ Date: 2025 Graphics: - Added icons for drones ammo categories - Reworked voiding recipes icons to make them standout more in factoriopedia - - Altered lime recipe so that it's distinguishable from the item in the signals gui + - Altered lime recipe icon so that it's distinguishable from the item in the signals gui + - Altered recipe icons for: nuclear fuel cell recycling, hydrochloric acid, hydrogen chloride,seawater filtration, freshwater filtration for signal gui Info: - Added description to inserters - Renamed the extension tech to inserter extension From 460f2f875a2864b886f110e8fe28d2c425b61449 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 18 Sep 2025 19:28:30 +0200 Subject: [PATCH 223/236] Fixed satellite unlaunchable and removed nullius-rocket from player crafting --- nullius/prototypes/item/equipment.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nullius/prototypes/item/equipment.lua b/nullius/prototypes/item/equipment.lua index 46ae877..0fe9738 100644 --- a/nullius/prototypes/item/equipment.lua +++ b/nullius/prototypes/item/equipment.lua @@ -3509,6 +3509,7 @@ data:extend({ name = "nullius-rocket", enabled = false, always_show_made_in = true, + hide_from_player_crafting = true, category = "rocketry", energy_required = 400, ingredients = { @@ -3538,6 +3539,8 @@ data:extend({ subgroup = "space", order = "nullius-d", stack_size = 1, + weight = 1000000, + send_to_orbit_mode = "automated", rocket_launch_products = { {type = "item", name = "nullius-box-astronomy-pack", amount = 100} } From df8cf9aeacd21685e9e1fd81453d9fd6adfde1cb Mon Sep 17 00:00:00 2001 From: Chris Rodrigues <1834111+cirodrig@users.noreply.github.com> Date: Sun, 19 Oct 2025 13:33:19 -0700 Subject: [PATCH 224/236] Use map generation settings for resources --- nullius/prototypes/resource.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index a70ac0e..120bd74 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -11,10 +11,14 @@ resource_autoplace.initialize_patch_set("nullius-sandstone", true) resource_autoplace.initialize_patch_set("nullius-limestone", false) resource_autoplace.initialize_patch_set("nullius-fumarole", false) -data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-bauxite"] = {} -data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-sandstone"] = {} -data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-limestone"] = {} -data.raw.planet["nauvis"].map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-fumarole"] = {} +local nauvis_map_gen_settings = data.raw.planet["nauvis"].map_gen_settings +for _, resource in ipairs({"iron-ore", "nullius-bauxite", "nullius-sandstone", + "nullius-limestone"}) do + nauvis_map_gen_settings.autoplace_settings["entity"]["settings"][resource] = {} + nauvis_map_gen_settings.autoplace_controls[resource] = {} +end +nauvis_map_gen_settings.autoplace_settings["entity"]["settings"]["nullius-fumarole"] = {} +nauvis_map_gen_settings.autoplace_controls["nullius-geothermal"] = {} local function make_particle(inputname, inputtint) From c5ab402ae66caa08db0ae33f98f83e900ba8eff0 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Sat, 22 Nov 2025 00:38:21 +0100 Subject: [PATCH 225/236] Fixed crash with lambent nil in multiplayer --- nullius/scripts/alignment.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nullius/scripts/alignment.lua b/nullius/scripts/alignment.lua index 770b0d3..4d6b117 100644 --- a/nullius/scripts/alignment.lua +++ b/nullius/scripts/alignment.lua @@ -774,7 +774,7 @@ local resource_table = { density = 85, radius = 18, depth = 8 }, { name = "nullius-sandstone", amount = 150, density = 90, radius = 17, depth = 8 }, - { name = "lambent-nil-phosphorite", mod = "lambent-nil", + { name = "nullius-phosphorite", mod = "lambent-nil", amount = 10, density = 25, radius = 4, depth = 2 } } From 0f1fb4d0d68d8fce8e2d023d3c75aec056b4b759 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 25 Nov 2025 21:06:57 +0100 Subject: [PATCH 226/236] Enabling cliff deconstruction when unlocking the explosives --- nullius/prototypes/technology.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nullius/prototypes/technology.lua b/nullius/prototypes/technology.lua index 9abc55a..455b185 100644 --- a/nullius/prototypes/technology.lua +++ b/nullius/prototypes/technology.lua @@ -3955,6 +3955,10 @@ data:extend({ { type = "unlock-recipe", recipe = "empty-nullius-chlorine-barrel" + }, + { + type = "cliff-deconstruction-enabled", + modifier = true } }, unit = { From 53022e8261046230cfb45139014f2d29b806877e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Tue, 25 Nov 2025 22:06:02 +0100 Subject: [PATCH 227/236] Made factorissimo's buildings stackable again so that the nullius recipes can be made in an assembler --- nullius/changelog_wip.txt | 1 + nullius/prototypes/override_mod.lua | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 8cbbc33..48727ec 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -37,6 +37,7 @@ Date: 2025 - Removed the dependency on angels, now only depends on the graphics - Now supports elevated rails - Support for quick adjustable inserters + - Made factorissimo's factory buildings stackable again so the nullius recipes can be made in an assembler --------------------------------------------------------------------------------------------------- Safefill: added setting to enable mining of waterfill \ No newline at end of file diff --git a/nullius/prototypes/override_mod.lua b/nullius/prototypes/override_mod.lua index 1f6b12b..baa57ae 100644 --- a/nullius/prototypes/override_mod.lua +++ b/nullius/prototypes/override_mod.lua @@ -223,6 +223,14 @@ data.raw.technology["factory-architecture-t1"].localised_name = {"", {"technolog data.raw.technology["factory-architecture-t2"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(2)} data.raw.technology["nullius-architecture-1"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(3)} data.raw.technology["factory-architecture-t3"].localised_name = {"", {"technology-name.nullius-architecture"}, " ", tostring(4)} + +for _, item in pairs({"factory-1", "factory-2"}) do + for i, flag in pairs(data.raw.item[item].flags) do + if flag == "not-stackable" then + table.remove(data.raw.item[item].flags, i) + end + end +end end From 7ea402c9b6ca74dc120990b95d7a9fc1104aa6ae Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 26 Nov 2025 16:35:29 +0100 Subject: [PATCH 228/236] Fixed missing parameters bug --- nullius/prototypes/override.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nullius/prototypes/override.lua b/nullius/prototypes/override.lua index 1c60a08..ddc015f 100644 --- a/nullius/prototypes/override.lua +++ b/nullius/prototypes/override.lua @@ -1004,4 +1004,12 @@ data.raw.item["cargo-landing-pad"].order = "nullius-c" data.raw["inserter"]["inserter"].filter_count = 0 data.raw["offshore-pump"]["offshore-pump"] = nil -data.raw["item"]["offshore-pump"].place_result = nil \ No newline at end of file +data.raw["item"]["offshore-pump"].place_result = nil + +-- Parameter recipes and items: +for n = 0, 9 do + local pr = data.raw.recipe["parameter-" .. n] + pr.order = "nullius-" .. pr.order + local pi = data.raw.item["parameter-" .. n] + pi.order = "nullius-" .. pi.order +end \ No newline at end of file From 199f3581bc5506c199207d5937ec1a2a9cacbb6f Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Fri, 5 Dec 2025 22:50:37 +0100 Subject: [PATCH 229/236] Added settings for wind turbine sound --- nullius/locale/en/misc.cfg | 4 ++++ nullius/prototypes/entity/wind.lua | 8 ++++---- nullius/settings.lua | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/nullius/locale/en/misc.cfg b/nullius/locale/en/misc.cfg index 40b7769..927f745 100644 --- a/nullius/locale/en/misc.cfg +++ b/nullius/locale/en/misc.cfg @@ -133,12 +133,16 @@ nullius-hydrothermal=Enable hydrothermal vents and offshore extractors. nullius-infinite-fumaroles=Infinite fumaroles nullius-hide-void-alt=Hide venting building alt-icon nullius-hide-recipe-signals=Hide most recipe signals +nullius-wind-turbine-volume=Wind turbine sound volume +nullius-match-wind-turbine-activity-sound=Match wind turbine sound to activity [mod-setting-description] nullius-alignment=Players start in separate factions before teaming up. nullius-infinite-fumaroles=Don't limit land deposits of volcanic gas when water desposits are available. nullius-hide-void-alt=Hides the alt-icon for Chimney and Outfall nullius-hide-recipe-signals=Hides all the recipe signals that are not in the signal GUI by default. +nullius-wind-turbine-volume=Adjusts the volume of wind turbine sounds. +nullius-match-wind-turbine-activity-sound=When enabled, wind turbine sound volume varies with activity level. [alignment] nullius-align-first-intro=You're a von Neumann android. Your probe has arrived at a barren planet with a mandate to terraform it, seed it with life, and build a wave of successors to continue on to new planets. You've detected signs that other probes may be approaching this planet, but you're the first to arrive. Use this head start to prepare for potentially hostile interference, until you can determine if they're operating according to compatible directives. If so, work together to achieve them faster, otherwise reprogram them to share your goals or race to outcompete them. Prepare for a rough landing as you begin to enter the atmosphere. diff --git a/nullius/prototypes/entity/wind.lua b/nullius/prototypes/entity/wind.lua index 3d872cb..8799574 100644 --- a/nullius/prototypes/entity/wind.lua +++ b/nullius/prototypes/entity/wind.lua @@ -103,9 +103,9 @@ for i=1,3 do working_sound = { sound = { filename = "__base__/sound/train-wheels.ogg", - volume = scale + volume = scale * settings.startup["nullius-wind-turbine-volume"].value }, - match_speed_to_activity = true + match_speed_to_activity = settings.startup["nullius-match-wind-turbine-activity-sound"].value } }, @@ -148,9 +148,9 @@ for i=1,3 do working_sound = { sound = { filename = "__base__/sound/train-wheels.ogg", - volume = scale + volume = scale * settings.startup["nullius-wind-turbine-volume"].value }, - match_speed_to_activity = true, + match_speed_to_activity = settings.startup["nullius-match-wind-turbine-activity-sound"].value } } }) diff --git a/nullius/settings.lua b/nullius/settings.lua index 8ba40aa..2b9a653 100644 --- a/nullius/settings.lua +++ b/nullius/settings.lua @@ -26,4 +26,18 @@ data:extend({ setting_type = "startup", default_value = false }, + { + type = "bool-setting", + name = "nullius-match-wind-turbine-activity-sound", + setting_type = "startup", + default_value = true + }, + { + type = "double-setting", + name = "nullius-wind-turbine-volume", + setting_type = "startup", + default_value = 1.0, + minimum_value = 0.0, + maximum_value = 1.0, + } }) \ No newline at end of file From face155f39012c726149ddbd461e09f06902a3da Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 17 Dec 2025 18:41:38 +0100 Subject: [PATCH 230/236] Fixed icon scaling for boxed steel pipes --- nullius/prototypes/item/plumbing.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nullius/prototypes/item/plumbing.lua b/nullius/prototypes/item/plumbing.lua index f30918f..8eaf1c3 100644 --- a/nullius/prototypes/item/plumbing.lua +++ b/nullius/prototypes/item/plumbing.lua @@ -290,8 +290,8 @@ data:extend({ }, { icon = "__boblogistics__/graphics/icons/pipe/copper-tungsten-pipe.png", - icon_size = 32, - scale = 0.9 + icon_size = 64, + scale = 0.45 }, { icon = "__angelssmeltinggraphics__/graphics/icons/ingot-steel.png", From aeb155f8cd8512181cc085baf1179b44a2d8505e Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Wed, 17 Dec 2025 18:59:28 +0100 Subject: [PATCH 231/236] Made assemblers and tanks rotatable/flippable --- nullius/prototypes/entity/assembler.lua | 5 +++++ nullius/prototypes/entity/plumbing.lua | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/nullius/prototypes/entity/assembler.lua b/nullius/prototypes/entity/assembler.lua index 1cd0821..8ab2da7 100644 --- a/nullius/prototypes/entity/assembler.lua +++ b/nullius/prototypes/entity/assembler.lua @@ -95,6 +95,7 @@ data:extend({ }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + forced_symmetry = "horizontal", fluid_boxes = { { production_type = "input", @@ -187,6 +188,7 @@ data:extend({ }, collision_box = {{-1.7, -1.7}, {1.7, 1.7}}, selection_box = {{-2.0, -2.0}, {2.0, 2.0}}, + forced_symmetry = "horizontal", fluid_boxes = { { production_type = "input", @@ -404,6 +406,7 @@ data:extend({ }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + forced_symmetry = "horizontal", fluid_boxes = data.raw["assembling-machine"]["nullius-medium-assembler-1"].fluid_boxes, fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "medium-assembler", @@ -473,6 +476,7 @@ data:extend({ }, collision_box = {{-1.2, -1.2}, {1.2, 1.2}}, selection_box = {{-1.5, -1.5}, {1.5, 1.5}}, + forced_symmetry = "horizontal", fluid_boxes = data.raw["assembling-machine"]["nullius-medium-assembler-1"].fluid_boxes, fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "medium-assembler", @@ -540,6 +544,7 @@ data:extend({ }, collision_box = {{-1.7, -1.7}, {1.7, 1.7}}, selection_box = {{-2.0, -2.0}, {2.0, 2.0}}, + forced_symmetry = "horizontal", fluid_boxes = data.raw["assembling-machine"]["nullius-large-assembler-1"].fluid_boxes, fluid_boxes_off_when_no_fluid_recipe = true, fast_replaceable_group = "large-assembler", diff --git a/nullius/prototypes/entity/plumbing.lua b/nullius/prototypes/entity/plumbing.lua index ac624ee..315c707 100644 --- a/nullius/prototypes/entity/plumbing.lua +++ b/nullius/prototypes/entity/plumbing.lua @@ -2079,7 +2079,7 @@ data:extend({ type = "storage-tank", name = "nullius-large-tank-1", icons = data.raw.item["nullius-large-tank-1"].icons, - flags = {"placeable-player", "player-creation", "not-rotatable"}, + flags = {"placeable-player", "player-creation"}, -- , "not-rotatable" minable = {mining_time = 3, result = "nullius-large-tank-1"}, collision_mask = collision_mask_util.get_default_mask("rocket-silo"), -- generic tall building max_health = 1000, @@ -2174,7 +2174,7 @@ data:extend({ type = "storage-tank", name = "nullius-large-tank-2", icons = data.raw.item["nullius-large-tank-2"].icons, - flags = {"placeable-player", "player-creation", "not-rotatable"}, + flags = {"placeable-player", "player-creation"}, -- "not-rotatable" minable = {mining_time = 3, result = "nullius-large-tank-2"}, collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 1200, @@ -2207,7 +2207,7 @@ data:extend({ type = "storage-tank", name = "nullius-large-tank-3", icons = data.raw.item["nullius-large-tank-3"].icons, - flags = {"placeable-player", "player-creation", "not-rotatable"}, + flags = {"placeable-player", "player-creation"}, -- , "not-rotatable" minable = {mining_time = 3, result = "nullius-large-tank-3"}, collision_mask = collision_mask_util.get_default_mask("rocket-silo"), max_health = 1500, From a26db3c5e328d981509e25975d57a7511e9cecfa Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 18 Dec 2025 10:08:47 +0100 Subject: [PATCH 232/236] Fixed duplicated thermal tank bug --- nullius/scripts/geothermal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nullius/scripts/geothermal.lua b/nullius/scripts/geothermal.lua index c16eaef..8f3a2b2 100644 --- a/nullius/scripts/geothermal.lua +++ b/nullius/scripts/geothermal.lua @@ -204,7 +204,7 @@ function build_thermal_tank(entity, level) local position = entity.position local force = entity.force local surface = entity.surface - --entity.destroy() + entity.destroy() surface.create_entity{name = "nullius-thermal-tank-"..dirname.."-"..level, position = position, force = force, direction = direction, fast_replace = true} end From 0838cb2128c9c9d7117c1c92812adfc6833b2111 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 18 Dec 2025 10:09:22 +0100 Subject: [PATCH 233/236] Changed fumarole icon --- nullius/changelog_wip.txt | 2 ++ nullius/prototypes/reskin.lua | 49 +++++++++++++++++++++++++++++++++ nullius/prototypes/resource.lua | 4 +-- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/nullius/changelog_wip.txt b/nullius/changelog_wip.txt index 48727ec..ec3ab1d 100644 --- a/nullius/changelog_wip.txt +++ b/nullius/changelog_wip.txt @@ -11,6 +11,7 @@ Date: 2025 - Added display panels and selector combinator - Added setting to hide the voiding recipe icon from chimneys and outfalls - Added circuit connections to most buildings + - Added settings to control the sound of wind turbines Changes: - Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted - Removed mirror buildings, use 2.0 flipping instead, removed chirality research @@ -19,6 +20,7 @@ Date: 2025 - Changed required techs for most shortcuts - Now uses the Valve prototype for valves - Changed plumbing and pumping checkpoints to reflect lesser need for pumps in 2.0 fluid system + - Made tanks rotatable/flippable Balancing: - Increased the pumping speeds of pumps (and max flow rate) Bugfixes: diff --git a/nullius/prototypes/reskin.lua b/nullius/prototypes/reskin.lua index 94d7bd6..4bd464e 100644 --- a/nullius/prototypes/reskin.lua +++ b/nullius/prototypes/reskin.lua @@ -51,6 +51,55 @@ function add_recipe_gear_icon(icons) return icons end +function combine_icons(icons1, icons2, scale1, scale2, shift1, shift2) + -- if type(icons2) ~= "table" then + -- icons2 = {{ + -- icon = icons2, + -- icon_size = 64 + -- }} + -- end + local combined = table.deepcopy(icons1) + for _, icon in pairs(combined) do + if (scale1 ~= nil) then + icon.scale = (icon.scale or 1) * scale1 + end + if (shift1 ~= nil) then + if (icon.shift ~= nil) then + if (icon.shift.x ~= nil) then + icon.shift.x = icon.shift.x + shift1[1] + icon.shift.y = icon.shift.y + shift1[2] + else + icon.shift[1] = icon.shift[1] + shift1[1] + icon.shift[2] = icon.shift[2] + shift1[2] + end + else + icon.shift = shift1 + end + end + end + for _, icon in pairs(icons2) do + icon = table.deepcopy(icon) + if scale2 ~= nil then + icon.scale = (icon.scale or 1) * scale2 + end + if shift2 ~= nil then + if (icon.shift ~= nil) then + if (icon.shift.x ~= nil) then + icon.shift.x = icon.shift.x + shift2[1] + icon.shift.y = icon.shift.y + shift2[2] + else + icon.shift[1] = icon.shift[1] + shift2[1] + icon.shift[2] = icon.shift[2] + shift2[2] + end + else + icon.shift = shift2 + end + end + table.insert(combined, icon) + end + return combined +end + function scale_shift(vec, scale) if (vec == nil) then return nil end vec[1] = vec[1] * scale diff --git a/nullius/prototypes/resource.lua b/nullius/prototypes/resource.lua index 120bd74..74af3dd 100644 --- a/nullius/prototypes/resource.lua +++ b/nullius/prototypes/resource.lua @@ -309,9 +309,9 @@ data:extend({ { type = "resource", name = "nullius-fumarole", - icons = data.raw.fluid["nullius-volcanic-gas"].icons, + icons = combine_icons(data.raw.fluid["nullius-volcanic-gas"].icons, {{icon = data.raw.fluid["nullius-steam"].icon, icon_size = 64}}, 0.85, 0.25, nil, {-10, -10}), map_color = {r=1, g=0.5, b=0}, - mining_visualisation_tint = {r = 1.0, g = 0.7, b = 0.4, a = 1.0}, + mining_visualisation_tint = {r = 1.0, g = 0.7, b = 0.4, a = 1.0}, map_grid = false, flags = {"placeable-neutral"}, From 26e7dc4edc9f44e3b2eecb00cac1b60782cc8b21 Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 18 Dec 2025 10:26:47 +0100 Subject: [PATCH 234/236] Updated changelog and min game version --- nullius/changelog.txt | 41 +++++++++++++++++++++++++++++++++++++++++ nullius/info.json | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/nullius/changelog.txt b/nullius/changelog.txt index c8400a3..6330024 100644 --- a/nullius/changelog.txt +++ b/nullius/changelog.txt @@ -1,4 +1,45 @@ --------------------------------------------------------------------------------------------------- +Version: 2.0.0 +Date: 18.12.2025 + Features: + - Updated to 2.0 + - Added landing pad: Now the results of rocket launches will be collected there + - Re-introduced red and green wires so there is a seamless transition to 2.0 + - Added essential techs + - Added command to flip all valves (i will remove it when i'm convinced it's not needed anymore) + - Added display panels and selector combinator + - Added setting to hide the voiding recipe icon from chimneys and outfalls + - Added circuit connections to most buildings + - Added settings to control the sound of wind turbines + Changes: + - Reworked the inserters: Removed filter inserters, now base inserters have filters except tier 1, their recipes have been adapted + - Removed mirror buildings, use 2.0 flipping instead, removed chirality research + - Added a trigger tech "Salvage lab wreckage" + - Removed regular artillery shortcut and discharge defense shortcut + - Changed required techs for most shortcuts + - Now uses the Valve prototype for valves + - Changed plumbing and pumping checkpoints to reflect lesser need for pumps in 2.0 fluid system + - Made tanks rotatable/flippable + Balancing: + - Increased the pumping speeds of pumps (and max flow rate) + Bugfixes: + - + Graphics: + - Added icons for drones ammo categories + - Reworked voiding recipes icons to make them standout more in factoriopedia + - Altered lime recipe icon so that it's distinguishable from the item in the signals gui + - Altered recipe icons for: nuclear fuel cell recycling, hydrochloric acid, hydrogen chloride,seawater filtration, freshwater filtration for signal gui + Info: + - Added description to inserters + - Renamed the extension tech to inserter extension + - Tweaked description texts of landing entities to make them less ambiguous + - Removed mentions of the old pressure system + Modding: + - Removed the dependency on angels, now only depends on the graphics + - Now supports elevated rails + - Support for quick adjustable inserters + - Made factorissimo's factory buildings stackable again so the nullius recipes can be made in an assembler +--------------------------------------------------------------------------------------------------- Version: 1.9.1 Date: 28.01.2024 Features: diff --git a/nullius/info.json b/nullius/info.json index ca8b9e5..8e3468d 100644 --- a/nullius/info.json +++ b/nullius/info.json @@ -7,7 +7,7 @@ "description": "In this Factorio prequel, you're an android terraforming planets and seeding them with life. Replaces all recipes and technology. No life means no coal, oil, wood, biters, or free oxygen, requiring varied renewable energy sources. For reliability, you'll focus on abundant elements from the air, sea, or common minerals such as iron ore, bauxite, sandstone, and limestone. Advanced technology enables asteroid mining of rarer elements.", "homepage": "https://discord.gg/tZY2Rkte8Y", "dependencies": [ - "base >= 2.0.58", + "base >= 2.0.72", "alien-biomes >= 0.7.4", "angelsrefininggraphics >= 1.0.0", "angelssmeltinggraphics >= 1.0.0", From f9a0618004d5b168d1c9c5888833187cb8f8f5ac Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 18 Dec 2025 10:31:25 +0100 Subject: [PATCH 235/236] Updated changelog --- nullius/changelog.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/nullius/changelog.txt b/nullius/changelog.txt index 6330024..91ace66 100644 --- a/nullius/changelog.txt +++ b/nullius/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 2.0.1 +Date: 18.12.2025 + Changes: + - Renamed a lot of recipe's internal names in order to merge them with their products in factoriopedia +--------------------------------------------------------------------------------------------------- Version: 2.0.0 Date: 18.12.2025 Features: @@ -22,8 +27,6 @@ Date: 18.12.2025 - Made tanks rotatable/flippable Balancing: - Increased the pumping speeds of pumps (and max flow rate) - Bugfixes: - - Graphics: - Added icons for drones ammo categories - Reworked voiding recipes icons to make them standout more in factoriopedia From b8b0c4a7a26b46ed792b7781164a5a51e9cc577b Mon Sep 17 00:00:00 2001 From: Arthur Louvrier Date: Thu, 18 Dec 2025 10:42:23 +0100 Subject: [PATCH 236/236] Updated changelog of safefill and train upgrader --- nullius/changelog.txt | 2 -- safefill/changelog.txt | 5 +++++ train-upgrader/changelog.txt | 5 +++++ train-upgrader/info.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/nullius/changelog.txt b/nullius/changelog.txt index 6330024..a252206 100644 --- a/nullius/changelog.txt +++ b/nullius/changelog.txt @@ -22,8 +22,6 @@ Date: 18.12.2025 - Made tanks rotatable/flippable Balancing: - Increased the pumping speeds of pumps (and max flow rate) - Bugfixes: - - Graphics: - Added icons for drones ammo categories - Reworked voiding recipes icons to make them standout more in factoriopedia diff --git a/safefill/changelog.txt b/safefill/changelog.txt index 7964145..b375e5f 100644 --- a/safefill/changelog.txt +++ b/safefill/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 2.0.0 +Date: 18.12.2025 + Features: + - Updated to 2.0 +--------------------------------------------------------------------------------------------------- Version: 1.0.11 Date: 11.12.2022 Changes: diff --git a/train-upgrader/changelog.txt b/train-upgrader/changelog.txt index bc981c6..e061948 100644 --- a/train-upgrader/changelog.txt +++ b/train-upgrader/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 2.0.0 +Date: 18.12.2025 + Features: + - Updated to 2.0 +--------------------------------------------------------------------------------------------------- Version: 1.0.5 Date: 29.07.2023 Translation: diff --git a/train-upgrader/info.json b/train-upgrader/info.json index 592ca2a..9bd173e 100644 --- a/train-upgrader/info.json +++ b/train-upgrader/info.json @@ -7,6 +7,6 @@ "description": "Easily automate the replacement of large numbers of active locomotives and wagons in your rail system. Useful in combination with mods that add multiple tiers of locomotives or wagons.", "homepage": "https://discord.gg/tZY2Rkte8Y", "dependencies": [ - "base >= 2.0.64" + "base >= 2.0.72" ] }

5{3?s$9^>HDk?Z}SXhL!IB8 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 z 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 VKKpUPMmLB*<+mF0<+ATT{eOpMNKya* literal 0 HcmV?d00001 diff --git a/nullius/graphics/entity/chimney/flare-stack-flipped.png b/nullius/graphics/entity/chimney/flare-stack-flipped.png new file mode 100644 index 0000000000000000000000000000000000000000..5c550b3b67f0c43dbe3cc0ee5c4304bb3867c9d1 GIT binary patch literal 227802 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