diff --git a/angelsaddons-nilaus/changelog.txt b/angelsaddons-nilaus/changelog.txt index 1a8056b01..e385db426 100644 --- a/angelsaddons-nilaus/changelog.txt +++ b/angelsaddons-nilaus/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 0.3.13 +Date: xx.xx.xxxx + Changes: + - Fixed incorrect ordening of truck mk1 and mk2 +--------------------------------------------------------------------------------------------------- Version: 0.3.12 Date: 27.11.2020 Changes: diff --git a/angelsaddons-nilaus/data-updates.lua b/angelsaddons-nilaus/data-updates.lua index 3dfa98b9a..e9ae3d21e 100644 --- a/angelsaddons-nilaus/data-updates.lua +++ b/angelsaddons-nilaus/data-updates.lua @@ -35,8 +35,8 @@ if has_vehicle_equipment() then if angelsmods and angelsmods.industries then data.raw["item-with-entity-data"]["nilaus-truck"].subgroup = "angels-vehicle-car" - data.raw["item-with-entity-data"]["nilaus-truck"].order = "a[car]-b[nilaus-truck]" + data.raw["item-with-entity-data"]["nilaus-truck"].order = "a[car]-b[nilaus-truck]-a" data.raw["item-with-entity-data"]["nilaus-truck-2"].subgroup = "angels-vehicle-car" - data.raw["item-with-entity-data"]["nilaus-truck-2"].order = "a[car]-b[nilaus-truck-mk2]" + data.raw["item-with-entity-data"]["nilaus-truck-2"].order = "a[car]-b[nilaus-truck]-b" end end diff --git a/angelsaddons-nilaus/info.json b/angelsaddons-nilaus/info.json index 86aa19e2e..8fd6ffcbf 100644 --- a/angelsaddons-nilaus/info.json +++ b/angelsaddons-nilaus/info.json @@ -1,6 +1,6 @@ { "name": "angelsaddons-nilaus", - "version": "0.3.12", + "version": "0.3.13", "factorio_version": "1.1", "title": "Angel's Addons - Decorations - Nilaus", "author": "Arch666Angel", diff --git a/angelsaddons-nilaus/prototypes/buildings/truck.lua b/angelsaddons-nilaus/prototypes/buildings/truck.lua index 477909fb0..6e25b3dfb 100644 --- a/angelsaddons-nilaus/prototypes/buildings/truck.lua +++ b/angelsaddons-nilaus/prototypes/buildings/truck.lua @@ -24,7 +24,7 @@ data:extend({ }, icon_size = 64, subgroup = "transport", - order = "b[nilaus-truck]", + order = "b[nilaus-truck]-a", place_result = "nilaus-truck", stack_size = 1, }, @@ -384,7 +384,7 @@ data:extend({ }, icon_size = 64, subgroup = "transport", - order = "b[nilaus-truck-mk2]", + order = "b[nilaus-truck]-b", place_result = "nilaus-truck-2", stack_size = 1, }, diff --git a/angelsbioprocessing/changelog.txt b/angelsbioprocessing/changelog.txt index 6183c5fbd..a17edca4c 100644 --- a/angelsbioprocessing/changelog.txt +++ b/angelsbioprocessing/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 0.7.24 +Date: xx.xx.2023 + Bugfixes: + - Fixed info about pollution absorbtion rate was incorrect for the biologically active tile. + - Fixed production statistics of garden duplication. +--------------------------------------------------------------------------------------------------- Version: 0.7.23 Date: 01.01.2023 Changes: diff --git a/angelsbioprocessing/info.json b/angelsbioprocessing/info.json index d60f6f94d..68ec35ac0 100644 --- a/angelsbioprocessing/info.json +++ b/angelsbioprocessing/info.json @@ -1,6 +1,6 @@ { "name": "angelsbioprocessing", - "version": "0.7.23", + "version": "0.7.24", "factorio_version": "1.1", "title": "Angel's Bioprocessing", "author": "Arch666Angel", diff --git a/angelsbioprocessing/prototypes/buildings/bio-tile.lua b/angelsbioprocessing/prototypes/buildings/bio-tile.lua index 2d04c85c4..921fc09d7 100644 --- a/angelsbioprocessing/prototypes/buildings/bio-tile.lua +++ b/angelsbioprocessing/prototypes/buildings/bio-tile.lua @@ -1,5 +1,5 @@ local pollution_absorption_per_second = data.raw["tile"]["out-of-map"].pollution_absorption_per_second - * settings.startup["angels-bio-tile-pollution-absorbtion-multiplier"].value + * (2 ^ (settings.startup["angels-bio-tile-pollution-absorbtion-multiplier"].value - 1)) data:extend({ { type = "item", @@ -26,8 +26,7 @@ data:extend({ walking_speed_modifier = 1.3, layer = 80, decorative_removal_probability = 1, - pollution_absorption_per_second = data.raw["tile"]["out-of-map"].pollution_absorption_per_second - * (2 ^ (settings.startup["angels-bio-tile-pollution-absorbtion-multiplier"].value - 1)), + pollution_absorption_per_second = pollution_absorption_per_second, variants = { main = { { diff --git a/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua b/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua index 12ca5dce7..a93a59880 100644 --- a/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua +++ b/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua @@ -40,7 +40,7 @@ data:extend({ enabled = false, energy_required = 60, ingredients = { - { type = "item", name = "temperate-garden", amount = 1 }, + { type = "item", name = "temperate-garden", amount = 1, catalyst_amount = 1 }, { type = "item", name = "solid-alienated-fertilizer", amount = 2 }, { type = "item", name = "token-bio", amount = 30 }, { type = "fluid", name = "water-mineralized", amount = 50 }, @@ -202,7 +202,7 @@ data:extend({ enabled = false, energy_required = 60, ingredients = { - { type = "item", name = "desert-garden", amount = 1 }, + { type = "item", name = "desert-garden", amount = 1, catalyst_amount = 1 }, { type = "item", name = "solid-alienated-fertilizer", amount = 2 }, { type = "item", name = "token-bio", amount = 30 }, { type = "fluid", name = "water-mineralized", amount = 50 }, @@ -364,7 +364,7 @@ data:extend({ enabled = false, energy_required = 60, ingredients = { - { type = "item", name = "swamp-garden", amount = 1 }, + { type = "item", name = "swamp-garden", amount = 1, catalyst_amount = 1 }, { type = "item", name = "solid-alienated-fertilizer", amount = 2 }, { type = "item", name = "token-bio", amount = 30 }, { type = "fluid", name = "water-mineralized", amount = 50 }, diff --git a/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua b/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua index 8d6410937..183fb9f46 100644 --- a/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua +++ b/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua @@ -289,6 +289,7 @@ data:extend({ "bio-processing-crystal-splinter-1", "ore-powderizer", "geode-processing-2", + "slag-processing-2", }, effects = { { diff --git a/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua b/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua index 27b120155..0bc59e67a 100644 --- a/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua +++ b/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua @@ -13,10 +13,6 @@ data:extend({ type = "unlock-recipe", recipe = "wood-pellets", }, - { - type = "unlock-recipe", - recipe = "bio-resin-wood-reprocessing", - }, }, unit = { count = 50, @@ -132,6 +128,10 @@ data:extend({ type = "unlock-recipe", recipe = "solid-saw", }, + { + type = "unlock-recipe", + recipe = "bio-resin-wood-reprocessing", + }, }, unit = { count = 50, @@ -375,10 +375,6 @@ data:extend({ type = "unlock-recipe", recipe = "bio-plastic", }, - { - type = "unlock-recipe", - recipe = "solid-plastic", - }, }, unit = { count = 50, diff --git a/angelsdev-unit-test/unit-tests/unit-test-009.lua b/angelsdev-unit-test/unit-tests/unit-test-009.lua index 7ec5a4a64..27c9aa282 100644 --- a/angelsdev-unit-test/unit-tests/unit-test-009.lua +++ b/angelsdev-unit-test/unit-tests/unit-test-009.lua @@ -95,7 +95,42 @@ local function try_find_entity_for(recipe) (not entity.fixed_recipe or (entity.fixed_recipe == recipe.name)) and (entity.ingredient_count >= item_ingredient_count) then - return true + if (fluid_ingredient_count == 0) and (fluid_product_count == 0) then + return true + end + + local fluid_ingredient_capacity = 0 + local fluid_product_capacity = 0 + local fluid_input_product_capacity = 0 + for _, fluidbox_prototype in pairs(entity.fluidbox_prototypes) do + if fluidbox_prototype.production_type == "input" then + fluid_ingredient_capacity = fluid_ingredient_capacity + 1 + elseif fluidbox_prototype.production_type == "output" then + fluid_product_capacity = fluid_product_capacity + 1 + elseif fluidbox_prototype.production_type == "input-output" then + fluid_input_product_capacity = fluid_input_product_capacity + 1 + end + end + + if (fluid_ingredient_count <= fluid_ingredient_capacity) and (fluid_product_count <= fluid_product_capacity) then + return true + end + + local fluid_input_product_capacity_ingredient_required = 0 + local fluid_input_product_capacity_product_required = 0 + if fluid_ingredient_count > fluid_ingredient_capacity then + fluid_input_product_capacity_ingredient_required = fluid_ingredient_count - fluid_ingredient_capacity + end + if fluid_product_count > fluid_product_capacity then + fluid_input_product_capacity_product_required = fluid_product_count - fluid_product_capacity + end + + if + fluid_input_product_capacity_ingredient_required + fluid_input_product_capacity_ingredient_required + <= fluid_input_product_capacity + then + return true + end end end diff --git a/angelsdev-unit-test/unit-tests/unit-test-010.lua b/angelsdev-unit-test/unit-tests/unit-test-010.lua index c4d5658dd..9ef55b2d5 100644 --- a/angelsdev-unit-test/unit-tests/unit-test-010.lua +++ b/angelsdev-unit-test/unit-tests/unit-test-010.lua @@ -2,7 +2,7 @@ -- either unlocked at the same time or unlocked by a prerequisite technology local unit_test_functions = require("unit-test-functions") -local starting_unlocks = { items = {}, fluids = {} } +local starting_unlocks = { items = {}, fluids = {}, categories = {} } local processed_techs = {} local unit_test_result = unit_test_functions.test_successful local ignored_unlocks = {} @@ -11,7 +11,7 @@ local skip_test = false local function process_tech(tech) -- Build lists of items and fluids unlocked by this tech - local result = { name = tech.name, items = {}, fluids = {} } + local result = { name = tech.name, items = {}, fluids = {}, categories = {} } local recipes = {} for _, modifier in pairs(tech.effects) do @@ -21,6 +21,8 @@ local function process_tech(tech) processed = false, ingredients = { items = {}, fluids = {} }, products = { items = {}, fluids = {} }, + category = recipe.category, + categories = {}, } local skip = false @@ -37,6 +39,16 @@ local function process_tech(tech) for _, product in pairs(recipe.products) do if product.type == "item" then recipes[recipe.name].products.items[product.name] = true + + -- Check for entity. Add crafting categories + local entity = game.item_prototypes[product.name].place_result + if entity then + if entity.crafting_categories then + for category_name, _ in pairs(entity.crafting_categories) do + recipes[recipe.name].categories[category_name] = true + end + end + end else recipes[recipe.name].products.fluids[product.name] = true end @@ -118,17 +130,24 @@ local function process_tech(tech) for fluid_name, _ in pairs(prereq.fluids) do result.fluids[fluid_name] = true end + + for category_name, _ in pairs(prereq.categories) do + result.categories[category_name] = true + end end end -- Get ignored unlocks if ignored_unlocks[tech.name] then - for _, item_name in pairs(ignored_unlocks[tech.name].items) do + for item_name, _ in pairs(ignored_unlocks[tech.name].items or {}) do result.items[item_name] = true end - for _, fluid_name in pairs(ignored_unlocks[tech.name].fluids) do + for fluid_name, _ in pairs(ignored_unlocks[tech.name].fluids or {}) do result.fluids[fluid_name] = true end + for category_name, _ in pairs(ignored_unlocks[tech.name].categories or {}) do + result.categories[category_name] = true + end end if #tech.prerequisites == 0 then @@ -139,6 +158,10 @@ local function process_tech(tech) for fluid_name, _ in pairs(starting_unlocks.fluids) do result.fluids[fluid_name] = true end + + for category_name, _ in pairs(starting_unlocks.categories) do + result.categories[category_name] = true + end end -- Check if any recipes unlocked by this tech use ingredients that are not available @@ -169,6 +192,10 @@ local function process_tech(tech) found_all_prerequisites = false end end + if not result.categories[recipe.category] then + recipe.missing_category = true + found_all_prerequisites = false + end if found_all_prerequisites then recipe.processed = true @@ -180,6 +207,9 @@ local function process_tech(tech) for fluid_name, _ in pairs(recipe.products.fluids) do result.fluids[fluid_name] = true end + for category_name, _ in pairs(recipe.categories) do + result.categories[category_name] = true + end end end end @@ -213,6 +243,16 @@ local function process_tech(tech) unit_test_result = unit_test_functions.test_failed end end + if recipe.missing_category == true then + unit_test_functions.print_msg( + string.format( + "Recipe %q uses crafting category %q and is unlocked by Tech %q. None of the tech's prerequisites unlock a machine with this crafting category", + recipe_name, + recipe.category, + tech.name + ) + ) + end -- Add recipe results to products anyway else all following techs will fail for item_name, _ in pairs(recipe.products.items) do @@ -221,6 +261,9 @@ local function process_tech(tech) for fluid_name, _ in pairs(recipe.products.fluids) do result.fluids[fluid_name] = true end + for category_name, _ in pairs(recipe.categories) do + result.categories[category_name] = true + end end end @@ -303,71 +346,167 @@ local function add_ignores() end -- base game exception - ignored_unlocks["artillery"] = { items = { "concrete" }, fluids = {} } + ignored_unlocks["artillery"] = { + items = { + ["concrete"] = true, + }, + } if game.active_mods["angelsrefining"] then ignore_building_recipes = true - ignored_unlocks["ore-powderizer"] = { items = { "milling-drum-used" }, fluids = {} } - ignored_unlocks["water-treatment-2"] = - { items = {}, fluids = { "water-greenyellow-waste", "water-green-waste", "water-red-waste" } } + ignored_unlocks["ore-powderizer"] = { + items = { + ["milling-drum-used"] = true, + }, + } + ignored_unlocks["water-treatment-2"] = { + items = {}, + fluids = { + ["water-greenyellow-waste"] = true, + ["water-green-waste"] = true, + ["water-red-waste"] = true, + }, + } end if game.active_mods["angelssmelting"] then - ignored_unlocks["angels-coolant-1"] = { items = {}, fluids = { "liquid-coolant-used" } } + ignored_unlocks["angels-coolant-1"] = { + fluids = { + ["liquid-coolant-used"] = true, + }, + } end if game.active_mods["angelsbioprocessing"] then - ignored_unlocks["plastics"] = { items = {}, fluids = { "liquid-plastic" } } - ignored_unlocks["rubbers"] = { items = {}, fluids = { "liquid-rubber" } } - ignored_unlocks["resins"] = { items = {}, fluids = { "liquid-resin" } } + ignored_unlocks["plastics"] = { + fluids = { + ["liquid-plastic"] = true, + }, + } + ignored_unlocks["rubbers"] = { + fluids = { + ["liquid-rubber"] = true, + }, + } + ignored_unlocks["resins"] = { + fluids = { + ["liquid-resin"] = true, + }, + } ignored_unlocks["bio-processing-paste"] = { items = { - "powder-cobalt", - "powder-copper", - "powder-gold", - "powder-iron", - "powder-titanium", - "powdered-tungsten", - "powder-zinc", + ["powder-cobalt"] = true, + ["powder-copper"] = true, + ["powder-gold"] = true, + ["powder-iron"] = true, + ["powder-titanium"] = true, + ["powdered-tungsten"] = true, + ["powder-zinc"] = true, }, - fluids = {}, } -- TODO: Tidy up puffer / crop prerequisites - ignored_unlocks["bio-refugium-hatchery"] = - { items = { "bio-puffer-egg-2", "bio-puffer-egg-3", "bio-puffer-egg-4", "bio-puffer-egg-5" }, fluids = {} } - ignored_unlocks["bio-fermentation"] = { items = { "solid-corn", "solid-fruit" }, fluids = {} } - ignored_unlocks["bio-nutrient-paste"] = - { items = { "solid-beans", "solid-corn", "solid-leafs", "solid-nuts", "solid-pips", "solid-fruit" }, fluids = {} } - ignored_unlocks["bio-pressing-1"] = { items = { "solid-nuts", "solid-pips", "solid-beans" }, fluids = {} } + ignored_unlocks["bio-refugium-hatchery"] = { + items = { + ["bio-puffer-egg-2"] = true, + ["bio-puffer-egg-3"] = true, + ["bio-puffer-egg-4"] = true, + ["bio-puffer-egg-5"] = true, + }, + } + ignored_unlocks["bio-fermentation"] = { + items = { + ["solid-corn"] = true, + ["solid-fruit"] = true, + }, + } + ignored_unlocks["bio-nutrient-paste"] = { + items = { + ["solid-beans"] = true, + ["solid-corn"] = true, + ["solid-leafs"] = true, + ["solid-nuts"] = true, + ["solid-pips"] = true, + ["solid-fruit"] = true, + }, + } + ignored_unlocks["bio-pressing-1"] = { + items = { + ["solid-nuts"] = true, + ["solid-pips"] = true, + ["solid-beans"] = true, + }, + } -- TODO: Either make all modules take crystals or remove crystals from agriculture modules (without industries) - ignored_unlocks["angels-bio-yield-module"] = { items = { "crystal-splinter-green" }, fluids = { "" } } - ignored_unlocks["angels-bio-yield-module-2"] = { items = { "crystal-shard-green" }, fluids = { "" } } - ignored_unlocks["angels-bio-yield-module-3"] = { items = { "crystal-full-green" }, fluids = { "" } } + ignored_unlocks["angels-bio-yield-module"] = { + items = { + ["crystal-splinter-green"] = true, + }, + } + ignored_unlocks["angels-bio-yield-module-2"] = { + items = { + ["crystal-shard-green"] = true, + }, + } + ignored_unlocks["angels-bio-yield-module-3"] = { + items = { + ["crystal-full-green"] = true, + }, + } end if game.active_mods["angelsindustries"] then - ignored_unlocks["angels-nuclear-fuel"] = - { items = { "plutonium-239", "plutonium-240", "thorium-232" }, fluids = {} } - ignored_unlocks["atomic-bomb"] = - { items = { "plutonium-239", "plutonium-240", "angels-muon-fusion-catalyst" }, fluids = { "gas-deuterium" } } + ignored_unlocks["angels-nuclear-fuel"] = { + items = { + ["plutonium-239"] = true, + ["plutonium-240"] = true, + ["thorium-232"] = true, + }, + categories = { + ["centrifuging-2"] = true, + ["centrifuging-3"] = true, + }, + } + ignored_unlocks["atomic-bomb"] = { + items = { + ["plutonium-239"] = true, + ["plutonium-240"] = true, + ["angels-muon-fusion-catalyst"] = true, + }, + fluids = { + ["gas-deuterium"] = true, + }, + } end if game.active_mods["SeaBlock"] then ignore_building_recipes = false ignored_unlocks["starting"] = { items = { - "iron-plate", - "iron-stick", - "basic-circuit-board", - "pipe", - "pipe-to-ground", - "copper-pipe", - "iron-gear-wheel", - "wooden-board", + ["basic-circuit-board"] = true, + ["copper-pipe"] = true, + ["iron-gear-wheel"] = true, + ["iron-plate"] = true, + ["iron-stick"] = true, + ["pipe"] = true, + ["pipe-to-ground"] = true, + ["wooden-board"] = true, + }, + fluids = { + ["water"] = true, }, - fluids = { "water" }, } end + + for _, player in pairs(game.players) do + if player.character and player.character.prototype and player.character.prototype.crafting_categories then + local crafting_categories = player.character.prototype.crafting_categories + for category_name, _ in pairs(crafting_categories) do + ignored_unlocks["starting"] = ignored_unlocks["starting"] or {} + ignored_unlocks["starting"].categories = ignored_unlocks["starting"].categories or {} + ignored_unlocks["starting"].categories[category_name] = true + end + end + end end local unit_test_010 = function() diff --git a/angelsexploration/changelog.txt b/angelsexploration/changelog.txt index a2513498e..916807101 100644 --- a/angelsexploration/changelog.txt +++ b/angelsexploration/changelog.txt @@ -1,12 +1,22 @@ --------------------------------------------------------------------------------------------------- +Version: 0.3.15 +Date: xx.xx.2023 + Changes: + - Added "Thorvin" bicycle; credits to the TurboBike mod for the graphics (790) + - Spitters are back doing acid splash instead of their bio splash + - First (partial) rework on artifact drop rates (748) + Bugfixes: + - Fixed the native inhabitants tips and tricks could not become visible + - Fixed incomplete tips and tricks localisation for the enemy spawners +--------------------------------------------------------------------------------------------------- Version: 0.3.14 Date: 06.06.2022 + Changes: + - Added small description to the gathering turret Bugfixes: - Fixed crash when adding a newer version of this mod to an existing save while other mods are (wrongfully) placing entities while the configuration changes are being executed... - Fixed crash related to biter tips and tricks when playing with other biter mods - Changes: - - Added small description to the gathering turret --------------------------------------------------------------------------------------------------- Version: 0.3.13 Date: 23.12.2021 diff --git a/angelsexploration/control.lua b/angelsexploration/control.lua index b796bec62..57b0c2464 100644 --- a/angelsexploration/control.lua +++ b/angelsexploration/control.lua @@ -1,4 +1,5 @@ local gathering_turret = require("src.gathering-turret") +local turbo_bike = require("src.turbo-bike") local tips_and_tricks_triggers = require("src.tips-and-tricks-triggers") local debug_info = require("src.debug-info") @@ -9,6 +10,7 @@ script.on_configuration_changed(on_configuration_changed) -- initialisation script.on_init(function() gathering_turret:on_init() + turbo_bike:on_init() tips_and_tricks_triggers:on_init() debug_info:on_init() end) @@ -35,6 +37,7 @@ end) -- destroy events script.on_event(defines.events.on_entity_damaged, function(event) gathering_turret:on_damaged_entity(event.entity, event.cause, event.original_damage_amount) + turbo_bike:on_damaged_entity(event.entity, event.cause, event.original_damage_amount) end, { -- Event raise filter 1: damage to (inactive) gathering turret with 0 health remaining { mode = "or", filter = "name", name = "angels-gathering-turret" }, @@ -42,6 +45,10 @@ end, { -- Event raise filter 2: gathering damage to a potential gathering target { mode = "or", filter = "type", type = "land-mine" }, { mode = "and", filter = "damage-type", type = "gathering" }, + -- Event raise filter 3: turbo-bike taking damamge + { mode = "or", filter = "type", type = "car" }, + { mode = "and", filter = "name", name = "angels-turbo-bike" }, + { mode = "and", filter = "damage-type", type = "impact" }, }) script.on_event(defines.events.on_entity_died, function(event) gathering_turret:on_entity_died(event.entity, event.loot) diff --git a/angelsexploration/data.lua b/angelsexploration/data.lua index d50b8ffb9..f0b179529 100644 --- a/angelsexploration/data.lua +++ b/angelsexploration/data.lua @@ -4,6 +4,13 @@ angelsmods.exploration = angelsmods.exploration or {} angelsmods.functions = angelsmods.functions or {} --TRIGGER CHECKS +angelsmods.triggers.artifacts["red"] = true +angelsmods.triggers.artifacts["yellow"] = true +angelsmods.triggers.artifacts["orange"] = true +angelsmods.triggers.artifacts["blue"] = true +angelsmods.triggers.artifacts["purple"] = true +angelsmods.triggers.artifacts["green"] = true +angelsmods.triggers.artifacts["base"] = true -- pink --LOAD PROTOTYPES require("prototypes.exploration-category") diff --git a/angelsexploration/graphics/entity/bike/hyper-bike.png b/angelsexploration/graphics/entity/bike/hyper-bike.png new file mode 100644 index 000000000..35e57bdd5 Binary files /dev/null and b/angelsexploration/graphics/entity/bike/hyper-bike.png differ diff --git a/angelsexploration/graphics/entity/bike/turbo-bike.png b/angelsexploration/graphics/entity/bike/turbo-bike.png new file mode 100644 index 000000000..86689fa31 Binary files /dev/null and b/angelsexploration/graphics/entity/bike/turbo-bike.png differ diff --git a/angelsexploration/graphics/icons/hyper-bike.png b/angelsexploration/graphics/icons/hyper-bike.png new file mode 100644 index 000000000..6c289ee87 Binary files /dev/null and b/angelsexploration/graphics/icons/hyper-bike.png differ diff --git a/angelsexploration/graphics/icons/turbo-bike.png b/angelsexploration/graphics/icons/turbo-bike.png new file mode 100644 index 000000000..548f18ac1 Binary files /dev/null and b/angelsexploration/graphics/icons/turbo-bike.png differ diff --git a/angelsexploration/graphics/technology/hyper-bike-tech.png b/angelsexploration/graphics/technology/hyper-bike-tech.png new file mode 100644 index 000000000..2093f99cf Binary files /dev/null and b/angelsexploration/graphics/technology/hyper-bike-tech.png differ diff --git a/angelsexploration/graphics/technology/turbo-bike-tech.png b/angelsexploration/graphics/technology/turbo-bike-tech.png new file mode 100644 index 000000000..77fb7e18e Binary files /dev/null and b/angelsexploration/graphics/technology/turbo-bike-tech.png differ diff --git a/angelsexploration/info.json b/angelsexploration/info.json index 8bc90666a..49728e571 100644 --- a/angelsexploration/info.json +++ b/angelsexploration/info.json @@ -1,6 +1,6 @@ { "name": "angelsexploration", - "version": "0.3.14", + "version": "0.3.15", "factorio_version": "1.1", "title": "Angel's Exploration (BETA)", "author": "Arch666Angel", diff --git a/angelsexploration/locale/en/exploration.cfg b/angelsexploration/locale/en/exploration.cfg index b114c5c3d..b7ff283d9 100644 --- a/angelsexploration/locale/en/exploration.cfg +++ b/angelsexploration/locale/en/exploration.cfg @@ -7,9 +7,13 @@ angels-warfare-bob=Bob's Combat [equipment-name] [entity-name] +angels-turbo-bike="Thorvin" bicycle + +angels-heavy-tank="Mammoth" heavy tank heavy-tank-cannon=Heavy tank cannon heavy-tank-rocket-launcher=Heavy rocket launcher heavy-tank-machine-gun=Heavy machine gun + wall-0=Basic defensive wall angels-cannon-turret=Cannon turret @@ -19,8 +23,6 @@ angels-bio-turret=Peztilence spreader turret bio-splash=Peztilence slime -angels-heavy-tank="Mammoth" heavy tank - scarab-spawner=Scarab spawner psyker-spawner=Psyker spawner @@ -57,6 +59,9 @@ colossal-spitter-corpse=Colossal spitter corpse colossal-biter-corpse=Colossal biter corpse [item-name] +angels-turbo-bike="Thorvin" bicycle + +angels-heavy-tank="Mammoth" heavy tank heavy-tank-cannon=Heavy tank cannon heavy-tank-rocket-launcher=Heavy rocket launcher heavy-tank-machine-gun=Heavy machine gun @@ -73,10 +78,9 @@ cannon-turret-shell-3=Uranium cannon turret shell bio-gun=Peztilence spreader bio-ammo=Peztilence ammo -angels-heavy-tank="Mammoth" heavy tank - [technology-name] angels-vequipment=Vehicle equipment +angels-turbo-bike="Thorvin" bicycles angels-heavy-tank="Mammoth" heavy tanks angels-heavy-uranium-ammo=Heavy uranium ammo angels-cannon-turret=Cannon turret @@ -93,6 +97,7 @@ plasma=Plasma gathering=tiles/s gathering [entity-description] +angels-turbo-bike=Manual laboured contraption adapted for efficient manouvering on this foreign land. angels-gathering-turret=Collects certain loot dropped by enemies. angels-bio-turret=Fires a stream of slimy liquid at enemies. @@ -100,6 +105,7 @@ angels-bio-turret=Fires a stream of slimy liquid at enemies. bio-gun=Used for spreading Pez all over the place. [technology-description] +angels-turbo-bike=An early prototype vehicle used for faster transportation. angels-gathering-speed=Increases the strength of the gathering beam to gather loot faster. [effect-description] diff --git a/angelsexploration/locale/en/tips-and-tricks.cfg b/angelsexploration/locale/en/tips-and-tricks.cfg index a28e22425..c4a37baa6 100644 --- a/angelsexploration/locale/en/tips-and-tricks.cfg +++ b/angelsexploration/locale/en/tips-and-tricks.cfg @@ -21,7 +21,7 @@ angelsexploration=The mod [tooltip=Angels exploration,tips-and-tricks-descriptio angels-native-inhabitants=description to be added. ; 1.2.x Native Houses -angels-native-inhabitants-spawner-intro=The [entity=__1__] starts housing unique inhabitors when they are evolved past __3__ (evolution factor). +angels-native-inhabitants-spawner-intro=The [entity=__1__] starts housing unique inhabitors when they are evolved past __2__ (evolution factor). angels-native-inhabitants-spawner-spawning=\n\nAfter that point, this structure houses the following unique inhabitors: angels-native-inhabitants-spawner-spawning-unit=\n __1__ __2__ (>__3__) angels-native-inhabitants-spawner-loot=\n\nWhen succesfully eliminating this housing structure, it will reward you with: diff --git a/angelsexploration/prototypes/entities/biter-builder.lua b/angelsexploration/prototypes/entities/biter-builder.lua index 7a1a7c615..b443cb714 100644 --- a/angelsexploration/prototypes/entities/biter-builder.lua +++ b/angelsexploration/prototypes/entities/biter-builder.lua @@ -16,7 +16,7 @@ end local control_name = "enemy-base" --- Copy from base.. since local... +-- autoplace local function enemy_autoplace(params) local distance_factor = params.distance_factor or 1 local order = params.order or "b[enemy]-misc" @@ -51,14 +51,12 @@ local function enemy_autoplace(params) richness_expression = richness_expression, } end - local function enemy_spawner_autoplace(distance) return enemy_autoplace({ distance_factor = distance, order = "b[enemy]-a[spawner]", }) end - local function enemy_worm_autoplace(distance) return enemy_autoplace({ distance_factor = distance, @@ -66,6 +64,8 @@ local function enemy_worm_autoplace(distance) is_turret = true, }) end + +-- animation local function make_die_animation(data_die) if data_die.type == "scarab" then return { @@ -244,7 +244,6 @@ local function make_run_animation(data_run) } end end - local function make_attack_animation(data_attack) if data_attack.type == "biter" then --utilise the vanilla script @@ -339,6 +338,7 @@ local function make_attack_animation(data_attack) end end +-- sounds local function make_roar_sound(type, volume) if type == "biter" or type == "scarab" then return { @@ -437,7 +437,6 @@ local function make_roar_sound(type, volume) } end end - local function make_die_sound(type, volume) if type == "biter" or type == "scarab" then return { @@ -512,7 +511,6 @@ local function make_die_sound(type, volume) } end end - local function make_call_sounds(volume) return { { @@ -538,6 +536,7 @@ local function make_call_sounds(volume) } end +-- icon local function make_icon(ico_app) return { { @@ -550,146 +549,972 @@ local function make_icon(ico_app) } end -local function make_projectile(pro_app, pro_dmg) - data:extend({ +-- attack +local function make_shoot_shiftings(scale, offset) + return { { - type = "beam", - name = pro_app.name .. "-" .. pro_app.type .. "-beam", - flags = { "not-on-map" }, - width = 0.5, - damage_interval = pro_dmg.cooldown, - action = { - type = "direct", - action_delivery = { - type = "instant", - target_effects = { - { - type = "damage", - damage = { amount = pro_dmg.damage, type = "electric" }, - }, + 0.0625 * 0, + util.add_shift(util.mul_shift(util.by_pixel(0, -135), scale * 0.5), util.by_pixel(offset * 0, -offset * 1)), + }, + { + 0.0625 * 1, + util.add_shift( + util.mul_shift(util.by_pixel(24, -133), scale * 0.5), + util.by_pixel(offset * 0.38, -offset * 0.92) + ), + }, + { + 0.0625 * 2, + util.add_shift( + util.mul_shift(util.by_pixel(48, -121), scale * 0.5), + util.by_pixel(offset * 0.71, -offset * 0.71) + ), + }, + { + 0.0625 * 3, + util.add_shift( + util.mul_shift(util.by_pixel(76, -105), scale * 0.5), + util.by_pixel(offset * 0.92, -offset * 0.38) + ), + }, + { + 0.0625 * 4, + util.add_shift(util.mul_shift(util.by_pixel(86, -73), scale * 0.5), util.by_pixel(offset * 1, offset * 0)), + }, + { + 0.0625 * 5, + util.add_shift(util.mul_shift(util.by_pixel(74, -43), scale * 0.5), util.by_pixel(offset * 0.92, offset * 0.38)), + }, + { + 0.0625 * 6, + util.add_shift(util.mul_shift(util.by_pixel(52, -25), scale * 0.5), util.by_pixel(offset * 0.71, offset * 0.71)), + }, + { + 0.0625 * 7, + util.add_shift(util.mul_shift(util.by_pixel(26, -17), scale * 0.5), util.by_pixel(offset * 0.38, offset * 0.92)), + }, + { + 0.0625 * 8, + util.add_shift(util.mul_shift(util.by_pixel(1, -13), scale * 0.5), util.by_pixel(offset * 0, offset * 1)), + }, + { + 0.0625 * 9, + util.add_shift( + util.mul_shift(util.by_pixel(-27, -16), scale * 0.5), + util.by_pixel(-offset * 0.38, offset * 0.92) + ), + }, + { + 0.0625 * 10, + util.add_shift( + util.mul_shift(util.by_pixel(-51, -23), scale * 0.5), + util.by_pixel(-offset * 0.71, offset * 0.71) + ), + }, + { + 0.0625 * 11, + util.add_shift( + util.mul_shift(util.by_pixel(-71, -41), scale * 0.5), + util.by_pixel(-offset * 0.92, offset * 0.38) + ), + }, + { + 0.0625 * 12, + util.add_shift(util.mul_shift(util.by_pixel(-85, -71), scale * 0.5), util.by_pixel(-offset * 1, offset * 0)), + }, + { + 0.0625 * 13, + util.add_shift( + util.mul_shift(util.by_pixel(-71, -103), scale * 0.5), + util.by_pixel(-offset * 0.92, -offset * 0.38) + ), + }, + { + 0.0625 * 14, + util.add_shift( + util.mul_shift(util.by_pixel(-49, -119), scale * 0.5), + util.by_pixel(-offset * 0.71, -offset * 0.71) + ), + }, + { + 0.0625 * 15, + util.add_shift( + util.mul_shift(util.by_pixel(-23, -125), scale * 0.5), + util.by_pixel(-offset * 0.38, -offset * 0.92) + ), + }, + } +end +local function make_projectile_beam(pro_app, pro_dmg) + local beam = { + type = "beam", + name = "electric-beam" .. "-" .. pro_app.name .. "-" .. pro_app.type, + flags = { "not-on-map" }, + width = 0.5, + damage_interval = pro_dmg.cooldown, + action = { + type = "direct", + action_delivery = { + type = "instant", + target_effects = { + { + type = "damage", + damage = { amount = pro_dmg.damage, type = "electric" }, }, }, }, - start = { - filename = "__base__/graphics/entity/beam/tileable-beam-START.png", + }, + start = { + filename = "__base__/graphics/entity/beam/tileable-beam-START.png", + line_length = 4, + width = 52, + height = 40, + frame_count = 16, + axially_symmetrical = false, + direction_count = 1, + shift = { -0.03125, 0 }, + hr_version = { + filename = "__base__/graphics/entity/beam/hr-tileable-beam-START.png", line_length = 4, - width = 52, - height = 40, + width = 94, + height = 66, frame_count = 16, axially_symmetrical = false, direction_count = 1, - shift = { -0.03125, 0 }, - hr_version = { - filename = "__base__/graphics/entity/beam/hr-tileable-beam-START.png", - line_length = 4, - width = 94, - height = 66, - frame_count = 16, - axially_symmetrical = false, - direction_count = 1, - shift = { 0.53125, 0 }, - scale = 0.5, - }, + shift = { 0.53125, 0 }, + scale = 0.5, }, - ending = { - filename = "__base__/graphics/entity/beam/tileable-beam-END.png", + }, + ending = { + filename = "__base__/graphics/entity/beam/tileable-beam-END.png", + line_length = 4, + width = 49, + height = 54, + frame_count = 16, + axially_symmetrical = false, + direction_count = 1, + shift = { -0.046875, 0 }, + hr_version = { + filename = "__base__/graphics/entity/beam/hr-tileable-beam-END.png", line_length = 4, - width = 49, - height = 54, + width = 91, + height = 93, frame_count = 16, axially_symmetrical = false, direction_count = 1, - shift = { -0.046875, 0 }, - hr_version = { - filename = "__base__/graphics/entity/beam/hr-tileable-beam-END.png", - line_length = 4, - width = 91, - height = 93, - frame_count = 16, - axially_symmetrical = false, - direction_count = 1, - shift = { -0.078125, -0.046875 }, - scale = 0.5, - }, + shift = { -0.078125, -0.046875 }, + scale = 0.5, }, - head = { - filename = "__base__/graphics/entity/beam/beam-head.png", + }, + head = { + filename = "__base__/graphics/entity/beam/beam-head.png", + line_length = 16, + width = 45, + height = 39, + frame_count = 16, + animation_speed = 0.5, + blend_mode = "additive-soft", + }, + tail = { + filename = "__base__/graphics/entity/beam/beam-tail.png", + line_length = 16, + width = 45, + height = 39, + frame_count = 16, + blend_mode = "additive-soft", + }, + body = { + { + filename = "__base__/graphics/entity/beam/beam-body-1.png", line_length = 16, width = 45, height = 39, frame_count = 16, - animation_speed = 0.5, blend_mode = "additive-soft", }, - tail = { - filename = "__base__/graphics/entity/beam/beam-tail.png", + { + filename = "__base__/graphics/entity/beam/beam-body-2.png", line_length = 16, width = 45, height = 39, frame_count = 16, blend_mode = "additive-soft", }, - body = { - { - filename = "__base__/graphics/entity/beam/beam-body-1.png", - line_length = 16, - width = 45, - height = 39, - frame_count = 16, - blend_mode = "additive-soft", + { + filename = "__base__/graphics/entity/beam/beam-body-3.png", + line_length = 16, + width = 45, + height = 39, + frame_count = 16, + blend_mode = "additive-soft", + }, + { + filename = "__base__/graphics/entity/beam/beam-body-4.png", + line_length = 16, + width = 45, + height = 39, + frame_count = 16, + blend_mode = "additive-soft", + }, + { + filename = "__base__/graphics/entity/beam/beam-body-5.png", + line_length = 16, + width = 45, + height = 39, + frame_count = 16, + blend_mode = "additive-soft", + }, + { + filename = "__base__/graphics/entity/beam/beam-body-6.png", + line_length = 16, + width = 45, + height = 39, + frame_count = 16, + blend_mode = "additive-soft", + }, + }, + working_sound = { + { + filename = "__base__/sound/fight/electric-beam.ogg", + volume = 0.7, + }, + }, + } + data:extend({ beam }) + return beam.name +end +local function make_projectile_stream(pro_app, pro_dmg) + local get_stream_radius = function(pro_app) + if pro_app.name == "small" then + return 1 + elseif pro_app.name == "medium" then + return 1.25 + elseif pro_app.name == "big" then + return 1.35 + elseif pro_app.name == "behemoth" then + return 1.75 + elseif pro_app.name == "colosal" then + return 2 + end + return 1 + end + local get_slow_down = function(pro_app) + if pro_app.type == "spitter" then + if pro_app.name == "small" then + return 0.6 + elseif pro_app.name == "medium" then + return 0.5 + elseif pro_app.name == "big" then + return 0.4 + elseif pro_app.name == "behemoth" then + return 0.3 + elseif pro_app.name == "colosal" then + return 0.2 + end + end + return 1 + end + + local sticker = { + type = "sticker", + name = "acid-sticker-" .. pro_app.name, + flags = { "not-on-map" }, + animation = { + filename = "__base__/graphics/entity/acid-sticker/acid-sticker.png", + draw_as_glow = true, + priority = "extra-high", + line_length = 5, + width = 16, + height = 18, + frame_count = 50, + animation_speed = 0.5, + tint = pro_dmg.tint3, + shift = util.by_pixel(2, 0), + hr_version = { + filename = "__base__/graphics/entity/acid-sticker/hr-acid-sticker.png", + draw_as_glow = true, + line_length = 5, + width = 30, + height = 34, + frame_count = 50, + animation_speed = 0.5, + tint = pro_dmg.tint3, + shift = util.by_pixel(1.5, 0), + scale = 0.5, + }, + }, + duration_in_ticks = pro_dmg.slow_seconds * 60, + target_movement_modifier_from = get_slow_down(pro_app), + target_movement_modifier_to = 1, + vehicle_speed_modifier_from = get_slow_down(pro_app), + vehicle_speed_modifier_to = 1, + vehicle_friction_modifier_from = pro_dmg.vehicle_friction_modifier, + vehicle_friction_modifier_to = 1, + } + if data.raw[sticker.type][sticker.name] then + data.raw[sticker.type][sticker.name] = sticker + else + data:extend({ sticker }) + end + + local splash_fire_ground_patch_scale = 0.65 + local splash_fire = { + type = "fire", + name = "acid-splash-fire-" .. pro_app.type .. "-" .. pro_app.name, + localised_name = { "entity-name.acid-splash" }, + flags = { "placeable-off-grid", "not-on-map" }, + damage_per_tick = { amount = 0 / 60, type = "acid" }, + maximum_damage_multiplier = 3, + damage_multiplier_increase_per_added_fuel = 1, + damage_multiplier_decrease_per_tick = 0.005, + + --spawn_entity = "fire-flame-on-tree", + uses_alternative_behavior = true, + limit_overlapping_particles = true, + initial_render_layer = "object", + render_layer = "lower-object-above-shadow", + secondary_render_layer = "higher-object-above", + secondary_picture_fade_out_start = 30, + secondary_picture_fade_out_duration = 60, + + spread_delay = 300, + spread_delay_deviation = 180, + maximum_spread_count = 100, + + particle_alpha = 0.6, + particle_alpha_blend_duration = 60 * 5, + --flame_alpha = 0.35, + --flame_alpha_deviation = 0.05, + + emissions_per_second = 0, + + add_fuel_cooldown = 10, + fade_in_duration = 1, + fade_out_duration = 30, + + initial_lifetime = 60 * 32, --120, + lifetime_increase_by = 0, + lifetime_increase_cooldown = 4, + maximum_lifetime = 1800, + delay_between_initial_flames = 10, -- deal damage ever 10 ticks + initial_flame_count = 1, + burnt_patch_lifetime = 0, + + on_damage_tick_effect = { + type = "direct", + force = "enemy", + ignore_collision_condition = true, + trigger_target_mask = { "ground-unit" }, + filter_enabled = true, + action_delivery = { + type = "instant", + target_effects = { + { + type = "create-sticker", + sticker = sticker.name, + show_in_tooltip = true, + }, + { + type = "damage", + damage = { amount = pro_dmg.damage * (10 / 60) / pro_dmg.damage_modifier, type = "acid" }, + apply_damage_to_trees = false, + }, }, - { - filename = "__base__/graphics/entity/beam/beam-body-2.png", - line_length = 16, - width = 45, - height = 39, - frame_count = 16, - blend_mode = "additive-soft", + }, + }, + + pictures = { + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-1.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 106, + height = 116, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(-12, -10), pro_app.scale), + tint = pro_dmg.tint2, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-1.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 210, + height = 224, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(-12, -8), pro_app.scale), + tint = pro_dmg.tint2, + scale = 0.5 * pro_app.scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-1-shadow.png", + line_length = 8, + direction_count = 1, + width = 134, + height = 98, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(2, 0), pro_app.scale), + draw_as_shadow = true, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-1-shadow.png", + line_length = 8, + direction_count = 1, + width = 266, + height = 188, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(2, 2), pro_app.scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale, + }, + }, }, - { - filename = "__base__/graphics/entity/beam/beam-body-3.png", - line_length = 16, - width = 45, - height = 39, - frame_count = 16, - blend_mode = "additive-soft", + }, + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-2.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 88, + height = 76, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(-10, -18), pro_app.scale), + tint = pro_dmg.tint2, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-2.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 174, + height = 150, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(-9, -17), pro_app.scale), + tint = pro_dmg.tint2, + scale = 0.5 * pro_app.scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-2-shadow.png", + line_length = 8, + direction_count = 1, + width = 120, + height = 136, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(6, 28), pro_app.scale), + draw_as_shadow = true, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-2-shadow.png", + line_length = 8, + direction_count = 1, + width = 238, + height = 266, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(6, 29), pro_app.scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale, + }, + }, }, - { - filename = "__base__/graphics/entity/beam/beam-body-4.png", - line_length = 16, - width = 45, - height = 39, - frame_count = 16, - blend_mode = "additive-soft", + }, + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-3.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 118, + height = 104, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(22, -16), pro_app.scale), + tint = pro_dmg.tint2, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-3.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 236, + height = 208, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(22, -16), pro_app.scale), + tint = pro_dmg.tint2, + scale = 0.5 * pro_app.scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-3-shadow.png", + line_length = 8, + direction_count = 1, + width = 110, + height = 70, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(16, 2), pro_app.scale), + draw_as_shadow = true, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-3-shadow.png", + line_length = 8, + direction_count = 1, + width = 214, + height = 140, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(17, 2), pro_app.scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale, + }, + }, }, - { - filename = "__base__/graphics/entity/beam/beam-body-5.png", - line_length = 16, - width = 45, - height = 39, - frame_count = 16, - blend_mode = "additive-soft", + }, + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-4.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 128, + height = 80, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(16, -20), pro_app.scale), + tint = pro_dmg.tint2, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-4.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 252, + height = 154, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(17, -19), pro_app.scale), + tint = pro_dmg.tint2, + scale = 0.5 * pro_app.scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-4-shadow.png", + line_length = 8, + direction_count = 1, + width = 124, + height = 80, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(18, -16), pro_app.scale), + draw_as_shadow = true, + scale = pro_app.scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-4-shadow.png", + line_length = 8, + direction_count = 1, + width = 248, + height = 160, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(18, -16), pro_app.scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale, + }, + }, }, - { - filename = "__base__/graphics/entity/beam/beam-body-6.png", - line_length = 16, - width = 45, - height = 39, - frame_count = 16, - blend_mode = "additive-soft", + }, + }, + + secondary_pictures = { + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-1.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 106, + height = 116, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(-12, -10), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-1.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 210, + height = 224, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(-12, -8), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-1-shadow.png", + line_length = 8, + direction_count = 1, + width = 134, + height = 98, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(2, 0), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-1-shadow.png", + line_length = 8, + direction_count = 1, + width = 266, + height = 188, + frame_count = 26, + shift = util.mul_shift(util.by_pixel(2, 2), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, }, }, - working_sound = { + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-2.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 88, + height = 76, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(-10, -18), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-2.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 174, + height = 150, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(-9, -17), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-2-shadow.png", + line_length = 8, + direction_count = 1, + width = 120, + height = 136, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(6, 28), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-2-shadow.png", + line_length = 8, + direction_count = 1, + width = 238, + height = 266, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(6, 29), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + }, + }, + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-3.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 118, + height = 104, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(22, -16), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-3.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 236, + height = 208, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(22, -16), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-3-shadow.png", + line_length = 8, + direction_count = 1, + width = 110, + height = 70, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(16, 2), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-3-shadow.png", + line_length = 8, + direction_count = 1, + width = 214, + height = 140, + frame_count = 29, + shift = util.mul_shift(util.by_pixel(17, 2), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + }, + }, + { + layers = { + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-4.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 128, + height = 80, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(16, -20), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-4.png", + draw_as_glow = true, + line_length = 8, + direction_count = 1, + width = 252, + height = 154, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(17, -19), pro_app.scale * splash_fire_ground_patch_scale), + tint = util.multiply_color(pro_dmg.tint2, 0.7), + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + { + filename = "__base__/graphics/entity/acid-splash/acid-splash-4-shadow.png", + line_length = 8, + direction_count = 1, + width = 124, + height = 80, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(18, -16), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = pro_app.scale * splash_fire_ground_patch_scale, + hr_version = { + filename = "__base__/graphics/entity/acid-splash/hr-acid-splash-4-shadow.png", + line_length = 8, + direction_count = 1, + width = 248, + height = 160, + frame_count = 24, + shift = util.mul_shift(util.by_pixel(18, -16), pro_app.scale * splash_fire_ground_patch_scale), + draw_as_shadow = true, + scale = 0.5 * pro_app.scale * splash_fire_ground_patch_scale, + }, + }, + }, + }, + }, + } + if data.raw[splash_fire.type][splash_fire.name] then + data.raw[splash_fire.type][splash_fire.name] = splash_fire + else + data:extend({ splash_fire }) + end + + local stream = { + type = "stream", + name = "acid-stream-" .. pro_app.type .. "-" .. pro_app.name, + flags = { "not-on-map" }, + particle_buffer_size = 90, + particle_spawn_interval = 1, + particle_spawn_timeout = 6, + particle_vertical_acceleration = 0.005 * 0.60 * 1.5, --x + particle_horizontal_speed = 0.2 * 0.75 * 1.5 * 1.5, --x + particle_horizontal_speed_deviation = 0.005 * 0.70, + particle_start_alpha = 0.5, + particle_end_alpha = 1, + particle_alpha_per_part = 0.8, + particle_scale_per_part = 0.8, + particle_loop_frame_count = 15, + --particle_fade_out_threshold = 0.95, + particle_fade_out_duration = 2, + particle_loop_exit_threshold = 0.25, + special_neutral_target_damage = { amount = 1, type = "acid" }, + working_sound = { + sound = { { - filename = "__base__/sound/fight/electric-beam.ogg", - volume = 0.7, + filename = "__base__/sound/fight/projectile-acid-burn-loop.ogg", + volume = 0.4, }, }, }, - }) -end + initial_action = { + { + type = "direct", + action_delivery = { + type = "instant", + target_effects = { + { + type = "play-sound", + sound = { + { + filename = "__base__/sound/creatures/projectile-acid-burn-1.ogg", + volume = 0.65, + }, + { + filename = "__base__/sound/creatures/projectile-acid-burn-2.ogg", + volume = 0.65, + }, + { + filename = "__base__/sound/creatures/projectile-acid-burn-long-1.ogg", + volume = 0.6, + }, + { + filename = "__base__/sound/creatures/projectile-acid-burn-long-2.ogg", + volume = 0.6, + }, + }, + }, + { + type = "create-fire", + entity_name = splash_fire.name, + tile_collision_mask = { "water-tile" }, + show_in_tooltip = true, + }, + { + type = "create-entity", + entity_name = "water-splash", + tile_collision_mask = { "ground-tile" }, + }, + }, + }, + }, + { + type = "area", + radius = get_stream_radius(pro_app), + force = "enemy", + ignore_collision_condition = true, + action_delivery = { + type = "instant", + target_effects = { + { + type = "create-sticker", + sticker = sticker.name, + }, + { + type = "damage", + damage = { amount = 1, type = "acid" }, + }, + }, + }, + }, + }, + particle = { + filename = "__base__/graphics/entity/acid-projectile/acid-projectile-head.png", + draw_as_glow = true, + line_length = 5, + width = 22, + height = 84, + frame_count = 15, + shift = util.mul_shift(util.by_pixel(-2, 30), pro_app.scale), + tint = pro_dmg.tint1, + priority = "high", + scale = pro_app.scale, + animation_speed = 1, + hr_version = { + filename = "__base__/graphics/entity/acid-projectile/hr-acid-projectile-head.png", + draw_as_glow = true, + line_length = 5, + width = 42, + height = 164, + frame_count = 15, + shift = util.mul_shift(util.by_pixel(-2, 31), pro_app.scale), + tint = pro_dmg.tint1, + priority = "high", + scale = 0.5 * pro_app.scale, + animation_speed = 1, + }, + }, + spine_animation = { + filename = "__base__/graphics/entity/acid-projectile/acid-projectile-tail.png", + draw_as_glow = true, + line_length = 5, + width = 66, + height = 12, + frame_count = 15, + shift = util.mul_shift(util.by_pixel(0, -2), pro_app.scale), + tint = pro_dmg.tint1, + priority = "high", + scale = pro_app.scale, + animation_speed = 1, + hr_version = { + filename = "__base__/graphics/entity/acid-projectile/hr-acid-projectile-tail.png", + draw_as_glow = true, + line_length = 5, + width = 132, + height = 20, + frame_count = 15, + shift = util.mul_shift(util.by_pixel(0, -1), pro_app.scale), + tint = pro_dmg.tint1, + priority = "high", + scale = 0.5 * pro_app.scale, + animation_speed = 1, + }, + }, + shadow = { + filename = "__base__/graphics/entity/acid-projectile/acid-projectile-shadow.png", + line_length = 15, + width = 22, + height = 84, + frame_count = 15, + priority = "high", + shift = util.mul_shift(util.by_pixel(-2, 30), pro_app.scale), + draw_as_shadow = true, + scale = pro_app.scale, + animation_speed = 1, + hr_version = { + filename = "__base__/graphics/entity/acid-projectile/hr-acid-projectile-shadow.png", + line_length = 15, + width = 42, + height = 164, + frame_count = 15, + shift = util.mul_shift(util.by_pixel(-2, 31), pro_app.scale), + draw_as_shadow = true, + priority = "high", + scale = 0.5 * pro_app.scale, + animation_speed = 1, + }, + }, + + oriented_particle = true, + shadow_scale_enabled = true, + } + if data.raw[stream.type][stream.name] then + data.raw[stream.type][stream.name] = stream + else + data:extend({ stream }) + end + return stream.name +end local function make_attack_parameter(data_app, data_dmg) + if data_app == nil or data_dmg == nil then + return nil + end if data_app.type == "biter" then data_dmg.type = "projectile" data_dmg.category = "melee" @@ -754,28 +1579,27 @@ local function make_attack_parameter(data_app, data_dmg) data_dmg.type = "stream" data_dmg.ammo_category = "biological" data_dmg.cooldown_deviation = 0.15 - data_dmg.damage_modifier = (data_dmg.damage_modifier or 1) * (data_dmg.damage / 50) -- this will make sure damage/sec equals data_dmg.damage - data_dmg.roarvolume = 0.4 - - data_dmg.warmup = 30 - --projectile_creation_parameters = spitter_shoot_shiftings(data.scale, data.scale * scale_spitter_stream), - data_dmg.use_shooter_direction = true - - data_dmg.lead_target_for_projectile_speed = 0.2 * 0.75 * 1.5 * 1.5 -- this is same as particle horizontal speed of flamethrower fire stream - + data_dmg.min_attack_distance = 10 -- TODO: adapt with range parameter? + data_dmg.projectile_creation_parameters = make_shoot_shiftings(data_app.scale, data_app.scale * 20) + data_dmg.tint1 = { r = 0.917, g = 1.000, b = 0.282, a = 1.000 } -- stream tint + data_dmg.tint2 = { r = 1.000, g = 0.992, b = 0.512, a = 1.000 } -- splash tint + data_dmg.tint3 = { r = 0.714, g = 0.669, b = 0.291, a = 0.745 } -- sticker tint + data_dmg.slow_seconds = 2 + data_dmg.vehicle_friction_modifier = 1.5 data_dmg.ammo = { category = "biological", action = { type = "direct", action_delivery = { type = "stream", - stream = "bio-stream", + stream = make_projectile_stream(data_app, data_dmg), }, }, } + data_dmg.roarvolume = 0.4 + data_dmg.warmup = 30 end if data_app.type == "psyker" then - make_projectile(data_app, data_dmg) data_dmg.type = "beam" data_dmg.category = "electric" data_dmg.ammo = { @@ -784,7 +1608,7 @@ local function make_attack_parameter(data_app, data_dmg) type = "direct", action_delivery = { type = "beam", - beam = data_app.name .. "-" .. data_app.type .. "-beam", + beam = make_projectile_beam(data_app, data_dmg), max_length = 15, duration = 20, source_offset = { 0.15, -0.5 }, @@ -798,15 +1622,15 @@ local function make_attack_parameter(data_app, data_dmg) cooldown = data_dmg.cooldown, range = data_dmg.range, min_attack_distance = data_dmg.min_attack_distance, - --projectile_creation_distance = data_dmg.creation_distance, damage_modifier = data_dmg.damage_modifier, warmup = data_dmg.warmup, ammo_type = data_dmg.ammo, - sound = make_roar_sound(data_app.type, nil), -- TODO: replace nil with atual volume + sound = make_roar_sound(data_app.type, nil), -- TODO: replace nil with actual volume animation = make_attack_animation(data_app), } end +-- drop local function make_loot(loot_data) if type(loot_data) ~= "table" then return nil @@ -818,14 +1642,16 @@ local function make_loot(loot_data) loot_proto = {} for _, loot_item in pairs(loot_data) do local item_found = false - for _, item_type in pairs({ "item", "tool", "item-with-entity-data" }) do - if data.raw[item_type][loot_item.item] then - item_found = true + if loot_item.item then + for _, item_type in pairs({ "item", "tool", "item-with-entity-data" }) do + if data.raw[item_type][loot_item.item] then + item_found = true + end end end if item_found then - local min = (loot_item.avg_amount or 1) - (loot_item.variation or 0) / 2 - local max = (loot_item.avg_amount or 1) + (loot_item.variation or 0) / 2 + local min = (loot_item.avg_amount or 1) - ((loot_item.variation or 0) / 2) + local max = (loot_item.avg_amount or 1) + ((loot_item.variation or 0) / 2) if max < min then min, max = max, min end @@ -835,7 +1661,7 @@ local function make_loot(loot_data) min, max = min / max, 1 end table.insert(loot_proto, { - item = loot_data.item, + item = loot_item.item, probability = prob < 1 and prob or nil, count_min = min, count_max = max, @@ -846,89 +1672,93 @@ local function make_loot(loot_data) return loot_proto end +-- public functions function angelsmods.functions.make_alien(def_data) - --log(serpent.block(def_data)) - if def_data ~= nil then - local c_name = def_data.appearance.name .. "-" .. def_data.appearance.type .. "-corpse" - --utilise the vanilla script to add the death animation and corpses in one go - local corpse_base = { - type = "corpse", - name = c_name, - icons = { - { - icon = "__base__/graphics/icons/big-biter-corpse.png", - icon_size = 64, - icon_mipmaps = 4, - tint = def_data.appearance.tint1, - }, - }, - selection_box = { { -1, -1 }, { 1, 1 } }, - selectable_in_game = false, - subgroup = "corpses", - order = "c[corpse]-a[" .. def_data.appearance.type .. "]-a[" .. def_data.appearance.name .. "]", - flags = { "placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map" }, - } - data:extend({ corpse_base }) - if def_data.appearance.type == "scarab" then - data.raw.corpse[c_name].animation = make_die_animation(def_data.appearance) - elseif def_data.appearance.type == "biter" then - --both share biter animations - add_biter_die_animation( - def_data.appearance.scale, - def_data.appearance.tint1, - def_data.appearance.tint2, - corpse_base - ) - else --psyker and spitter share spitter ones, any custom ones would have to be isolated or paired with these - add_spitter_die_animation( - def_data.appearance.scale, - def_data.appearance.tint1, - def_data.appearance.tint2, - corpse_base - ) - end - local box_scale = def_data.appearance.box_scale or 1 - data:extend({ + if def_data == nil then + return + end + local c_name = def_data.appearance.name .. "-" .. def_data.appearance.type .. "-corpse" + --utilise the vanilla script to add the death animation and corpses in one go + local corpse_base = { + type = "corpse", + name = c_name, + icons = { { - type = "unit", - name = def_data.appearance.name .. "-" .. def_data.appearance.type, - icons = make_icon(def_data.appearance), - icon_size = 32, - flags = { - "placeable-player", - "placeable-enemy", - "placeable-off-grid", - "not-repairable", - "breaths-air", - "hidden", - }, - max_health = def_data.appearance.health, - resistances = def_data.resistance, - order = def_data.appearance.order or "b-z-a", - subgroup = "enemies", - healing_per_tick = 0.01, - collision_box = { { -0.4 * box_scale, -0.4 * box_scale }, { 0.4 * box_scale, 0.4 * box_scale } }, - selection_box = { { -0.7 * box_scale, -1.5 * box_scale }, { 0.7 * box_scale, 0.3 * box_scale } }, - attack_parameters = make_attack_parameter(def_data.appearance, def_data.attack), - vision_distance = 30, - movement_speed = def_data.appearance.speed, - distance_per_frame = 0.1, - pollution_to_join_attack = 200, - distraction_cooldown = 300, - min_pursue_time = 10 * 60, - max_pursue_distance = 50, - corpse = c_name, - loot = make_loot(def_data.loot), - dying_explosion = "blood-explosion-big", - dying_sound = make_die_sound(def_data.appearance.type, 0.4), - working_sound = make_call_sounds(0.3), - run_animation = make_run_animation(def_data.appearance), - }, - }) + icon = "__base__/graphics/icons/big-biter-corpse.png", + icon_size = 64, + icon_mipmaps = 4, + tint = def_data.appearance.tint1, + }, + }, + selection_box = { { -1, -1 }, { 1, 1 } }, + selectable_in_game = false, + subgroup = "corpses", + order = "c[corpse]-a[" .. def_data.appearance.type .. "]-a[" .. def_data.appearance.name .. "]", + flags = { "placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map" }, + } + data:extend({ corpse_base }) + if def_data.appearance.type == "scarab" then + data.raw.corpse[c_name].animation = make_die_animation(def_data.appearance) + elseif def_data.appearance.type == "biter" then + --both share biter animations + add_biter_die_animation( + def_data.appearance.scale, + def_data.appearance.tint1, + def_data.appearance.tint2, + corpse_base + ) + else --psyker and spitter share spitter ones, any custom ones would have to be isolated or paired with these + add_spitter_die_animation( + def_data.appearance.scale, + def_data.appearance.tint1, + def_data.appearance.tint2, + corpse_base + ) end + local box_scale = def_data.appearance.box_scale or 1 + data:extend({ + { + type = "unit", + name = def_data.appearance.name .. "-" .. def_data.appearance.type, + icons = make_icon(def_data.appearance), + icon_size = 32, + flags = { + "placeable-player", + "placeable-enemy", + "placeable-off-grid", + "not-repairable", + "breaths-air", + "hidden", + }, + max_health = def_data.appearance.health, + resistances = def_data.resistance, + order = def_data.appearance.order or "b-z-a", + subgroup = "enemies", + healing_per_tick = 0.01, + collision_box = { { -0.4 * box_scale, -0.4 * box_scale }, { 0.4 * box_scale, 0.4 * box_scale } }, + selection_box = { { -0.7 * box_scale, -1.5 * box_scale }, { 0.7 * box_scale, 0.3 * box_scale } }, + attack_parameters = make_attack_parameter(def_data.appearance, def_data.attack), + vision_distance = 30, + movement_speed = def_data.appearance.speed, + distance_per_frame = 0.1, + pollution_to_join_attack = 200, + distraction_cooldown = 300, + min_pursue_time = 10 * 60, + max_pursue_distance = 50, + corpse = c_name, + loot = make_loot(def_data.loot), + dying_explosion = "blood-explosion-big", + dying_sound = make_die_sound(def_data.appearance.type, 0.4), + working_sound = make_call_sounds(0.3), + run_animation = make_run_animation(def_data.appearance), + }, + }) end function angelsmods.functions.make_alien_spawner(spawn_data) + if spawn_data == nil then + return + end data:extend({ { type = "unit-spawner", @@ -1008,22 +1838,27 @@ function angelsmods.functions.make_alien_spawner(spawn_data) }, }, }) - -- log(serpent.block(data.raw["unit-spawner"][spawn_data.appearance.type.."-spawner"].autoplace)) end function angelsmods.functions.update_alien(ua_data) - local u_name = ua_data.appearance.name .. "-" .. ua_data.appearance.type - if data.raw.unit[u_name] then - local unit = data.raw.unit[u_name] - unit.resistances = ua_data.resistance - unit.max_health = ua_data.appearance.health - unit.movement_speed = ua_data.appearance.speed - unit.attack_parameters = make_attack_parameter(ua_data.appearance, ua_data.attack) + if ua_data == nil then + return + end + local unit = + data.raw.unit[ua_data.appearance.full_name or (ua_data.appearance.name .. "-" .. ua_data.appearance.type) or ""] + if unit then + unit.resistances = ua_data.resistance or unit.resistances + unit.max_health = ua_data.appearance.health or unit.max_health + unit.movement_speed = ua_data.appearance.speed or unit.movement_speed + unit.attack_parameters = make_attack_parameter(ua_data.appearance, ua_data.attack) or unit.attack_parameters unit.loot = ua_data.loot and make_loot(ua_data.loot) or unit.loot end end function angelsmods.functions.update_spawner(us_data) + if us_data == nil then + return + end local s_name = us_data.appearance.type .. "-spawner" if data.raw["unit-spawner"][s_name] then local spawner = data.raw["unit-spawner"][s_name] @@ -1062,9 +1897,6 @@ function angelsmods.functions.update_spawner(us_data) end end --- log(serpent.block(data.raw["unit-spawner"]["biter-spawner"].autoplace)) --- log(serpent.block(data.raw["unit-spawner"]["spitter-spawner"].autoplace)) - function angelsmods.functions.compile_alien_data() -- creates an overview of the current alien data -- map biter spawn range on each spawner local spawners = {} diff --git a/angelsexploration/prototypes/entities/biter-definitions.lua b/angelsexploration/prototypes/entities/biter-definitions.lua index b746e708d..b887eff2c 100644 --- a/angelsexploration/prototypes/entities/biter-definitions.lua +++ b/angelsexploration/prototypes/entities/biter-definitions.lua @@ -1,3 +1,18 @@ +local bob_biters = mods["bobenemies"] and true or false + +local function create_loot_definition(color, avg_amount, variation) + if not angelsmods.triggers.artifacts[color] then + return nil + end + + local item = "small-alien-artifact" + if color ~= "base" then + item = item .. "-" .. color + end + + return { item = item, avg_amount = avg_amount, variation = variation } +end + local biter_definitions = {} --HEALTH: @@ -54,9 +69,9 @@ biter_definitions.small_biter = { { type = "laser", decrease = 5, percent = 20 }, { type = "plasma", decrease = 0, percent = 0 }, }, - --loot = { - -- angelsmods.triggers.artifacts["base"] and {item = "small-alien-artifact", avg_amount = 0.25, variation = 0.1} or nil, - --} + loot = { + create_loot_definition("base", 0.25, 0.5), -- 0.0 - 0.5 + }, } biter_definitions.medium_biter = { @@ -89,6 +104,9 @@ biter_definitions.medium_biter = { { type = "laser", decrease = 0, percent = 10 }, { type = "plasma", decrease = 5, percent = 20 }, }, + loot = { + create_loot_definition("base", 0.5, 1), -- 0-1 + }, } biter_definitions.big_biter = { @@ -121,6 +139,10 @@ biter_definitions.big_biter = { { type = "laser", decrease = 5, percent = 20 }, { type = "plasma", decrease = 10, percent = 30 }, }, + loot = { + create_loot_definition("base", 1, 2), -- 0-2 + (not bob_biters) and create_loot_definition("yellow", 0.5, 1) or nil, -- 0-1 + }, } biter_definitions.behemoth_biter = { @@ -153,6 +175,11 @@ biter_definitions.behemoth_biter = { { type = "laser", decrease = 0, percent = 10 }, { type = "plasma", decrease = 15, percent = 40 }, }, + loot = { + create_loot_definition("base", 1.5, 1), -- 1-2 + (not bob_biters) and create_loot_definition("yellow", 1.5, 1) or nil, -- 1-2 + (not bob_biters) and create_loot_definition("red", 1.5, 1) or nil, -- 1-2 + }, } biter_definitions.colossal_biter = { @@ -187,6 +214,11 @@ biter_definitions.colossal_biter = { { type = "laser", decrease = 5, percent = 30 }, { type = "plasma", decrease = 10, percent = 30 }, }, + loot = { + create_loot_definition("base", 2, 2), -- 1-3 + (not bob_biters) and create_loot_definition("yellow", 2, 2) or nil, -- 1-3 + (not bob_biters) and create_loot_definition("red", 2, 2) or nil, -- 1-3 + }, } ------------------------------------------------------------------------------- @@ -209,9 +241,9 @@ biter_definitions.small_spitter = { cooldown = 100, min_attack_distance = 10, creation_distance = 1.9, - damage_modifier = 1, warmup = 30, - damage = 10, + damage = 7, -- damage/second + damage_modifier = 12, -- direct hit damage }, resistance = { { type = "physical", decrease = 0, percent = 0 }, @@ -220,6 +252,9 @@ biter_definitions.small_spitter = { { type = "laser", decrease = 5, percent = 20 }, { type = "plasma", decrease = 0, percent = 0 }, }, + loot = { + create_loot_definition("orange", 0.25, 0.5), -- 0.0-0.5 + }, } biter_definitions.medium_spitter = { @@ -239,9 +274,9 @@ biter_definitions.medium_spitter = { cooldown = 100, min_attack_distance = 10, creation_distance = 1.9, - damage_modifier = 1, warmup = 30, - damage = 20, + damage = 15, -- damage/second + damage_modifier = 25, -- direct hit damage }, resistance = { { type = "physical", decrease = 5, percent = 20 }, @@ -250,6 +285,9 @@ biter_definitions.medium_spitter = { { type = "laser", decrease = 0, percent = 10 }, { type = "plasma", decrease = 5, percent = 20 }, }, + loot = { + create_loot_definition("orange", 0.5, 1), -- 0-1 + }, } biter_definitions.big_spitter = { @@ -269,9 +307,9 @@ biter_definitions.big_spitter = { cooldown = 100, min_attack_distance = 10, creation_distance = 1.9, - damage_modifier = 1, warmup = 30, - damage = 30, + damage = 30, -- damage/second + damage_modifier = 50, -- direct hit damage }, resistance = { { type = "physical", decrease = 10, percent = 30 }, @@ -280,6 +318,9 @@ biter_definitions.big_spitter = { { type = "laser", decrease = 5, percent = 20 }, { type = "plasma", decrease = 10, percent = 30 }, }, + loot = { + create_loot_definition("orange", 1, 2), -- 0-2 + }, } biter_definitions.behemoth_spitter = { @@ -299,9 +340,9 @@ biter_definitions.behemoth_spitter = { cooldown = 100, min_attack_distance = 10, creation_distance = 1.9, - damage_modifier = 1, warmup = 30, - damage = 40, + damage = 60, -- damage/second + damage_modifier = 100, -- direct hit damage }, resistance = { { type = "physical", decrease = 15, percent = 40 }, @@ -310,6 +351,10 @@ biter_definitions.behemoth_spitter = { { type = "laser", decrease = 0, percent = 10 }, { type = "plasma", decrease = 15, percent = 40 }, }, + loot = { + create_loot_definition("orange", 1.5, 1), -- 1-2 + (not bob_biters) and create_loot_definition("green", 1.5, 1) or nil, -- 1-2 + }, } biter_definitions.colossal_spitter = { @@ -331,9 +376,9 @@ biter_definitions.colossal_spitter = { cooldown = 100, min_attack_distance = 10, creation_distance = 1.9, - damage_modifier = 1, warmup = 30, - damage = 50, + damage = 120, -- damage/second + damage_modifier = 200, -- direct hit damage }, resistance = { { type = "physical", decrease = 10, percent = 30 }, @@ -342,6 +387,10 @@ biter_definitions.colossal_spitter = { { type = "laser", decrease = 5, percent = 30 }, { type = "plasma", decrease = 10, percent = 30 }, }, + loot = { + create_loot_definition("orange", 2, 2), -- 1-3 + (not bob_biters) and create_loot_definition("green", 2, 2) or nil, -- 1-3 + }, } ------------------------------------------------------------------------------- @@ -375,6 +424,9 @@ biter_definitions.small_scarab = { { type = "laser", decrease = 7.5, percent = 40 }, { type = "plasma", decrease = 2.5, percent = 20 }, }, + loot = { + create_loot_definition("base", 0.5, 1), -- 0-1 + }, } biter_definitions.medium_scarab = { @@ -405,6 +457,9 @@ biter_definitions.medium_scarab = { { type = "laser", decrease = 2.5, percent = 30 }, { type = "plasma", decrease = 7.5, percent = 40 }, }, + loot = { + create_loot_definition("blue", 0.5, 1), -- 0-1 + }, } biter_definitions.big_scarab = { @@ -435,6 +490,9 @@ biter_definitions.big_scarab = { { type = "laser", decrease = 7.5, percent = 40 }, { type = "plasma", decrease = 12.5, percent = 50 }, }, + loot = { + create_loot_definition("blue", 1, 2), -- 0-2 + }, } biter_definitions.behemoth_scarab = { @@ -465,6 +523,9 @@ biter_definitions.behemoth_scarab = { { type = "laser", decrease = 12.5, percent = 30 }, { type = "plasma", decrease = 17.5, percent = 60 }, }, + loot = { + create_loot_definition("blue", 1.5, 1), -- 1-2 + }, } biter_definitions.colossal_scarab = { @@ -495,6 +556,9 @@ biter_definitions.colossal_scarab = { { type = "laser", decrease = 7.5, percent = 50 }, { type = "plasma", decrease = 12.5, percent = 50 }, }, + loot = { + create_loot_definition("blue", 2, 2), -- 1-3 + }, } ------------------------------------------------------------------------------- @@ -528,6 +592,9 @@ biter_definitions.small_psyker = { { type = "laser", decrease = 5, percent = 20 }, { type = "plasma", decrease = 0, percent = 0 }, }, + loot = { + create_loot_definition("blue", 0.5, 1), -- 0-1 + }, } biter_definitions.medium_psyker = { @@ -558,6 +625,9 @@ biter_definitions.medium_psyker = { { type = "laser", decrease = 0, percent = 10 }, { type = "plasma", decrease = 5, percent = 20 }, }, + loot = { + create_loot_definition("purple", 0.5, 1.0), -- 0-1 + }, } biter_definitions.big_psyker = { @@ -588,6 +658,9 @@ biter_definitions.big_psyker = { { type = "laser", decrease = 5, percent = 20 }, { type = "plasma", decrease = 10, percent = 30 }, }, + loot = { + create_loot_definition("purple", 1, 2), -- 0-2 + }, } biter_definitions.behemoth_psyker = { @@ -618,6 +691,10 @@ biter_definitions.behemoth_psyker = { { type = "laser", decrease = 0, percent = 10 }, { type = "plasma", decrease = 15, percent = 40 }, }, + loot = { + create_loot_definition("purple", 1.5, 1), -- 1-2 + (not bob_biters) and create_loot_definition("red", 1.5, 1) or nil, -- 1-2 + }, } biter_definitions.colossal_psyker = { @@ -648,6 +725,106 @@ biter_definitions.colossal_psyker = { { type = "laser", decrease = 5, percent = 30 }, { type = "plasma", decrease = 10, percent = 30 }, }, + loot = { + create_loot_definition("purple", 2, 2), -- 1-3 + (not bob_biters) and create_loot_definition("red", 2, 2) or nil, -- 1-3 + }, +} + +------------------------------------------------------------------------------- +-- BOB ELEMENTAL BITER DEFINITIONS -------------------------------------------- +------------------------------------------------------------------------------- +biter_definitions.bob_big_piercing_biter = { + appearance = { + full_name = "bob-big-piercing-biter", + }, + loot = { + create_loot_definition("blue", 1, 2), -- 0-2 + }, +} + +biter_definitions.bob_huge_acid_biter = { + appearance = { + full_name = "bob-huge-acid-biter", + }, + loot = { + create_loot_definition("yellow", 1.5, 1), -- 1-2 + }, +} + +biter_definitions.bob_huge_explosive_biter = { + appearance = { + full_name = "bob-huge-explosive-biter", + }, + loot = { + create_loot_definition("yellow", 2, 2), -- 1-3 + }, +} + +biter_definitions.bob_giant_fire_biter = { + appearance = { + full_name = "bob-giant-fire-biter", + }, + loot = { + create_loot_definition("red", 3, 2), -- 2-4 + }, +} + +biter_definitions.bob_giant_poison_biter = { + appearance = { + full_name = "bob-giant-poison-biter", + }, + loot = { + create_loot_definition("green", 3, 2), -- 2-4 + }, +} + +------------------------------------------------------------------------------- +-- BOB ELEMENTAL SPITTER DEFINITIONS ------------------------------------------ +------------------------------------------------------------------------------- +biter_definitions.bob_big_electric_spitter = { + appearance = { + full_name = "bob-big-electric-spitter", + }, + loot = { + create_loot_definition("purple", 1, 2), -- 0-2 + }, +} + +biter_definitions.bob_huge_acid_spitter = { + appearance = { + full_name = "bob-huge-acid-spitter", + }, + loot = { + create_loot_definition("yellow", 1.5, 1), -- 1-2 + }, +} + +biter_definitions.bob_huge_explosive_spitter = { + appearance = { + full_name = "bob-huge-explosive-spitter", + }, + loot = { + create_loot_definition("yellow", 2, 2), -- 1-3 + }, +} + +biter_definitions.bob_giant_fire_spitter = { + appearance = { + full_name = "bob-giant-fire-spitter", + }, + loot = { + create_loot_definition("red", 3, 2), -- 2-4 + }, +} + +biter_definitions.bob_giant_poison_spitter = { + appearance = { + full_name = "bob-giant-poison-spitter", + }, + loot = { + create_loot_definition("green", 3, 2), -- 2-4 + }, } ------------------------------------------------------------------------------- diff --git a/angelsexploration/prototypes/entities/vehicles.lua b/angelsexploration/prototypes/entities/vehicles.lua index f562c5309..5aa30cfd3 100644 --- a/angelsexploration/prototypes/entities/vehicles.lua +++ b/angelsexploration/prototypes/entities/vehicles.lua @@ -1,6 +1,203 @@ require("util") data:extend({ + -- TURBO BIKE + { + type = "item-with-entity-data", + name = "angels-turbo-bike", + icon = "__angelsexploration__/graphics/icons/turbo-bike.png", + icon_size = "64", + flags = {}, + subgroup = "angels-vehicle-car", + order = "a[bike]-a[turbo-bike]", + place_result = "angels-turbo-bike", + stack_size = 1, + }, + { + type = "car", + name = "angels-turbo-bike", + icon = "__angelsexploration__/graphics/icons/turbo-bike.png", + icon_size = 64, + flags = { + "placeable-neutral", + "player-creation", + "placeable-off-grid", + "not-flammable", + }, + minable = { mining_time = 1, result = "angels-turbo-bike" }, + max_health = 250, + corpse = "medium-remnants", + dying_explosion = "car-explosion", + energy_per_hit_point = 1, + resistances = { + { + type = "fire", + percent = 50, + }, + { + type = "physical", + percent = 40, + }, + --{ + -- type = "impact", + -- decrease = 10, + -- percent = 20, + --}, + { + type = "explosion", + percent = 20, + }, + { + type = "acid", + percent = 40, + }, + }, + collision_box = { { -0.5, -1 }, { 0.5, 1 } }, + selection_box = { { -0.5, -1 }, { 0.5, 1 } }, + effectivity = 0.06, + braking_power = "100W", + burner = { + effectivity = 0.5, + fuel_inventory_size = 1, + --smoke = + --{ + -- { + -- name = "smoke", + -- deviation = {0.25, 0.25}, + -- frequency = 150, + -- position = {0, 1.5}, + -- slow_down_factor = 0.9, + -- starting_frame = 3, + -- starting_frame_deviation = 5, + -- starting_frame_speed = 0, + -- starting_frame_speed_deviation = 5 + -- } + --} + --fuel_category = "chemical", + }, + consumption = "10kW", + terrain_friction_modifier = 0.2, + friction = 0.0046, -- 50 km/h top speed on grass + light = { + { + type = "oriented", + minimum_darkness = 0.3, + picture = { + filename = "__core__/graphics/light-cone.png", + flags = { + "light", + }, + priority = "extra-high", + scale = 2, + width = 200, + height = 200, + }, + shift = { + 0, + -13, + }, + size = 2, + intensity = 0.6, + color = { + b = 0.3, + g = 0.77000000000000002, + r = 0.92000000000000011, + }, + }, + }, + animation = { + layers = { + { + width = 120, + height = 96, + frame_count = 1, + direction_count = 64, + shift = { 0, 0 }, + animation_speed = 8, + max_advance = 0.2, + axially_symmetrical = false, + stripes = { + { + filename = "__angelsexploration__/graphics/entity/bike/turbo-bike.png", + height_in_frames = 8, + width_in_frames = 8, + }, + { + filename = "__angelsexploration__/graphics/entity/bike/turbo-bike.png", + height_in_frames = 8, + width_in_frames = 8, + }, + { + filename = "__angelsexploration__/graphics/entity/bike/turbo-bike.png", + height_in_frames = 8, + width_in_frames = 8, + }, + }, + }, + }, + }, + --sound_no_fuel = { + -- { + -- filename = "__base__/sound/fight/car-no-fuel-1.ogg", + -- volume = 0.6 + -- } + --}, + stop_trigger_speed = 0.15, + --stop_trigger = { + -- { + -- type = "play-sound", + -- sound = { + -- { + -- filename = "__base__/sound/car-breaks.ogg", + -- volume = 0.2 + -- } + -- }, + -- } + --}, + sound_minimum_speed = 1 / 60, + sound_scaling_ratio = 0.005, + vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + working_sound = { + --activate_sound = { + -- filename = "__base__/sound/car-engine-start.ogg", + -- volume = 0.8 + --}, + --deactivate_sound = { + -- filename = "__base__/sound/car-engine-stop.ogg", + -- volume = 0.8 + --}, + match_speed_to_activity = true, + use_doppler_shift = false, + sound = { + filename = "__angelsexploration__/sound/bicycle-squeaky.ogg", + volume = 0.15, + }, + }, + open_sound = { filename = "__base__/sound/car-door-open.ogg", volume = 0.7 }, + close_sound = { filename = "__base__/sound/car-door-close.ogg", volume = 0.7 }, + rotation_speed = 0.015, + weight = 10, + inventory_size = 10, + alert_icon_shift = { 0, -0.40625 }, + damaged_trigger_effect = { + { + type = "create-entity", + entity_name = "spark-explosion", + damage_type_filters = "fire", + offset_deviation = { + { -0.5, -0.5 }, + { 0.5, 0.5 }, + }, + offsets = { + { 0, 1 }, + }, + }, + }, + mined_sound = { + filename = "__core__/sound/deconstruct-medium.ogg", + volume = 0.8, + }, + }, --HEAVY TANK --{ -- type = "equipment-grid", diff --git a/angelsexploration/prototypes/exploration-override.lua b/angelsexploration/prototypes/exploration-override.lua index cdaf4ab9f..ba8ec043b 100644 --- a/angelsexploration/prototypes/exploration-override.lua +++ b/angelsexploration/prototypes/exploration-override.lua @@ -207,3 +207,4 @@ end require("prototypes.overrides.biter-updates") require("prototypes.overrides.gathering-turret-updates") +require("prototypes.overrides.vehicle-updates") diff --git a/angelsexploration/prototypes/overrides/biter-updates.lua b/angelsexploration/prototypes/overrides/biter-updates.lua index 6f99852c1..f36865ba7 100644 --- a/angelsexploration/prototypes/overrides/biter-updates.lua +++ b/angelsexploration/prototypes/overrides/biter-updates.lua @@ -1,37 +1,94 @@ --UPDATE BOB SPAWNERS if mods["bobenemies"] then -- update the earliest spawn point of spitter on bobs spawner to the same evolution point of the base game spawner (with a small correction factor) - local base_spawner = data.raw["unit-spawner"]["spitter-spawner"] - local bob_spawner = data.raw["unit-spawner"]["bob-spitter-spawner"] - if base_spawner and bob_spawner then - for unit, unit_correction in pairs({ - ["small-spitter"] = 1 / 100000000, - - ["bob-big-electric-spitter"] = 0.02, - ["bob-huge-acid-spitter"] = 0.02, - ["bob-huge-explosive-spitter"] = 0.02, - }) do - for bob_spawn_idx, bob_spawn_data in pairs(bob_spawner.result_units) do - if (bob_spawn_data.unit or bob_spawn_data[1]) == unit then - local first_spawn = true - for bob_point_idx, bob_point_data in pairs(bob_spawn_data.spawn_points or bob_spawn_data[2]) do - if first_spawn and (bob_point_data.spawn_weight or bob_point_data[2]) > 0 then - for base_spawn_idx, base_spawn_data in pairs(base_spawner.result_units) do - if (base_spawn_data.unit or base_spawn_data[1]) == unit then - for base_point_idx, base_point_data in pairs(base_spawn_data.spawn_points or base_spawn_data[2]) do - if first_spawn and (base_point_data.spawn_weight or base_point_data[2]) > 0 then - local base_point = (base_spawn_data.spawn_points or base_spawn_data[2])[base_point_idx > 1 and (base_point_idx - 1) or 1] - bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = base_point[base_point.evolution_factor and "evolution_factor" or 1] - + unit_correction -- marginally larger point (required for tips and tricks 1-2-x behaviour) - first_spawn = false + local base_spawner = data.raw["unit-spawner"]["biter-spawner"] + for _, bob_spawner in pairs({ + data.raw["unit-spawner"]["bob-biter-spawner"], + data.raw["unit-spawner"]["bob-super-spawner"], + }) do + if base_spawner and bob_spawner then + for unit, unit_correction in pairs({ + ["big-biter"] = 1 / 100000000, + }) do + for bob_spawn_idx, bob_spawn_data in pairs(bob_spawner.result_units) do + if (bob_spawn_data.unit or bob_spawn_data[1]) == unit then + local first_spawn = true + for bob_point_idx, bob_point_data in pairs(bob_spawn_data.spawn_points or bob_spawn_data[2]) do + if first_spawn and (bob_point_data.spawn_weight or bob_point_data[2]) > 0 then + for base_spawn_idx, base_spawn_data in pairs(base_spawner.result_units) do + if (base_spawn_data.unit or base_spawn_data[1]) == unit then + for base_point_idx, base_point_data in pairs(base_spawn_data.spawn_points or base_spawn_data[2]) do + if first_spawn and (base_point_data.spawn_weight or base_point_data[2]) > 0 then + local base_point = (base_spawn_data.spawn_points or base_spawn_data[2])[base_point_idx > 1 and (base_point_idx - 1) or 1] + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = base_point[base_point.evolution_factor and "evolution_factor" or 1] + + unit_correction -- marginally larger point (required for tips and tricks 1-2-x behaviour) + + if + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][(bob_point_idx > 1 and (bob_point_idx - 1) or 1) + 1][bob_point_data.evolution_factor and "evolution_factor" or 1] + < base_point[base_point.evolution_factor and "evolution_factor" or 1] + unit_correction + then + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][(bob_point_idx > 1 and (bob_point_idx - 1) or 1) + 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = base_point[base_point.evolution_factor and "evolution_factor" or 1] + + 2 * unit_correction -- marginally larger point than the previous point + end + first_spawn = false + end end end end + + if first_spawn and unit_correction ~= 0 then -- not found in base spawner (only adding correction factor) + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] + + unit_correction + end end + end + end + end + end + end + end + + base_spawner = data.raw["unit-spawner"]["spitter-spawner"] + for _, bob_spawner in pairs({ + data.raw["unit-spawner"]["bob-spitter-spawner"], + data.raw["unit-spawner"]["bob-super-spawner"], + }) do + if base_spawner and bob_spawner then + for unit, unit_correction in pairs({ + ["small-spitter"] = 1 / 100000000, + ["medium-spitter"] = 1 / 100000000, + ["big-spitter"] = 1 / 100000000, + }) do + for bob_spawn_idx, bob_spawn_data in pairs(bob_spawner.result_units) do + if (bob_spawn_data.unit or bob_spawn_data[1]) == unit then + local first_spawn = true + for bob_point_idx, bob_point_data in pairs(bob_spawn_data.spawn_points or bob_spawn_data[2]) do + if first_spawn and (bob_point_data.spawn_weight or bob_point_data[2]) > 0 then + for base_spawn_idx, base_spawn_data in pairs(base_spawner.result_units) do + if (base_spawn_data.unit or base_spawn_data[1]) == unit then + for base_point_idx, base_point_data in pairs(base_spawn_data.spawn_points or base_spawn_data[2]) do + if first_spawn and (base_point_data.spawn_weight or base_point_data[2]) > 0 then + local base_point = (base_spawn_data.spawn_points or base_spawn_data[2])[base_point_idx > 1 and (base_point_idx - 1) or 1] + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = base_point[base_point.evolution_factor and "evolution_factor" or 1] + + unit_correction -- marginally larger point (required for tips and tricks 1-2-x behaviour) - if first_spawn and unit_correction ~= 0 then -- not found in base spawner (only adding correction factor) - bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] - + unit_correction + if + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][(bob_point_idx > 1 and (bob_point_idx - 1) or 1) + 1][bob_point_data.evolution_factor and "evolution_factor" or 1] + < base_point[base_point.evolution_factor and "evolution_factor" or 1] + unit_correction + then + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][(bob_point_idx > 1 and (bob_point_idx - 1) or 1) + 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = base_point[base_point.evolution_factor and "evolution_factor" or 1] + + 2 * unit_correction -- marginally larger point than the previous point + end + first_spawn = false + end + end + end + end + + if first_spawn and unit_correction ~= 0 then -- not found in base spawner (only adding correction factor) + bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] = bob_spawner.result_units[bob_spawn_idx][bob_spawn_data.spawn_points and "spawn_points" or 2][bob_point_idx > 1 and (bob_point_idx - 1) or 1][bob_point_data.evolution_factor and "evolution_factor" or 1] + + unit_correction + end end end end @@ -39,16 +96,26 @@ if mods["bobenemies"] then end end end -end ---function modify_biter(biter, resistance, health, damage, evolution) --- data.raw.unit[biter].resistances = resistance --- data.raw.unit[biter].max_health = health --- data.raw.unit[biter].attack_parameters.ammo_type.action.action_delivery.target_effects = damage ---end + local super_spawner = data.raw["unit-spawner"]["bob-super-spawner"] + if super_spawner then + for _, super_spawner_data in pairs(super_spawner.result_units) do + local super_spawner_biter = super_spawner_data[1] + if super_spawner_biter == "bob-big-piercing-biter" then + table.remove(super_spawner_data[2], 1) + super_spawner_data[2][1][2] = 0 + end + if super_spawner_biter == "bob-big-electric-spitter" then + table.remove(super_spawner_data[2], 1) + super_spawner_data[2][1][2] = 0 + end + end + end +end ---ADD RESISTANCES +--UPDATE BITERS local biter_definitions = require("prototypes.entities.biter-definitions") + angelsmods.functions.update_alien(biter_definitions.small_biter) angelsmods.functions.update_alien(biter_definitions.medium_biter) angelsmods.functions.update_alien(biter_definitions.big_biter) @@ -61,6 +128,18 @@ angelsmods.functions.update_alien(biter_definitions.big_spitter) angelsmods.functions.update_alien(biter_definitions.behemoth_spitter) angelsmods.functions.update_alien(biter_definitions.colossal_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_big_piercing_biter) +angelsmods.functions.update_alien(biter_definitions.bob_huge_acid_biter) +angelsmods.functions.update_alien(biter_definitions.bob_huge_explosive_biter) +angelsmods.functions.update_alien(biter_definitions.bob_giant_fire_biter) +angelsmods.functions.update_alien(biter_definitions.bob_giant_poison_biter) + +angelsmods.functions.update_alien(biter_definitions.bob_big_electric_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_huge_acid_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_huge_explosive_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_giant_fire_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_giant_poison_spitter) + angelsmods.functions.update_spawner(biter_definitions.spitter_spawner) angelsmods.functions.update_spawner(biter_definitions.biter_spawner) @@ -112,7 +191,7 @@ for _, type in pairs({ "unit", "unit-spawner", "turret" }) do end end -if mods["bobenemies"] then +--[[if mods["bobenemies"] then for _, biter in pairs({ "behemoth-biter", "behemoth-spitter" }) do local unit = data.raw.unit[biter] if biter then @@ -125,3 +204,4 @@ if mods["bobenemies"] then end end end +--]] diff --git a/angelsexploration/prototypes/overrides/gathering-turret-updates.lua b/angelsexploration/prototypes/overrides/gathering-turret-updates.lua index 3e11257a4..33a20b2e2 100644 --- a/angelsexploration/prototypes/overrides/gathering-turret-updates.lua +++ b/angelsexploration/prototypes/overrides/gathering-turret-updates.lua @@ -1,102 +1,60 @@ -- GATHERING TRIGGERS (can be added by other mods, this list can be extended) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-biter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-biter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-biter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-biter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-biter" }) +local add_gathering_turret_start_trigger = angelsmods.functions.add_gathering_turret_start_trigger -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-spitter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-spitter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-spitter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-spitter" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-spitter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-biter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-biter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-biter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-biter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-biter" }) + +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-spitter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-spitter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-spitter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-spitter" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-spitter" }) if mods["bobenemies"] then - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "unit", - name = "bob-big-electric-spitter", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "unit", - name = "bob-huge-explosive-spitter", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-huge-acid-spitter" }) - angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-giant-fire-spitter" }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "unit", - name = "bob-giant-poison-spitter", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-titan-spitter" }) - angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-behemoth-spitter" }) - angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-leviathan-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-big-electric-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-huge-explosive-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-huge-acid-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-giant-fire-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-giant-poison-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-titan-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-behemoth-spitter" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "bob-leviathan-spitter" }) end -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-scarab" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-scarab" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-scarab" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-scarab" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-scarab" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-scarab" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-scarab" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-scarab" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-scarab" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-scarab" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-psyker" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-psyker" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-psyker" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-psyker" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-psyker" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "small-psyker" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "medium-psyker" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "big-psyker" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "behemoth-psyker" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit", name = "colossal-psyker" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "biter-spawner" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "spitter-spawner" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "scarab-spawner" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "psyker-spawner" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "biter-spawner" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "spitter-spawner" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "scarab-spawner" }) +add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "psyker-spawner" }) if mods["bobenemies"] then - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "unit-spawner", - name = "bob-biter-spawner", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "unit-spawner", - name = "bob-spitter-spawner", - }) + add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "bob-biter-spawner" }) + add_gathering_turret_start_trigger({ range = 60, type = "unit-spawner", name = "bob-spitter-spawner" }) end -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "small-worm-turret" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "medium-worm-turret" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "big-worm-turret" }) -angelsmods.functions.add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "behemoth-worm-turret" }) +add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "small-worm-turret" }) +add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "medium-worm-turret" }) +add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "big-worm-turret" }) +add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "behemoth-worm-turret" }) if mods["bobenemies"] then - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "turret", - name = "bob-big-explosive-worm-turret", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "turret", - name = "bob-big-fire-worm-turret", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "turret", - name = "bob-big-piercing-worm-turret", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "turret", - name = "bob-big-poison-worm-turret", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "turret", - name = "bob-big-electric-worm-turret", - }) - angelsmods.functions.add_gathering_turret_start_trigger({ - range = 60, - type = "turret", - name = "bob-big-gaint-worm-turret", - }) + add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "bob-big-explosive-worm-turret" }) + add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "bob-big-fire-worm-turret" }) + add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "bob-big-piercing-worm-turret" }) + add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "bob-big-poison-worm-turret" }) + add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "bob-big-electric-worm-turret" }) + add_gathering_turret_start_trigger({ range = 60, type = "turret", name = "bob-big-gaint-worm-turret" }) end -- GATHERING TARGETS (can be added by other mods, this list can be extended) diff --git a/angelsexploration/prototypes/overrides/vehicle-updates.lua b/angelsexploration/prototypes/overrides/vehicle-updates.lua new file mode 100644 index 000000000..5560aa758 --- /dev/null +++ b/angelsexploration/prototypes/overrides/vehicle-updates.lua @@ -0,0 +1,4 @@ +local OV = angelsmods.functions.OV + +-- turbo bike updates +OV.add_prereq("automobilism", "angels-turbo-bike") diff --git a/angelsexploration/prototypes/recipes/vehicles.lua b/angelsexploration/prototypes/recipes/vehicles.lua index 782d16157..32b634ba7 100644 --- a/angelsexploration/prototypes/recipes/vehicles.lua +++ b/angelsexploration/prototypes/recipes/vehicles.lua @@ -1,5 +1,17 @@ data:extend({ --VEHICLES + { + type = "recipe", + name = "angels-turbo-bike", + energy_required = 10, + enabled = false, + ingredients = { + { type = "item", name = "iron-plate", amount = 10 }, + { type = "item", name = "iron-gear-wheel", amount = 5 }, + { type = "item", name = "steel-plate", amount = 3 }, + }, + result = "angels-turbo-bike", + }, { type = "recipe", name = "angels-heavy-tank", diff --git a/angelsexploration/prototypes/technology/exploration-technology.lua b/angelsexploration/prototypes/technology/exploration-technology.lua index b490fd468..313a81ed7 100644 --- a/angelsexploration/prototypes/technology/exploration-technology.lua +++ b/angelsexploration/prototypes/technology/exploration-technology.lua @@ -1,5 +1,27 @@ data:extend({ --VEHICLES + { + type = "technology", + name = "angels-turbo-bike", + icon = "__angelsexploration__/graphics/technology/turbo-bike-tech.png", + icon_size = 128, + prerequisites = { + "steel-processing", + }, + effects = { + { + recipe = "angels-turbo-bike", + type = "unlock-recipe", + }, + }, + unit = { + count = 250, + ingredients = { + { "automation-science-pack", 1 }, + }, + time = 30, + }, + }, { type = "technology", name = "angels-heavy-tank", diff --git a/angelsexploration/prototypes/tips-and-tricks/1-2-native-inhabitants/1-2-native-inhabitants.lua b/angelsexploration/prototypes/tips-and-tricks/1-2-native-inhabitants/1-2-native-inhabitants.lua index 2329f1bbf..edc9a9942 100644 --- a/angelsexploration/prototypes/tips-and-tricks/1-2-native-inhabitants/1-2-native-inhabitants.lua +++ b/angelsexploration/prototypes/tips-and-tricks/1-2-native-inhabitants/1-2-native-inhabitants.lua @@ -15,7 +15,7 @@ data:extend({ indent = 1, starting_status = "dependencies-not-met", -- no additional trigger - dependencies = { "angels-native-inhabitants" }, + dependencies = { "shoot-targeting" }, --trigger = --{ -- type = "research", diff --git a/angelsexploration/prototypes/tips-and-tricks/1-2-x-x-native-aliens/1-2-x-x-native-aliens-description.lua b/angelsexploration/prototypes/tips-and-tricks/1-2-x-x-native-aliens/1-2-x-x-native-aliens-description.lua index 34d602626..322b9b5eb 100644 --- a/angelsexploration/prototypes/tips-and-tricks/1-2-x-x-native-aliens/1-2-x-x-native-aliens-description.lua +++ b/angelsexploration/prototypes/tips-and-tricks/1-2-x-x-native-aliens/1-2-x-x-native-aliens-description.lua @@ -123,11 +123,15 @@ return function(spawner_name, unit_name, evolution_factor) table.insert(drop_description, drop_combo) end end - table.insert(drop_description, "[img=item." .. drop.item .. "]") - table.insert(drop_description, (data.raw.item[drop.item] or {}).localised_name or { - "tips-and-tricks-description.angels-native-inhabitants-unit-loot-item-name", - "__ITEM__" .. drop.item .. "__", - }) + table.insert(drop_description, "[img=item." .. (drop.item or "angels-void") .. "]") + table.insert( + drop_description, + (drop.item and data.raw.item[drop.item] or { localised_name = false }).localised_name + or { + "tips-and-tricks-description.angels-native-inhabitants-unit-loot-item-name", + "__ITEM__" .. (drop.item or "angels-void") .. "__", + } + ) table.insert(loot_description, compress_localised_string(drop_description)) end table.insert(description, loot_description) diff --git a/angelsexploration/sound/bicycle-squeaky.ogg b/angelsexploration/sound/bicycle-squeaky.ogg new file mode 100644 index 000000000..861c28ddc Binary files /dev/null and b/angelsexploration/sound/bicycle-squeaky.ogg differ diff --git a/angelsexploration/sound/bike-engine-start.ogg b/angelsexploration/sound/bike-engine-start.ogg new file mode 100644 index 000000000..8f09c0370 Binary files /dev/null and b/angelsexploration/sound/bike-engine-start.ogg differ diff --git a/angelsexploration/sound/bike-engine-stop.ogg b/angelsexploration/sound/bike-engine-stop.ogg new file mode 100644 index 000000000..1112adbca Binary files /dev/null and b/angelsexploration/sound/bike-engine-stop.ogg differ diff --git a/angelsexploration/sound/bike-engine.ogg b/angelsexploration/sound/bike-engine.ogg new file mode 100644 index 000000000..89e1ede5c Binary files /dev/null and b/angelsexploration/sound/bike-engine.ogg differ diff --git a/angelsexploration/src/gathering-turret.lua b/angelsexploration/src/gathering-turret.lua index 02976e4b0..de6b48a71 100644 --- a/angelsexploration/src/gathering-turret.lua +++ b/angelsexploration/src/gathering-turret.lua @@ -37,23 +37,22 @@ function gathering_turret:init_global_data() end function gathering_turret:init_prototype_data() - return - { - ["gathering_turret_name"] = "angels-gathering-turret", -- the actual turret - ["gathering_turret_range"] = 60, -- the max range of the turret (defined in prototype) - ["gathering_turret_base_speed"] = 2, -- the gathering of the turret (defined in prototype) - ["gathering_turret_chest"] = "angels-gathering-turret-base", -- the chest storing the loot - -- a complete list of possible items to loot and the technology name to unlock it - ["gathering_items"] = { -- technology "angels-void" unlocks the technology from the start - ["small-alien-artifact"] = "angels-gathering-turret", - ["small-alien-artifact-green"] = "angels-gathering-turret-target[small-alien-artifact-green]", - ["small-alien-artifact-purple"] = "angels-gathering-turret-target[small-alien-artifact-purple]", - ["small-alien-artifact-blue"] = "angels-gathering-turret-target[small-alien-artifact-blue]", - ["small-alien-artifact-orange"] = "angels-gathering-turret-target[small-alien-artifact-orange]", - ["small-alien-artifact-yellow"] = "angels-gathering-turret-target[small-alien-artifact-yellow]", - ["small-alien-artifact-red"] = "angels-gathering-turret-target[small-alien-artifact-red]", - }, - } + return { + ["gathering_turret_name"] = "angels-gathering-turret", -- the actual turret + ["gathering_turret_range"] = 60, -- the max range of the turret (defined in prototype) + ["gathering_turret_base_speed"] = 2, -- the gathering of the turret (defined in prototype) + ["gathering_turret_chest"] = "angels-gathering-turret-base", -- the chest storing the loot + -- a complete list of possible items to loot and the technology name to unlock it + ["gathering_items"] = { -- technology "angels-void" unlocks the technology from the start + ["small-alien-artifact"] = "angels-gathering-turret", + ["small-alien-artifact-green"] = "angels-gathering-turret-target[small-alien-artifact-green]", + ["small-alien-artifact-purple"] = "angels-gathering-turret-target[small-alien-artifact-purple]", + ["small-alien-artifact-blue"] = "angels-gathering-turret-target[small-alien-artifact-blue]", + ["small-alien-artifact-orange"] = "angels-gathering-turret-target[small-alien-artifact-orange]", + ["small-alien-artifact-yellow"] = "angels-gathering-turret-target[small-alien-artifact-yellow]", + ["small-alien-artifact-red"] = "angels-gathering-turret-target[small-alien-artifact-red]", + }, + } end function gathering_turret:init_force_data(force_name) @@ -509,15 +508,14 @@ function gathering_turret:get_turret_chest_data_index() end function gathering_turret:get_hidden_entity_data(turret_position) - return - { - -- chest for the gathered loot - [self:get_turret_chest_data_index()] = { - name = self:get_turret_chest_name(), - position = turret_position, - direction = nil, - }, - } + return { + -- chest for the gathered loot + [self:get_turret_chest_data_index()] = { + name = self:get_turret_chest_name(), + position = turret_position, + direction = nil, + }, + } end function gathering_turret:get_whitelisted_gathering_items(force_name) diff --git a/angelsexploration/src/mod-config.lua b/angelsexploration/src/mod-config.lua index 688b69b68..9d9b5a69c 100644 --- a/angelsexploration/src/mod-config.lua +++ b/angelsexploration/src/mod-config.lua @@ -1,4 +1,5 @@ local gathering_turret = require("src.gathering-turret") +local turbo_bike = require("src.turbo-bike") local tips_and_tricks_triggers = require("src.tips-and-tricks-triggers") return function(configuration_data) @@ -20,6 +21,14 @@ return function(configuration_data) gathering_turret:on_init() end + -------------------------------------------------- + -- Turbo bike script -- + -------------------------------------------------- + if not global.TB_data then + log("Updating turbo bike from version 0 to version 1.") + turbo_bike:on_init() + end + -------------------------------------------------- -- Tips and tricks trigger script -- -------------------------------------------------- diff --git a/angelsexploration/src/turbo-bike.lua b/angelsexploration/src/turbo-bike.lua new file mode 100644 index 000000000..c5742a867 --- /dev/null +++ b/angelsexploration/src/turbo-bike.lua @@ -0,0 +1,88 @@ +require("util") + +-- Create class --------------------------------------------------------------- +local turbo_bike = {} + +------------------------------------------------------------------------------- +-- Initiation of the class +------------------------------------------------------------------------------- +function turbo_bike:on_init() + if not global.TB_data then + global.TB_data = self:init_global_data() + end +end + +function turbo_bike:init_global_data() + local TB_data = { + ["version"] = 1, -- version of the global data + + ["prototype_data"] = self:init_prototype_data(), -- data storing info about the prototypes + } + return TB_data +end + +function turbo_bike:init_prototype_data() + return { + ["turbo_bike_name"] = "angels-turbo-bike", -- the bike name + } +end + +------------------------------------------------------------------------------- +-- Setter functions to alter data into the data structure +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- +-- Getter functions to extract data from the data structure +------------------------------------------------------------------------------- +function turbo_bike:get_bike_name() + if global.TB_data then + return global.TB_data.prototype_data.turbo_bike_name + else + return "angels-void" + end +end + +------------------------------------------------------------------------------- +-- Behaviour functions, mostly event handlers +------------------------------------------------------------------------------- +function turbo_bike:on_damaged_entity(damaged_entity, damaging_entity, raw_damage_dealth) + if + damaged_entity.name == self:get_bike_name() + and damaging_entity + and damaging_entity.name == self:get_bike_name() + then + -- drove against something + local damage_multiplier = 50 + + -- damage driver + local driver = damaged_entity.get_driver() + if driver and driver.object_name == "LuaPlayer" then + driver = driver.character + end + if driver and driver.valid then + driver.damage(raw_damage_dealth * damage_multiplier, damaged_entity.force, "impact", damaged_entity) + end + + -- damage passenger + local passenger = damaged_entity.get_passenger() + if passenger and passenger.object_name == "LuaPlayer" then + passenger = passenger.character + end + if passenger and passenger.valid then + passenger.damage(raw_damage_dealth * damage_multiplier, damaged_entity.force, "impact", damaged_entity) + end + + -- damage vehicle (more) + local bike_damage_reduction = 15 + if damage_multiplier - 1 - bike_damage_reduction > 0 then + damaged_entity.damage( + raw_damage_dealth * (damage_multiplier - 1 - bike_damage_reduction), + damaged_entity.force, + "impact" + ) + end + end +end + +-- Return class --------------------------------------------------------------- +return turbo_bike diff --git a/angelsindustries/changelog.txt b/angelsindustries/changelog.txt index 14246d907..e4db8b77f 100644 --- a/angelsindustries/changelog.txt +++ b/angelsindustries/changelog.txt @@ -1,4 +1,14 @@ --------------------------------------------------------------------------------------------------- +Version: 0.4.18 +Date: xx.xx.xxxx + Bugfixes: + - Regular mode: + - Fixed Item Subgroup of Heat Exchanger 4 from Bob's Power (887) + - Component mode: + - Fixed splitter circuit board tiers (636) + - Fixed the silver-zinc battery did not require a battery casing (886) + - Fixed ingredients and tech prerequisites of radar from Bob's Warfare (889) +--------------------------------------------------------------------------------------------------- Version: 0.4.17 Date: 01.01.2023 Changes: diff --git a/angelsindustries/info.json b/angelsindustries/info.json index 9dcf6a213..da4045720 100644 --- a/angelsindustries/info.json +++ b/angelsindustries/info.json @@ -1,6 +1,6 @@ { "name": "angelsindustries", - "version": "0.4.17", + "version": "0.4.18", "factorio_version": "1.1", "title": "Angel's Industries", "author": "Arch666Angel", diff --git a/angelsindustries/prototypes/ordening/angels-power.lua b/angelsindustries/prototypes/ordening/angels-power.lua index 13e80d21b..3d8009473 100644 --- a/angelsindustries/prototypes/ordening/angels-power.lua +++ b/angelsindustries/prototypes/ordening/angels-power.lua @@ -295,6 +295,7 @@ if mods["bobpower"] then move_item("heat-exchanger", "angels-power-nuclear-heat-exchanger", "a") move_item("heat-exchanger-2", "angels-power-nuclear-heat-exchanger", "b") move_item("heat-exchanger-3", "angels-power-nuclear-heat-exchanger", "c") + move_item("heat-exchanger-4", "angels-power-nuclear-heat-exchanger", "d") move_item("heat-exchanger", "angels-power-nuclear-heat-exchanger", "aa", "recipe") move_item("heat-exchanger-2", "angels-power-nuclear-heat-exchanger", "ba", "recipe") diff --git a/angelsindustries/prototypes/overrides/components-base-recipe-update.lua b/angelsindustries/prototypes/overrides/components-base-recipe-update.lua index e86594a53..ebbb2934e 100644 --- a/angelsindustries/prototypes/overrides/components-base-recipe-update.lua +++ b/angelsindustries/prototypes/overrides/components-base-recipe-update.lua @@ -8,7 +8,15 @@ if angelsmods.industries.components then --battery requirements OV.remove_unlock("angels-glass-smelting-2", "angels-coil-glass-fiber") + OV.remove_prereq("angels-glass-smelting-2", "strand-casting-2") OV.add_unlock("angels-glass-smelting-1", "angels-coil-glass-fiber") + OV.add_prereq("angels-glass-smelting-1", "strand-casting-1") + OV.patch_recipes({ + { + name = "angels-coil-glass-fiber", + category = "strand-casting", + }, + }) --battery usage --vanilla replacements AI.replace_recipe_ing("accumulator", "battery-1", "battery-2") @@ -155,6 +163,22 @@ if angelsmods.industries.components then OV.add_prereq("productivity-module-2", "tech-blue-circuit") OV.add_prereq("productivity-module-3", "tech-yellow-circuit") end + + -- splitters + OV.patch_recipes({ + { + name = "fast-splitter", + ingredients = { + { type = "item", name = "circuit-green-loaded", amount = "circuit-red-loaded" }, + }, + }, + { + name = "express-splitter", + ingredients = { + { type = "item", name = "circuit-blue-loaded", amount = "circuit-orange-loaded" }, + }, + }, + }) end if angelsmods.industries.components then diff --git a/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-radar-update.lua b/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-radar-update.lua new file mode 100644 index 000000000..236398753 --- /dev/null +++ b/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-radar-update.lua @@ -0,0 +1,73 @@ +if angelsmods.industries.components then + local OV = angelsmods.functions.OV + + if mods["bobwarfare"] then + -- radar + OV.patch_recipes({ + { + name = "radar", + ingredients = { + { "!!" }, + { type = "item", name = "block-electronics-1", amount = 2 }, + { type = "item", name = "block-construction-1", amount = 5 }, + { type = "item", name = "block-enhancement-1", amount = 1 }, + { type = "item", name = "block-mechanical-1", amount = 1 }, + }, + }, + { + name = "radar-2", + ingredients = { + { "!!" }, + { type = "item", name = "block-electronics-2", amount = 2 }, + { type = "item", name = "block-construction-2", amount = 5 }, + { type = "item", name = "block-enhancement-2", amount = 1 }, + { type = "item", name = "block-mechanical-1", amount = 1 }, + }, + }, + { + name = "radar-3", + ingredients = { + { "!!" }, + { type = "item", name = "block-electronics-3", amount = 2 }, + { type = "item", name = "block-construction-3", amount = 5 }, + { type = "item", name = "block-enhancement-3", amount = 1 }, + { type = "item", name = "block-mechanical-2", amount = 1 }, + }, + }, + { + name = "radar-4", + ingredients = { + { "!!" }, + { type = "item", name = "block-electronics-4", amount = 2 }, + { type = "item", name = "block-construction-4", amount = 5 }, + { type = "item", name = "block-enhancement-4", amount = 1 }, + { type = "item", name = "block-mechanical-2", amount = 1 }, + }, + }, + { + name = "radar-5", + ingredients = { + { "!!" }, + { type = "item", name = "block-electronics-5", amount = 2 }, + { type = "item", name = "block-construction-5", amount = 5 }, + { type = "item", name = "block-enhancement-5", amount = 1 }, + { type = "item", name = "block-mechanical-2", amount = 1 }, + }, + }, + }) + + OV.add_prereq("radars-1", "angels-basic-blocks-1") + OV.add_prereq("radars-2", "angels-basic-blocks-2") + OV.add_prereq("radars-3", "angels-components-weapons-advanced") + OV.add_prereq("radars-4", "military-3") + OV.add_prereq("radars-4", "angels-advanced-blocks-1") + OV.add_prereq("radars-5", "angels-advanced-blocks-2") + + OV.remove_prereq("radars-2", "electronics") + OV.remove_prereq("radars-3", "military-3") + OV.remove_prereq("radars-3", "zinc-processing") + OV.remove_prereq("radars-4", "titanium-processing") + OV.remove_prereq("radars-5", "advanced-electronics-3") + OV.remove_prereq("radars-4", "nitinol-processing") + end +end diff --git a/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua b/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua index da8bed7f8..1a1bc4154 100644 --- a/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua +++ b/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua @@ -112,6 +112,37 @@ if angelsmods.industries.components then OV.add_prereq("exoskeleton-equipment", "tech-orange-circuit") end + ----------------------------------------------------------------------------- + -- BOB LOGISTICS ------------------------------------------------------------ + ----------------------------------------------------------------------------- + if mods["boblogistics"] then + -- splitters + if settings.startup["bobmods-logistics-beltoverhaul"].value == true then + OV.patch_recipes({ + { + name = "basic-splitter", + ingredients = { + { type = "item", name = "circuit-grey", amount = "copper-cable" }, + }, + }, + { + name = "splitter", + ingredients = { + { type = "item", name = "circuit-red-loaded", amount = "circuit-grey" }, + }, + }, + }) + end + OV.patch_recipes({ + { + name = "express-splitter", + ingredients = { + { type = "item", name = "circuit-orange-loaded", amount = "circuit-blue-loaded" }, + }, + }, + }) + end + ----------------------------------------------------------------------------- -- BOB REVAMP --------------------------------------------------------------- ----------------------------------------------------------------------------- diff --git a/angelsindustries/prototypes/overrides/components-entity-update.lua b/angelsindustries/prototypes/overrides/components-entity-update.lua index 4616d96c9..cd2fc1a5f 100644 --- a/angelsindustries/prototypes/overrides/components-entity-update.lua +++ b/angelsindustries/prototypes/overrides/components-entity-update.lua @@ -29,6 +29,7 @@ require("prototypes.overrides.components-bobs-entity-update.components-bobs-gun- require("prototypes.overrides.components-bobs-entity-update.components-bobs-inserters-update") require("prototypes.overrides.components-bobs-entity-update.components-bobs-labs-update") require("prototypes.overrides.components-bobs-entity-update.components-bobs-power-update") +require("prototypes.overrides.components-bobs-entity-update.components-bobs-radar-update") require("prototypes.overrides.components-bobs-entity-update.components-bobs-robots-update") require("prototypes.overrides.components-bobs-entity-update.components-bobs-trains-update") require("prototypes.overrides.components-bobs-entity-update.components-bobs-turret-update") diff --git a/angelsindustries/prototypes/overrides/global-tech-base-cores.lua b/angelsindustries/prototypes/overrides/global-tech-base-cores.lua index 90aa43e15..75fdefc97 100644 --- a/angelsindustries/prototypes/overrides/global-tech-base-cores.lua +++ b/angelsindustries/prototypes/overrides/global-tech-base-cores.lua @@ -22,7 +22,6 @@ if angelsmods.industries.tech then AI.core_replace("turrets", "war", "basic") AI.core_replace("flammables", "war", "enhance") -- REFINING - AI.core_replace("water-treatment", "processing", "basic") -- SMELTING AI.core_replace("angels-solder-smelting-basic", "processing", "basic") -- BIO PROCESSING diff --git a/angelsindustries/prototypes/overrides/global-tech-base-packs.lua b/angelsindustries/prototypes/overrides/global-tech-base-packs.lua index 6e7002d23..052a1e0dc 100644 --- a/angelsindustries/prototypes/overrides/global-tech-base-packs.lua +++ b/angelsindustries/prototypes/overrides/global-tech-base-packs.lua @@ -15,7 +15,6 @@ if angelsmods.industries.tech then "logistics", "turrets", -- REFINING - "water-treatment", -- SMELTING "angels-solder-smelting-basic", -- BIO PROCESSING @@ -113,11 +112,14 @@ if angelsmods.industries.tech then AI.pack_replace("automated-construction", "blue", "orange") AI.pack_replace("construction-robotics", "blue", "orange") AI.pack_replace("electric-energy-distribution-2", "blue", "orange") + AI.pack_replace("advanced-material-processing-2", "blue", "orange") --REFINING AI.pack_replace("ore-leaching", "blue", "orange") OV.remove_prereq("ore-leaching", "tech-blue-packs") AI.pack_replace("geode-processing-2", "green", "orange") AI.pack_replace("advanced-ore-refining-2", "blue", "orange") + AI.pack_replace("water-treatment-3", "blue", "orange") + AI.pack_replace("slag-processing-2", "blue", "orange") --SMELTING AI.pack_replace("angels-metallurgy-3", "blue", "orange") OV.remove_prereq("angels-metallurgy-3", "tech-blue-packs") @@ -152,6 +154,7 @@ if angelsmods.industries.tech then AI.pack_replace("angels-tin-casting-3", "blue", "orange") AI.pack_replace("angels-iron-smelting-3", "blue", "orange") AI.pack_replace("angels-iron-casting-3", "blue", "orange") + AI.pack_replace("angels-solder-smelting-3", "blue", "orange") --BIOPROCESSING AI.pack_replace("angels-bio-yield-module", "green", "orange") AI.pack_replace("bio-wood-processing-3", "green", "orange") @@ -192,8 +195,11 @@ if angelsmods.industries.tech then OV.remove_prereq("kovarex-enrichment-process", "production-science-pack") -- REFINING OV.remove_prereq("ore-refining", "production-science-pack") + OV.remove_prereq("water-treatment-4", "production-science-pack") -- PETROCHEM OV.remove_prereq("water-chemistry-1", "production-science-pack") + OV.remove_prereq("angels-advanced-chemistry-4", "production-science-pack") + OV.remove_prereq("slag-processing-3", "production-science-pack") -- SMELTING OV.remove_prereq("angels-metallurgy-4", "production-science-pack") OV.remove_science_pack("angels-tungsten-smelting-2", "production-science-pack") diff --git a/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua b/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua index 1dec48572..8980e8026 100644 --- a/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua +++ b/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua @@ -147,8 +147,10 @@ if angelsmods.industries.tech then -- BOBS LOGISTICS ------------------------------------------------------------- ------------------------------------------------------------------------------- if mods["boblogistics"] then - AI.core_replace("logistics-0", "logistic", "basic") - AI.core_replace("logistics", "basic", "logistic") + if settings.startup["bobmods-logistics-beltoverhaul"].value == true then + AI.core_replace("logistics-0", "logistic", "basic") + AI.core_replace("logistics", "basic", "logistic") + end -- toolbelts AI.core_replace("toolbelt-2", "basic", "enhance") AI.core_replace("toolbelt-3", "processing", "enhance") @@ -184,10 +186,11 @@ if angelsmods.industries.tech then if mods["bobwarfare"] then AI.core_replace("bob-robot-gun-1", "logistic", "war") --radars - AI.core_replace("radars", "basic", "exploration") + AI.core_replace("radars-1", "basic", "exploration") AI.core_replace("radars-2", "basic", "exploration") AI.core_replace("radars-3", "basic", "exploration") AI.core_replace("radars-4", "processing", "exploration") + AI.core_replace("radars-5", "processing", "exploration") --mines AI.core_replace("poison-mine", "basic", "war") AI.core_replace("slowdown-mine", "basic", "war") diff --git a/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua b/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua index 404e013a7..cdd48ec33 100644 --- a/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua +++ b/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua @@ -15,7 +15,7 @@ if angelsmods.industries.tech then AI.pack_replace("polishing", "green", "orange") AI.pack_replace("gem-processing-1", "green", "orange") AI.pack_replace("gem-processing-2", "green", "orange") - --OV.remove_science_pack("lubricant", "angels-science-pack-green") + AI.pack_replace("electric-mixing-furnace", "blue", "orange") if not mods["bobtech"] then --alien resources AI.pack_replace("alien-blue-research", "yellow", "blue") @@ -27,6 +27,7 @@ if angelsmods.industries.tech then end OV.remove_prereq("nitinol-processing", "production-science-pack") + OV.remove_prereq("tungsten-alloy-processing", "production-science-pack") AI.pack_replace("ceramics", "blue", "orange") AI.pack_replace("cobalt-processing", "blue", "orange") @@ -48,6 +49,10 @@ if angelsmods.industries.tech then -- assemblers tier 2+ AI.pack_replace("automation-4", "blue", "orange") OV.remove_prereq("automation-4", "tech-blue-packs") + if settings.startup["bobmods-assembly-electronicmachines"].value == true then + AI.pack_replace("electronics-machine-3", "yellow", "blue") + OV.remove_prereq("electronics-machine-3", "production-science-pack") + end --chemplants if settings.startup["bobmods-assembly-chemicalplants"].value == true then end @@ -55,6 +60,10 @@ if angelsmods.industries.tech then if settings.startup["bobmods-assembly-oilfurnaces"].value then end if settings.startup["bobmods-assembly-multipurposefurnaces"].value then + OV.remove_prereq("multi-purpose-furnace-1", "production-science-pack") + end + if settings.startup["bobmods-assembly-furnaces"].value == true then + OV.remove_prereq("advanced-material-processing-3", "production-science-pack") end --electrolysers if settings.startup["bobmods-assembly-electrolysers"].value then @@ -108,6 +117,8 @@ if angelsmods.industries.tech then OV.remove_prereq("steel-axe-4", "tech-blue-packs") end --mining drills + AI.pack_replace("bob-drills-2", "green", "orange") + AI.pack_replace("bob-drills-4", "blue", "yellow") AI.pack_replace("bob-area-drills-2", "green", "orange") AI.pack_replace("bob-area-drills-4", "blue", "yellow") end @@ -190,9 +201,11 @@ if angelsmods.industries.tech then ------------------------------------------------------------------------------- if mods["boblogistics"] then --adds bob logistics stuffs - -- basic logistics - AI.pack_replace("logistics-0", "red", "grey") - AI.pack_replace("logistics", "grey", "red") + if settings.startup["bobmods-logistics-beltoverhaul"].value == true then + -- basic logistics + AI.pack_replace("logistics-0", "red", "grey") + AI.pack_replace("logistics", "grey", "red") + end -- toolbelts AI.pack_replace("toolbelt-2", "blue", "orange") OV.remove_prereq("toolbelt-2", "tech-blue-packs") @@ -210,8 +223,8 @@ if angelsmods.industries.tech then OV.remove_science_pack("robotics", "angels-science-pack-orange") AI.pack_replace("bob-robotics-2", "blue", "orange") OV.remove_prereq("bob-robotics-3", "production-science-pack") - AI.pack_replace("bob-robotics-4", "blue", "yellow") - AI.pack_replace("bob-robots-3", "blue", "yellow") + AI.pack_replace("bob-robotics-3", "yellow", "blue") + AI.pack_replace("bob-robots-2", "yellow", "blue") end -- inserter techs AI.pack_replace("inserter-capacity-bonus-1", "orange", "green") @@ -229,11 +242,17 @@ if angelsmods.industries.tech then -- belt techs AI.pack_replace("logistics-3", "blue", "orange") OV.remove_prereq("logistics-3", "tech-blue-packs") + OV.remove_prereq("logistics-4", "production-science-pack") -- railway AI.pack_replace("bob-railway-2", "green", "orange") AI.pack_replace("bob-armoured-railway-2", "blue", "yellow") AI.pack_replace("bob-fluid-wagon-2", "green", "orange") AI.pack_replace("bob-armoured-fluid-wagon-2", "blue", "yellow") + -- repair packs techs + AI.pack_replace("bob-repair-pack-5", "blue", "yellow") + -- fluid handling techs + AI.pack_replace("bob-fluid-handling-2", "green", "orange") + AI.pack_replace("bob-fluid-handling-4", "blue", "yellow") end ------------------------------------------------------------------------------- @@ -265,8 +284,10 @@ if angelsmods.industries.tech then AI.pack_replace("bob-laser-turrets-3", "blue", "orange") OV.remove_prereq("bob-laser-turrets-3", "military-3") OV.add_prereq("bob-laser-turrets-4", "military-3") + OV.remove_prereq("bob-laser-turrets-4", "production-science-pack") AI.pack_replace("bob-plasma-turrets-1", "green", "orange") AI.pack_replace("bob-plasma-turrets-2", "green", "orange") + OV.remove_prereq("bob-plasma-turrets-4", "production-science-pack") if mods["angelsexploration"] then AI.pack_replace("angels-rocket-turret", "green", "orange") end @@ -288,11 +309,13 @@ if angelsmods.industries.tech then AI.pre_req_replace("bob-rocket", "military-3", "angels-components-weapons-advanced") AI.pre_req_replace("bob-rocket", "tungsten-processing", "angels-explosives-1") --radars - AI.pack_replace("radars-4", "blue", "yellow") + AI.pack_replace("radars-3", "blue", "orange") + OV.remove_prereq("radars-4", "production-science-pack") --small fixes AI.pack_replace("follower-robot-count-1", "green", "orange") AI.pack_replace("follower-robot-count-2", "green", "orange") OV.remove_prereq("nitroglycerin-processing", "chlorine-processing-2") -- no clue why it works nowhere else... + OV.remove_prereq("walking-vehicle", "production-science-pack") end ------------------------------------------------------------------------------- @@ -311,6 +334,11 @@ if angelsmods.industries.tech then AI.pack_replace("vehicle-fusion-reactor-equipment-3", "yellow", "blue") AI.pack_replace("vehicle-big-turret-equipment-3", "yellow", "blue") AI.pre_req_replace("vehicle-big-turret-equipment-3", "military-4", "military-3") + OV.remove_prereq("vehicle-energy-shield-equipment-3", "production-science-pack") + OV.remove_prereq("vehicle-battery-equipment-4", "production-science-pack") + OV.remove_prereq("vehicle-battery-equipment-6", "tech-yellow-packs") + OV.remove_prereq("vehicle-fusion-reactor-equipment-3", "production-science-pack") + OV.remove_prereq("vehicle-laser-defense-equipment-3", "production-science-pack") end ------------------------------------------------------------------------------- @@ -323,6 +351,10 @@ if angelsmods.industries.tech then AI.pack_replace("exoskeleton-equipment", "green", "orange") AI.pack_replace("solar-panel-equipment-2", "green", "orange") AI.pack_replace("solar-panel-equipment-4", "blue", "yellow") + OV.remove_prereq("bob-energy-shield-equipment-3", "production-science-pack") + OV.remove_prereq("bob-battery-equipment-4", "production-science-pack") + OV.remove_prereq("bob-battery-equipment-6", "tech-yellow-packs") + OV.remove_prereq("personal-laser-defense-equipment-3", "production-science-pack") end ------------------------------------------------------------------------------- @@ -336,21 +368,31 @@ if angelsmods.industries.tech then if settings.startup["bobmods-power-steam"].value == true then AI.pack_replace("bob-steam-turbine-1", "blue", "orange") AI.pack_replace("bob-steam-turbine-3", "blue", "yellow") + OV.remove_prereq("bob-steam-turbine-2", "production-science-pack") AI.pack_replace("bob-steam-engine-3", "blue", "orange") + OV.remove_prereq("bob-steam-engine-4", "production-science-pack") AI.pack_replace("bob-boiler-3", "blue", "orange") + OV.remove_prereq("bob-boiler-4", "production-science-pack") AI.pack_replace("bob-oil-boiler-2", "blue", "orange") + OV.remove_prereq("bob-oil-boiler-3", "production-science-pack") AI.pack_replace("bob-heat-exchanger-2", "blue", "orange") end if settings.startup["bobmods-power-fluidgenerator"].value == true then AI.pack_replace("fluid-generator-2", "blue", "orange") + OV.remove_prereq("fluid-generator-3", "production-science-pack") + end + if settings.startup["bobmods-power-heatsources"].value == true then + AI.pack_replace("burner-reactor-2", "blue", "orange") end -- solar power if settings.startup["bobmods-power-solar"].value == true then AI.pack_replace("bob-solar-energy-2", "blue", "orange") + OV.remove_prereq("bob-solar-energy-3", "production-science-pack") end if settings.startup["bobmods-power-accumulators"].value == true then AI.pack_replace("electric-energy-accumulators", "orange", "green") AI.pack_replace("bob-electric-energy-accumulators-2", "blue", "orange") + OV.remove_prereq("bob-electric-energy-accumulators-3", "production-science-pack") end -- nuclar power if @@ -359,6 +401,7 @@ if angelsmods.industries.tech then or settings.startup["bobmods-power-heatsources"].value == true then AI.pack_replace("bob-heat-pipe-2", "blue", "orange") + OV.remove_prereq("bob-heat-pipe-3", "production-science-pack") end -- power distribution if settings.startup["bobmods-power-poles"].value == true then diff --git a/angelsindustries/prototypes/recipes/components-batteries-recipes.lua b/angelsindustries/prototypes/recipes/components-batteries-recipes.lua index 3180bdcd0..838f76b3c 100644 --- a/angelsindustries/prototypes/recipes/components-batteries-recipes.lua +++ b/angelsindustries/prototypes/recipes/components-batteries-recipes.lua @@ -106,6 +106,7 @@ if angelsmods.industries.components then energy_required = 10, ingredients = { { type = "item", name = "battery-casing", amount = 1 }, + { type = "item", name = "battery-frame-6", amount = 1 }, { type = "item", name = "battery-anode-6", amount = 3 }, { type = "item", name = "battery-cathode-6", amount = 3 }, { type = "fluid", name = "battery-electrolyte-6", amount = 10 }, diff --git a/angelspetrochem/changelog.txt b/angelspetrochem/changelog.txt index 329b065e2..93994cb3e 100644 --- a/angelspetrochem/changelog.txt +++ b/angelspetrochem/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 0.9.24 +Date: xx.xx.2023 + Bugfixes: + - Fixed Nitroglycerin and explosives 2 and 3 could not be crafted in any machine (888) + - Fixed Bob's fertilizer could not be crafted in any machine (bob greenhouses) (888) +--------------------------------------------------------------------------------------------------- Version: 0.9.23 Date: 01.01.2023 Changes: diff --git a/angelspetrochem/info.json b/angelspetrochem/info.json index d6d6d8861..abc5a1bd7 100644 --- a/angelspetrochem/info.json +++ b/angelspetrochem/info.json @@ -1,6 +1,6 @@ { "name": "angelspetrochem", - "version": "0.9.23", + "version": "0.9.24", "factorio_version": "1.1", "title": "Angel's Petrochemical Processing", "author": "Arch666Angel", @@ -8,7 +8,7 @@ "homepage": "https://forums.factorio.com/viewforum.php?f=185", "description": "Angel's Petrochemical processing changes Oil processing and adds Gas processing, as well as a more complex web of chemical production. Includes overrides and tie-ins to Bob's technologies and recipes. Dependencies: Angel's Refining", "dependencies": [ - "angelsrefining >= 0.12.1", + "angelsrefining >= 0.12.3", "? bobplates >= 1.1.6", "? bobassembly >= 1.1.5", "? bobrevamp >= 1.1.5" diff --git a/angelspetrochem/prototypes/buildings/air-filter.lua b/angelspetrochem/prototypes/buildings/air-filter.lua index be9abb2b2..c287b2e53 100644 --- a/angelspetrochem/prototypes/buildings/air-filter.lua +++ b/angelspetrochem/prototypes/buildings/air-filter.lua @@ -170,9 +170,9 @@ data:extend({ icon_size = 32, icon_mipmaps = 1, }, - }, 2, angelsmods.petrochem.number_tint), + }, 3, angelsmods.petrochem.number_tint), subgroup = "petrochem-buildings-electrolyser", - order = "b[angels-air-filter]-b", + order = "b[angels-air-filter]-c", place_result = "angels-air-filter-3", stack_size = 10, }, diff --git a/angelspetrochem/prototypes/global-override/bobgreenhouse.lua b/angelspetrochem/prototypes/global-override/bobgreenhouse.lua index 243e08d53..ec37ee625 100644 --- a/angelspetrochem/prototypes/global-override/bobgreenhouse.lua +++ b/angelspetrochem/prototypes/global-override/bobgreenhouse.lua @@ -9,6 +9,7 @@ if mods["bobgreenhouse"] then { name = "gas-methane", type = "fluid", amount = 0 }, { name = "gas-nitrogen", type = "fluid", amount = 0 }, }, + category = "advanced-chemistry", crafting_machine_tint = angelsmods.functions.get_recipe_tints({ "gas-urea", "gas-methane", "gas-nitrogen" }), }, }) diff --git a/angelspetrochem/prototypes/global-override/bobplates.lua b/angelspetrochem/prototypes/global-override/bobplates.lua index 915fb6371..d1df8ce8f 100644 --- a/angelspetrochem/prototypes/global-override/bobplates.lua +++ b/angelspetrochem/prototypes/global-override/bobplates.lua @@ -131,8 +131,10 @@ if mods["bobplates"] then angelsmods.functions.add_flag("calcium-chloride", "hidden") OV.disable_recipe("calcium-chloride") OV.remove_unlock("chemical-processing-2", "calcium-chloride") - OV.add_prereq("silicon-processing", "chlorine-processing-2") - OV.add_prereq("titanium-processing", "chlorine-processing-2") + if not mods["angelssmelting"] then + OV.add_prereq("silicon-processing", "chlorine-processing-2") + OV.add_prereq("titanium-processing", "chlorine-processing-2") + end OV.converter_fluid("ferric-chloride-solution", "liquid-ferric-chloride-solution") OV.disable_recipe({ "ferric-chloride-solution" }) @@ -258,7 +260,7 @@ if mods["bobplates"] then OV.add_unlock("circuit-network", "insulated-cable") OV.add_unlock("circuit-network", "bob-rubber") if mods["angelsbioprocessing"] then - OV.add_prereq("circuit-network", "bio-wood-processing") + OV.add_prereq("circuit-network", "bio-arboretum-1") end OV.add_prereq("rubbers", "circuit-network") OV.add_prereq("advanced-electronics-2", "rubbers") diff --git a/angelspetrochem/prototypes/global-override/bobwarfare.lua b/angelspetrochem/prototypes/global-override/bobwarfare.lua index 33c9b067f..5bbe98118 100644 --- a/angelspetrochem/prototypes/global-override/bobwarfare.lua +++ b/angelspetrochem/prototypes/global-override/bobwarfare.lua @@ -52,7 +52,7 @@ if mods["bobwarfare"] then { type = "fluid", name = "liquid-nitric-acid", amount = 15 }, } or nil, - crafting_category = hide_sulfuric_nitric_acid_mixture and "advanced-chemistry" or nil, + category = hide_sulfuric_nitric_acid_mixture and "advanced-chemistry" or nil, crafting_machine_tint = angelsmods.functions.get_recipe_tints({ "liquid-glycerol", "liquid-sulfuric-acid", diff --git a/angelspetrochem/prototypes/override/angelsrefining.lua b/angelspetrochem/prototypes/override/angelsrefining.lua index 2f921a052..7275d75fd 100644 --- a/angelspetrochem/prototypes/override/angelsrefining.lua +++ b/angelspetrochem/prototypes/override/angelsrefining.lua @@ -36,7 +36,7 @@ if angelsmods.refining then }, }) - OV.remove_unlock("slag-processing-1", "liquifier") + OV.remove_unlock("water-treatment", "liquifier") OV.add_unlock("basic-chemistry", "liquifier") OV.remove_prereq("slag-processing-1", "water-treatment") OV.remove_prereq("slag-processing-1", "ore-crushing") @@ -44,7 +44,6 @@ if angelsmods.refining then OV.remove_unlock("slag-processing-1", "liquifier-2") OV.remove_unlock("slag-processing-2", "liquifier-3") OV.remove_unlock("slag-processing-3", "liquifier-4") - OV.add_prereq("slag-processing-2", "ore-leaching") OV.add_unlock("angels-advanced-chemistry-1", "liquifier-2") OV.add_unlock("angels-advanced-chemistry-2", "liquifier-3") OV.add_unlock("angels-advanced-chemistry-4", "liquifier-4") diff --git a/angelspetrochem/prototypes/override/bobelectronics.lua b/angelspetrochem/prototypes/override/bobelectronics.lua index d4f7e7fca..446455923 100644 --- a/angelspetrochem/prototypes/override/bobelectronics.lua +++ b/angelspetrochem/prototypes/override/bobelectronics.lua @@ -2,4 +2,5 @@ local OV = angelsmods.functions.OV if mods["bobelectronics"] then OV.add_prereq("advanced-electronics", "chlorine-processing-1") + OV.hide_recipe("bob-oil-processing") end diff --git a/angelspetrochem/prototypes/override/bobplates.lua b/angelspetrochem/prototypes/override/bobplates.lua index 1ab63221c..a2cae75a4 100644 --- a/angelspetrochem/prototypes/override/bobplates.lua +++ b/angelspetrochem/prototypes/override/bobplates.lua @@ -113,7 +113,6 @@ end ------------------------------------------------------------------------------- if mods["bobplates"] then -- electronics tech patch --------------------------------------------------- - OV.remove_prereq("electronics", "alloy-processing") if mods["bobelectronics"] then OV.add_prereq("electronics", "angels-coal-processing") end diff --git a/angelspetrochem/prototypes/recipes/petrochem-entity-angels.lua b/angelspetrochem/prototypes/recipes/petrochem-entity-angels.lua index d90b7cf07..bb5b5c9b7 100644 --- a/angelspetrochem/prototypes/recipes/petrochem-entity-angels.lua +++ b/angelspetrochem/prototypes/recipes/petrochem-entity-angels.lua @@ -1049,33 +1049,30 @@ angelsmods.functions.RB.build({ }, result = "angels-chemical-plant", }, - expensive = angelsmods.industries - and angelsmods.industries.tech - and { - energy_required = 5 * buildingtime, - enabled = false, - ingredients = { - { type = "item", name = "chem-1", amount = 1 }, - { type = "item", name = "t0-plate", amount = 2 * buildingmulti }, - { type = "item", name = "t0-gears", amount = 1 * buildingmulti }, - { type = "item", name = "t0-circuit", amount = 1 * buildingmulti }, - { type = "item", name = "t0-pipe", amount = 4 * buildingmulti }, - }, - result = "angels-chemical-plant", - } - or { - -- chem plant required for science, excluding it from marathon effects - energy_required = 5, - enabled = false, - ingredients = { - { type = "item", name = "chem-1", amount = 1 }, - { type = "item", name = "t0-plate", amount = 2 }, - { type = "item", name = "t0-gears", amount = 1 }, - { type = "item", name = "t0-circuit", amount = 1 }, - { type = "item", name = "t0-pipe", amount = 4 }, - }, - result = "angels-chemical-plant", + expensive = angelsmods.industries and angelsmods.industries.tech and { + energy_required = 5 * buildingtime, + enabled = false, + ingredients = { + { type = "item", name = "chem-1", amount = 1 }, + { type = "item", name = "t0-plate", amount = 2 * buildingmulti }, + { type = "item", name = "t0-gears", amount = 1 * buildingmulti }, + { type = "item", name = "t0-circuit", amount = 1 * buildingmulti }, + { type = "item", name = "t0-pipe", amount = 4 * buildingmulti }, }, + result = "angels-chemical-plant", + } or { + -- chem plant required for science, excluding it from marathon effects + energy_required = 5, + enabled = false, + ingredients = { + { type = "item", name = "chem-1", amount = 1 }, + { type = "item", name = "t0-plate", amount = 2 }, + { type = "item", name = "t0-gears", amount = 1 }, + { type = "item", name = "t0-circuit", amount = 1 }, + { type = "item", name = "t0-pipe", amount = 4 }, + }, + result = "angels-chemical-plant", + }, }, { type = "recipe", diff --git a/angelspetrochem/prototypes/recipes/petrochem-solids.lua b/angelspetrochem/prototypes/recipes/petrochem-solids.lua index c30ac1821..71eaadc33 100644 --- a/angelspetrochem/prototypes/recipes/petrochem-solids.lua +++ b/angelspetrochem/prototypes/recipes/petrochem-solids.lua @@ -529,7 +529,7 @@ data:extend({ { type = "recipe", name = "solid-nitroglycerin", - category = "chemistry", + category = "advanced-chemistry", subgroup = "petrochem-solids-2", energy_required = 2, enabled = false, @@ -555,7 +555,7 @@ data:extend({ { type = "recipe", name = "solid-trinitrotoluene", - category = "chemistry", + category = "advanced-chemistry", subgroup = "petrochem-solids-2", energy_required = 2, enabled = false, diff --git a/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua b/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua index 2098a6656..e4b3e13fa 100644 --- a/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua +++ b/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua @@ -123,7 +123,7 @@ data:extend({ "angels-sulfur-processing-2", "water-treatment-4", "angels-advanced-chemistry-4", - mods["angelssmelting"] and "angels-coolant-1" or "basic-chemistry-2", + mods["angelssmelting"] and "angels-cooling" or "basic-chemistry-2", }, effects = { { @@ -407,6 +407,7 @@ data:extend({ icons = angelsmods.functions.create_gas_tech_icon("SSS"), prerequisites = { "angels-sulfur-processing-2", + "angels-nitrogen-processing-1", "slag-processing-1", "chemical-science-pack", }, diff --git a/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua b/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua index 6433d7172..e52476d28 100644 --- a/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua +++ b/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua @@ -90,9 +90,7 @@ data:extend({ icon_size = 256, icon_mipmaps = 4, prerequisites = { - "oil-processing", - "gas-steam-cracking-1", - "chemical-science-pack", + "angels-advanced-chemistry-2", }, effects = { { diff --git a/angelsrefining/changelog.txt b/angelsrefining/changelog.txt index 3fcb3b3d7..3941c1f8a 100644 --- a/angelsrefining/changelog.txt +++ b/angelsrefining/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 0.12.4 +Date: ??? + Bugfixes: + - Fixed Fluoric waste water purification recipe icon (897) + - Quick fixed the base game tips and tricks "low power" and "entity transfer" (792) +--------------------------------------------------------------------------------------------------- Version: 0.12.3 Date: 01.01.203 Changes: diff --git a/angelsrefining/info.json b/angelsrefining/info.json index f5fabe22a..b64d4f505 100644 --- a/angelsrefining/info.json +++ b/angelsrefining/info.json @@ -1,6 +1,6 @@ { "name": "angelsrefining", - "version": "0.12.3", + "version": "0.12.4", "factorio_version": "1.1", "title": "Angel's Refining", "author": "Arch666Angel", diff --git a/angelsrefining/prototypes/override-functions.lua b/angelsrefining/prototypes/override-functions.lua index b183b5ce3..1166d5b18 100644 --- a/angelsrefining/prototypes/override-functions.lua +++ b/angelsrefining/prototypes/override-functions.lua @@ -321,16 +321,15 @@ ov_functions.global_replace_technology = function(old, new) substitution_table.technologies[old] = new end -ov_functions.disable_technology = - function(technology) -- disable technology (may be a table containing a list of technologies) - if type(technology) == "table" then - for tk, tech in pairs(technology) do - disable_table.technologies[tech] = true - end - else - disable_table.technologies[technology] = true +ov_functions.disable_technology = function(technology) -- disable technology (may be a table containing a list of technologies) + if type(technology) == "table" then + for tk, tech in pairs(technology) do + disable_table.technologies[tech] = true end + else + disable_table.technologies[technology] = true end +end ov_functions.set_special_technology_override = function(technology, t) if type(technology) == "table" then @@ -426,16 +425,15 @@ ov_functions.modify_output = function(recipe, i_data) end end -ov_functions.remove_normal_input = - function(recipe, item) -- remove item from input of recipe (item may be a table containing a list of items to remove) - if type(item) == "table" then - for _, it in pairs(item) do - ov_functions.modify_normal_input(recipe, { it, 0 }) - end - else - ov_functions.modify_normal_input(recipe, { item, 0 }) +ov_functions.remove_normal_input = function(recipe, item) -- remove item from input of recipe (item may be a table containing a list of items to remove) + if type(item) == "table" then + for _, it in pairs(item) do + ov_functions.modify_normal_input(recipe, { it, 0 }) end + else + ov_functions.modify_normal_input(recipe, { item, 0 }) end +end ov_functions.remove_hard_input = function(recipe, item) if type(item) == "table" then @@ -457,16 +455,15 @@ ov_functions.remove_input = function(recipe, item) end end -ov_functions.remove_normal_output = - function(recipe, item) -- remove item from output of recipe (item may be a table containing a list of items to remove) - if type(item) == "table" then - for _, it in pairs(item) do - ov_functions.modify_normal_output(recipe, { it, 0 }) - end - else - ov_functions.modify_normal_output(recipe, { item, 0 }) +ov_functions.remove_normal_output = function(recipe, item) -- remove item from output of recipe (item may be a table containing a list of items to remove) + if type(item) == "table" then + for _, it in pairs(item) do + ov_functions.modify_normal_output(recipe, { it, 0 }) end + else + ov_functions.modify_normal_output(recipe, { item, 0 }) end +end ov_functions.remove_hard_output = function(recipe, item) if type(item) == "table" then @@ -488,25 +485,24 @@ ov_functions.remove_output = function(recipe, item) end end -ov_functions.global_replace_item = - function(old, new) -- replace all occurrences of old in recipes with new (old may be a table containing a list of items) - if type(old) == "table" then - for ik, item in pairs(old) do - substitution_table.recipe_items[item] = new - end - else - substitution_table.recipe_items[old] = new - for _, type in pairs(building_types) do - for name, entity in pairs(data.raw[type]) do - if entity and entity.next_upgrade then - if entity.next_upgrade == old then - angelsmods.functions.set_next_upgrade(type, name, new) - end +ov_functions.global_replace_item = function(old, new) -- replace all occurrences of old in recipes with new (old may be a table containing a list of items) + if type(old) == "table" then + for ik, item in pairs(old) do + substitution_table.recipe_items[item] = new + end + else + substitution_table.recipe_items[old] = new + for _, type in pairs(building_types) do + for name, entity in pairs(data.raw[type]) do + if entity and entity.next_upgrade then + if entity.next_upgrade == old then + angelsmods.functions.set_next_upgrade(type, name, new) end end end end end +end ov_functions.converter_fluid = function(old_fluid_name, new_fluid_name) local new_fluid = data.raw.fluid[new_fluid_name] @@ -683,108 +679,107 @@ ov_functions.set_temperature_barreling = function(fluid, temp, min_temp, max_tem end end -ov_functions.barrel_overrides = - function(fluid, style) --Bottling override functions for icons, localisation and tech unlocks - if data.raw.fluid[fluid] then - --declare variables moving forward - local fluid_s = data.raw.fluid[fluid] - local fluid_i - local F_Fill - local F_Empty - --check that the barrel actually exists - if data.raw.recipe["fill-" .. fluid_s.name .. "-barrel"] then - --define local function variables - F_Fill = data.raw.recipe["fill-" .. fluid_s.name .. "-barrel"] --define F_Fill - F_Empty = data.raw.recipe["empty-" .. fluid_s.name .. "-barrel"] --define F_Empty - fluid_i = data.raw.item[fluid .. "-barrel"] --define barrel name - --set common properties - F_Fill.icons = generate_fill_barrel_icons(fluid_s, style) - F_Empty.icons = generate_empty_barrel_icons(fluid_s, style) - fluid_i.icons = generate_barrel_icons(fluid_s, style) - --results are generic for filled barrels - F_Fill.results = { - { type = "item", name = fluid_s.name .. "-barrel", amount = 1 }, +ov_functions.barrel_overrides = function(fluid, style) --Bottling override functions for icons, localisation and tech unlocks + if data.raw.fluid[fluid] then + --declare variables moving forward + local fluid_s = data.raw.fluid[fluid] + local fluid_i + local F_Fill + local F_Empty + --check that the barrel actually exists + if data.raw.recipe["fill-" .. fluid_s.name .. "-barrel"] then + --define local function variables + F_Fill = data.raw.recipe["fill-" .. fluid_s.name .. "-barrel"] --define F_Fill + F_Empty = data.raw.recipe["empty-" .. fluid_s.name .. "-barrel"] --define F_Empty + fluid_i = data.raw.item[fluid .. "-barrel"] --define barrel name + --set common properties + F_Fill.icons = generate_fill_barrel_icons(fluid_s, style) + F_Empty.icons = generate_empty_barrel_icons(fluid_s, style) + fluid_i.icons = generate_barrel_icons(fluid_s, style) + --results are generic for filled barrels + F_Fill.results = { + { type = "item", name = fluid_s.name .. "-barrel", amount = 1 }, + } + --ingredients are common for emptying recipes + F_Empty.ingredients = { + { type = "item", name = fluid_s.name .. "-barrel", amount = 1 }, + } + + if style == "gas" then -- Gas Bottles + F_Fill.localised_name = { + "recipe-name.fill-gas-canister", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, } - --ingredients are common for emptying recipes - F_Empty.ingredients = { - { type = "item", name = fluid_s.name .. "-barrel", amount = 1 }, + F_Fill.ingredients = { + { type = "fluid", name = fluid_s.name, amount = 50 }, + { type = "item", name = "gas-canister", amount = 1 }, + } + F_Empty.results = { + { type = "fluid", name = fluid_s.name, amount = 50 }, + { type = "item", name = "gas-canister", amount = 1 }, + } + F_Empty.localised_name = { + "recipe-name.empty-filled-gas-canister", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + fluid_i.localised_name = { + "item-name.filled-gas-canister", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + ov_functions.remove_unlock("fluid-barrel-processing", "fill-" .. fluid_s.name .. "-barrel") + ov_functions.add_unlock("gas-canisters", "fill-" .. fluid_s.name .. "-barrel") + ov_functions.remove_unlock("fluid-barrel-processing", "empty-" .. fluid_s.name .. "-barrel") + ov_functions.add_unlock("gas-canisters", "empty-" .. fluid_s.name .. "-barrel") + elseif style == "acid" then -- Liquid Fuel Canisters + F_Fill.localised_name = { + "recipe-name.fill-canister", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + F_Fill.ingredients = { + { type = "fluid", name = fluid_s.name, amount = 50 }, + { type = "item", name = "empty-canister", amount = 1 }, + } + F_Empty.results = { + { type = "fluid", name = fluid_s.name, amount = 50 }, + { type = "item", name = "empty-canister", amount = 1 }, + } + F_Empty.localised_name = { + "recipe-name.empty-filled-canister", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + fluid_i.localised_name = { + "item-name.filled-canister", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + ov_functions.remove_unlock("fluid-barrel-processing", "fill-" .. fluid_s.name .. "-barrel") + ov_functions.add_unlock("fluid-canister-processing", "fill-" .. fluid_s.name .. "-barrel") + ov_functions.remove_unlock("fluid-barrel-processing", "empty-" .. fluid_s.name .. "-barrel") + ov_functions.add_unlock("fluid-canister-processing", "empty-" .. fluid_s.name .. "-barrel") + else -- Vanilla Barrel + F_Fill.localised_name = { + "recipe-name.fill-barrel", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + F_Fill.ingredients = { + { type = "fluid", name = fluid_s.name, amount = 50 }, + { type = "item", name = "empty-barrel", amount = 1 }, + } + F_Empty.results = { + { type = "fluid", name = fluid_s.name, amount = 50 }, + { type = "item", name = "empty-barrel", amount = 1 }, + } + F_Empty.localised_name = { + "recipe-name.empty-filled-barrel", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, + } + fluid_i.localised_name = { + "item-name.filled-barrel", + fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, } - - if style == "gas" then -- Gas Bottles - F_Fill.localised_name = { - "recipe-name.fill-gas-canister", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - F_Fill.ingredients = { - { type = "fluid", name = fluid_s.name, amount = 50 }, - { type = "item", name = "gas-canister", amount = 1 }, - } - F_Empty.results = { - { type = "fluid", name = fluid_s.name, amount = 50 }, - { type = "item", name = "gas-canister", amount = 1 }, - } - F_Empty.localised_name = { - "recipe-name.empty-filled-gas-canister", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - fluid_i.localised_name = { - "item-name.filled-gas-canister", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - ov_functions.remove_unlock("fluid-barrel-processing", "fill-" .. fluid_s.name .. "-barrel") - ov_functions.add_unlock("gas-canisters", "fill-" .. fluid_s.name .. "-barrel") - ov_functions.remove_unlock("fluid-barrel-processing", "empty-" .. fluid_s.name .. "-barrel") - ov_functions.add_unlock("gas-canisters", "empty-" .. fluid_s.name .. "-barrel") - elseif style == "acid" then -- Liquid Fuel Canisters - F_Fill.localised_name = { - "recipe-name.fill-canister", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - F_Fill.ingredients = { - { type = "fluid", name = fluid_s.name, amount = 50 }, - { type = "item", name = "empty-canister", amount = 1 }, - } - F_Empty.results = { - { type = "fluid", name = fluid_s.name, amount = 50 }, - { type = "item", name = "empty-canister", amount = 1 }, - } - F_Empty.localised_name = { - "recipe-name.empty-filled-canister", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - fluid_i.localised_name = { - "item-name.filled-canister", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - ov_functions.remove_unlock("fluid-barrel-processing", "fill-" .. fluid_s.name .. "-barrel") - ov_functions.add_unlock("fluid-canister-processing", "fill-" .. fluid_s.name .. "-barrel") - ov_functions.remove_unlock("fluid-barrel-processing", "empty-" .. fluid_s.name .. "-barrel") - ov_functions.add_unlock("fluid-canister-processing", "empty-" .. fluid_s.name .. "-barrel") - else -- Vanilla Barrel - F_Fill.localised_name = { - "recipe-name.fill-barrel", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - F_Fill.ingredients = { - { type = "fluid", name = fluid_s.name, amount = 50 }, - { type = "item", name = "empty-barrel", amount = 1 }, - } - F_Empty.results = { - { type = "fluid", name = fluid_s.name, amount = 50 }, - { type = "item", name = "empty-barrel", amount = 1 }, - } - F_Empty.localised_name = { - "recipe-name.empty-filled-barrel", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - fluid_i.localised_name = { - "item-name.filled-barrel", - fluid_s.localised_name or { "fluid-name." .. fluid_s.name }, - } - end end end end +end ------------------------------------------------------------------------------- -- OVERRIDE EXECUTION FUNCTIONS ----------------------------------------------- diff --git a/angelsrefining/prototypes/override/refining-override-base.lua b/angelsrefining/prototypes/override/refining-override-base.lua index f4d4fbae5..b402de048 100644 --- a/angelsrefining/prototypes/override/refining-override-base.lua +++ b/angelsrefining/prototypes/override/refining-override-base.lua @@ -20,3 +20,13 @@ OV.patch_recipes({ }) OV.add_prereq("uranium-processing", "ore-leaching") + +-- Fix tips and tricks simulations missing "iron-ore" entity +for _, tnt_name in pairs({ "low-power", "entity-transfers" }) do + local tnt = data.raw["tips-and-tricks-item"][tnt_name] + if tnt then + if tnt.simulation and tnt.simulation.init then + tnt.simulation.init, _ = string.gsub(tnt.simulation.init, "iron%-ore", "angels-ore1") + end + end +end diff --git a/angelsrefining/prototypes/recipe-builder.lua b/angelsrefining/prototypes/recipe-builder.lua index 2a3c22fc6..22051a1e8 100644 --- a/angelsrefining/prototypes/recipe-builder.lua +++ b/angelsrefining/prototypes/recipe-builder.lua @@ -31,33 +31,32 @@ local function check_raw_for(i_type, i_name) end end -RB.set_fallback = - function(i_type, i_name, fb_list, i_condition) -- i_type either "item" or "fluid", i_name the name of the item, fb_list a table containing subtables { name, multiplier, condition } where item_name is a string, multiplier is a positive number (defaults to 1), and condition is a function taking i_type and i_name as arguments and returning a boolean (defaults to return true) can also be formatted { name = name, multiplier = multiplier, condition = condition }, condition (optional) is like the condition field in a subtable of fb_list but for i_name - local parent = fallbacks[i_type] - if parent then - if check_raw_for(i_type, i_name) and (not i_condition or i_condition(i_type, i_name)) then - parent[i_name] = nil - else - local sentinel = true - for _, fb in pairs(fb_list) do - local n, m, c - if fb[1] then - n, m, c = fb[1], fb[2] or 1, fb[3] - else - n, m, c = fb.name, fb.multiplier or 1, fb.condition - end - if check_raw_for(i_type, n) and (not c or c(i_type, n)) then - parent[i_name] = { n, m } - sentinel = false - break - end +RB.set_fallback = function(i_type, i_name, fb_list, i_condition) -- i_type either "item" or "fluid", i_name the name of the item, fb_list a table containing subtables { name, multiplier, condition } where item_name is a string, multiplier is a positive number (defaults to 1), and condition is a function taking i_type and i_name as arguments and returning a boolean (defaults to return true) can also be formatted { name = name, multiplier = multiplier, condition = condition }, condition (optional) is like the condition field in a subtable of fb_list but for i_name + local parent = fallbacks[i_type] + if parent then + if check_raw_for(i_type, i_name) and (not i_condition or i_condition(i_type, i_name)) then + parent[i_name] = nil + else + local sentinel = true + for _, fb in pairs(fb_list) do + local n, m, c + if fb[1] then + n, m, c = fb[1], fb[2] or 1, fb[3] + else + n, m, c = fb.name, fb.multiplier or 1, fb.condition end - if sentinel then - parent[i_name] = { "fallback-sentinel", 0 } + if check_raw_for(i_type, n) and (not c or c(i_type, n)) then + parent[i_name] = { n, m } + sentinel = false + break end end + if sentinel then + parent[i_name] = { "fallback-sentinel", 0 } + end end end +end local function get_fallback(i_type, i_name) local parent = fallbacks[i_type] @@ -85,7 +84,7 @@ local function check_ingredients(ingredients) i_name = item[1] i_count = item[2] else - i_type = item.type + i_type = item.type or "item" i_name = item.name i_count = item.amount end diff --git a/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua b/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua index 9a9fd52a7..fd11c777d 100644 --- a/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua +++ b/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua @@ -5,7 +5,7 @@ data:extend({ { type = "recipe", name = "angelsore7-crystallization-1", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 4, enabled = false, @@ -33,7 +33,7 @@ data:extend({ { type = "recipe", name = "angelsore7-crystallization-2", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 4, enabled = false, @@ -61,7 +61,7 @@ data:extend({ { type = "recipe", name = "angelsore7-crystallization-3", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 4, enabled = false, @@ -89,7 +89,7 @@ data:extend({ { type = "recipe", name = "angelsore7-crystallization-4", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 4, enabled = false, @@ -117,7 +117,7 @@ data:extend({ { type = "recipe", name = "angelsore7-crystallization-5", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 4, enabled = false, @@ -145,7 +145,7 @@ data:extend({ { type = "recipe", name = "angelsore7-crystallization-6", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 4, enabled = false, diff --git a/angelsrefining/prototypes/recipes/refining-static.lua b/angelsrefining/prototypes/recipes/refining-static.lua index 1b1413751..faa02586e 100644 --- a/angelsrefining/prototypes/recipes/refining-static.lua +++ b/angelsrefining/prototypes/recipes/refining-static.lua @@ -1514,7 +1514,7 @@ data:extend({ { type = "recipe", name = "catalysator-green", - category = "crystallizing-2", + category = "crystallizing", subgroup = "geode-crystallization", energy_required = 0.5, enabled = false, diff --git a/angelsrefining/prototypes/recipes/water-treatment-recipes.lua b/angelsrefining/prototypes/recipes/water-treatment-recipes.lua index 8e4d8d0d9..5608a1e89 100644 --- a/angelsrefining/prototypes/recipes/water-treatment-recipes.lua +++ b/angelsrefining/prototypes/recipes/water-treatment-recipes.lua @@ -17,7 +17,7 @@ data:extend({ always_show_products = true, crafting_machine_tint = angelsmods.functions.get_recipe_tints({ "water",--[[,"stone-crushed"]] - "water-mineralised", + "water-mineralized", }), --get_fluid_recipe_tint("water-mineralized"), order = "a[water-water-mineralized]", }, @@ -87,7 +87,7 @@ data:extend({ mods["angelspetrochem"] and { "__angelspetrochem__/graphics/icons/solid-sulfur.png", 32 } or "sulfur", }, "WsSS"), crafting_machine_tint = angelsmods.functions.get_recipe_tints({ - "water-mineralised", + "water-mineralized", "water-yellow-waste", "water-purified", }), @@ -114,7 +114,7 @@ data:extend({ mods["angelspetrochem"] and { "__angelspetrochem__/graphics/icons/solid-sodium-nitrate.png", 32 } or nil, }, "WsOO"), crafting_machine_tint = angelsmods.functions.get_recipe_tints({ - "water-mineralised", + "water-mineralized", "water-red-waste", "water-purified", }), @@ -164,12 +164,12 @@ data:extend({ }, always_show_products = true, icons = angelsmods.functions.create_liquid_recipe_icon({ - "water-saline", + "water-mineralized", "water-purified", mods["angelspetrochem"] and { "__angelspetrochem__/graphics/icons/ore-fluorite.png", 32 } or nil, }, "WsFF"), crafting_machine_tint = angelsmods.functions.get_recipe_tints({ - "water-mineralised", + "water-mineralized", "water-greenyellow-waste", "water-purified", }), diff --git a/angelsrefining/prototypes/technology/refining-technology.lua b/angelsrefining/prototypes/technology/refining-technology.lua index 8f77f36f8..6a7ca245c 100644 --- a/angelsrefining/prototypes/technology/refining-technology.lua +++ b/angelsrefining/prototypes/technology/refining-technology.lua @@ -184,10 +184,6 @@ data:extend({ type = "unlock-recipe", recipe = "crystallizer", }, - { - type = "unlock-recipe", - recipe = "liquifier", - }, { type = "unlock-recipe", recipe = "liquifier-2", @@ -451,7 +447,7 @@ data:extend({ icon_size = 64, prerequisites = { "slag-processing-1", - "ore-leaching", + "chemical-science-pack", }, effects = { { @@ -1084,6 +1080,7 @@ data:extend({ prerequisites = { "ore-advanced-floatation", "geode-processing-3", + "ore-leaching", }, effects = { { diff --git a/angelsrefining/prototypes/technology/water-treatment-technology.lua b/angelsrefining/prototypes/technology/water-treatment-technology.lua index 3afe9f39d..9ec2f4c8c 100644 --- a/angelsrefining/prototypes/technology/water-treatment-technology.lua +++ b/angelsrefining/prototypes/technology/water-treatment-technology.lua @@ -44,6 +44,10 @@ data:extend({ type = "unlock-recipe", recipe = "clarifier", }, + { + type = "unlock-recipe", + recipe = "liquifier", + }, { type = "unlock-recipe", recipe = "ground-water-pump", diff --git a/angelssmelting/changelog.txt b/angelssmelting/changelog.txt index bc6c58a43..684cff900 100644 --- a/angelssmelting/changelog.txt +++ b/angelssmelting/changelog.txt @@ -1,4 +1,23 @@ --------------------------------------------------------------------------------------------------- +Version: 0.6.21 +Date: ??? + Changes: + - Glass fiber now requires Strand Casting Machine 2 (unless Angel's Industries Components Overhaul is enabled) (890) + - Added missing prerequisites. Some recipes could be researched before a machine for it was unlocked (890) + - Changed recipes to require Crystallizer rather than Crystallizer 2 (890) + - Crystal catalyst + - Gem ores + - Raw crystal splinter + - Used coolant coal filtering now requires Filtration Unit 2 (903) + - Used cooland ceramic filtering now requires Filtration Unit 3 (903) + - Changed the iron hydroxide recycling recipe name and icon + Bugfixes: + - Fixed Air Filter 3's sort order and icon numeral (893) + - Fixed Bob's Oil Processing recipe not being correctly hidden in some configurations (894) + - Fixed the recipe icon of the manganese oxide recipe in case there is only one recipe to make oxide + - Disabled unused iron casting 4 technology in special vanilla mode + - Fixed smoke on the blast furnace +--------------------------------------------------------------------------------------------------- Version: 0.6.20 Date: 01.01.2023 Changes: diff --git a/angelssmelting/info.json b/angelssmelting/info.json index 6f2ee39e6..2c052bc6e 100644 --- a/angelssmelting/info.json +++ b/angelssmelting/info.json @@ -1,6 +1,6 @@ { "name": "angelssmelting", - "version": "0.6.20", + "version": "0.6.21", "factorio_version": "1.1", "title": "Angel's Smelting", "author": "Arch666Angel", diff --git a/angelssmelting/locale/en/smelting.cfg b/angelssmelting/locale/en/smelting.cfg index d4eb484a1..c4faa8dc8 100644 --- a/angelssmelting/locale/en/smelting.cfg +++ b/angelssmelting/locale/en/smelting.cfg @@ -48,6 +48,8 @@ coolant-cool-300=Cooling from 300° mold-non-expendable-wash=Reusable mold cleaning +solid-iron-hydroxide-smelting=__ITEM__solid-iron-hydroxide__ recycling + [item-group-name] angels-smelting=Metallurgy smelting angels-casting=Metallurgy casting diff --git a/angelssmelting/prototypes/buildings/blast-furnace.lua b/angelssmelting/prototypes/buildings/blast-furnace.lua index f6ddc939e..e442fd089 100644 --- a/angelssmelting/prototypes/buildings/blast-furnace.lua +++ b/angelssmelting/prototypes/buildings/blast-furnace.lua @@ -52,7 +52,7 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { -2.0, -1.8 }, + position = { 2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, @@ -259,7 +259,7 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { -2.0, -1.8 }, + position = { 2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, @@ -466,7 +466,7 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { -2.0, -1.8 }, + position = { 2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, @@ -672,7 +672,7 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { -2.0, -1.8 }, + position = { 2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, diff --git a/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua b/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua index 629a4abc2..df3e0f89c 100644 --- a/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua +++ b/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua @@ -27,6 +27,7 @@ if angelsmods.trigger.smelting_products["solder"].wire then OV.disable_recipe({ "solder-alloy", "solder-alloy-lead", "solder" }) angelsmods.functions.add_flag("solder-alloy", "hidden") OV.remove_unlock("electronics", "solder-alloy-lead") + OV.remove_prereq("electronics", "alloy-processing") if angelsmods.trigger.smelting_products["solder"].mixture then OV.add_prereq("electronics", "angels-solder-smelting-basic") diff --git a/angelssmelting/prototypes/override/smelting-override-alloy-steel.lua b/angelssmelting/prototypes/override/smelting-override-alloy-steel.lua index cac677b60..747feb590 100644 --- a/angelssmelting/prototypes/override/smelting-override-alloy-steel.lua +++ b/angelssmelting/prototypes/override/smelting-override-alloy-steel.lua @@ -49,6 +49,8 @@ if angelsmods.trigger.smelting_products["steel"].ingot then if angelsmods.trigger.smelting_products["steel"].plate or angelsmods.trigger.smelting_products["steel"].rod then else OV.remove_prereq("angels-steel-smelting-3", "strand-casting-2") + OV.remove_prereq("angels-steel-smelting-3", "angels-coolant-1") + OV.add_prereq("angels-steel-smelting-3", "angels-metallurgy-3") end if not angelsmods.trigger.smelting_products["nickel"] or not angelsmods.trigger.smelting_products["nickel"].ingot then diff --git a/angelssmelting/prototypes/override/smelting-override-iron.lua b/angelssmelting/prototypes/override/smelting-override-iron.lua index 2e9e2a294..c20537e55 100644 --- a/angelssmelting/prototypes/override/smelting-override-iron.lua +++ b/angelssmelting/prototypes/override/smelting-override-iron.lua @@ -64,6 +64,7 @@ if angelsmods.trigger.smelting_products["iron"].ingot then "molten-iron-smelting-4", "molten-iron-smelting-5", }) + OV.disable_technology("angels-iron-casting-4") end if angelsmods.trigger.smelting_products["iron"].plate or angelsmods.trigger.smelting_products["iron"].rod then diff --git a/angelssmelting/prototypes/override/smelting-override-lithium.lua b/angelssmelting/prototypes/override/smelting-override-lithium.lua index a78bc4ea2..1cfe85674 100644 --- a/angelssmelting/prototypes/override/smelting-override-lithium.lua +++ b/angelssmelting/prototypes/override/smelting-override-lithium.lua @@ -17,4 +17,5 @@ then { name = "lithium-cobalt-oxide", subgroup = "angels-alloys", order = "b[lithium]-c" }, { name = "lithium-water-electrolysis", subgroup = "angels-alloys", order = "b[lithium]-d" }, }) + OV.add_prereq("lithium-processing", "angels-metallurgy-2") end diff --git a/angelssmelting/prototypes/override/smelting-override-manganese.lua b/angelssmelting/prototypes/override/smelting-override-manganese.lua index dd876a4ea..4be7310f9 100644 --- a/angelssmelting/prototypes/override/smelting-override-manganese.lua +++ b/angelssmelting/prototypes/override/smelting-override-manganese.lua @@ -35,6 +35,11 @@ if angelsmods.trigger.smelting_products["manganese"].ingot then if mods["angelsindustries"] and angelsmods.industries.components then else OV.disable_recipe({ "manganese-processed-processing-alt" }) + -- remove number icon as there is only one tier... + local maganese_oxide = data.raw["recipe"]["pellet-manganese-smelting"] + if maganese_oxide then + maganese_oxide.icons = nil + end end else angelsmods.functions.add_flag("processed-manganese", "hidden") diff --git a/angelssmelting/prototypes/override/smelting-override-silver.lua b/angelssmelting/prototypes/override/smelting-override-silver.lua index 20da8ad9f..b9fa99592 100644 --- a/angelssmelting/prototypes/override/smelting-override-silver.lua +++ b/angelssmelting/prototypes/override/smelting-override-silver.lua @@ -31,14 +31,13 @@ if angelsmods.trigger.smelting_products["silver"].ingot then OV.disable_recipe({ "silver-nitrate", "silver-from-lead" }) OV.remove_prereq("battery-3", "nitrogen-processing") OV.add_prereq("battery-3", "angels-silver-smelting-2") - end + OV.add_prereq("battery-3", "powder-metallurgy-4") - if mods["bobplates"] then angelsmods.functions.move_item("silver-oxide", "angels-silver", "e") data.raw.item["silver-oxide"].icon = "__angelssmelting__/graphics/icons/solid-silver-oxide.png" data.raw.item["silver-oxide"].icon_size = 32 OV.patch_recipes({ - { name = "silver-oxide", subgroup = "angels-silver", order = "e[silver-oxide]", category = "powder-mixing-4" }, + { name = "silver-oxide", subgroup = "angels-silver", order = "e[silver-oxide]", category = "powder-mixing-3" }, }) end diff --git a/angelssmelting/prototypes/recipes/smelting-glass.lua b/angelssmelting/prototypes/recipes/smelting-glass.lua index 30e9e8600..60c4c0a94 100644 --- a/angelssmelting/prototypes/recipes/smelting-glass.lua +++ b/angelssmelting/prototypes/recipes/smelting-glass.lua @@ -110,7 +110,7 @@ data:extend({ { type = "recipe", name = "angels-coil-glass-fiber", - category = "strand-casting", + category = "strand-casting-2", subgroup = "angels-glass-casting", normal = { enabled = false, diff --git a/angelssmelting/prototypes/recipes/smelting-iron.lua b/angelssmelting/prototypes/recipes/smelting-iron.lua index a7d6691bd..e496663a9 100644 --- a/angelssmelting/prototypes/recipes/smelting-iron.lua +++ b/angelssmelting/prototypes/recipes/smelting-iron.lua @@ -102,6 +102,7 @@ data:extend({ { type = "recipe", name = "solid-iron-hydroxide-smelting", + localised_name = { "recipe-name.solid-iron-hydroxide-smelting" }, category = "chemical-smelting-2", subgroup = "angels-iron", energy_required = 4, @@ -115,10 +116,16 @@ data:extend({ { type = "fluid", name = "gas-carbon-dioxide", amount = 20 }, }, main_product = "ingot-iron", - icons = angelsmods.functions.add_number_icon_layer( + --icons = angelsmods.functions.add_number_icon_layer( + -- angelsmods.functions.get_object_icons("ingot-iron"), + -- 4, + -- angelsmods.smelting.number_tint + --), + icons = angelsmods.functions.add_icon_layer( angelsmods.functions.get_object_icons("ingot-iron"), - 4, - angelsmods.smelting.number_tint + angelsmods.functions.get_object_icons("solid-iron-hydroxide"), + { -11.5, -12 }, + 10.24 / 32 ), order = "e[ingot-iron]-d", }, diff --git a/angelssmelting/prototypes/recipes/smelting-support.lua b/angelssmelting/prototypes/recipes/smelting-support.lua index cf75bd137..c58f1d361 100644 --- a/angelssmelting/prototypes/recipes/smelting-support.lua +++ b/angelssmelting/prototypes/recipes/smelting-support.lua @@ -46,7 +46,7 @@ data:extend({ { type = "recipe", name = "coolant-used-filtration-1", - category = "filtering", + category = "filtering-2", subgroup = "coolant", energy_required = 5, --4 enabled = false, @@ -65,7 +65,7 @@ data:extend({ { type = "recipe", name = "coolant-used-filtration-2", - category = "filtering-2", + category = "filtering-3", subgroup = "coolant", energy_required = 3.5, --4 enabled = false, diff --git a/angelssmelting/prototypes/technology/smelting-alloy-steel.lua b/angelssmelting/prototypes/technology/smelting-alloy-steel.lua index 8fcd79e5f..2bed603f1 100644 --- a/angelssmelting/prototypes/technology/smelting-alloy-steel.lua +++ b/angelssmelting/prototypes/technology/smelting-alloy-steel.lua @@ -40,6 +40,7 @@ data:extend({ icon_mipmaps = 4, prerequisites = { --"angels-metallurgy-2", + "strand-casting-1", "angels-steel-smelting-1", "angels-silicon-smelting-1", "angels-manganese-smelting-1", diff --git a/angelssmelting/prototypes/technology/smelting-cobalt.lua b/angelssmelting/prototypes/technology/smelting-cobalt.lua index 3977d020f..4629b74bd 100644 --- a/angelssmelting/prototypes/technology/smelting-cobalt.lua +++ b/angelssmelting/prototypes/technology/smelting-cobalt.lua @@ -123,8 +123,8 @@ data:extend({ icon_size = 256, icon_mipmaps = 4, prerequisites = { - "angels-metallurgy-5", - "ore-processing-3", + --"angels-metallurgy-5", + "ore-processing-4", "angels-cobalt-smelting-2", "angels-sulfur-processing-1", "chlorine-processing-2", diff --git a/angelssmelting/prototypes/technology/smelting-glass.lua b/angelssmelting/prototypes/technology/smelting-glass.lua index e1369b5ce..4c4fad24c 100644 --- a/angelssmelting/prototypes/technology/smelting-glass.lua +++ b/angelssmelting/prototypes/technology/smelting-glass.lua @@ -45,6 +45,7 @@ data:extend({ "angels-glass-smelting-1", "angels-stone-smelting-2", "angels-lead-smelting-2", -- need this for the lead oxide processing + "strand-casting-2", }, effects = { { diff --git a/angelssmelting/prototypes/technology/smelting-support.lua b/angelssmelting/prototypes/technology/smelting-support.lua index 0bf59aa14..46f047a48 100644 --- a/angelssmelting/prototypes/technology/smelting-support.lua +++ b/angelssmelting/prototypes/technology/smelting-support.lua @@ -636,10 +636,9 @@ data:extend({ icon = "__angelssmelting__/graphics/technology/coolant-tech.png", icon_size = 128, prerequisites = { - "angels-metallurgy-3", "angels-cooling", "angels-oil-processing", - "slag-processing-1", + "slag-processing-2", }, effects = { { @@ -680,9 +679,8 @@ data:extend({ icon = "__angelssmelting__/graphics/technology/coolant-tech.png", icon_size = 128, prerequisites = { - "angels-metallurgy-4", "angels-coolant-1", - "slag-processing-2", + "slag-processing-3", }, effects = { {