From 9087697295da0d6d400d61a033c181f346dff584 Mon Sep 17 00:00:00 2001 From: lovely_santa Date: Fri, 22 Dec 2023 19:37:46 +0100 Subject: [PATCH] Version 1.1.3 (#953) --- .gitignore | 5 +- angelsaddons-cab/changelog.txt | 5 + angelsaddons-cab/info.json | 2 +- .../prototypes/entities/equipment.lua | 16 +- angelsbioprocessing/changelog.txt | 20 + angelsbioprocessing/control.lua | 28 + angelsbioprocessing/data.lua | 5 +- .../icons/alien-artifact-blue-small.png | Bin 0 -> 1047 bytes .../icons/alien-artifact-green-small.png | Bin 0 -> 1008 bytes .../icons/alien-artifact-orange-small.png | Bin 0 -> 1025 bytes .../icons/alien-artifact-purple-small.png | Bin 0 -> 1035 bytes .../icons/alien-artifact-red-small.png | Bin 0 -> 1025 bytes .../graphics/icons/alien-artifact-small.png | Bin 0 -> 1050 bytes .../icons/alien-artifact-yellow-small.png | Bin 0 -> 1011 bytes angelsbioprocessing/info.json | 7 +- .../locale/en/bio-processing.cfg | 32 +- .../prototypes/bio-processing-override.lua | 32 +- .../prototypes/bio-processing-triggers.lua | 6 + .../prototypes/buildings/butchery.lua | 1 + .../prototypes/buildings/composter.lua | 1 + .../prototypes/buildings/hatchery.lua | 1 + .../bio-processing-override-angel.lua | 5 +- .../bio-processing-override-arboretum.lua | 14 +- ... => bio-processing-override-artifacts.lua} | 518 ++++++++++++++++- .../overrides/bio-processing-override-bob.lua | 31 +- .../bio-processing-override-bobgreenhouse.lua | 10 +- ...io-processing-override-special-vanilla.lua | 7 +- .../prototypes/recipes/bio-module.lua | 15 + .../recipes/bio-processing-algae.lua | 4 +- .../recipes/bio-processing-alien.lua | 18 - .../recipes/bio-processing-entity-angels.lua | 80 +-- .../recipes/bio-processing-paper.lua | 63 ++- .../recipes/bio-refugium-puffer.lua | 2 +- .../recipes/crop-farming-gardens.lua | 18 + .../technology/bio-processing-algae.lua | 8 +- .../technology/bio-processing-alien.lua | 52 +- .../technology/bio-processing-artifacts.lua | 300 ++++++++++ .../technology/bio-processing-wood-paper.lua | 57 +- .../prototypes/technology/bio-refugium.lua | 6 +- .../prototypes/technology/crop-farming.lua | 79 ++- angelsdev-unit-test/unit-tests.lua | 1 + .../unit-tests/unit-test-004.lua | 10 + .../unit-tests/unit-test-006.lua | 24 +- .../unit-tests/unit-test-010.lua | 25 +- .../unit-tests/unit-test-012.lua | 112 ++++ angelsexploration/changelog.txt | 3 +- angelsexploration/data.lua | 10 + angelsexploration/info.json | 2 +- angelsexploration/locale/en/exploration.cfg | 23 + .../prototypes/entities/biter-builder.lua | 11 +- .../prototypes/entities/biter-definitions.lua | 100 +++- .../prototypes/exploration-debug.lua | 1 - .../prototypes/exploration-override.lua | 1 + .../overrides/artifacts-updates.lua | 524 ++++++++++++++++++ .../prototypes/overrides/biter-updates.lua | 73 ++- .../overrides/gathering-turret-updates.lua | 30 +- .../technology/exploration-technology.lua | 1 + angelsexploration/settings-updates.lua | 1 + angelsindustries/changelog.txt | 8 + .../graphics/entity/cargo-robot/Thumbs.db | Bin 8704 -> 0 bytes angelsindustries/info.json | 4 +- angelsindustries/locale/en/nuclear-power.cfg | 2 +- .../prototypes/angels-industries-triggers.lua | 4 + .../ordening/angels-intermediates.lua | 1 + .../components-base-recipe-update.lua | 8 +- .../overrides/components-block-update.lua | 49 +- .../components-bobs-assemblers-update.lua | 4 +- .../components-bobs-radar-update.lua | 21 +- .../components-bobs-recipe-update.lua | 31 +- .../overrides/global-tech-base-cores.lua | 5 +- .../overrides/global-tech-base-packs.lua | 6 +- .../overrides/global-tech-bobs-cores.lua | 12 +- .../overrides/global-tech-bobs-packs.lua | 19 +- .../overrides/overhaul-nuclear-power.lua | 10 +- .../components-batteries-technology.lua | 4 +- .../components-electronics-technology.lua | 2 + angelsinfiniteores/changelog.txt | 5 + .../graphics/entity/ores/Thumbs.db | Bin 84992 -> 0 bytes angelsinfiniteores/info.json | 2 +- .../prototypes/generation/bob-options.lua | 9 +- .../prototypes/generation/bob-ore-inf.lua | 28 +- angelspetrochem/changelog.txt | 10 + angelspetrochem/data.lua | 4 +- angelspetrochem/info.json | 5 +- angelspetrochem/locale/en/petrochem.cfg | 8 +- .../migrations/angelspetrochem_0.9.25.json | 6 + .../migrations/angelspetrochem_0.9.25.lua | 7 + .../prototypes/global-override/bobplates.lua | 67 +-- .../prototypes/global-override/bobrevamp.lua | 32 +- .../prototypes/global-override/bobwarfare.lua | 20 +- .../prototypes/override/angelspetrochem.lua | 48 +- .../prototypes/override/angelsrefining.lua | 4 - .../prototypes/override/angelssmelting.lua | 2 + .../prototypes/override/base-game.lua | 6 +- angelspetrochem/prototypes/override/bob.lua | 7 + .../prototypes/override/bobelectronics.lua | 58 ++ .../prototypes/override/boblogistics.lua | 2 + .../prototypes/override/bobplates.lua | 39 +- .../prototypes/override/bobrevamp.lua | 3 +- .../prototypes/petrochem-override.lua | 1 + .../prototypes/recipes/petrochem-basics.lua | 18 +- .../prototypes/recipes/petrochem-solids.lua | 16 +- .../technology/petrochem-basic-chemistry.lua | 91 +-- .../technology/petrochem-petro-chemistry.lua | 131 ++--- .../technology/petrochem-solids.lua | 5 +- .../technology/petrochem-weaponary.lua | 12 + angelsrefining/changelog.txt | 12 + angelsrefining/control.lua | 49 +- angelsrefining/data.lua | 1 + angelsrefining/graphics/entity/ores/Thumbs.db | Bin 84992 -> 0 bytes .../graphics/entity/sea-pump/empty.png | Bin 0 -> 179 bytes .../graphics/entity/sea-pump/sea-pump.png | Bin 0 -> 95534 bytes .../graphics/icons/sea-pump-ico.png | Bin 0 -> 3357 bytes angelsrefining/graphics/technology/Thumbs.db | Bin 11776 -> 0 bytes angelsrefining/info.json | 3 +- angelsrefining/locale/en/water-treatment.cfg | 7 + .../migrations/angelsrefining_0.11.17.lua | 4 - .../migrations/angelsrefining_0.11.20.lua | 9 - .../migrations/angelsrefining_0.12.5.json | 10 + .../prototypes/buildings/barreling-pump.lua | 1 + .../buildings/electro-whinning-cell.lua | 116 +--- .../buildings/ore-leaching-plant.lua | 4 +- .../prototypes/buildings/sea-pump.lua | 348 ++++++++++++ .../prototypes/override-functions.lua | 6 - .../override/refining-override-bobgems.lua | 2 +- .../override/refining-override-bobplates.lua | 63 +-- .../override/refining-override-sorting.lua | 18 +- .../refining-override-water-treatment.lua | 4 +- .../prototypes/recipe-builder-fallbacks.lua | 45 +- angelsrefining/prototypes/recipe-builder.lua | 4 +- .../crystal-processing-mix.lua | 10 +- .../recipes/refining-dynamic/gems.lua | 24 +- .../recipes/refining-dynamic/slag-stone.lua | 4 +- .../recipes/refining-entity-angels.lua | 73 +-- .../prototypes/recipes/refining-entity.lua | 21 +- .../prototypes/recipes/refining-static.lua | 14 +- .../prototypes/refining-category.lua | 1 + .../prototypes/refining-override.lua | 2 +- .../technology/refining-technology.lua | 65 +-- .../technology/water-treatment-technology.lua | 23 +- angelsrefining/settings-updates.lua | 7 + angelsrefining/src/mod-config.lua | 23 + angelsrefining/src/sea-pump.lua | 228 ++++++++ angelssmelting/changelog.txt | 11 + angelssmelting/data.lua | 7 +- angelssmelting/info.json | 4 +- angelssmelting/locale/en/smelting.cfg | 7 + .../prototypes/buildings/blast-furnace.lua | 20 +- .../smelting-override-alloy-bronze.lua | 10 +- .../smelting-override-alloy-solder.lua | 2 + .../override/smelting-override-copper.lua | 2 +- .../override/smelting-override-glass.lua | 26 +- .../override/smelting-override-gold.lua | 4 +- .../override/smelting-override-platinum.lua | 2 +- .../smelting-override-productivity.lua | 5 + .../override/smelting-override-silver.lua | 2 +- .../override/smelting-override-tin.lua | 24 +- .../prototypes/recipes/smelting-chrome.lua | 12 +- .../prototypes/recipes/smelting-glass.lua | 64 ++- .../prototypes/recipes/smelting-platinum.lua | 14 +- .../prototypes/recipes/smelting-titanium.lua | 2 +- .../prototypes/recipes/smelting-tungsten.lua | 2 +- .../technology/smelting-aluminium.lua | 2 +- .../prototypes/technology/smelting-chrome.lua | 32 +- .../prototypes/technology/smelting-glass.lua | 10 +- .../prototypes/technology/smelting-gold.lua | 2 +- .../technology/smelting-platinum.lua | 30 +- .../prototypes/technology/smelting-silver.lua | 2 +- .../technology/smelting-titanium.lua | 2 +- 169 files changed, 3593 insertions(+), 1144 deletions(-) create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-blue-small.png create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-green-small.png create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-orange-small.png create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-purple-small.png create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-red-small.png create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-small.png create mode 100644 angelsbioprocessing/graphics/icons/alien-artifact-yellow-small.png rename angelsbioprocessing/prototypes/overrides/{bio-processing-override-bob-artifacts.lua => bio-processing-override-artifacts.lua} (53%) create mode 100644 angelsbioprocessing/prototypes/technology/bio-processing-artifacts.lua create mode 100644 angelsdev-unit-test/unit-tests/unit-test-012.lua create mode 100644 angelsexploration/prototypes/overrides/artifacts-updates.lua delete mode 100644 angelsindustries/graphics/entity/cargo-robot/Thumbs.db delete mode 100644 angelsinfiniteores/graphics/entity/ores/Thumbs.db create mode 100644 angelspetrochem/migrations/angelspetrochem_0.9.25.json create mode 100644 angelspetrochem/migrations/angelspetrochem_0.9.25.lua create mode 100644 angelspetrochem/prototypes/override/bob.lua delete mode 100644 angelsrefining/graphics/entity/ores/Thumbs.db create mode 100644 angelsrefining/graphics/entity/sea-pump/empty.png create mode 100644 angelsrefining/graphics/entity/sea-pump/sea-pump.png create mode 100644 angelsrefining/graphics/icons/sea-pump-ico.png delete mode 100644 angelsrefining/graphics/technology/Thumbs.db create mode 100644 angelsrefining/migrations/angelsrefining_0.12.5.json create mode 100644 angelsrefining/prototypes/buildings/sea-pump.lua create mode 100644 angelsrefining/src/mod-config.lua create mode 100644 angelsrefining/src/sea-pump.lua diff --git a/.gitignore b/.gitignore index a9218785c..a02478fa0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,7 @@ __pycache__/ # Unit test files angelsdev-unit-test/log/ -run_unit_tests_PWJ.bat \ No newline at end of file +run_unit_tests_PWJ.bat + +# Windows explorer cache +Thumbs.db \ No newline at end of file diff --git a/angelsaddons-cab/changelog.txt b/angelsaddons-cab/changelog.txt index 3fefb91b9..2571231a6 100644 --- a/angelsaddons-cab/changelog.txt +++ b/angelsaddons-cab/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 0.2.9 +Date: 22.12.2023 + Changes: + - Cleanup of prototype data +--------------------------------------------------------------------------------------------------- Version: 0.2.8 Date: 19.12.2021 Changes: diff --git a/angelsaddons-cab/info.json b/angelsaddons-cab/info.json index cb28483da..a926d3dda 100644 --- a/angelsaddons-cab/info.json +++ b/angelsaddons-cab/info.json @@ -1,6 +1,6 @@ { "name": "angelsaddons-cab", - "version": "0.2.8", + "version": "0.2.9", "factorio_version": "1.1", "title": "Angel's Addons - C.A.B.", "author": "Arch666Angel, lovely_santa", diff --git a/angelsaddons-cab/prototypes/entities/equipment.lua b/angelsaddons-cab/prototypes/entities/equipment.lua index b8651223d..4fa3f12a1 100644 --- a/angelsaddons-cab/prototypes/entities/equipment.lua +++ b/angelsaddons-cab/prototypes/entities/equipment.lua @@ -92,19 +92,6 @@ data:extend({ --output_flow_limit = "0W", }, energy_input = "0W", - tint = { r = 1, g = 1, b = 1, a = 0 }, - desaturation_params = { - smoothstep_min = 0.1, - smoothstep_max = 0.7, - minimum = 0.3, - maximum = 1.0, - }, - light_params = { - smoothstep_min = 0.1, - smoothstep_max = 0.7, - minimum = 0.666, - maximum = 1.0, - }, categories = { "angels-cab" }, darkness_to_turn_on = 0, color_lookup = { { 0.5, "__core__/graphics/color_luts/nightvision.png" } }, @@ -119,7 +106,6 @@ data:extend({ icon = "__angelsaddons-cab__/graphics/icons/cab-icon.png", icon_size = 32, flags = { "not-blueprintable", "not-deconstructable", "not-on-map", "hide-alt-info" }, - enable_gui = false, allow_copy_paste = false, --minable = {mining_time = 1, result = energyInterfaceItem.name}, max_health = 50, @@ -139,7 +125,7 @@ data:extend({ render_no_power_icon = false, }, energy_production = "0kW", - energy_consumption = "0kW", + energy_usage = "0kW", picture = { filename = "__core__/graphics/empty.png", priority = "low", diff --git a/angelsbioprocessing/changelog.txt b/angelsbioprocessing/changelog.txt index d2ea1d460..2a8b11b3a 100644 --- a/angelsbioprocessing/changelog.txt +++ b/angelsbioprocessing/changelog.txt @@ -1,4 +1,24 @@ --------------------------------------------------------------------------------------------------- +Version: 0.7.25 +Date: 22.12.2023 + Changes: + - Added support for alien artifacts outside of bob enemies + - Compatibility with Bob's changes (911) + - Recipes that consume Gardens will now only buffer enough ingredients for 1 craft (918) + - Adjusted techs and added a new recipe (Sodium hypochlorite decomposition) to make Paper 2 viable when it is unlocked (922) + - Rebalanced paper and pulp recipes to make each tier feel like a significant upgrade (923) + - Made wood production available earlier (932) + - Recipe changes for Tree seed generators, Arboretum, and Composter + - Tech tree changes + - Added custom error message for when trying to insert invalid items into butchery, composter, or hatchery (933) + - Reworked recipes for Bob's circuit boards (936) + - Removed recipe paper to wooden boards + - Modified phenolic board recipe to require paper + liquid resin + - Prevent Bob's mods from enabling Agriculture Modules for non bio recipes (937) + - Remove unnecessary prerequisites from Alien Farming (943) + Bugfixes: + - Fixed Gaseous atmosphere puffing recipe missing product Acid gas (942) +--------------------------------------------------------------------------------------------------- Version: 0.7.24 Date: 23.02.2023 Bugfixes: diff --git a/angelsbioprocessing/control.lua b/angelsbioprocessing/control.lua index 5bca2e28b..7caf92c16 100644 --- a/angelsbioprocessing/control.lua +++ b/angelsbioprocessing/control.lua @@ -213,3 +213,31 @@ script.on_event(defines.events.on_player_main_inventory_changed, function(event) end end end) + +script.on_event(defines.events.on_entity_died, function(event) + local loot = event.loot + local killing_force = event.force + if (not killing_force) or loot.is_empty() then + return + end + loot = loot.get_contents() + for loot_item_name, loot_technology_to_research in pairs({ + ["small-alien-artifact"] = "angels-alien-artifact", + ["small-alien-artifact-red"] = "angels-alien-artifact-red", + ["small-alien-artifact-yellow"] = "angels-alien-artifact-yellow", + ["small-alien-artifact-orange"] = "angels-alien-artifact-orange", + ["small-alien-artifact-blue"] = "angels-alien-artifact-blue", + ["small-alien-artifact-purple"] = "angels-alien-artifact-purple", + ["small-alien-artifact-green"] = "angels-alien-artifact-green", + }) do + if loot[loot_item_name] then + local technology = killing_force.technologies[loot_technology_to_research] + if technology then + technology.researched = true + end + end + end +end, { + { mode = "or", filter = "type", type = "unit" }, + { mode = "or", filter = "type", type = "unit-spawner" }, +}) diff --git a/angelsbioprocessing/data.lua b/angelsbioprocessing/data.lua index ad53eac12..b998444c4 100644 --- a/angelsbioprocessing/data.lua +++ b/angelsbioprocessing/data.lua @@ -57,9 +57,11 @@ angelsmods.triggers.bio_plastic = angelsmods.triggers.bio_plastic or (angelsmods.trigger.plastic and (angelsmods.triggers.bio_resin or angelsmods.triggers.bio_rubber)) or false -angelsmods.triggers.paper = not angelsmods.functions.is_special_vanilla() +angelsmods.triggers.paper = (not angelsmods.functions.is_special_vanilla()) + or (mods["bobelectronics"] and true or false) if angelsmods.triggers.paper then angelsmods.trigger.water_red_waste = true + angelsmods.trigger.early_chemical_furnace = true end angelsmods.triggers.crystals_full = (not angelsmods.functions.is_special_vanilla()) or (mods["bobmodules"] and true or false) @@ -125,6 +127,7 @@ require("prototypes.recipes.bio-refugium-hogger") require("prototypes.recipes.bio-module") require("prototypes.technology.bio-processing-algae") +require("prototypes.technology.bio-processing-artifacts") require("prototypes.technology.bio-processing-wood-paper") require("prototypes.technology.bio-processing-alien") require("prototypes.technology.crop-farming") diff --git a/angelsbioprocessing/graphics/icons/alien-artifact-blue-small.png b/angelsbioprocessing/graphics/icons/alien-artifact-blue-small.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d3dea530a2aabd8729c5aa2e3367ed0553320f GIT binary patch literal 1047 zcmV+y1nB#TP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1FT6zK~z{r?UhY$ z8&wpB-}xSU#xsfS5U1`(nzW&!2}BB|LP8K!1k0{L>Y6PQ66yj)`~f8R3EjdHBqZ2S zp&(jBNlPd+Q5xbTIG#H8IOF-cGjoS)F-x3D*7(_6Y3{v8?>*-|XE0*Ki2prYww?;v zm=_9KO_HUe1YY1{N|KoP#5vlF;BBPYu@iAB0gAD}7t0qk)4XKV=iYtQtX)|&rc&8@ zVn1zef4SN}+-SQ_%kEge1qilJB;>>bgKrC9$MoK~d?g;*#6B;i;h zNEEd095lZ8yk~7T4-VG4=>L%`Lde!*QOpItGI6y$`_hM>sM^d*5ZJ|p#9ZKRaZwU; zr1uxNf+p~Maj8_kwwxx`U4cuzerG+%LJZ|Z0?gX=(xt@@ZmIh8%HY+Z+vX@IVxc~P z8`HpHY{GK`4E7|sG*KF#oAKR^9|&}ZI9o{;=0D-HbtnVF8RmIYH!gleDTVLtgXd+` zbrG}bF6>?h%e4+(oS8*G@DK()aKiXomD(HE4E>Cmg&9h&0JT__%IDr(N;s(=x-FC{ zbrkp*oo*99?eeS%WW2U?87pslcztdXsZ@gR9zq*?{$`<2E@feck}E(EHAy#T=VPzO z(rY5_?E?ubEw7;EYoOve>~|?1>{8r%nd0)8%x>{WVs)BV6y@J2!^s!GIz<#U#qaMR zihcMYL73`@xFSSR#aDm&_+^jc=N*b~Hz}I-E!l1i7UY|o8 z+MqEVq=orFg(B%FNg^KYM9>Q&s=5r%X@h6N%4aV$Nkon{;DB5KG;*R&-rSx7*Eo_ibyfan$@i%t8$1 zL;?o*F$j%964>kCnC1CZ)u<+=irEXC{lBYcul^bw?cA}g`=52Kwa2#gu+iQ7&daVI z%c+0I#?%c-H>OI0tQ92Io`P5uY0^)VI3})lVEetM+kdtiXU9j37%?IT;2&bXrE6bq REam_J002ovPDHLkV1lW_=#u~d literal 0 HcmV?d00001 diff --git a/angelsbioprocessing/graphics/icons/alien-artifact-green-small.png b/angelsbioprocessing/graphics/icons/alien-artifact-green-small.png new file mode 100644 index 0000000000000000000000000000000000000000..161400572d36d9874e0bf679045a91f5d52ecbb6 GIT binary patch literal 1008 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1BFRMK~z{r?Ul`M z8$}q#pP8NgcAYq1jd2}PqP8k(S}9ZngpdFsgv1H;QdL5Ts+{0|KpYU_#GNZQ1b2EW z6nZEqQlW$ff=S%qI89^M_OAD9W@j0Lk9F)w-0)9Yz0zv;o#*`=j2ScLe-G)~qj3(D zO)*__G^RWd2*|iAIhtHx16lv8kvN)wGoZ$zZ95C5J@aPqIqRIWVouNKex?3Ld}9VH(A1?tJd$q$RHt znMHgfN%|fJGLit}qT`gVEnYE>tHV=*v=NcaHL#p3;u1T9{al20Hvmm3sDtCylD!yL z;~S~PLs^w+-_2tgEq(uj$6?>oW1)RJ5Y_E$;>GEejG&wxNLcfESg}CkFCX7TTdFn`FP*)B zPu#ch+QJ2hf`n`)uuhtnj7i<;yBWw(0o0+oyTF!3TfoROSe^j&RjN&(Mmk6e0y{wq zcl;{enRpe;dI_S}+JY`=4rTv(8O%@ty)VpTIU{)xscskOGy(*+K%@jPlj4iUPgwJI zaNFC$*X?_#?LGojS@>RPs^f~3ExsPq{5et9i0^k*l(C9Df-ktzA+bFj zg6u_})^*?aemSUgHlqe=>7iv9X%We7nWp)S5P~nQr>wJv?wpFf7^zxx8Ob2j9i&+f zSgdc#wtTPoW9?^e-K)!6yw^2{a-_?Mz2Ug-oNkn^o_+?BTy|aO$=$nK+7lN~K76!M zzv{?f>rW^BXEPBXH#F*m%KUtZ2HL1B2MQrm0~QTkQvV2TpmL$;^@0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1C~idK~z{r?UhY$ z8$}q$|1QhOq|*&C zYZ8Tku5FZNZnXH|PAbyyj{_DBL!8J&0_&Bm{n7RE&6j75O;7`UFC?}}P$^en=a*rr z94rihK>|(FikB9$7k1p_u0dk2=7_;C%zr|M?TM`9p)BPxbCuc5?RX$?*zJNU0;)a> zH_jvQ7?^nx`SL{sA%hR1+KuJ;HA5liTtC9%d=9pv zH4EB|GVCT-tbCo-kiY3!f<=4@S6*$h5429n5MPTyQJ3$0p zNsy7ZN0+Pb)*eE%8o=`!u)B?B`v_dfqjDodIkp_b*bZVq#Ja42f(NMU^7* zp*kYJjf69}M{Oz4hiU5QiSWK3r!qB0Gd2xvDpEp-ST9?POekv$ISo-jU>F+IfAy(` zR^y3$XCoyZ4#TwmIghoFXi4l==KW>3o7xv5ORwV z$(4tkgGw8fayVY(KT9*WAN<{Uw6h#oe*5lmEwsz+i_Fj5g9`R4U<;j*0V!co9w z;gJ&)0VWHsBF{enYEN1E@%`P_FTd{jjXO`{co^bDCK7l7=RD>qd(`p1TQ22(nAg)p zHPv1xNcSqG;={eZ|K;81-Osn`-6vanPUHJ3lRo1)_3!xY^SX9+E@NA|W||qQn+jD! vc`Lb;Yk6T${*wKlo5u+|Wy+K(lK}h!@N}9kgz<~e00000NkvXXu0mjf9Qx(Y literal 0 HcmV?d00001 diff --git a/angelsbioprocessing/graphics/icons/alien-artifact-purple-small.png b/angelsbioprocessing/graphics/icons/alien-artifact-purple-small.png new file mode 100644 index 0000000000000000000000000000000000000000..cd18aa1ec7dba7c92b862474d1ba70f7d9268afb GIT binary patch literal 1035 zcmV+m1oZofP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1E5JnK~z{r?Ul`M z8$}q#pP8Lquf3bKlNh^6lO|D8+=3!OB9W>H0fGY(+(0Pe$f**De}Dtx&@=b`35YWi z;(!Prf~u7ul@e&;Hg;$dC-wSky`J5j9Wx=8xZv11;L9J6YsE&RQ}OoPoq*%@uSw6N`D6S0WRyX^*o70f6<(!#Z zBEI(&ohU*OawUn066)Ue^Es002ovPDHLk FV1g_#^UweQ literal 0 HcmV?d00001 diff --git a/angelsbioprocessing/graphics/icons/alien-artifact-red-small.png b/angelsbioprocessing/graphics/icons/alien-artifact-red-small.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3c954dfac4f8bac2cd9490330f63f8ff52b76f GIT binary patch literal 1025 zcmV+c1pfPpP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1C~idK~z{r?UhY$ z+(a11|9%^Ly|$a(?QXM81l<5Zq-lj(K?D+_z<~pB?4<`j1QM5272g0Mz5<9dC*TB9 z3l(svQbM~3wCt8_+GO8fy!Lo(kC_cVve`u9#{Mj8e0b)W|2%KTf&~ly_ekk_DmG1` zEN5-aRAnM3kdg#^9I~M4`r+@4C8^noIF*1)SzWF;dFvV5a&A=CUVU!Kc`-RxCWA)( z&o7&McdLUz`@nVkySe@^{^){EZUvN@Nl2yM(3KRS87*60lXs+uNI$->(?ztysj&^#VyxWR%xdk*Snn zh8&SQ0cRmJq7`4T?X{{;zc+b2s`-ALy7^b+be+kx;GW7_xi!Q1Fyg>)>>?v}nM)R; zECHQ}gI5c%F06nD6qHirRqf3;ip7^#Y-cHTGn2UjO2p9KDVMKGl5~FPQRGYus>pk< z+r_B%7gSjT*?I}M{w~aob(o3@&vS9n%D$H~bSHH)leq#6qLX#Y+GGKPogv_11Qv$k zVEO2KT8QWkfW{uk>sLXF4n%80i`ml|MKw}4Gnp%3>P?pwa_ElX3lSp`a>6+b@v0*C zbmyTs{1B+^1HaZW=nlXVj{YRjMWE*TpKB1u5^q6ntgMI}iyGkKkyTBUuMR`kAsaea ztp;SpWzSgfCLV}LL$+8rU~zJ60Zy4KzzcnLr`@_MYYJmL!9-MI#AB$Ue?%695E)T_ zAPSIywmJx1ACX3|KcPPd5%d4?GMl+=n1w9v4gOlGRPux1O35-22oXeA#M$bR3Q18g z{-X}bwnTb>K4Z<>!{Nu(ey<^B!LcId3g|=;mNhNu#L>>R^UH4^x|70L+m;5di%1Be zq7dCEMk2y)2-{x3yx(N$=KaI=?l1lB;T{d97nsS322suPqJkuG7t&Xk>@ycdKq_M~ zkrEb&S)6GZKz}vokaPZUpZtKyv-NAn|36F?GLRm;3dhR!sLjK1>MvsZJ zG-^-0C&hE6oq7;`{$0EE$-Q>x!Gm7A@pY@~r8|%1)W74m@{U%vY{$_JQ}nr>QB~26 v34)N(rsoZwj9vGK(I`sI7c5w?U=G0FSofekFX?5R00000NkvXXu0mjfiw@?V literal 0 HcmV?d00001 diff --git a/angelsbioprocessing/graphics/icons/alien-artifact-small.png b/angelsbioprocessing/graphics/icons/alien-artifact-small.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef673fe2fc74f9a883ef4febf000818c8089f28 GIT binary patch literal 1050 zcmV+#1m*jQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1FuO$K~z{r?UliA z+f)F?zh^(cBzCgIbj{jj=~6mY)>dNcCZviXH~>OBao{v@LE?b8qDgQ->@Ps#FBnI} zfddENFaZ-<8PIK=1TEE?bzPUHX_F>#9LIjPpYeu|OP!v{@A58w-}}AyK0RZ|kRktj zNHiXbIeAV#mdGgyNmZz%5H38?Q`wKkFJCSyW1p!~`l#=7 zWHWhi+aMwUulc*zzTW@w%W}KCvuv!iRM ztLGI$3oU04Be`*~Bn?F>Xs(0-B#q}5&Vas8F*;vBHW-EF)-j!$dMBsk(osxbVg*t} zrPGPY*^X}@$41d}8sLE$)|Y{|1emWwGzi2)AIVFAT9U$0iiAKZsU%nw)0bEQ83B={ zL}IsF0rxGKJrmSZLH#r|s-tzwhIr6}wB|r8d#Km8(DgfL@mjdL9NV#2fdE3ZgVsi2 zatb2w;DJA#B@qdXr9o8+@X!3@)WZc=ag!vT@ zpRFUwB0SlHl<*-G4$eFXRiN@i1$LW5Qzx;#|M<}#&E@O6yw-|h`VxCbb+k|*$ATs| zZ(q#6@^;;-9MzQ~X_^gq;r_U7!{&DQq*92EhPG4fZXR*2+-=-lS?jFrZTVFZMLm;& z9-^}M&>ulAumbnH>D1(m#N?@-Ys2-d@Cc=_bY0L4gO{TZ?pwQ87I%MNy4P8Ge8XOh zy@G)Rp5nM}*YELF`_cE)`pmC7$-0t~Z13}Wr8N4|oh_?&?U(AUFYdMf`sc~w*SkMi z(aZxm^zZl$^&%Z(;~7m+lPOtcOiobSci;<`*X)|HX>Xf<^4qcPA2MXfkpBSw1?$VF UpZVve*8l(j07*qoM6N<$f{XF}F#rGn literal 0 HcmV?d00001 diff --git a/angelsbioprocessing/graphics/icons/alien-artifact-yellow-small.png b/angelsbioprocessing/graphics/icons/alien-artifact-yellow-small.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7b970da7852c600882a59192fb263098121214 GIT binary patch literal 1011 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGyzyJUqzyT31wzmKP1BgjPK~z{r?UhS! z8&w#FpBazG_SmtVi*s|FDiD>VN<^TQQ3a|Hn<6A6w$LT4*g@H_K&U@}1wR1TvI7>V zn+ntjXpquCp=$2rQm3wC#~wQ~_IPgQgj!74hx=lj0%4Ly4F_}?S7 z$ERX`26<$VU?@VcB_VqrUfsmW7jU+AX|<=FiKj9!CpJEpA$o3-=-Y2{d3K%!bs!Ns zSar6(yIKEvZIg1oNNr;sYbSR$BWE_SFo$w}n)v(Icqcu~C*cSw$A$jXFt%BeT;I1V zM|}D9O+Me=;_>efsIG2xHxX!$r*d-g+4Cene2-5j#<}4&(D0CqLvesWODgZWMB}Z1 z8sJj)1zydU_(6DUtgh2+OLXK+2C@spuD{E*Oqv@$BN$~*3aT!nLzhTO7l|YrSjW1U zsiA7#@a%MJYWpu1gJF!_ePQ(!!u zVt6u(Ygw2zpS~zpU(RwdJx07O(~+(Q`jV(uukd0}A*~l-aAXX(nWUI+Q1yR92}5!w zOL*`D`X^o^(GSNpn3?9SM4VV#rX$@AL{OfYWWFjyV*@cH%fYu5RFMJ#M<_8{d>3(# z*NH{mK$D(F5s8&sOvS>eZJCaAH4qRpqFO@L4`u9zg}HWLX?6sEW#ui+2URv4Wy#A{|NU z6-z|GC7Dh=vP5v&G9Bq^pl)C<-Iaa{hSa7}QL%-pE219^XitnNF>G%S+ZEBM9bh{L z|J-mPRTHxuWZjJHVUpImbD__1)n^v1bh46U^mOe(nB1U z!h63go3|bpskUW0(ltlAxZasDIMU7K%h}ZHM~}>**ho`q9-CNA1IsdKG^$9lg{;-6 z<}G7SAN}aw{mRlLMSIiX*Y37C2Bi)jJqqR hx8EK;di3}g_#0aWeG(U7(f= 0.12.1", - "angelspetrochem >= 0.9.21", + "angelspetrochem >= 0.9.25", "angelssmelting >= 0.6.17", - "? bobenemies >= 1.1.5" + "? bobenemies >= 1.1.5", + "? boblibrary >= 1.2.0" ] } diff --git a/angelsbioprocessing/locale/en/bio-processing.cfg b/angelsbioprocessing/locale/en/bio-processing.cfg index f17ad5e4d..037a1dc03 100644 --- a/angelsbioprocessing/locale/en/bio-processing.cfg +++ b/angelsbioprocessing/locale/en/bio-processing.cfg @@ -129,12 +129,26 @@ alien-pre-artifact-purple=Purple alien pre-artifact alien-pre-artifact-red=Red alien pre-artifact alien-pre-artifact-yellow=Yellow alien pre-artifact +small-alien-artifact=Small alien artifact +small-alien-artifact-red=Small red alien artifact +small-alien-artifact-orange=Small orange alien artifact +small-alien-artifact-yellow=Small yellow alien artifact +small-alien-artifact-green=Small green alien artifact +small-alien-artifact-blue=Small blue alien artifact +small-alien-artifact-purple=Small purple alien artifact + +alien-artifact=Alien artifact +alien-artifact-red=Red alien artifact +alien-artifact-orange=Orange alien artifact +alien-artifact-yellow=Yellow alien artifact +alien-artifact-green=Green alien artifact +alien-artifact-blue=Blue alien artifact +alien-artifact-purple=Purple alien artifact + alien-egg-red=Red alien egg alien-egg-green=Green alien egg alien-egg-blue=Blue alien egg -small-alien-artifact=Small alien artifact - temperate-tree=Temperate tree swamp-tree=Swamp tree desert-tree=Desert tree @@ -336,6 +350,8 @@ angels-bio-yield-module=A module that increases productivity, but only usable fo angels-bio-yield-module-2=A module that increases productivity, but only usable for agricultural processes. angels-bio-yield-module-3=A module that increases productivity, but only usable for agricultural processes. +alien-artifact-tool=Kill alien enemies to obtain these remnants to learn to understanding these native creatures better. + [fluid-name] alien-spores=Alien spores alien-goo=Alien goo @@ -373,10 +389,6 @@ paste-from-sodium-hydroxide=Paste from sodium hydroxide paste-from-gas-chlor-methane=Paste from chloromethane gas cellulose-fiber-raw-wood=Cellulose fiber from raw wood -wood-from-cellulose=Wood from cellulose and paste -wood-from-cellulose-resin=Wood from cellulose and resin -wood-pellets=Wood pellets -wood-bricks=Wood bricks gas-carbon-dioxide-from-wood=Carbon dioxide gas from wood gas-methanol-from-wood=Methanol gas from wood sulfite-pulping=Sulfite pulping @@ -387,6 +399,7 @@ kraft-causting=Kraft process causting paper-bleaching-1=Paper bleaching 1 paper-bleaching-2=Paper bleaching 2 paper-bleaching-3=Paper bleaching 3 +solid-sodium-hypochlorite-decomposition=__ITEM__solid-sodium-hypochlorite__ decomposition tree-arboretum-0=Rare tree cultivation temperate-tree-arboretum-1=Temperate tree cultivation @@ -551,6 +564,7 @@ bio-processing-crystal-shard=Crystal shard processing bio-processing-crystal-full=Crystal processing bio-processing-paste=Paste processing +angels-composting=Composting gardens=Garden processing angels-garden-mutations=Garden mutations bio-farm=Farming @@ -596,6 +610,7 @@ bio-processing-crystal-shard=Shards of crystals made from a combination of organ bio-processing-crystal-full=Crystals made from a combination of organic and inorganic material. bio-processing-paste=A paste from cellulose can act as growth medium for microbial cultures. +angels-composting=Recycling of left-over organic materials gardens=Allows you to extract seeds and plant-life samples from gardens growing on this alien planet. angels-garden-mutations=Artificial mutation of gardens via radioactive material. bio-farm=Basic technology for growing and processing crops. @@ -638,3 +653,8 @@ angels-bio-tile-pollution-absorbtion-multiplier=Biologically active tile polluti [mod-setting-description] angels-bio-tile-pollution-absorbtion-multiplier=Increases the pollution absorption to reduce the pollution cloud in your base. + +[cant_insert] +angels-butchery-limitation=__1__ cannot be butchered. +angels-composter-limitation=__1__ cannot be composted. +angels-hatchery-limitation=__1__ cannot be incubated. diff --git a/angelsbioprocessing/prototypes/bio-processing-override.lua b/angelsbioprocessing/prototypes/bio-processing-override.lua index e9ba20c43..70a090ca2 100644 --- a/angelsbioprocessing/prototypes/bio-processing-override.lua +++ b/angelsbioprocessing/prototypes/bio-processing-override.lua @@ -2,6 +2,7 @@ require("prototypes.overrides.bio-processing-override-special-vanilla") --UPDATE BUILDING RECIPES require("prototypes.recipes.bio-processing-entity-angels") --UPDATE BIO PRODUCT RECIPES +require("prototypes.overrides.bio-processing-override-artifacts") require("prototypes.overrides.bio-processing-override-arboretum") require("prototypes.overrides.bio-processing-override-paste") -- UPDATE OTHER STUFF @@ -57,7 +58,7 @@ if angelsmods.trigger.smelting_products["glass"].plate then }, }, }) - OV.remove_prereq("bio-processing-alien-1", "plastics") + OV.remove_prereq("bio-processing-alien-2", "plastics") end if angelsmods.functions.is_special_vanilla() then @@ -104,35 +105,6 @@ if data.raw.tile["frozen-snow-0"] then alien_biomes.list_tiles(alien_biomes.exclude_tags(alien_biomes.all_tiles(), { "frozen", "volcanic" })) end ---ADDED RECIPES BOBS -if bobmods then - if bobmods.electronics and angelsmods.triggers.paper then - data:extend({ - --CIRCUIT BOARD - { - type = "recipe", - name = "wooden-board-paper", - category = "advanced-crafting", - subgroup = "bio-paper", - enabled = false, - energy_required = 4, - ingredients = { - { type = "item", name = "solid-paper", amount = 2 }, - }, - results = { - { type = "item", name = "wooden-board", amount = 1 }, - }, - icon_size = 32, - order = "m", - }, - }) - OV.add_unlock("bio-paper-1", "wooden-board-paper") - end -end - ---ADDED RECIPES FOR BOBS ARTIFACTS -require("prototypes.overrides.bio-processing-override-bob-artifacts") - --OTHER BOB OVERRIDES require("prototypes.overrides.bio-processing-override-bob") require("prototypes.overrides.bio-processing-override-bobmodules") diff --git a/angelsbioprocessing/prototypes/bio-processing-triggers.lua b/angelsbioprocessing/prototypes/bio-processing-triggers.lua index c55eb7e08..71e13558e 100644 --- a/angelsbioprocessing/prototypes/bio-processing-triggers.lua +++ b/angelsbioprocessing/prototypes/bio-processing-triggers.lua @@ -2,6 +2,9 @@ if angelsmods.triggers.bio_pastes["cobalt"] then angelsmods.trigger.ores["cobalt"] = true + if mods["bobores"] then + bobmods.ores.cobalt.enabled = true + end angelsmods.trigger.smelting_products["cobalt"].powder = true end @@ -39,3 +42,6 @@ if angelsmods.triggers.bio_pastes["zinc"] then angelsmods.trigger.ores["zinc"] = true angelsmods.trigger.smelting_products["zinc"].powder = true end + +angelsmods.trigger.gas_acetone = true +angelsmods.trigger.gas_urea = true diff --git a/angelsbioprocessing/prototypes/buildings/butchery.lua b/angelsbioprocessing/prototypes/buildings/butchery.lua index a314c9aa2..d4ddabfc8 100644 --- a/angelsbioprocessing/prototypes/buildings/butchery.lua +++ b/angelsbioprocessing/prototypes/buildings/butchery.lua @@ -23,6 +23,7 @@ data:extend({ selection_box = { { -1.5, -1.5 }, { 1.5, 1.5 } }, drawing_box = { { -1.5, -1.75 }, { 1.5, 1.5 } }, crafting_categories = { "bio-butchery" }, + cant_insert_at_source_message_key = "cant_insert.angels-butchery-limitation", module_specification = { module_slots = 2, }, diff --git a/angelsbioprocessing/prototypes/buildings/composter.lua b/angelsbioprocessing/prototypes/buildings/composter.lua index 48071caa4..caec84e92 100644 --- a/angelsbioprocessing/prototypes/buildings/composter.lua +++ b/angelsbioprocessing/prototypes/buildings/composter.lua @@ -22,6 +22,7 @@ data:extend({ collision_box = { { -1.4, -1.4 }, { 1.4, 1.4 } }, selection_box = { { -1.5, -1.5 }, { 1.5, 1.5 } }, crafting_categories = { "angels-bio-void" }, + cant_insert_at_source_message_key = "cant_insert.angels-composter-limitation", module_specification = { module_slots = 2, }, diff --git a/angelsbioprocessing/prototypes/buildings/hatchery.lua b/angelsbioprocessing/prototypes/buildings/hatchery.lua index 2b88b8ccc..5c79b71ad 100644 --- a/angelsbioprocessing/prototypes/buildings/hatchery.lua +++ b/angelsbioprocessing/prototypes/buildings/hatchery.lua @@ -23,6 +23,7 @@ data:extend({ selection_box = { { -1.5, -1.5 }, { 1.5, 1.5 } }, drawing_box = { { -1.5, -1.75 }, { 1.5, 1.5 } }, crafting_categories = { "bio-hatchery" }, + cant_insert_at_source_message_key = "cant_insert.angels-hatchery-limitation", module_specification = { module_slots = 2, }, diff --git a/angelsbioprocessing/prototypes/overrides/bio-processing-override-angel.lua b/angelsbioprocessing/prototypes/overrides/bio-processing-override-angel.lua index 30c389104..04666b9d5 100644 --- a/angelsbioprocessing/prototypes/overrides/bio-processing-override-angel.lua +++ b/angelsbioprocessing/prototypes/overrides/bio-processing-override-angel.lua @@ -1,8 +1,8 @@ local OV = angelsmods.functions.OV -if angelsmods.trigger.smelting_products["glass"].board then --only change it if glass is actually active +if angelsmods.trigger.smelting_products["glass"].mixture then --only change it if glass is actually active OV.modify_input("bio-tile", { type = "item", name = "solid-glass-mixture", amount = 1 }) - OV.add_prereq("bio-farm-2", "angels-glass-smelting-1") + OV.add_prereq("gardens-3", "angels-glass-smelting-1") end if angelsmods.industries and angelsmods.industries.overhaul then @@ -38,7 +38,6 @@ else OV.modify_input("bio-tile", { type = "item", name = "steel-plate", amount = 1 }) OV.disable_recipe("algae-brown-burning") end -OV.add_unlock("bio-farm-2", "bio-tile") -- FARMING TOOLTIPS for _, item_name in pairs({ "solid-beans", "solid-corn", "solid-leafs", "solid-nuts", "solid-pips", "solid-fruit" }) do diff --git a/angelsbioprocessing/prototypes/overrides/bio-processing-override-arboretum.lua b/angelsbioprocessing/prototypes/overrides/bio-processing-override-arboretum.lua index 45084bea9..e1e0f2063 100644 --- a/angelsbioprocessing/prototypes/overrides/bio-processing-override-arboretum.lua +++ b/angelsbioprocessing/prototypes/overrides/bio-processing-override-arboretum.lua @@ -2,7 +2,7 @@ local OV = angelsmods.functions.OV if angelsmods.triggers.bio_rubber then OV.remove_prereq("rubbers", "rubber") - OV.add_prereq("rubbers", "angels-oil-processing") + OV.add_prereq("rubbers", "automation-2") OV.add_prereq("rubber", "rubbers") OV.remove_science_pack("rubbers", "chemical-science-pack") else @@ -49,6 +49,7 @@ else "bio-arboretum-temperate-2", "bio-arboretum-temperate-3", }) + OV.remove_prereq("bio-wood-processing-2", "bio-farm-1") end if angelsmods.triggers.bio_plastic then @@ -76,6 +77,11 @@ else end if angelsmods.triggers.paper then + OV.add_unlock("sodium-processing-1", "solid-sodium-hypochlorite-decomposition") + OV.remove_unlock("chlorine-processing-3", "solid-salt-separation") + OV.add_unlock("sodium-processing-1", "solid-salt-separation") + OV.add_prereq("sodium-processing-1", "angels-metallurgy-2") + OV.add_prereq("sodium-processing-1", "bio-paper-2") else OV.hide_recipe({ "solid-wood-pulp", @@ -90,6 +96,7 @@ else "kraft-recovery", "kraft-causting", "solid-alginic-acid", + "solid-sodium-hypochlorite-decomposition", }) angelsmods.functions.add_flag({ "pulping-liquor", @@ -113,7 +120,8 @@ else ingredients = { { name = "paste-cellulose", amount = "solid-wood-pulp" } }, }, }) - --rereq clean-out - OV.remove_prereq("gardens-2", "bio-paper-1") + --prereq clean-out + OV.remove_prereq("gardens-3", "bio-paper-1") + OV.add_prereq("gardens-3", "bio-processing-paste") OV.remove_unlock("bio-processing-brown", "solid-alginic-acid") end diff --git a/angelsbioprocessing/prototypes/overrides/bio-processing-override-bob-artifacts.lua b/angelsbioprocessing/prototypes/overrides/bio-processing-override-artifacts.lua similarity index 53% rename from angelsbioprocessing/prototypes/overrides/bio-processing-override-bob-artifacts.lua rename to angelsbioprocessing/prototypes/overrides/bio-processing-override-artifacts.lua index af6d54592..58d145b28 100644 --- a/angelsbioprocessing/prototypes/overrides/bio-processing-override-bob-artifacts.lua +++ b/angelsbioprocessing/prototypes/overrides/bio-processing-override-artifacts.lua @@ -1,15 +1,14 @@ local OV = angelsmods.functions.OV -local contais_artifacts = false -for color, available in pairs(angelsmods.triggers.artifacts) do - contais_artifacts = contais_artifacts or available or false -end +local contais_artifact_creation = false ------------------------------------------------------------------------------- -- RED ARTIFACTS -------------------------------------------------------------- ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["red"] then if angelsmods.triggers.bio_pastes["copper"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -70,14 +69,85 @@ if angelsmods.triggers.artifacts["red"] then end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-red"] then - if angelsmods.triggers.bio_pastes["copper"] then + if angelsmods.triggers.bio_pastes["copper"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact-red", "bio-processing-alien-small", "a[red]") end angelsmods.functions.move_item("alien-artifact-red", "bio-processing-alien-large", "a[red]") OV.patch_recipes({ { name = "alien-artifact-red-from-basic", subgroup = "bio-processing-alien-large-convert" }, }) + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-red-from-small", enabled = false }, + { name = "alien-artifact-red-from-basic", enabled = false }, + }) + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact-red", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-red-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "a[red]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact-red", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-red.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "a[red]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-red-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact-red", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact-red", amount = 1 }, + }, + icon_size = 32, + order = "a[red]", + }, + { + type = "recipe", + name = "alien-artifact-red-from-basic", + category = "crafting", + subgroup = "bio-processing-alien-large-convert", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "alien-artifact-red", amount = 1 }, + { type = "item", name = "alien-artifact", amount = 5 }, + }, + results = { + { type = "item", name = "alien-artifact-red", amount = 5 }, + }, + icon_size = 32, + order = "a[red]", + }, + }) end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.disable_technology("angels-alien-artifact-red") + end +else + OV.remove_unlock("angels-alien-artifact-red", "alien-artifact-red-from-small") + OV.remove_unlock("angels-alien-artifact-red", "alien-artifact-red-from-basic") + OV.disable_technology("angels-alien-artifact-red") end ------------------------------------------------------------------------------- @@ -85,6 +155,8 @@ end ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["yellow"] then if angelsmods.triggers.bio_pastes["gold"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -145,14 +217,85 @@ if angelsmods.triggers.artifacts["yellow"] then end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-yellow"] then - if angelsmods.triggers.bio_pastes["gold"] then + if angelsmods.triggers.bio_pastes["gold"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact-yellow", "bio-processing-alien-small", "b[yellow]") end angelsmods.functions.move_item("alien-artifact-yellow", "bio-processing-alien-large", "b[yellow]") OV.patch_recipes({ { name = "alien-artifact-yellow-from-basic", subgroup = "bio-processing-alien-large-convert" }, }) + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-yellow-from-small", enabled = false }, + { name = "alien-artifact-yellow-from-basic", enabled = false }, + }) + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact-yellow", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-yellow-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "b[yellow]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact-yellow", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-yellow.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "b[yellow]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-yellow-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact-yellow", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact-yellow", amount = 1 }, + }, + icon_size = 32, + order = "b[yellow]", + }, + { + type = "recipe", + name = "alien-artifact-yellow-from-basic", + category = "crafting", + subgroup = "bio-processing-alien-large-convert", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "alien-artifact-yellow", amount = 1 }, + { type = "item", name = "alien-artifact", amount = 5 }, + }, + results = { + { type = "item", name = "alien-artifact-yellow", amount = 5 }, + }, + icon_size = 32, + order = "b[yellow]", + }, + }) + end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.disable_technology("angels-alien-artifact-yellow") end +else + OV.remove_unlock("angels-alien-artifact-yellow", "alien-artifact-yellow-from-small") + OV.remove_unlock("angels-alien-artifact-yellow", "alien-artifact-yellow-from-basic") + OV.disable_technology("angels-alien-artifact-yellow") end ------------------------------------------------------------------------------- @@ -160,6 +303,8 @@ end ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["orange"] then if angelsmods.triggers.bio_pastes["tungsten"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -220,14 +365,85 @@ if angelsmods.triggers.artifacts["orange"] then end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-orange"] then - if angelsmods.triggers.bio_pastes["tungsten"] then + if angelsmods.triggers.bio_pastes["tungsten"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact-orange", "bio-processing-alien-small", "c[orange]") end angelsmods.functions.move_item("alien-artifact-orange", "bio-processing-alien-large", "c[orange]") OV.patch_recipes({ { name = "alien-artifact-orange-from-basic", subgroup = "bio-processing-alien-large-convert" }, }) + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-orange-from-small", enabled = false }, + { name = "alien-artifact-orange-from-basic", enabled = false }, + }) + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact-orange", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-orange-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "c[orange]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact-orange", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-orange.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "c[orange]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-orange-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact-orange", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact-orange", amount = 1 }, + }, + icon_size = 32, + order = "c[orange]", + }, + { + type = "recipe", + name = "alien-artifact-orange-from-basic", + category = "crafting", + subgroup = "bio-processing-alien-large-convert", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "alien-artifact-orange", amount = 1 }, + { type = "item", name = "alien-artifact", amount = 5 }, + }, + results = { + { type = "item", name = "alien-artifact-orange", amount = 5 }, + }, + icon_size = 32, + order = "c[orange]", + }, + }) + end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.disable_technology("angels-alien-artifact-orange") end +else + OV.remove_unlock("angels-alien-artifact-orange", "alien-artifact-orange-from-small") + OV.remove_unlock("angels-alien-artifact-orange", "alien-artifact-orange-from-basic") + OV.disable_technology("angels-alien-artifact-orange") end ------------------------------------------------------------------------------- @@ -235,6 +451,8 @@ end ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["blue"] then if angelsmods.triggers.bio_pastes["cobalt"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -295,14 +513,85 @@ if angelsmods.triggers.artifacts["blue"] then end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-blue"] then - if angelsmods.triggers.bio_pastes["cobalt"] then + if angelsmods.triggers.bio_pastes["cobalt"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact-blue", "bio-processing-alien-small", "d[blue]") end angelsmods.functions.move_item("alien-artifact-blue", "bio-processing-alien-large", "d[blue]") OV.patch_recipes({ { name = "alien-artifact-blue-from-basic", subgroup = "bio-processing-alien-large-convert" }, }) + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-blue-from-small", enabled = false }, + { name = "alien-artifact-blue-from-basic", enabled = false }, + }) + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact-blue", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-blue-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "d[blue]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact-blue", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-blue.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "d[blue]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-blue-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact-blue", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact-blue", amount = 1 }, + }, + icon_size = 32, + order = "d[blue]", + }, + { + type = "recipe", + name = "alien-artifact-blue-from-basic", + category = "crafting", + subgroup = "bio-processing-alien-large-convert", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "alien-artifact-blue", amount = 1 }, + { type = "item", name = "alien-artifact", amount = 5 }, + }, + results = { + { type = "item", name = "alien-artifact-blue", amount = 5 }, + }, + icon_size = 32, + order = "d[blue]", + }, + }) + end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.disable_technology("angels-alien-artifact-blue") end +else + OV.remove_unlock("angels-alien-artifact-blue", "alien-artifact-blue-from-small") + OV.remove_unlock("angels-alien-artifact-blue", "alien-artifact-blue-from-basic") + OV.disable_technology("angels-alien-artifact-blue") end ------------------------------------------------------------------------------- @@ -310,6 +599,8 @@ end ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["purple"] then if angelsmods.triggers.bio_pastes["titanium"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -370,14 +661,85 @@ if angelsmods.triggers.artifacts["purple"] then end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-purple"] then - if angelsmods.triggers.bio_pastes["titanium"] then + if angelsmods.triggers.bio_pastes["titanium"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact-purple", "bio-processing-alien-small", "e[purple]") end angelsmods.functions.move_item("alien-artifact-purple", "bio-processing-alien-large", "e[purple]") OV.patch_recipes({ { name = "alien-artifact-purple-from-basic", subgroup = "bio-processing-alien-large-convert" }, }) + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-purple-from-small", enabled = false }, + { name = "alien-artifact-purple-from-basic", enabled = false }, + }) + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact-purple", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-purple-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "e[purple]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact-purple", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-purple.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "e[purple]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-purple-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact-purple", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact-purple", amount = 1 }, + }, + icon_size = 32, + order = "e[purple]", + }, + { + type = "recipe", + name = "alien-artifact-purple-from-basic", + category = "crafting", + subgroup = "bio-processing-alien-large-convert", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "alien-artifact-purple", amount = 1 }, + { type = "item", name = "alien-artifact", amount = 5 }, + }, + results = { + { type = "item", name = "alien-artifact-purple", amount = 5 }, + }, + icon_size = 32, + order = "e[purple]", + }, + }) + end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.disable_technology("angels-alien-artifact-purple") end +else + OV.remove_unlock("angels-alien-artifact-purple", "alien-artifact-purple-from-small") + OV.remove_unlock("angels-alien-artifact-purple", "alien-artifact-purple-from-basic") + OV.disable_technology("angels-alien-artifact-purple") end ------------------------------------------------------------------------------- @@ -385,6 +747,8 @@ end ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["green"] then if angelsmods.triggers.bio_pastes["zinc"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -445,14 +809,85 @@ if angelsmods.triggers.artifacts["green"] then end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-green"] then - if angelsmods.triggers.bio_pastes["zinc"] then + if angelsmods.triggers.bio_pastes["zinc"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact-green", "bio-processing-alien-small", "f[green]") end angelsmods.functions.move_item("alien-artifact-green", "bio-processing-alien-large", "f[green]") OV.patch_recipes({ { name = "alien-artifact-green-from-basic", subgroup = "bio-processing-alien-large-convert" }, }) + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-green-from-small", enabled = false }, + { name = "alien-artifact-green-from-basic", enabled = false }, + }) + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact-green", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-green-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "f[green]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact-green", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-green.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "f[green]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-green-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact-green", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact-green", amount = 1 }, + }, + icon_size = 32, + order = "f[green]", + }, + { + type = "recipe", + name = "alien-artifact-green-from-basic", + category = "crafting", + subgroup = "bio-processing-alien-large-convert", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "alien-artifact-green", amount = 1 }, + { type = "item", name = "alien-artifact", amount = 5 }, + }, + results = { + { type = "item", name = "alien-artifact-green", amount = 5 }, + }, + icon_size = 32, + order = "f[green]", + }, + }) + end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.disable_technology("angels-alien-artifact-green") end +else + OV.remove_unlock("angels-alien-artifact-green", "alien-artifact-green-from-small") + OV.remove_unlock("angels-alien-artifact-green", "alien-artifact-green-from-basic") + OV.disable_technology("angels-alien-artifact-green") end ------------------------------------------------------------------------------- @@ -460,6 +895,8 @@ end ------------------------------------------------------------------------------- if angelsmods.triggers.artifacts["base"] then -- pink if angelsmods.triggers.bio_pastes["iron"] then + contais_artifact_creation = true + data:extend({ --PRE ARTIFACT { @@ -510,18 +947,75 @@ if angelsmods.triggers.artifacts["base"] then -- pink OV.add_unlock("bio-processing-alien-3", "alien-pre-artifact-base") OV.add_unlock("bio-processing-alien-3", "small-alien-artifact") + OV.add_prereq("bio-processing-alien-3", "angels-alien-artifact") end if bobmods and bobmods.enemies and data.raw.item["small-alien-artifact-blue"] then - if angelsmods.triggers.bio_pastes["iron"] then + if angelsmods.triggers.bio_pastes["iron"] or angelsmods.exploration then angelsmods.functions.move_item("small-alien-artifact", "bio-processing-alien-small", "g[base]") end angelsmods.functions.move_item("alien-artifact", "bio-processing-alien-large", "g[base]") + if angelsmods.exploration then + OV.patch_recipes({ + { name = "alien-artifact-from-small", enabled = false }, + }) + if mods["bobclasses"] and not data.raw.item["rtg"] then + OV.add_prereq("bodies", "angels-alien-artifact") + end + end + else + data:extend({ + -- SMALL ARTIFACT + { + type = "item", + name = "small-alien-artifact", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-small.png", + icon_size = 32, + subgroup = "bio-processing-alien-small", + order = "g[base]", + stack_size = 200, + }, + -- LARGE ARTIFACT + { + type = "item", + name = "alien-artifact", + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact.png", + icon_size = 32, + subgroup = "bio-processing-alien-large", + order = "g[base]", + stack_size = 200, + }, + { + type = "recipe", + name = "alien-artifact-from-small", + category = "crafting", + enabled = false, + energy_required = 5, + ingredients = { + { type = "item", name = "small-alien-artifact", amount = 25 }, + }, + results = { + { type = "item", name = "alien-artifact", amount = 1 }, + }, + icon_size = 32, + order = "g[base]", + }, + }) end + + if angelsmods.exploration then + -- responsibility of angels exploration to handle the tech progress + else + OV.remove_prereq("bio-processing-alien-3", "angels-alien-artifact") + OV.disable_technology("angels-alien-artifact") + end +else + OV.remove_unlock("angels-alien-artifact", "alien-artifact-from-small") + OV.disable_technology("angels-alien-artifact") end ------------------------------------------------------------------------------- -if contais_artifacts then +if contais_artifact_creation then else OV.disable_technology("bio-processing-alien-3") end diff --git a/angelsbioprocessing/prototypes/overrides/bio-processing-override-bob.lua b/angelsbioprocessing/prototypes/overrides/bio-processing-override-bob.lua index 44cb045d6..bda96ab5c 100644 --- a/angelsbioprocessing/prototypes/overrides/bio-processing-override-bob.lua +++ b/angelsbioprocessing/prototypes/overrides/bio-processing-override-bob.lua @@ -44,8 +44,7 @@ if mods["bobplates"] then end -- GEMS - OV.add_prereq("gem-processing-1", "geode-crystallization-1") - OV.add_prereq("bio-processing-alien-3", "gem-processing-1") + OV.add_prereq("bio-processing-alien-3", "gem-processing-2") -- CRYSTALS OV.modify_input("crystal-grindstone", { "grinding-wheel", "iron-plate" }) @@ -62,4 +61,32 @@ end if mods["bobassembly"] and settings.startup["bobmods-assembly-burner"].value == true then OV.remove_prereq("bio-processing-brown", "automation") OV.add_prereq("bio-processing-brown", "basic-automation") + OV.remove_prereq("basic-chemistry", "automation") + OV.add_prereq("basic-chemistry", "basic-automation") +end + +if mods["bobelectronics"] then + OV.patch_recipes({ + { + name = "wooden-board", + result_count = 1, + }, + }) + angelsmods.functions.remove_productivity("wooden-board") + + OV.patch_recipes({ + { + name = "phenolic-board", + energy_required = 2, + ingredients = { + { "!!" }, + { type = "fluid", name = "liquid-resin", amount = 10 }, + { type = "item", name = "solid-paper", amount = 10 }, + }, + category = "electronics-with-fluid", + }, + }) + OV.add_prereq("advanced-electronics", "bio-paper-1") + OV.add_prereq("advanced-electronics", "resins") + angelsmods.functions.remove_productivity("phenolic-board") end diff --git a/angelsbioprocessing/prototypes/overrides/bio-processing-override-bobgreenhouse.lua b/angelsbioprocessing/prototypes/overrides/bio-processing-override-bobgreenhouse.lua index a6fe60097..8cc0b2421 100644 --- a/angelsbioprocessing/prototypes/overrides/bio-processing-override-bobgreenhouse.lua +++ b/angelsbioprocessing/prototypes/overrides/bio-processing-override-bobgreenhouse.lua @@ -78,7 +78,7 @@ if mods["bobgreenhouse"] then shift = { -12, 12 }, scale = 0.35, }, - }, 1, angelsmods.bioprocessing.number_tint), + }, 2, angelsmods.bioprocessing.number_tint), }, }) -- manually patch the result as the recipe builder is failing @@ -202,9 +202,6 @@ if mods["bobgreenhouse"] then -- alter angels wood production to require seedlings OV.patch_recipes({ - { name = "tree-generator-1", ingredients = { { type = "item", name = "seedling", amount = 4 } } }, - { name = "tree-generator-2", ingredients = { { type = "item", name = "seedling", amount = 6 } } }, - { name = "tree-generator-3", ingredients = { { type = "item", name = "seedling", amount = 8 } } }, { name = "temperate-tree-generator-1", ingredients = { { type = "item", name = "seedling", amount = 4 } } }, { name = "temperate-tree-generator-2", ingredients = { { type = "item", name = "seedling", amount = 6 } } }, { name = "temperate-tree-generator-3", ingredients = { { type = "item", name = "seedling", amount = 8 } } }, @@ -219,5 +216,8 @@ if mods["bobgreenhouse"] then -- update tech OV.add_prereq("bob-greenhouse", "gardens") OV.add_unlock("bob-greenhouse", "wood-sawing-manual") - OV.add_prereq("bio-arboretum-1", "bob-greenhouse") + OV.add_prereq("bob-greenhouse", "bio-arboretum-1") + OV.add_prereq("bio-arboretum-desert-1", "bob-greenhouse") + OV.add_prereq("bio-arboretum-swamp-1", "bob-greenhouse") + OV.add_prereq("bio-arboretum-temperate-1", "bob-greenhouse") end diff --git a/angelsbioprocessing/prototypes/overrides/bio-processing-override-special-vanilla.lua b/angelsbioprocessing/prototypes/overrides/bio-processing-override-special-vanilla.lua index 3d749dd17..70f95ad1e 100644 --- a/angelsbioprocessing/prototypes/overrides/bio-processing-override-special-vanilla.lua +++ b/angelsbioprocessing/prototypes/overrides/bio-processing-override-special-vanilla.lua @@ -9,13 +9,16 @@ if angelsmods.refining and angelsmods.functions.is_special_vanilla() then OV.add_prereq("advanced-ore-refining-3", "ore-advanced-floatation") OV.disable_recipe({ - --"angelsore-crystal-mix6-processing", "electro-whinning-cell", "electro-whinning-cell-2", - "electro-whinning-cell-3", }) OV.remove_prereq("ore-powderizer", "ore-advanced-crushing") + OV.remove_prereq("ore-powderizer", "advanced-ore-refining-1") + + OV.remove_prereq("ore-advanced-floatation", "chlorine-processing-1") + OV.remove_prereq("ore-advanced-floatation", "thermal-water-extraction-2") + OV.add_prereq("ore-advanced-floatation", "chemical-science-pack") OV.execute() end diff --git a/angelsbioprocessing/prototypes/recipes/bio-module.lua b/angelsbioprocessing/prototypes/recipes/bio-module.lua index 12c187715..3930b99d3 100644 --- a/angelsbioprocessing/prototypes/recipes/bio-module.lua +++ b/angelsbioprocessing/prototypes/recipes/bio-module.lua @@ -41,3 +41,18 @@ data:extend({ result = "angels-bio-yield-module-3", }, }) + +if mods["boblibrary"] then + for _, module_name in pairs({ + "angels-bio-yield-module", + "angels-bio-yield-module-2", + "angels-bio-yield-module-3", + "angels-bio-yield-module-4", + "angels-bio-yield-module-5", + "angels-bio-yield-module-6", + "angels-bio-yield-module-7", + "angels-bio-yield-module-8", + }) do + bobmods.lib.module.exclude_productivity_module(module_name) + end +end diff --git a/angelsbioprocessing/prototypes/recipes/bio-processing-algae.lua b/angelsbioprocessing/prototypes/recipes/bio-processing-algae.lua index 493019722..af66d5e95 100644 --- a/angelsbioprocessing/prototypes/recipes/bio-processing-algae.lua +++ b/angelsbioprocessing/prototypes/recipes/bio-processing-algae.lua @@ -1,7 +1,7 @@ local AF = angelsmods.functions local tints = { - ["solid-sodium-carbonate"] = { AF.fluid_color("Na2CO3") }, - ["solid-alginic-acid"] = { AF.fluid_color("C6H8O6") }, + ["solid-sodium-carbonate"] = AF.fluid_color("Na2CO3"), + ["solid-alginic-acid"] = AF.fluid_color("C6H8O6"), ["algae-brown"] = { r = 225 / 255, g = 160 / 255, b = 106 / 255 }, ["algae-green"] = { r = 84 / 255, g = 118 / 255, b = 76 / 255 }, ["algae-blue"] = { r = 89 / 255, g = 89 / 255, b = 188 / 255 }, diff --git a/angelsbioprocessing/prototypes/recipes/bio-processing-alien.lua b/angelsbioprocessing/prototypes/recipes/bio-processing-alien.lua index 7b2d0cbbd..0e6dc12f3 100644 --- a/angelsbioprocessing/prototypes/recipes/bio-processing-alien.lua +++ b/angelsbioprocessing/prototypes/recipes/bio-processing-alien.lua @@ -1,24 +1,6 @@ data:extend({ --ALIEN ARTIFACTS --PRE - --{ - -- type = "recipe", - -- name = "alien-air-filtering", - -- category = "petrochem-air-filtering", - -- subgroup = "bio-processing-alien-intermediate", - -- enabled = false, - -- energy_required = 20, - -- ingredients ={ - -- {type="fluid", name="water-purified", amount=50}, - -- }, - -- results= - -- { - -- {type="fluid", name="alien-spores", amount=50}, - -- }, - -- icon = "__angelsbioprocessing__/graphics/icons/alien-spores.png", - -- icon_size = 32, - -- order = "a", - --}, { type = "recipe", name = "alien-spores", diff --git a/angelsbioprocessing/prototypes/recipes/bio-processing-entity-angels.lua b/angelsbioprocessing/prototypes/recipes/bio-processing-entity-angels.lua index b00fcfce0..d03cebe44 100644 --- a/angelsbioprocessing/prototypes/recipes/bio-processing-entity-angels.lua +++ b/angelsbioprocessing/prototypes/recipes/bio-processing-entity-angels.lua @@ -317,10 +317,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "compo-1", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 }, - { type = "item", name = "t1-circuit", amount = 2 }, - { type = "item", name = "t1-brick", amount = 2 }, - { type = "item", name = "t1-gears", amount = 2 }, + { type = "item", name = "t0-plate", amount = 2 }, + { type = "item", name = "t0-circuit", amount = 2 }, + { type = "item", name = "t0-brick", amount = 2 }, + { type = "item", name = "t0-gears", amount = 2 }, }, result = "composter", }, @@ -329,10 +329,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "compo-1", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 * buildingmulti }, - { type = "item", name = "t1-circuit", amount = 2 * buildingmulti }, - { type = "item", name = "t1-brick", amount = 2 * buildingmulti }, - { type = "item", name = "t1-gears", amount = 2 * buildingmulti }, + { type = "item", name = "t0-plate", amount = 2 * buildingmulti }, + { type = "item", name = "t0-circuit", amount = 2 * buildingmulti }, + { type = "item", name = "t0-brick", amount = 2 * buildingmulti }, + { type = "item", name = "t0-gears", amount = 2 * buildingmulti }, }, result = "composter", }, @@ -466,10 +466,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "temperate-tree", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 }, - { type = "item", name = "t1-circuit", amount = 2 }, - { type = "item", name = "t1-brick", amount = 1 }, - { type = "item", name = "t1-pipe", amount = 3 }, + { type = "item", name = "t0-plate", amount = 2 }, + { type = "item", name = "t0-circuit", amount = 2 }, + { type = "item", name = "t0-brick", amount = 1 }, + { type = "item", name = "t0-pipe", amount = 3 }, }, result = "bio-generator-temperate-1", }, @@ -478,10 +478,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "temperate-tree", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 * buildingmulti }, - { type = "item", name = "t1-circuit", amount = 2 * buildingmulti }, - { type = "item", name = "t1-brick", amount = 1 * buildingmulti }, - { type = "item", name = "t1-pipe", amount = 3 * buildingmulti }, + { type = "item", name = "t0-plate", amount = 2 * buildingmulti }, + { type = "item", name = "t0-circuit", amount = 2 * buildingmulti }, + { type = "item", name = "t0-brick", amount = 1 * buildingmulti }, + { type = "item", name = "t0-pipe", amount = 3 * buildingmulti }, }, result = "bio-generator-temperate-1", }, @@ -494,10 +494,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "swamp-tree", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 }, - { type = "item", name = "t1-circuit", amount = 2 }, - { type = "item", name = "t1-brick", amount = 1 }, - { type = "item", name = "t1-pipe", amount = 3 }, + { type = "item", name = "t0-plate", amount = 2 }, + { type = "item", name = "t0-circuit", amount = 2 }, + { type = "item", name = "t0-brick", amount = 1 }, + { type = "item", name = "t0-pipe", amount = 3 }, }, result = "bio-generator-swamp-1", }, @@ -506,10 +506,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "swamp-tree", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 * buildingmulti }, - { type = "item", name = "t1-circuit", amount = 2 * buildingmulti }, - { type = "item", name = "t1-brick", amount = 1 * buildingmulti }, - { type = "item", name = "t1-pipe", amount = 3 * buildingmulti }, + { type = "item", name = "t0-plate", amount = 2 * buildingmulti }, + { type = "item", name = "t0-circuit", amount = 2 * buildingmulti }, + { type = "item", name = "t0-brick", amount = 1 * buildingmulti }, + { type = "item", name = "t0-pipe", amount = 3 * buildingmulti }, }, result = "bio-generator-swamp-1", }, @@ -522,10 +522,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "desert-tree", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 }, - { type = "item", name = "t1-circuit", amount = 2 }, - { type = "item", name = "t1-brick", amount = 1 }, - { type = "item", name = "t1-pipe", amount = 3 }, + { type = "item", name = "t0-plate", amount = 2 }, + { type = "item", name = "t0-circuit", amount = 2 }, + { type = "item", name = "t0-brick", amount = 1 }, + { type = "item", name = "t0-pipe", amount = 3 }, }, result = "bio-generator-desert-1", }, @@ -534,10 +534,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "desert-tree", amount = 1 }, - { type = "item", name = "t1-plate", amount = 2 * buildingmulti }, - { type = "item", name = "t1-circuit", amount = 2 * buildingmulti }, - { type = "item", name = "t1-brick", amount = 1 * buildingmulti }, - { type = "item", name = "t1-pipe", amount = 3 * buildingmulti }, + { type = "item", name = "t0-plate", amount = 2 * buildingmulti }, + { type = "item", name = "t0-circuit", amount = 2 * buildingmulti }, + { type = "item", name = "t0-brick", amount = 1 * buildingmulti }, + { type = "item", name = "t0-pipe", amount = 3 * buildingmulti }, }, result = "bio-generator-desert-1", }, @@ -551,10 +551,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "arboretum-1", amount = 1 }, - { type = "item", name = "t1-plate", amount = 6 }, - { type = "item", name = "t1-circuit", amount = 2 }, - { type = "item", name = "t1-brick", amount = 6 }, - { type = "item", name = "t1-pipe", amount = 8 }, + { type = "item", name = "t0-plate", amount = 6 }, + { type = "item", name = "t0-circuit", amount = 2 }, + { type = "item", name = "t0-brick", amount = 6 }, + { type = "item", name = "t0-pipe", amount = 8 }, }, result = "bio-arboretum-1", }, @@ -563,10 +563,10 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "arboretum-1", amount = 1 }, - { type = "item", name = "t1-plate", amount = 6 * buildingmulti }, - { type = "item", name = "t1-circuit", amount = 2 * buildingmulti }, - { type = "item", name = "t1-brick", amount = 6 * buildingmulti }, - { type = "item", name = "t1-pipe", amount = 8 * buildingmulti }, + { type = "item", name = "t0-plate", amount = 6 * buildingmulti }, + { type = "item", name = "t0-circuit", amount = 2 * buildingmulti }, + { type = "item", name = "t0-brick", amount = 6 * buildingmulti }, + { type = "item", name = "t0-pipe", amount = 8 * buildingmulti }, }, result = "bio-arboretum-1", }, diff --git a/angelsbioprocessing/prototypes/recipes/bio-processing-paper.lua b/angelsbioprocessing/prototypes/recipes/bio-processing-paper.lua index cbf9d8b7f..28abd7c5b 100644 --- a/angelsbioprocessing/prototypes/recipes/bio-processing-paper.lua +++ b/angelsbioprocessing/prototypes/recipes/bio-processing-paper.lua @@ -3,6 +3,7 @@ data:extend({ { type = "recipe", name = "cellulose-fiber-raw-wood", + localised_name = { "recipe-name.cellulose-fiber-raw-wood" }, category = "crafting", subgroup = "bio-processing-wood", enabled = true, @@ -13,6 +14,8 @@ data:extend({ results = { { type = "item", name = "cellulose-fiber", amount = 4 }, }, + always_show_products = true, + show_amount_in_title = false, icon = "__angelsbioprocessing__/graphics/icons/cellulose-fiber-raw-wood.png", icon_size = 32, order = "b", @@ -54,6 +57,7 @@ data:extend({ { type = "recipe", name = "gas-carbon-dioxide-from-wood", + localised_name = { "recipe-name.gas-carbon-dioxide-from-wood" }, category = "liquifying", subgroup = "bio-processing-wood", enabled = false, @@ -65,6 +69,7 @@ data:extend({ { type = "fluid", name = "gas-carbon-dioxide", amount = 70 }, }, always_show_products = true, + show_amount_in_title = false, icons = AF.create_gas_recipe_icon({ { "__angelspetrochem__/graphics/icons/molecules/carbon-dioxide.png", 72 }, }, "COcOc"), @@ -120,18 +125,22 @@ data:extend({ { type = "recipe", name = "solid-wood-pulp", - category = "crafting", + category = "liquifying", subgroup = "bio-paper", enabled = false, - energy_required = 4, + energy_required = 20, ingredients = { { type = "item", name = "cellulose-fiber", amount = 20 }, { type = "item", name = "solid-alginic-acid", amount = 5 }, + { type = "fluid", name = "water", amount = 20 }, }, results = { { type = "item", name = "solid-wood-pulp", amount = 20 }, }, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-wood-pulp"), 1, angelsmods.bioprocessing.number_tint), + crafting_machine_tint = AF.get_recipe_tints({ + "water", + }), order = "aa", }, --T2 SULFITE PROCESS @@ -249,6 +258,7 @@ data:extend({ { type = "recipe", name = "kraft-recovery", + localised_name = { "recipe-name.kraft-recovery" }, category = "liquifying", subgroup = "bio-liquor", enabled = false, @@ -261,6 +271,7 @@ data:extend({ }, main_product = "liquid-green-liquor", always_show_products = true, + show_amount_in_title = false, crafting_machine_tint = AF.get_recipe_tints({ "liquid-green-liquor", "liquid-black-liquor", @@ -272,6 +283,7 @@ data:extend({ { type = "recipe", name = "kraft-causting", + localised_name = { "recipe-name.kraft-causting" }, category = "chemistry", subgroup = "bio-liquor", enabled = false, @@ -307,7 +319,7 @@ data:extend({ { type = "fluid", name = "liquid-white-liquor", amount = 40 }, }, results = { - { type = "item", name = "solid-wood-pulp", amount = 30 }, + { type = "item", name = "solid-wood-pulp", amount = 40 }, { type = "fluid", name = "liquid-black-liquor", amount_min = 35, amount_max = 40 }, }, always_show_products = true, @@ -324,6 +336,7 @@ data:extend({ { type = "recipe", name = "paper-bleaching-1", + localised_name = { "recipe-name.paper-bleaching-1" }, category = "crafting", subgroup = "bio-paper", enabled = false, @@ -332,9 +345,10 @@ data:extend({ { type = "item", name = "solid-wood-pulp", amount = 2 }, }, results = { - { type = "item", name = "solid-paper", amount = 4 }, + { type = "item", name = "solid-paper", amount = 3 }, }, - --main_product = "solid-paper", + always_show_products = true, + show_amount_in_title = false, allow_decomposition = false, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-paper"), 1, angelsmods.bioprocessing.number_tint), order = "ba", @@ -345,47 +359,66 @@ data:extend({ category = "liquifying", subgroup = "bio-paper", enabled = false, - energy_required = 4, + energy_required = 2, ingredients = { { type = "item", name = "solid-wood-pulp", amount = 2 }, { type = "item", name = "solid-sodium-hydroxide", amount = 2 }, - { type = "fluid", name = "gas-chlorine", amount = 60 }, + { type = "fluid", name = "gas-chlorine", amount = 80 }, }, results = { - { type = "item", name = "solid-paper", amount = 5 }, + { type = "item", name = "solid-paper", amount = 4 }, { type = "item", name = "solid-sodium-hypochlorite", amount = 2 }, }, - --main_product = "solid-paper", allow_decomposition = false, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-paper"), 2, angelsmods.bioprocessing.number_tint), crafting_machine_tint = AF.get_recipe_tints({ AF.fluid_color("NaOCl"), "gas-chlorine", AF.fluid_color("NaOH"), - { 1, 1, 1, 1 },--[[paper]] + { r = 1, g = 1, b = 1, a = 1 },--[[paper]] }), order = "bb", }, + -- SOLID SOIDUM HYPOCHLORITE DECOMPOSITION + { + type = "recipe", + name = "solid-sodium-hypochlorite-decomposition", + localised_name = { "recipe-name.solid-sodium-hypochlorite-decomposition" }, + category = "chemical-smelting", + subgroup = "petrochem-sodium", + energy_required = 2, + enabled = false, + ingredients = { + { type = "item", name = "solid-sodium-hypochlorite", amount = 10 }, + }, + results = { + { type = "item", name = "solid-salt", amount = 20 }, + { type = "fluid", name = "gas-oxygen", amount = 100 }, + }, + main_product = "solid-salt", + icon_size = 32, + crafting_machine_tint = AF.get_recipe_tints({ "gas-oxygen", AF.fluid_color("NaOCl") }), + order = "g[solid-sodium-hypochlorite-decomposition]", + }, { type = "recipe", name = "paper-bleaching-3", - category = "advanced-chemistry", + category = "chemistry", subgroup = "bio-paper", enabled = false, - energy_required = 4, + energy_required = 2, ingredients = { { type = "item", name = "solid-wood-pulp", amount = 2 }, { type = "item", name = "solid-sodium-hydroxide", amount = 2 }, - { type = "fluid", name = "gas-oxygen", amount = 60 }, { type = "fluid", name = "gas-sulfur-dioxide", amount = 40 }, { type = "fluid", name = "water", amount = 100 }, }, results = { - { type = "item", name = "solid-paper", amount = 6 }, + { type = "item", name = "solid-paper", amount = 10 }, { type = "item", name = "solid-sodium-carbonate", amount = 2 }, + { type = "fluid", name = "gas-oxygen", amount = 40 }, { type = "fluid", name = "water-yellow-waste", amount = 100 }, }, - --main_product = "solid-paper", allow_decomposition = false, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-paper"), 3, angelsmods.bioprocessing.number_tint), crafting_machine_tint = AF.get_recipe_tints({ "water-yellow-waste", "water", "gas-oxygen", "gas-sulfur-dioxide" }), diff --git a/angelsbioprocessing/prototypes/recipes/bio-refugium-puffer.lua b/angelsbioprocessing/prototypes/recipes/bio-refugium-puffer.lua index 1840c3cf6..572aada2a 100644 --- a/angelsbioprocessing/prototypes/recipes/bio-refugium-puffer.lua +++ b/angelsbioprocessing/prototypes/recipes/bio-refugium-puffer.lua @@ -237,7 +237,7 @@ data:extend({ }, { type = "fluid", - name = "gas-puffer-atmosphere", + name = "gas-acid", amount = 20, catalyst_amount = 20, show_details_in_recipe_tooltip = false, diff --git a/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua b/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua index a93a59880..eb3d9871f 100644 --- a/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua +++ b/angelsbioprocessing/prototypes/recipes/crop-farming-gardens.lua @@ -10,6 +10,7 @@ data:extend({ subgroup = "farming-temperate-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "temperate-garden", amount = 1 }, }, @@ -39,6 +40,7 @@ data:extend({ subgroup = "farming-temperate-seed", enabled = false, energy_required = 60, + overload_multiplier = 1, ingredients = { { type = "item", name = "temperate-garden", amount = 1, catalyst_amount = 1 }, { type = "item", name = "solid-alienated-fertilizer", amount = 2 }, @@ -63,6 +65,7 @@ data:extend({ subgroup = "farming-temperate-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "temperate-garden", amount = 1 }, }, @@ -120,6 +123,7 @@ data:extend({ subgroup = "farming-temperate-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "temperate-garden", amount = 1 }, }, @@ -172,6 +176,7 @@ data:extend({ subgroup = "farming-desert-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "desert-garden", amount = 1 }, }, @@ -201,6 +206,7 @@ data:extend({ subgroup = "farming-desert-seed", enabled = false, energy_required = 60, + overload_multiplier = 1, ingredients = { { type = "item", name = "desert-garden", amount = 1, catalyst_amount = 1 }, { type = "item", name = "solid-alienated-fertilizer", amount = 2 }, @@ -225,6 +231,7 @@ data:extend({ subgroup = "farming-desert-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "desert-garden", amount = 1 }, }, @@ -282,6 +289,7 @@ data:extend({ subgroup = "farming-desert-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "desert-garden", amount = 1 }, }, @@ -334,6 +342,7 @@ data:extend({ subgroup = "farming-swamp-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "swamp-garden", amount = 1 }, }, @@ -363,6 +372,7 @@ data:extend({ subgroup = "farming-swamp-seed", enabled = false, energy_required = 60, + overload_multiplier = 1, ingredients = { { type = "item", name = "swamp-garden", amount = 1, catalyst_amount = 1 }, { type = "item", name = "solid-alienated-fertilizer", amount = 2 }, @@ -387,6 +397,7 @@ data:extend({ subgroup = "farming-swamp-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "swamp-garden", amount = 1 }, }, @@ -444,6 +455,7 @@ data:extend({ subgroup = "farming-swamp-seed", enabled = false, energy_required = 300, + overload_multiplier = 1, ingredients = { { type = "item", name = "swamp-garden", amount = 1 }, }, @@ -639,6 +651,7 @@ data:extend({ -- subgroup = "farming-temperate-seed", -- enabled = false, -- energy_required = 600, + -- overload_multiplier = 1, -- ingredients = -- { -- {type = "item", name = "desert-garden", amount = 1}, @@ -662,6 +675,7 @@ data:extend({ -- subgroup = "bio-processor-swamp", -- enabled = false, -- energy_required = 600, + -- overload_multiplier = 1, -- ingredients = -- { -- {type = "item", name = "swamp-garden", amount = 1}, @@ -685,6 +699,7 @@ data:extend({ -- subgroup = "farming-temperate", -- enabled = false, -- energy_required = 600, + -- overload_multiplier = 1, -- ingredients = -- { -- {type = "item", name = "temperate-garden", amount = 1}, @@ -708,6 +723,7 @@ data:extend({ -- subgroup = "bio-processor-swamp", -- enabled = false, -- energy_required = 600, + -- overload_multiplier = 1, -- ingredients = -- { -- {type = "item", name = "desert-garden", amount = 1}, @@ -731,6 +747,7 @@ data:extend({ -- subgroup = "bio-processor-temperate", -- enabled = false, -- energy_required = 600, + -- overload_multiplier = 1, -- ingredients = -- { -- {type = "item", name = "swamp-garden", amount = 1}, @@ -754,6 +771,7 @@ data:extend({ -- subgroup = "farming-desert-seed", -- enabled = false, -- energy_required = 600, + -- overload_multiplier = 1, -- ingredients = -- { -- {type = "item", name = "temperate-garden", amount = 4}, diff --git a/angelsbioprocessing/prototypes/technology/bio-processing-algae.lua b/angelsbioprocessing/prototypes/technology/bio-processing-algae.lua index 4ffc89113..a9724f9f9 100644 --- a/angelsbioprocessing/prototypes/technology/bio-processing-algae.lua +++ b/angelsbioprocessing/prototypes/technology/bio-processing-algae.lua @@ -13,10 +13,6 @@ data:extend({ type = "unlock-recipe", recipe = "algae-farm", }, - { - type = "unlock-recipe", - recipe = "solid-alginic-acid", - }, { type = "unlock-recipe", recipe = "algae-green-simple", @@ -27,11 +23,11 @@ data:extend({ }, }, unit = { - count = 50, + count = 10, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, }, - time = 30, + time = 15, }, ignore_tech_cost_multiplier = true, }, diff --git a/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua b/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua index 183fb9f46..fd60d3b28 100644 --- a/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua +++ b/angelsbioprocessing/prototypes/technology/bio-processing-alien.lua @@ -8,8 +8,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-processing-brown", - "bio-nutrient-paste", - "chlorine-processing-1", + "chlorine-processing-2", }, effects = { { @@ -67,38 +66,23 @@ data:extend({ prerequisites = { "bio-refugium-fish-1", "bio-processing-red", - "bio-processing-paste", - "plastics", + "chlorine-processing-1", }, effects = { { type = "unlock-recipe", - --recipe = "alien-air-filtering" recipe = "alien-spores", }, { type = "unlock-recipe", recipe = "alien-bacteria", }, - { - type = "unlock-recipe", - recipe = "petri-dish", - }, - { - type = "unlock-recipe", - recipe = "substrate-dish", - }, - { - type = "unlock-recipe", - recipe = "seeded-dish", - }, }, unit = { count = 50, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, - --{"chemical-science-pack", amount = 1}, }, time = 30, }, @@ -111,21 +95,21 @@ data:extend({ order = "c-a", prerequisites = { "bio-processing-alien-1", - "geode-processing-2", - "ore-powderizer", + "bio-processing-paste", + "plastics", }, effects = { { type = "unlock-recipe", - recipe = "crystal-powder-from-dust", + recipe = "petri-dish", }, { type = "unlock-recipe", - recipe = "crystal-powder-slurry", + recipe = "substrate-dish", }, { type = "unlock-recipe", - recipe = "crystal-enhancer", + recipe = "seeded-dish", }, }, unit = { @@ -169,7 +153,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-refugium-fish-1", - "geode-processing-2", + "geode-processing-1", }, effects = { { @@ -215,7 +199,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-processing-crystal-splinter-1", - "bio-processing-alien-1", + "bio-processing-alien-2", }, effects = { { @@ -250,6 +234,7 @@ data:extend({ prerequisites = { "bio-processing-crystal-splinter-2", "bio-processing-alien-2", + "ore-powderizer", }, effects = { { @@ -264,6 +249,14 @@ data:extend({ type = "unlock-recipe", recipe = "crystal-powder-splinter-green", }, + { + type = "unlock-recipe", + recipe = "crystal-powder-from-dust", + }, + { + type = "unlock-recipe", + recipe = "crystal-powder-slurry", + }, }, unit = { count = 50, @@ -283,12 +276,10 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { - "bio-processing-alien-1", - --"bio-refugium-hatchery", + "bio-processing-alien-2", "bio-refugium-puffer-2", "bio-processing-crystal-splinter-1", "ore-powderizer", - "geode-processing-2", "slag-processing-2", }, effects = { @@ -342,8 +333,13 @@ data:extend({ "bio-processing-alien-2", "bio-processing-crystal-shard-1", "bio-processing-crystal-splinter-2", + "geode-processing-2", }, effects = { + { + type = "unlock-recipe", + recipe = "crystal-enhancer", + }, { type = "unlock-recipe", recipe = "crystal-shard-crystalization-2", diff --git a/angelsbioprocessing/prototypes/technology/bio-processing-artifacts.lua b/angelsbioprocessing/prototypes/technology/bio-processing-artifacts.lua new file mode 100644 index 000000000..513c41a36 --- /dev/null +++ b/angelsbioprocessing/prototypes/technology/bio-processing-artifacts.lua @@ -0,0 +1,300 @@ +data:extend({ + ------------------------------------------------------------------------------- + -- RED ARTIFACTS -------------------------------------------------------------- + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-red-tool", + localised_name = { "item-name.small-alien-artifact-red" }, + localised_description = { "item-description.alien-artifact-tool" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-red-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact-red", + localised_name = { "item-name.alien-artifact-red" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "angels-alien-artifact-purple", + "angels-alien-artifact-yellow", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-red-from-small", + }, + { + type = "unlock-recipe", + recipe = "alien-artifact-red-from-basic", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-red-tool", amount = 1 }, + }, + time = 30, + }, + }, + ------------------------------------------------------------------------------- + -- YELLOW ARTIFACTS ----------------------------------------------------------- + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-yellow-tool", + localised_name = { "item-name.small-alien-artifact-yellow" }, + localised_description = { "item-description.alien-artifact-tool" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-yellow-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact-yellow", + localised_name = { "item-name.alien-artifact-yellow" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "angels-alien-artifact-blue", + "angels-alien-artifact-orange", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-yellow-from-small", + }, + { + type = "unlock-recipe", + recipe = "alien-artifact-yellow-from-basic", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-yellow-tool", amount = 1 }, + }, + time = 30, + }, + }, + ------------------------------------------------------------------------------- + -- ORANGE ARTIFACTS ----------------------------------------------------------- + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-orange-tool", + localised_name = { "item-name.small-alien-artifact-orange" }, + localised_description = { "item-description.alien-artifact-tool" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-orange-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact-orange", + localised_name = { "item-name.alien-artifact-orange" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "angels-alien-artifact", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-orange-from-small", + }, + { + type = "unlock-recipe", + recipe = "alien-artifact-orange-from-basic", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-orange-tool", amount = 1 }, + }, + time = 30, + }, + }, + ------------------------------------------------------------------------------- + -- BLUE ARTIFACTS ------------------------------------------------------------- + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-blue-tool", + localised_name = { "item-name.small-alien-artifact-blue" }, + localised_description = { "item-description.alien-artifact-tool" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-blue-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact-blue", + localised_name = { "item-name.alien-artifact-blue" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "angels-alien-artifact", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-blue-from-small", + }, + { + type = "unlock-recipe", + recipe = "alien-artifact-blue-from-basic", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-blue-tool", amount = 1 }, + }, + time = 30, + }, + }, + ------------------------------------------------------------------------------- + -- PURPLE ARTIFACTS ----------------------------------------------------------- + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-purple-tool", + localised_name = { "item-name.small-alien-artifact-purple" }, + localised_description = { "item-description.alien-artifact-tool" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-purple-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact-purple", + localised_name = { "item-name.alien-artifact-purple" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "angels-alien-artifact-blue", + "angels-alien-artifact-orange", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-purple-from-small", + }, + { + type = "unlock-recipe", + recipe = "alien-artifact-purple-from-basic", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-purple-tool", amount = 1 }, + }, + time = 30, + }, + }, + ------------------------------------------------------------------------------- + -- GREEN ARTIFACTS ------------------------------------------------------------ + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-green-tool", + localised_name = { "item-name.small-alien-artifact-green" }, + localised_description = { "item-description.alien-artifact-tool" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-green-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact-green", + localised_name = { "item-name.alien-artifact-green" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "angels-alien-artifact-purple", + "angels-alien-artifact-yellow", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-green-from-small", + }, + { + type = "unlock-recipe", + recipe = "alien-artifact-green-from-basic", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-green-tool", amount = 1 }, + }, + time = 30, + }, + }, + ------------------------------------------------------------------------------- + -- BASE ARTIFACTS (pink) ------------------------------------------------------ + ------------------------------------------------------------------------------- + { + type = "tool", + name = "alien-artifact-tool", + localised_name = { "item-name.small-alien-artifact" }, + icon = "__angelsbioprocessing__/graphics/icons/alien-artifact-small.png", + icon_size = 32, + flags = { "hidden" }, + stack_size = 1, + durability = 1, + order = "zzz", + }, + { + type = "technology", + name = "angels-alien-artifact", + localised_name = { "item-name.alien-artifact" }, + icon = "__angelsbioprocessing__/graphics/technology/paste.png", + icon_size = 128, + order = "c-a", + prerequisites = {}, + effects = { + { + type = "unlock-recipe", + recipe = "alien-artifact-from-small", + }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "alien-artifact-tool", amount = 1 }, + }, + time = 30, + }, + }, +}) diff --git a/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua b/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua index 0bc59e67a..8d1674a9e 100644 --- a/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua +++ b/angelsbioprocessing/prototypes/technology/bio-processing-wood-paper.lua @@ -29,9 +29,8 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "bio-farm-1", "bio-wood-processing", - "angels-coal-processing", - "advanced-material-processing", }, effects = { { @@ -40,18 +39,13 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "carbon-from-charcoal", - }, - { - type = "unlock-recipe", - recipe = "gas-carbon-dioxide-from-wood", + recipe = "bio-resin-wood-reprocessing", }, }, unit = { count = 50, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, - { type = "item", name = "logistic-science-pack", amount = 1 }, }, time = 30, }, @@ -63,14 +57,23 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "angels-coal-processing", "bio-wood-processing-2", - "angels-coal-processing-3", + "logistic-science-pack", }, effects = { { type = "unlock-recipe", recipe = "wood-bricks", }, + { + type = "unlock-recipe", + recipe = "carbon-from-charcoal", + }, + { + type = "unlock-recipe", + recipe = "gas-carbon-dioxide-from-wood", + }, }, unit = { count = 50, @@ -92,8 +95,8 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { - "bio-wood-processing", - "bio-farm-1", + "angels-composting", + "bio-processing-brown", }, effects = { { @@ -108,10 +111,6 @@ data:extend({ type = "unlock-recipe", recipe = "bio-generator-desert-1", }, - { - type = "unlock-recipe", - recipe = "tree-arboretum-1", - }, { type = "unlock-recipe", recipe = "bio-arboretum-1", @@ -122,24 +121,25 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "wood-sawing-1", + recipe = "tree-arboretum-1", }, { type = "unlock-recipe", - recipe = "solid-saw", + recipe = "wood-sawing-1", }, { type = "unlock-recipe", - recipe = "bio-resin-wood-reprocessing", + recipe = "solid-saw", }, }, unit = { - count = 50, + count = 10, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, }, - time = 30, + time = 15, }, + ignore_tech_cost_multiplier = true, }, { type = "technology", @@ -578,9 +578,15 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "basic-chemistry", "bio-processing-brown", + "logistic-science-pack", }, effects = { + { + type = "unlock-recipe", + recipe = "solid-alginic-acid", + }, { type = "unlock-recipe", recipe = "solid-wood-pulp", @@ -594,10 +600,10 @@ data:extend({ count = 50, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, + { type = "item", name = "logistic-science-pack", amount = 1 }, }, time = 30, }, - ignore_tech_cost_multiplier = true, }, { type = "technology", @@ -606,10 +612,10 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "angels-nitrogen-processing-2", "bio-paper-1", + "chemical-science-pack", "chlorine-processing-1", - "angels-nitrogen-processing-2", - "angels-sulfur-processing-2", }, effects = { { @@ -634,6 +640,7 @@ data:extend({ ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, + { type = "item", name = "chemical-science-pack", amount = 1 }, }, time = 30, }, @@ -646,7 +653,8 @@ data:extend({ order = "c-a", prerequisites = { "bio-paper-2", - "chlorine-processing-3", + "sodium-processing-2", + "production-science-pack", }, effects = { { @@ -676,6 +684,7 @@ data:extend({ { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, + { type = "item", name = "production-science-pack", amount = 1 }, }, time = 30, }, diff --git a/angelsbioprocessing/prototypes/technology/bio-refugium.lua b/angelsbioprocessing/prototypes/technology/bio-refugium.lua index 2f2a4a5c3..ab2db73a3 100644 --- a/angelsbioprocessing/prototypes/technology/bio-refugium.lua +++ b/angelsbioprocessing/prototypes/technology/bio-refugium.lua @@ -325,7 +325,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-farm-alien", - --"bio-refugium-butchery-2", + "bio-refugium-butchery-2", "bio-refugium-puffer-2", "bio-processing-crystal-splinter-2", "stone-wall", @@ -588,6 +588,10 @@ data:extend({ type = "unlock-recipe", recipe = "fish-butchery-3", }, + { + type = "unlock-recipe", + recipe = "liquid-polluted-fish-atmosphere", + }, }, unit = { count = 50, diff --git a/angelsbioprocessing/prototypes/technology/crop-farming.lua b/angelsbioprocessing/prototypes/technology/crop-farming.lua index 8a10315b2..46353f3c2 100644 --- a/angelsbioprocessing/prototypes/technology/crop-farming.lua +++ b/angelsbioprocessing/prototypes/technology/crop-farming.lua @@ -1,4 +1,37 @@ data:extend({ + { + type = "technology", + name = "angels-composting", + icon = "__angelsbioprocessing__/graphics/technology/fermentation-tech.png", + icon_size = 128, + order = "c-a", + prerequisites = { + "bio-processing-brown", + "water-washing-1", + }, + effects = { + { + type = "unlock-recipe", + recipe = "composter", + }, + { + type = "unlock-recipe", + recipe = "solid-soil", + }, + { + type = "unlock-recipe", + recipe = "solid-soil-alternative", + }, + }, + unit = { + count = 10, + ingredients = { + { type = "item", name = "automation-science-pack", amount = 1 }, + }, + time = 15, + }, + ignore_tech_cost_multiplier = true, + }, { type = "technology", name = "gardens", @@ -42,7 +75,6 @@ data:extend({ order = "c-a", prerequisites = { "bio-farm-1", - "bio-paper-1", "logistic-science-pack", }, effects = { @@ -75,7 +107,9 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "angels-stone-smelting-2", "bio-farm-alien", + "bio-paper-1", "chemical-science-pack", }, effects = { @@ -83,6 +117,10 @@ data:extend({ type = "unlock-recipe", recipe = "garden-cultivating", }, + { + type = "unlock-recipe", + recipe = "bio-tile", + }, }, unit = { count = 100, @@ -102,26 +140,18 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "angels-composting", "gardens", - "water-washing-1", }, effects = { { type = "unlock-recipe", recipe = "crop-farm", }, - { - type = "unlock-recipe", - recipe = "composter", - }, { type = "unlock-recipe", recipe = "bio-processor", }, - { - type = "unlock-recipe", - recipe = "solid-soil", - }, }, unit = { count = 50, @@ -138,15 +168,11 @@ data:extend({ icon_size = 128, order = "c-a", prerequisites = { + "automation-2", "bio-farm-1", "angels-nitrogen-processing-2", - "angels-stone-smelting-2", }, effects = { - { - type = "unlock-recipe", - recipe = "solid-soil-alternative", - }, { type = "unlock-recipe", recipe = "solid-fertilizer", @@ -170,14 +196,9 @@ data:extend({ prerequisites = { "bio-farm-2", "bio-processing-alien-1", - "bio-refugium-butchery-1", "gardens-2", }, effects = { - { - type = "unlock-recipe", - recipe = "liquid-polluted-fish-atmosphere", - }, { type = "unlock-recipe", recipe = "alien-goo", @@ -216,6 +237,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-farm-1", + "logistic-science-pack", }, effects = { { @@ -260,6 +282,7 @@ data:extend({ ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "token-bio", amount = 1 }, + { type = "item", name = "logistic-science-pack", amount = 4 }, }, time = 30, }, @@ -301,7 +324,7 @@ data:extend({ }, }, unit = { - count = 32, + count = 64, ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "logistic-science-pack", amount = 4 }, @@ -337,7 +360,7 @@ data:extend({ }, }, unit = { - count = 64, + count = 32, ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "logistic-science-pack", amount = 4 }, @@ -355,6 +378,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-farm-1", + "logistic-science-pack", }, effects = { { @@ -399,6 +423,7 @@ data:extend({ ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "token-bio", amount = 1 }, + { type = "item", name = "logistic-science-pack", amount = 4 }, }, time = 30, }, @@ -440,7 +465,7 @@ data:extend({ }, }, unit = { - count = 32, + count = 64, ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "logistic-science-pack", amount = 4 }, @@ -476,7 +501,7 @@ data:extend({ }, }, unit = { - count = 64, + count = 32, ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "logistic-science-pack", amount = 4 }, @@ -494,6 +519,7 @@ data:extend({ order = "c-a", prerequisites = { "bio-farm-1", + "logistic-science-pack", }, effects = { { @@ -538,6 +564,7 @@ data:extend({ ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "token-bio", amount = 1 }, + { type = "item", name = "logistic-science-pack", amount = 4 }, }, time = 30, }, @@ -579,7 +606,7 @@ data:extend({ }, }, unit = { - count = 32, + count = 64, ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "logistic-science-pack", amount = 4 }, @@ -615,7 +642,7 @@ data:extend({ }, }, unit = { - count = 64, + count = 32, ingredients = { { type = "item", name = "automation-science-pack", amount = 4 }, { type = "item", name = "logistic-science-pack", amount = 4 }, diff --git a/angelsdev-unit-test/unit-tests.lua b/angelsdev-unit-test/unit-tests.lua index 046bc1e17..faf0859ec 100644 --- a/angelsdev-unit-test/unit-tests.lua +++ b/angelsdev-unit-test/unit-tests.lua @@ -10,6 +10,7 @@ local unit_tests = { require("unit-tests.unit-test-009"), require("unit-tests.unit-test-010"), require("unit-tests.unit-test-011"), + require("unit-tests.unit-test-012"), } local unit_test_functions = require("unit-test-functions") diff --git a/angelsdev-unit-test/unit-tests/unit-test-004.lua b/angelsdev-unit-test/unit-tests/unit-test-004.lua index eac2c4b65..4097cfec9 100644 --- a/angelsdev-unit-test/unit-tests/unit-test-004.lua +++ b/angelsdev-unit-test/unit-tests/unit-test-004.lua @@ -52,6 +52,16 @@ end local unit_test_004 = function() local unit_test_result = unit_test_functions.test_successful + if game.active_mods["angelsbioprocessing"] then + tech_unlocked_by_script["angels-alien-artifact"] = true + tech_unlocked_by_script["angels-alien-artifact-red"] = true + tech_unlocked_by_script["angels-alien-artifact-yellow"] = true + tech_unlocked_by_script["angels-alien-artifact-orange"] = true + tech_unlocked_by_script["angels-alien-artifact-blue"] = true + tech_unlocked_by_script["angels-alien-artifact-purple"] = true + tech_unlocked_by_script["angels-alien-artifact-green"] = true + end + if game.active_mods["SeaBlock"] then tech_unlocked_by_script["sb-startup1"] = true tech_unlocked_by_script["sb-startup2"] = true diff --git a/angelsdev-unit-test/unit-tests/unit-test-006.lua b/angelsdev-unit-test/unit-tests/unit-test-006.lua index 36c2c787a..088f8a2d4 100644 --- a/angelsdev-unit-test/unit-tests/unit-test-006.lua +++ b/angelsdev-unit-test/unit-tests/unit-test-006.lua @@ -68,6 +68,14 @@ local function calculate_science_pack_level() if game.active_mods["angelsbioprocessing"] then science_pack_level["token-bio"] = science_pack_level["angels-science-pack-red"] or science_pack_level["automation-science-pack"] + + science_pack_level["alien-artifact-tool"] = 0 + science_pack_level["alien-artifact-red-tool"] = 0 + science_pack_level["alien-artifact-yellow-tool"] = 0 + science_pack_level["alien-artifact-orange-tool"] = 0 + science_pack_level["alien-artifact-blue-tool"] = 0 + science_pack_level["alien-artifact-purple-tool"] = 0 + science_pack_level["alien-artifact-green-tool"] = 0 end if game.active_mods["bobtech"] then @@ -84,21 +92,21 @@ local function calculate_science_pack_level() -- bobs alien science packs for pack_name, pack_level in pairs({ ["science-pack-gold"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack-blue"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack-orange"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack-purple"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack-yellow"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack-green"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), ["alien-science-pack-red"] = 50 - + (science_pack_level["angels-science-pack-blue"] or science_pack_level["utility-science-pack"]), + + (science_pack_level["angels-science-pack-yellow"] or science_pack_level["utility-science-pack"]), }) do science_pack_level[pack_name] = pack_level end diff --git a/angelsdev-unit-test/unit-tests/unit-test-010.lua b/angelsdev-unit-test/unit-tests/unit-test-010.lua index 9ef55b2d5..f43457cd4 100644 --- a/angelsdev-unit-test/unit-tests/unit-test-010.lua +++ b/angelsdev-unit-test/unit-tests/unit-test-010.lua @@ -400,6 +400,7 @@ local function add_ignores() ["powder-gold"] = true, ["powder-iron"] = true, ["powder-titanium"] = true, + ["powder-tungsten"] = true, ["powdered-tungsten"] = true, ["powder-zinc"] = true, }, @@ -452,6 +453,23 @@ local function add_ignores() ["crystal-full-green"] = true, }, } + + ignored_unlocks["bio-desert-farm"] = { + items = { + ["clay-brick"] = true, + }, + } + ignored_unlocks["bio-swamp-farm"] = { + items = { + ["bronze-pipe"] = true, + }, + } + ignored_unlocks["bio-temperate-farm"] = { + items = { + ["bronze-pipe"] = true, + ["clay-brick"] = true, + }, + } end if game.active_mods["angelsindustries"] then @@ -551,8 +569,13 @@ local unit_test_010 = function() end if escape == true then - unit_test_functions.print_msg("Not all techs were checked. Possibly due to hidden prerequisites") + unit_test_functions.print_msg("The following techs were not checked. Possibly due to hidden prerequisites") unit_test_result = unit_test_functions.test_failed + for tech_name, tech in pairs(tech_prototypes) do + if not processed_techs[tech_name] then + unit_test_functions.print_msg(tech_name) + end + end end return unit_test_result diff --git a/angelsdev-unit-test/unit-tests/unit-test-012.lua b/angelsdev-unit-test/unit-tests/unit-test-012.lua new file mode 100644 index 000000000..0eb4d6437 --- /dev/null +++ b/angelsdev-unit-test/unit-tests/unit-test-012.lua @@ -0,0 +1,112 @@ +-- This unit test validates that recipes are not unlocked by both a technology and one of it's prerequite technologies +local unit_test_functions = require("unit-test-functions") + +local starting_unlocks = { recipes = {} } +local processed_techs = {} +local unit_test_result = unit_test_functions.test_successful + +local function process_tech(tech) + local result = { name = tech.name, recipes = {} } + + -- Get unlocks from prerequisite techs + for prereq_name, _ in pairs(tech.prerequisites) do + local prereq = processed_techs[prereq_name] + if prereq then + for recipe_name, unlocked_by in pairs(prereq.recipes) do + result.recipes[recipe_name] = unlocked_by + end + end + end + + if #tech.prerequisites == 0 then + for recipe_name, _ in pairs(starting_unlocks.recipes) do + result.recipes[recipe_name] = "N/A" + end + end + + -- Build lists of recipes unlocked by this tech + for _, modifier in pairs(tech.effects) do + if modifier.type == "unlock-recipe" then + local unlocked_by = result.recipes[modifier.recipe] + if unlocked_by then + unit_test_functions.print_msg( + string.format( + "Recipe %q is unlocked by Tech %q as well as prerequisite tech %q.", + modifier.recipe, + tech.name, + unlocked_by + ) + ) + unit_test_result = unit_test_functions.test_failed + end + result.recipes[modifier.recipe] = unlocked_by or tech.name + end + end + + return result +end + +local function make_starting_unlocks() + local starting_tech = { name = "starting", prerequisites = {}, effects = {} } + + local recipe_filters = {} + table.insert(recipe_filters, { filter = "hidden", invert = true, mode = "and" }) + table.insert(recipe_filters, { filter = "enabled", invert = false, mode = "and" }) + local recipe_prototypes = game.get_filtered_recipe_prototypes(recipe_filters) + + for _, recipe in pairs(recipe_prototypes) do + table.insert(starting_tech.effects, { type = "unlock-recipe", recipe = recipe.name }) + end + + starting_unlocks = process_tech(starting_tech) +end + +local unit_test_012 = function() + -- Build lists recipes unlocked at the start of the game + make_starting_unlocks() + + -- Build list of technologies with recipes + + local tech_filters = {} + table.insert(tech_filters, { filter = "hidden", invert = true, mode = "and" }) + table.insert(tech_filters, { filter = "enabled", invert = false, mode = "and" }) + local tech_prototypes = game.get_filtered_technology_prototypes(tech_filters) + + local I = 0 + local escape = false + + while (#tech_prototypes > I) and (escape == false) do + escape = true + for tech_name, tech in pairs(tech_prototypes) do + if not processed_techs[tech_name] then + local all_prereqs_processed = true + for prereq_name, prereq in pairs(tech.prerequisites) do + if not processed_techs[prereq_name] then + all_prereqs_processed = false + break + end + end + + if all_prereqs_processed then + processed_techs[tech_name] = process_tech(tech) + I = I + 1 + escape = false + end + end + end + end + + if escape == true then + unit_test_functions.print_msg("The following techs were not checked. Possibly due to hidden prerequisites") + unit_test_result = unit_test_functions.test_failed + for tech_name, tech in pairs(tech_prototypes) do + if not processed_techs[tech_name] then + unit_test_functions.print_msg(tech_name) + end + end + end + + return unit_test_result +end + +return unit_test_012 diff --git a/angelsexploration/changelog.txt b/angelsexploration/changelog.txt index 916807101..76a49265b 100644 --- a/angelsexploration/changelog.txt +++ b/angelsexploration/changelog.txt @@ -1,9 +1,10 @@ --------------------------------------------------------------------------------------------------- Version: 0.3.15 -Date: xx.xx.2023 +Date: 22.12.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 + - Scarab start spawning at 15% evolution rather than 10% - First (partial) rework on artifact drop rates (748) Bugfixes: - Fixed the native inhabitants tips and tricks could not become visible diff --git a/angelsexploration/data.lua b/angelsexploration/data.lua index f0b179529..4b2268c89 100644 --- a/angelsexploration/data.lua +++ b/angelsexploration/data.lua @@ -12,6 +12,16 @@ angelsmods.triggers.artifacts["purple"] = true angelsmods.triggers.artifacts["green"] = true angelsmods.triggers.artifacts["base"] = true -- pink +--angelsmods.triggers.bio_pastes["copper"] = true +--angelsmods.triggers.bio_pastes["gold"] = true +--angelsmods.triggers.bio_pastes["tungsten"] = true +--angelsmods.triggers.bio_pastes["cobalt"] = true +--angelsmods.triggers.bio_pastes["titanium"] = true +--angelsmods.triggers.bio_pastes["zinc"] = true +--angelsmods.triggers.bio_pastes["iron"] = true + +--angelsmods.trigger.smelting_products["iron"].powder = true + --LOAD PROTOTYPES require("prototypes.exploration-category") require("prototypes.exploration-debug") diff --git a/angelsexploration/info.json b/angelsexploration/info.json index 49728e571..e6d9bdede 100644 --- a/angelsexploration/info.json +++ b/angelsexploration/info.json @@ -11,7 +11,7 @@ "angelsrefining >= 0.12.1", "angelspetrochem >= 0.9.21", "angelssmelting >= 0.6.18", - "angelsbioprocessing >= 0.7.21", + "angelsbioprocessing >= 0.7.25", "angelsindustries >= 0.4.15", "? bobenemies >= 1.1.5", "? bobwarfare >= 1.1.5" diff --git a/angelsexploration/locale/en/exploration.cfg b/angelsexploration/locale/en/exploration.cfg index b7ff283d9..68a1982d3 100644 --- a/angelsexploration/locale/en/exploration.cfg +++ b/angelsexploration/locale/en/exploration.cfg @@ -78,6 +78,22 @@ cannon-turret-shell-3=Uranium cannon turret shell bio-gun=Peztilence spreader bio-ammo=Peztilence ammo +small-alien-artifact=Small alien artifact (basic) +small-alien-artifact-blue=Small alien artifact (piercing) +small-alien-artifact-orange=Small alien artifact (acidic) +small-alien-artifact-purple=Small alien artifact (electric) +small-alien-artifact-yellow=Small alien artifact (explosive) +small-alien-artifact-red=Small alien artifact (fiery) +small-alien-artifact-green=Small alien artifact (poisonous) + +alien-artifact=Alien artifact (basic) +alien-artifact-blue=Alien artifact (piercing) +alien-artifact-orange=Alien artifact (acidic) +alien-artifact-purple=Alien artifact (electric) +alien-artifact-yellow=Alien artifact (explosive) +alien-artifact-red=Alien artifact (fiery) +alien-artifact-green=Alien artifact (poisonous) + [technology-name] angels-vequipment=Vehicle equipment angels-turbo-bike="Thorvin" bicycles @@ -91,6 +107,13 @@ angels-gathering-speed=Gathering speed angels-bio-gun=Peztilence spreader angels-refined-biological=Refined biological weapons +alien-research-blue=Piercing alien research +alien-research-orange=Acidic alien research +alien-research-purple=Electric alien research +alien-research-yellow=Explosive alien research +alien-research-red=Fiery alien research +alien-research-green=Poisonous alien research + [damage-type-name] bio=Biological plasma=Plasma diff --git a/angelsexploration/prototypes/entities/biter-builder.lua b/angelsexploration/prototypes/entities/biter-builder.lua index b443cb714..e61abf0f9 100644 --- a/angelsexploration/prototypes/entities/biter-builder.lua +++ b/angelsexploration/prototypes/entities/biter-builder.lua @@ -1728,7 +1728,6 @@ function angelsmods.functions.make_alien(def_data) "placeable-off-grid", "not-repairable", "breaths-air", - "hidden", }, max_health = def_data.appearance.health, resistances = def_data.resistance, @@ -1859,10 +1858,8 @@ 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] - --log(serpent.block(spawner)) + local spawner = data.raw["unit-spawner"][us_data.appearance.full_name or (us_data.appearance.type .. "-spawner")] + if spawner then spawner.resistances = spawner.resistances or {} for _, new_resistance_data in pairs(us_data.resistance or {}) do local existing_resistance = false @@ -1877,8 +1874,8 @@ function angelsmods.functions.update_spawner(us_data) table.insert(spawner.resistances, new_resistance_data) end end - spawner.max_health = us_data.appearance.health - spawner.spawning_cooldown = us_data.appearance.spawn_cooldown + spawner.max_health = us_data.appearance.health or spawner.max_health + spawner.spawning_cooldown = us_data.appearance.spawn_cooldown or spawner.spawning_cooldown spawner.result_units = spawner.result_units or {} for _, new_result_unit_data in pairs(us_data.results or {}) do local existing_result_unit = false diff --git a/angelsexploration/prototypes/entities/biter-definitions.lua b/angelsexploration/prototypes/entities/biter-definitions.lua index b887eff2c..cb73809f8 100644 --- a/angelsexploration/prototypes/entities/biter-definitions.lua +++ b/angelsexploration/prototypes/entities/biter-definitions.lua @@ -779,6 +779,37 @@ biter_definitions.bob_giant_poison_biter = { }, } +biter_definitions.bob_titan_biter = { + appearance = { + full_name = "bob-titan-biter", + }, + loot = { + create_loot_definition("yellow", 1.5, 1), -- 1-2 + create_loot_definition("green", 2.5, 1), -- 2-3 + }, +} + +biter_definitions.bob_behemoth_biter = { + appearance = { + full_name = "bob-behemoth-biter", + }, + loot = { + create_loot_definition("green", 2, 1), -- 2-3 + create_loot_definition("red", 2, 1), -- 2-3 + }, +} + +biter_definitions.bob_leviathan_biter = { + appearance = { + full_name = "bob-leviathan-biter", + }, + loot = { + create_loot_definition("yellow", 2, 0), -- 2 + create_loot_definition("green", 3, 0), -- 3 + create_loot_definition("red", 3, 0), -- 3 + }, +} + ------------------------------------------------------------------------------- -- BOB ELEMENTAL SPITTER DEFINITIONS ------------------------------------------ ------------------------------------------------------------------------------- @@ -827,6 +858,37 @@ biter_definitions.bob_giant_poison_spitter = { }, } +biter_definitions.bob_titan_spitter = { + appearance = { + full_name = "bob-titan-spitter", + }, + loot = { + create_loot_definition("yellow", 1.5, 1), -- 1-2 + create_loot_definition("red", 2.5, 1), -- 2-3 + }, +} + +biter_definitions.bob_behemoth_spitter = { + appearance = { + full_name = "bob-behemoth-spitter", + }, + loot = { + create_loot_definition("green", 2, 1), -- 2-3 + create_loot_definition("red", 2, 1), -- 2-3 + }, +} + +biter_definitions.bob_leviathan_spitter = { + appearance = { + full_name = "bob-leviathan-spitter", + }, + loot = { + create_loot_definition("yellow", 2, 0), -- 2 + create_loot_definition("green", 3, 0), -- 3 + create_loot_definition("red", 3, 0), -- 3 + }, +} + ------------------------------------------------------------------------------- -- SPAWNER DEFINITIONS -------------------------------------------------------- ------------------------------------------------------------------------------- @@ -848,6 +910,9 @@ biter_definitions.biter_spawner = { {type = "laser", decrease = 5, percent = 10},]] { type = "plasma", decrease = 5, percent = 10 }, }, + loot = { + create_loot_definition("base", 15, 10), -- 10-20 + }, } biter_definitions.spitter_spawner = { @@ -868,6 +933,9 @@ biter_definitions.spitter_spawner = { {type = "laser", decrease = 5, percent = 10},]] { type = "plasma", decrease = 5, percent = 10 }, }, + loot = { + create_loot_definition("base", 15, 10), -- 10-20 + }, } biter_definitions.scarab_spawner = { @@ -879,8 +947,8 @@ biter_definitions.scarab_spawner = { order = "b-d-c", }, results = { - { "small-biter", { { 0.0, 0.2 }, { 0.1, 0.4 }, { 0.2, 0.0 } } }, - { "small-scarab", { { 0.1, 0.0 }, { 0.25, 0.2 }, { 0.75, 0.0 } } }, + { "small-biter", { { 0.0, 0.2 }, { 0.15, 0.4 }, { 0.2, 0.0 } } }, + { "small-scarab", { { 0.15, 0.0 }, { 0.25, 0.2 }, { 0.75, 0.0 } } }, { "medium-scarab", { { 0.25, 0.0 }, { 0.5, 0.3 }, { 1.0, 0.2 } } }, { "big-scarab", { { 0.55, 0.0 }, { 0.75, 0.4 }, { 0.8, 0.4 } } }, { "behemoth-scarab", { { 0.93, 0.0 }, { 1.0, 0.6 } } }, @@ -893,6 +961,9 @@ biter_definitions.scarab_spawner = { { type = "laser", decrease = 5, percent = 10 }, { type = "plasma", decrease = 5, percent = 10 }, }, + loot = { + create_loot_definition("base", 21, 8), -- 17-25 + }, } biter_definitions.psyker_spawner = { @@ -904,8 +975,8 @@ biter_definitions.psyker_spawner = { order = "b-d-d", }, results = { - { "small-biter", { { 0.0, 1.6 }, { 0.1, 1.6 }, { 0.2, 0.4 }, { 0.3, 0.0 } } }, - { "small-scarab", { { 0.1, 0.0 }, { 0.2, 0.4 }, { 0.3, 1.5 }, { 0.4, 0.0 } } }, + { "small-biter", { { 0.0, 1.6 }, { 0.16, 1.6 }, { 0.2, 0.4 }, { 0.3, 0.0 } } }, + { "small-scarab", { { 0.16, 0.0 }, { 0.2, 0.4 }, { 0.3, 1.5 }, { 0.4, 0.0 } } }, { "small-psyker", { { 0.3, 0.0 }, { 0.4, 0.4 }, { 0.7, 0.0 } } }, { "medium-psyker", { { 0.45, 0.0 }, { 0.55, 0.1 }, { 0.7, 0.8 }, { 1.0, 0.1 } } }, { "big-psyker", { { 0.55, 0.0 }, { 0.7, 0.5 } } }, @@ -919,6 +990,27 @@ biter_definitions.psyker_spawner = { { type = "laser", decrease = 5, percent = 10 }, { type = "plasma", decrease = 5, percent = 10 }, }, + loot = { + create_loot_definition("base", 21, 8), -- 17-25 + }, +} + +biter_definitions.bob_biter_spawner = { + appearance = { + full_name = "bob-biter-spawner", + }, + loot = { + create_loot_definition("base", 27, 6), -- 24-30 + }, +} + +biter_definitions.bob_spitter_spawner = { + appearance = { + full_name = "bob-spitter-spawner", + }, + loot = { + create_loot_definition("base", 27, 6), -- 24-30 + }, } return biter_definitions diff --git a/angelsexploration/prototypes/exploration-debug.lua b/angelsexploration/prototypes/exploration-debug.lua index 15d037533..b6f72fd24 100644 --- a/angelsexploration/prototypes/exploration-debug.lua +++ b/angelsexploration/prototypes/exploration-debug.lua @@ -12,6 +12,5 @@ data.raw["gui-style"]["default"]["enemy_statistics_graph_label"] = { parent = "label", minimal_width = 100, height = 2, - scalable = true, font = "enemy_statistics_graph_font", } diff --git a/angelsexploration/prototypes/exploration-override.lua b/angelsexploration/prototypes/exploration-override.lua index ba8ec043b..b17e782ab 100644 --- a/angelsexploration/prototypes/exploration-override.lua +++ b/angelsexploration/prototypes/exploration-override.lua @@ -205,6 +205,7 @@ if mods["bobvehicleequipment"] then data.raw.car["angels-heavy-tank"].equipment_grid = "angels-heavy-tank" end +require("prototypes.overrides.artifacts-updates") require("prototypes.overrides.biter-updates") require("prototypes.overrides.gathering-turret-updates") require("prototypes.overrides.vehicle-updates") diff --git a/angelsexploration/prototypes/overrides/artifacts-updates.lua b/angelsexploration/prototypes/overrides/artifacts-updates.lua new file mode 100644 index 000000000..fcc946c29 --- /dev/null +++ b/angelsexploration/prototypes/overrides/artifacts-updates.lua @@ -0,0 +1,524 @@ +local OV = angelsmods.functions.OV + +local alien_technology = bobmods and bobmods.tech and data.raw.technology["alien-research"] and true or false +------------------------------------------------------------------------------- +-- BASE ARTIFACTS (pink, T0) -------------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + OV.add_prereq("alien-research", "angels-alien-artifact") + + for _, tech_name in pairs({ + -- personal equipment + bobmods.equipment and "solar-panel-equipment-4" or nil, + bobmods.equipment and "night-vision-equipment-3" or nil, + bobmods.equipment and "bob-energy-shield-equipment-3" or nil, + -- vehicle equipment + bobmods.equipment and "vehicle-solar-panel-equipment-5" or nil, + bobmods.equipment and "vehicle-fusion-cell-equipment-2" or nil, + bobmods.equipment and "vehicle-fusion-reactor-equipment-2" or nil, + bobmods.equipment and "vehicle-energy-shield-equipment-3" or nil, + bobmods.equipment and "vehicle-big-turret-equipment-1" or nil, + }) do + OV.add_prereq(tech_name, "angels-alien-artifact") + end + + if angelsmods.functions.is_special_vanilla() then + if bobmods.modules then + for _, tech_name in pairs({ + "speed-module-5", + "productivity-module-5", + "effectivity-module-5", + "pollution-clean-module-5", + "pollution-create-module-5", + }) do + OV.add_prereq(tech_name, "angels-alien-artifact") + end + end + end +end + +------------------------------------------------------------------------------- +-- BLUE ARTIFACTS (T1) -------------------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + data:extend({ + { + type = "technology", + name = "alien-research-blue", + icon = "__bobtech__/graphics/icons/alien-technology.png", + icon_size = 128, + order = "e-f-a", + prerequisites = { + "alien-research", + "angels-alien-artifact-blue", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-science-pack-blue", + }, + }, + unit = { + count = 250, + ingredients = { + { type = "item", name = "science-pack-gold", amount = 1 }, + { type = "item", name = "alien-science-pack", amount = 2 }, + }, + time = 30, + }, + }, + }) + OV.remove_unlock("alien-research", "alien-science-pack-blue") + + if bobmods.warfare then + for _, tech_name in pairs({ + (not bobmods.plates) and "bob-ap-bullets" or nil, + (not bobmods.plates) and "bob-shotgun-ap-shells" or nil, + (not bobmods.plates) and "bob-piercing-rocket" or nil, + bobmods.plates and "alien-blue-research" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-blue") + end + end +end + +------------------------------------------------------------------------------- +-- ORANGE ARTIFACTS (T1) ------------------------------------------------------ +------------------------------------------------------------------------------- +if alien_technology then + data:extend({ + { + type = "technology", + name = "alien-research-orange", + icon = "__bobtech__/graphics/icons/alien-technology.png", + icon_size = 128, + order = "e-f-a", + prerequisites = { + "alien-research", + "angels-alien-artifact-orange", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-science-pack-orange", + }, + }, + unit = { + count = 250, + ingredients = { + { type = "item", name = "science-pack-gold", amount = 1 }, + { type = "item", name = "alien-science-pack", amount = 2 }, + }, + time = 30, + }, + }, + }) + OV.remove_unlock("alien-research", "alien-science-pack-orange") + + if bobmods.warfare then + for _, tech_name in pairs({ + (not bobmods.plates) and "bob-acid-bullets" or nil, + (not bobmods.plates) and "bob-shotgun-acid-shells" or nil, + (not bobmods.plates) and "bob-acid-rocket" or nil, + bobmods.plates and "alien-orange-research" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-orange") + end + if bobmods.plates then -- swap purple and orange artifacts type + for _, tech_name in pairs({ + "bob-acid-bullets", + "bob-shotgun-acid-shells", + "bob-acid-rocket", + }) do + OV.remove_prereq(tech_name, "alien-purple-research") + OV.add_prereq(tech_name, "alien-orange-research") + end + end + end +end + +------------------------------------------------------------------------------- +-- BLUE + ORANGE ARTIFACTS (T1.5) --------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + for _, tech_name in pairs({ + bobmods.warfare and "bob-power-armor-3" or nil, + -- personal equipment + bobmods.equipment and "fusion-reactor-equipment-2" or nil, + bobmods.equipment and "bob-battery-equipment-4" or nil, + bobmods.equipment and "bob-energy-shield-equipment-4" or nil, + -- vehicle equipment + bobmods.equipment and "vehicle-fusion-cell-equipment-4" or nil, + bobmods.equipment and "vehicle-fusion-reactor-equipment-4" or nil, + bobmods.equipment and "vehicle-battery-equipment-4" or nil, + bobmods.equipment and "vehicle-energy-shield-equipment-4" or nil, + bobmods.equipment and "vehicle-big-turret-equipment-4" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-blue") + OV.add_prereq(tech_name, "alien-research-orange") + end +end + +------------------------------------------------------------------------------- +-- PURPLE ARTIFACTS (T2) ------------------------------------------------------ +------------------------------------------------------------------------------- +if alien_technology then + data:extend({ + { + type = "technology", + name = "alien-research-purple", + icon = "__bobtech__/graphics/icons/alien-technology.png", + icon_size = 128, + order = "e-f-a", + prerequisites = { + "alien-research", + "angels-alien-artifact-purple", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-science-pack-purple", + }, + }, + unit = { + count = 250, + ingredients = { + { type = "item", name = "science-pack-gold", amount = 1 }, + { type = "item", name = "alien-science-pack", amount = 2 }, + }, + time = 30, + }, + }, + }) + OV.remove_unlock("alien-research", "alien-science-pack-purple") + + if bobmods.warfare then + for _, tech_name in pairs({ + (not bobmods.plates) and "bob-electric-bullets" or nil, + (not bobmods.plates) and "bob-shotgun-electric-shells" or nil, + (not bobmods.plates) and "bob-electric-rocket" or nil, + bobmods.plates and "alien-purple-research" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-purple") + end + if bobmods.plates then -- swap purple and orange artifacts type + for _, tech_name in pairs({ + "bob-electric-bullets", + "bob-shotgun-electric-shells", + "bob-electric-rocket", + }) do + OV.remove_prereq(tech_name, "alien-orange-research") + OV.add_prereq(tech_name, "alien-purple-research") + end + end + end +end + +------------------------------------------------------------------------------- +-- YELLOW ARTIFACTS (T2) ------------------------------------------------------ +------------------------------------------------------------------------------- +if alien_technology then + data:extend({ + { + type = "technology", + name = "alien-research-yellow", + icon = "__bobtech__/graphics/icons/alien-technology.png", + icon_size = 128, + order = "e-f-a", + prerequisites = { + "alien-research", + "angels-alien-artifact-yellow", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-science-pack-yellow", + }, + }, + unit = { + count = 250, + ingredients = { + { type = "item", name = "science-pack-gold", amount = 1 }, + { type = "item", name = "alien-science-pack", amount = 2 }, + }, + time = 30, + }, + }, + }) + OV.remove_unlock("alien-research", "alien-science-pack-yellow") + + if bobmods.warfare then + for _, tech_name in pairs({ + (not bobmods.plates) and "bob-he-bullets" or nil, + (not bobmods.plates) and "bob-shotgun-explosive-shells" or nil, + (not bobmods.plates) and "bob-explosive-rocket" or nil, + (not bobmods.plates) and "bob-explosive-artillery-shells" or nil, + bobmods.plates and "alien-yellow-research" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-yellow") + end + end +end + +------------------------------------------------------------------------------- +-- PURPLE + YELLOW ARTIFACTS (T2.5) ------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + for _, tech_name in pairs({ + bobmods.warfare and "bob-power-armor-4" or nil, + -- personal equipment + bobmods.equipment and "fusion-reactor-equipment-3" or nil, + bobmods.equipment and "bob-battery-equipment-5" or nil, + bobmods.equipment and "bob-energy-shield-equipment-5" or nil, + -- vehicle equipment + bobmods.equipment and "vehicle-fusion-cell-equipment-5" or nil, + bobmods.equipment and "vehicle-fusion-reactor-equipment-5" or nil, + bobmods.equipment and "vehicle-battery-equipment-5" or nil, + bobmods.equipment and "vehicle-energy-shield-equipment-5" or nil, + bobmods.equipment and "vehicle-big-turret-equipment-5" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-purple") + OV.add_prereq(tech_name, "alien-research-yellow") + end +end + +------------------------------------------------------------------------------- +-- GREEN ARTIFACTS (T3) ------------------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + data:extend({ + { + type = "technology", + name = "alien-research-green", + icon = "__bobtech__/graphics/icons/alien-technology.png", + icon_size = 128, + order = "e-f-a", + prerequisites = { + "alien-research", + "angels-alien-artifact-green", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-science-pack-green", + }, + }, + unit = { + count = 250, + ingredients = { + { type = "item", name = "science-pack-gold", amount = 1 }, + { type = "item", name = "alien-science-pack", amount = 2 }, + }, + time = 30, + }, + }, + }) + OV.remove_unlock("alien-research", "alien-science-pack-green") + + if bobmods.warfare then + for _, tech_name in pairs({ + (not bobmods.plates) and "bob-poison-bullets" or nil, + (not bobmods.plates) and "bob-shotgun-poison-shells" or nil, + (not bobmods.plates) and "bob-poison-rocket" or nil, + (not bobmods.plates) and "bob-poison-artillery-shells" or nil, + bobmods.plates and "alien-green-research" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-green") + end + end +end + +------------------------------------------------------------------------------- +-- RED ARTIFACTS (T3) --------------------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + data:extend({ + { + type = "technology", + name = "alien-research-red", + icon = "__bobtech__/graphics/icons/alien-technology.png", + icon_size = 128, + order = "e-f-a", + prerequisites = { + "alien-research", + "angels-alien-artifact-red", + }, + effects = { + { + type = "unlock-recipe", + recipe = "alien-science-pack-red", + }, + }, + unit = { + count = 250, + ingredients = { + { type = "item", name = "science-pack-gold", amount = 1 }, + { type = "item", name = "alien-science-pack", amount = 2 }, + }, + time = 30, + }, + }, + }) + OV.remove_unlock("alien-research", "alien-science-pack-red") + + if bobmods.warfare then + for _, tech_name in pairs({ + (not bobmods.plates) and "bob-flame-bullets" or nil, + (not bobmods.plates) and "bob-shotgun-flame-shells" or nil, + (not bobmods.plates) and "bob-flame-rocket" or nil, + (not bobmods.plates) and "bob-fire-artillery-shells" or nil, + bobmods.plates and "alien-red-research" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-red") + end + end +end + +------------------------------------------------------------------------------- +-- GREEN + RED ARTIFACTS (T3.5) ----------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + for _, tech_name in pairs({ + bobmods.warfare and "bob-power-armor-5" or nil, + -- personal equipment + bobmods.equipment and "fusion-reactor-equipment-4" or nil, + bobmods.equipment and "bob-battery-equipment-6" or nil, + bobmods.equipment and "bob-energy-shield-equipment-6" or nil, + bobmods.equipment and "personal-laser-defense-equipment-6" or nil, + -- vehicle equipment + bobmods.equipment and "vehicle-fusion-cell-equipment-6" or nil, + bobmods.equipment and "vehicle-fusion-reactor-equipment-6" or nil, + bobmods.equipment and "vehicle-battery-equipment-6" or nil, + bobmods.equipment and "vehicle-energy-shield-equipment-6" or nil, + bobmods.equipment and "vehicle-big-turret-equipment-6" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-green") + OV.add_prereq(tech_name, "alien-research-red") + end +end + +------------------------------------------------------------------------------- +-- ALL ARTIFACTS (T4) --------------------------------------------------------- +------------------------------------------------------------------------------- +if alien_technology then + for _, tech_name in pairs({ + bobmods.warfare and "bob-plasma-bullets" or nil, + bobmods.warfare and "bob-shotgun-plasma-shells" or nil, + bobmods.warfare and "bob-plasma-rocket" or nil, + }) do + OV.remove_prereq(tech_name, "alien-research") + OV.add_prereq(tech_name, "alien-research-blue") + OV.add_prereq(tech_name, "alien-research-orange") + OV.add_prereq(tech_name, "alien-research-purple") + OV.add_prereq(tech_name, "alien-research-yellow") + OV.add_prereq(tech_name, "alien-research-green") + OV.add_prereq(tech_name, "alien-research-red") + end +end + +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +-- execute the remaining swap of the purple - orange artifact +if alien_technology then + if bobmods.warfare then + for _, icon_property in pairs({ + "icon", + "icon_size", + "icon_mipmaps", + "scale", + "shift", + "tint", + "unit", -- for now, we just swap the science packs as well... + }) do + for purple_tech_name, orange_tech_name in pairs({ + ["bob-electric-bullets"] = "bob-acid-bullets", + ["bob-shotgun-electric-shells"] = "bob-shotgun-acid-shells", + ["bob-electric-rocket"] = "bob-acid-rocket", + }) do + local purple_tech = data.raw.technology[purple_tech_name] + local orange_tech = data.raw.technology[orange_tech_name] + if purple_tech and orange_tech then + purple_tech[icon_property], orange_tech[icon_property] = + orange_tech[icon_property], purple_tech[icon_property] + end + end + for purple_item_name, orange_item_name in pairs({ + ["electric-bullet-projectile"] = "acid-bullet-projectile", + ["electric-bullet"] = "acid-bullet", + ["electric-bullet-magazine"] = "acid-bullet-magazine", + ["shotgun-electric-shell"] = "shotgun-acid-shell", + ["bob-electric-rocket"] = "bob-acid-rocket", + ["electric-rocket-warhead"] = "acid-rocket-warhead", + }) do + local purple_item = data.raw.item[purple_item_name] or data.raw.ammo[purple_item_name] + local orange_item = data.raw.item[orange_item_name] or data.raw.ammo[orange_item_name] + if purple_item and orange_item then + purple_item[icon_property], orange_item[icon_property] = + orange_item[icon_property], purple_item[icon_property] + end + end + end + if bobmods.plates then + OV.patch_recipes({ + { + name = "electric-bullet-projectile", + ingredients = { + { type = "item", name = "alien-orange-alloy", amount = 0 }, + { type = "fluid", name = "alien-acid", amount = 10 }, + }, + category = "crafting-with-fluid", + }, + { + name = "shotgun-electric-shell", + ingredients = { + { type = "item", name = "alien-orange-alloy", amount = 0 }, + { type = "fluid", name = "alien-acid", amount = 10 }, + }, + category = "crafting-with-fluid", + }, + { + name = "electric-rocket-warhead", + ingredients = { + { type = "item", name = "alien-orange-alloy", amount = 0 }, + { type = "fluid", name = "alien-acid", amount = 20 }, + }, + category = "crafting-with-fluid", + }, + { + name = "acid-bullet-projectile", + ingredients = { + { type = "fluid", name = "alien-acid", amount = 0 }, + { type = "item", name = "alien-orange-alloy", amount = 1 }, + }, + category = "crafting", + }, + { + name = "shotgun-acid-shell", + ingredients = { + { type = "fluid", name = "alien-acid", amount = 0 }, + { type = "item", name = "alien-orange-alloy", amount = 1 }, + }, + category = "crafting", + }, + { + name = "acid-rocket-warhead", + ingredients = { + { type = "fluid", name = "alien-acid", amount = 0 }, + { type = "item", name = "alien-orange-alloy", amount = 2 }, + }, + category = "crafting", + }, + }) + end + end +end diff --git a/angelsexploration/prototypes/overrides/biter-updates.lua b/angelsexploration/prototypes/overrides/biter-updates.lua index f36865ba7..196c701a2 100644 --- a/angelsexploration/prototypes/overrides/biter-updates.lua +++ b/angelsexploration/prototypes/overrides/biter-updates.lua @@ -1,6 +1,8 @@ --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) + unit_correction_offset = 1 / 100000000 + + -- update the earliest spawn point of biters 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"]["biter-spawner"] for _, bob_spawner in pairs({ data.raw["unit-spawner"]["bob-biter-spawner"], @@ -8,7 +10,7 @@ if mods["bobenemies"] then }) do if base_spawner and bob_spawner then for unit, unit_correction in pairs({ - ["big-biter"] = 1 / 100000000, + ["big-biter"] = unit_correction_offset, }) 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 @@ -48,6 +50,7 @@ if mods["bobenemies"] then end end + -- update the earliest spawn point of spitters on bobs spawner to the same evolution point of the base game spawner (with a small correction factor) base_spawner = data.raw["unit-spawner"]["spitter-spawner"] for _, bob_spawner in pairs({ data.raw["unit-spawner"]["bob-spitter-spawner"], @@ -55,9 +58,9 @@ if mods["bobenemies"] then }) 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, + ["small-spitter"] = unit_correction_offset, + ["medium-spitter"] = unit_correction_offset, + ["big-spitter"] = unit_correction_offset, }) 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 @@ -97,6 +100,29 @@ if mods["bobenemies"] then end end + -- change the earliest spawn point of enemies in bobs biter spawner + local elemental_biter_spawner = data.raw["unit-spawner"]["bob-biter-spawner"] + if elemental_biter_spawner then + for _, elemental_biter_spawner_data in pairs(elemental_biter_spawner.result_units) do + local elemental_biter_spawner_biter = elemental_biter_spawner_data[1] + if elemental_biter_spawner_biter == "bob-huge-acid-biter" then + elemental_biter_spawner_data[2][1][1] = 0.45 + end + end + end + + -- change the earliest spawn point of enemies in bobs spitter spawner + local elemental_spitter_spawner = data.raw["unit-spawner"]["bob-spitter-spawner"] + if elemental_spitter_spawner then + for _, elemental_spitter_spawner_data in pairs(elemental_spitter_spawner.result_units) do + local elemental_spitter_spawner_spitter = elemental_spitter_spawner_data[1] + if elemental_spitter_spawner_spitter == "bob-huge-acid-spitter" then + elemental_spitter_spawner_data[2][1][1] = 0.45 + unit_correction_offset + end + end + end + + -- change the earliest spawn point of enemies in bobs super spawner 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 @@ -128,20 +154,42 @@ 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.small_scarab) +angelsmods.functions.update_alien(biter_definitions.medium_scarab) +angelsmods.functions.update_alien(biter_definitions.big_scarab) +angelsmods.functions.update_alien(biter_definitions.behemoth_scarab) +angelsmods.functions.update_alien(biter_definitions.colossal_scarab) + +angelsmods.functions.update_alien(biter_definitions.small_psyker) +angelsmods.functions.update_alien(biter_definitions.medium_psyker) +angelsmods.functions.update_alien(biter_definitions.big_psyker) +angelsmods.functions.update_alien(biter_definitions.behemoth_psyker) +angelsmods.functions.update_alien(biter_definitions.colossal_psyker) + 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_titan_biter) +angelsmods.functions.update_alien(biter_definitions.bob_behemoth_biter) +angelsmods.functions.update_alien(biter_definitions.bob_leviathan_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_alien(biter_definitions.bob_titan_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_behemoth_spitter) +angelsmods.functions.update_alien(biter_definitions.bob_leviathan_spitter) angelsmods.functions.update_spawner(biter_definitions.spitter_spawner) angelsmods.functions.update_spawner(biter_definitions.biter_spawner) +angelsmods.functions.update_spawner(biter_definitions.scarab_spawner) +angelsmods.functions.update_spawner(biter_definitions.psyker_spawner) +angelsmods.functions.update_spawner(biter_definitions.bob_biter_spawner) +angelsmods.functions.update_spawner(biter_definitions.bob_spitter_spawner) --SHOW RESISTANCES for _, unit in pairs(data.raw.unit) do @@ -190,18 +238,3 @@ for _, type in pairs({ "unit", "unit-spawner", "turret" }) do update_loot_table(unit.loot) end end - ---[[if mods["bobenemies"] then - for _, biter in pairs({ "behemoth-biter", "behemoth-spitter" }) do - local unit = data.raw.unit[biter] - if biter then - for _, loot in pairs(unit.loot or {}) do - if loot.item == "small-alien-artifact" then - loot.count_min = ((loot.count_min == nil and 1) or loot.count_min) / 4 -- 4 -> 1 - loot.count_max = ((loot.count_max == nil and 1) or loot.count_max) / 4 -- 12 -> 3 - end - end - end - end -end ---]] diff --git a/angelsexploration/prototypes/overrides/gathering-turret-updates.lua b/angelsexploration/prototypes/overrides/gathering-turret-updates.lua index 33a20b2e2..49d69ad49 100644 --- a/angelsexploration/prototypes/overrides/gathering-turret-updates.lua +++ b/angelsexploration/prototypes/overrides/gathering-turret-updates.lua @@ -68,41 +68,59 @@ if angelsmods.triggers.artifacts["red"] then angelsmods.functions.create_gathering_turret_target({ name = "small-alien-artifact-red", require_tech_unlock = true, - additional_tech_prerequisites = "angels-gathering-turret", + additional_tech_prerequisites = { + "angels-gathering-turret", + "angels-alien-artifact-red", + }, }) end if angelsmods.triggers.artifacts["yellow"] then angelsmods.functions.create_gathering_turret_target({ name = "small-alien-artifact-yellow", require_tech_unlock = true, - additional_tech_prerequisites = "angels-gathering-turret", + additional_tech_prerequisites = { + "angels-gathering-turret", + "angels-alien-artifact-yellow", + }, }) end if angelsmods.triggers.artifacts["orange"] then angelsmods.functions.create_gathering_turret_target({ name = "small-alien-artifact-orange", require_tech_unlock = true, - additional_tech_prerequisites = "angels-gathering-turret", + additional_tech_prerequisites = { + "angels-gathering-turret", + "angels-alien-artifact-orange", + }, }) end if angelsmods.triggers.artifacts["blue"] then angelsmods.functions.create_gathering_turret_target({ name = "small-alien-artifact-blue", require_tech_unlock = true, - additional_tech_prerequisites = "angels-gathering-turret", + additional_tech_prerequisites = { + "angels-gathering-turret", + "angels-alien-artifact-blue", + }, }) end if angelsmods.triggers.artifacts["purple"] then angelsmods.functions.create_gathering_turret_target({ name = "small-alien-artifact-purple", require_tech_unlock = true, - additional_tech_prerequisites = "angels-gathering-turret", + additional_tech_prerequisites = { + "angels-gathering-turret", + "angels-alien-artifact-purple", + }, }) end if angelsmods.triggers.artifacts["green"] then angelsmods.functions.create_gathering_turret_target({ name = "small-alien-artifact-green", require_tech_unlock = true, - additional_tech_prerequisites = "angels-gathering-turret", + additional_tech_prerequisites = { + "angels-gathering-turret", + "angels-alien-artifact-green", + }, }) end diff --git a/angelsexploration/prototypes/technology/exploration-technology.lua b/angelsexploration/prototypes/technology/exploration-technology.lua index 313a81ed7..ad3c82c23 100644 --- a/angelsexploration/prototypes/technology/exploration-technology.lua +++ b/angelsexploration/prototypes/technology/exploration-technology.lua @@ -126,6 +126,7 @@ data:extend({ icon_mipmaps = 4, prerequisites = { "military-science-pack", + "angels-alien-artifact", }, effects = { { diff --git a/angelsexploration/settings-updates.lua b/angelsexploration/settings-updates.lua index ca068b554..6803b11bd 100644 --- a/angelsexploration/settings-updates.lua +++ b/angelsexploration/settings-updates.lua @@ -1,3 +1,4 @@ if mods["bobenemies"] then angelsmods.settings.hide_setting("bool-setting", "bobmods-enemies-enableartifacts", true) -- enable artifacts + angelsmods.settings.hide_setting("bool-setting", "bobmods-enemies-biggersooner", false) -- fixed biter rates to keep biter progression end diff --git a/angelsindustries/changelog.txt b/angelsindustries/changelog.txt index 9111bfb45..566e8e6bf 100644 --- a/angelsindustries/changelog.txt +++ b/angelsindustries/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 0.4.19 +Date: 22.12.2023 + Changes: + - Compatibility with Bob's changes (911) + Bugfixes: + - Component mode: + - Fixed the regular recipe for fiber board was still available when playing with bobs mods +--------------------------------------------------------------------------------------------------- Version: 0.4.18 Date: 23.02.2023 Bugfixes: diff --git a/angelsindustries/graphics/entity/cargo-robot/Thumbs.db b/angelsindustries/graphics/entity/cargo-robot/Thumbs.db deleted file mode 100644 index b06a3968e1099b191e5abc22097295885d441c66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 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 B%=-WU diff --git a/angelsindustries/info.json b/angelsindustries/info.json index da4045720..4146e8b41 100644 --- a/angelsindustries/info.json +++ b/angelsindustries/info.json @@ -1,6 +1,6 @@ { "name": "angelsindustries", - "version": "0.4.18", + "version": "0.4.19", "factorio_version": "1.1", "title": "Angel's Industries", "author": "Arch666Angel", @@ -9,7 +9,7 @@ "description": "Adds industrial equipment as well as the tools you need to expand and grow your base. Adds extra components [BETA] and a tech [ALPHA] overhaul.", "dependencies": [ "angelsrefining >= 0.12.1", - "angelspetrochem >= 0.9.20", + "angelspetrochem >= 0.9.25", "angelssmelting >= 0.6.17", "angelsbioprocessing >= 0.7.21", "(?) bobassembly >= 1.1.5", diff --git a/angelsindustries/locale/en/nuclear-power.cfg b/angelsindustries/locale/en/nuclear-power.cfg index 6dd421918..5006dea9b 100644 --- a/angelsindustries/locale/en/nuclear-power.cfg +++ b/angelsindustries/locale/en/nuclear-power.cfg @@ -15,7 +15,7 @@ used-up-AMOX-cell=Used-up mixed-oxide (MOX) fuel cell angels-thorium-fuel-cell=Thorium fuel cell used-up-angels-thorium-fuel-cell=Used-up thorium fuel cell angels-deuterium-fuel-cell=Deuterium fuel cell -used-up-angels-deuterium-fuel-cell=Used up deuterium fuel cell +used-up-angels-deuterium-fuel-cell=Used-up deuterium fuel cell angels-nuclear-fuel=Plutonium nuclear fuel angels-nuclear-fuel-2=Fusion nuclear fuel diff --git a/angelsindustries/prototypes/angels-industries-triggers.lua b/angelsindustries/prototypes/angels-industries-triggers.lua index a3b125c6f..f411af31f 100644 --- a/angelsindustries/prototypes/angels-industries-triggers.lua +++ b/angelsindustries/prototypes/angels-industries-triggers.lua @@ -4,6 +4,9 @@ if angelsmods.industries.overhaul then angelsmods.trigger.ores["aluminium"] = true angelsmods.trigger.ores["chrome"] = true angelsmods.trigger.ores["cobalt"] = true + if mods["bobores"] then + bobmods.ores.cobalt.enabled = true + end angelsmods.trigger.ores["copper"] = true angelsmods.trigger.ores["gold"] = true angelsmods.trigger.ores["iron"] = true @@ -55,6 +58,7 @@ if angelsmods.industries.components then angelsmods.trigger.smelting_products["solder"].mixture = true angelsmods.trigger.smelting_molds = true angelsmods.trigger.smelting_products["glass"].fibre = true + angelsmods.trigger.smelting_products["glass"].board = false angelsmods.trigger.smelting_products["iron"].rod = true angelsmods.trigger.smelting_products["platinum"].plate = true angelsmods.trigger.smelting_products["platinum"].wire = true diff --git a/angelsindustries/prototypes/ordening/angels-intermediates.lua b/angelsindustries/prototypes/ordening/angels-intermediates.lua index 5c0c7a2a2..be7a6aa69 100644 --- a/angelsindustries/prototypes/ordening/angels-intermediates.lua +++ b/angelsindustries/prototypes/ordening/angels-intermediates.lua @@ -69,6 +69,7 @@ if angelsmods.industries.overhaul then move_item("wooden-board", "angels-board", "z[bob]-a") move_item("phenolic-board", "angels-board", "z[bob]-b") move_item("fibreglass-board", "angels-board", "z[bob]-c") + move_item("angels-glass-fiber-board", "angels-board", "z[bob]-c", "recipe") move_item("basic-circuit-board", "angels-circuit-board", "z[bob]-a") move_item("circuit-board", "angels-circuit-board", "z[bob]-b") diff --git a/angelsindustries/prototypes/overrides/components-base-recipe-update.lua b/angelsindustries/prototypes/overrides/components-base-recipe-update.lua index ebbb2934e..2ac732fa6 100644 --- a/angelsindustries/prototypes/overrides/components-base-recipe-update.lua +++ b/angelsindustries/prototypes/overrides/components-base-recipe-update.lua @@ -7,15 +7,21 @@ if angelsmods.industries.components then OV.add_unlock("angels-components-weapons-basic", "submachine-gun") --battery requirements + OV.remove_prereq("angels-glass-smelting-3", "strand-casting-3") OV.remove_unlock("angels-glass-smelting-2", "angels-coil-glass-fiber") - OV.remove_prereq("angels-glass-smelting-2", "strand-casting-2") + OV.remove_unlock("angels-glass-smelting-3", "angels-coil-glass-fiber-fast") OV.add_unlock("angels-glass-smelting-1", "angels-coil-glass-fiber") + OV.add_unlock("angels-glass-smelting-2", "angels-coil-glass-fiber-fast") OV.add_prereq("angels-glass-smelting-1", "strand-casting-1") OV.patch_recipes({ { name = "angels-coil-glass-fiber", category = "strand-casting", }, + { + name = "angels-coil-glass-fiber-fast", + category = "strand-casting-2", + }, }) --battery usage --vanilla replacements diff --git a/angelsindustries/prototypes/overrides/components-block-update.lua b/angelsindustries/prototypes/overrides/components-block-update.lua index 51d530b5c..30ce406a8 100644 --- a/angelsindustries/prototypes/overrides/components-block-update.lua +++ b/angelsindustries/prototypes/overrides/components-block-update.lua @@ -9,7 +9,7 @@ if angelsmods.industries.components then OV.remove_unlock("angels-stone-smelting-2", "mold-expendable") OV.add_unlock("angels-stone-smelting-1", "mold-expendable") OV.remove_prereq("angels-stone-smelting-2", "bio-arboretum-1") - OV.add_prereq("angels-stone-smelting-1", "bio-arboretum-1") + OV.add_prereq("angels-stone-smelting-1", "bio-wood-processing-2") OV.add_prereq("angels-stone-smelting-1", "angels-components-mechanical-1") -- update depending technologies accordingly OV.remove_prereq("angels-iron-smelting-2", "angels-stone-smelting-2") @@ -17,52 +17,6 @@ if angelsmods.industries.components then OV.remove_prereq("angels-components-mechanical-2", "angels-stone-smelting-2") OV.add_prereq("angels-components-mechanical-2", "angels-stone-smelting-1") - ----------------------------------------------------------------------------- - -- ADD ELECTRONIC RECIPES TO ELECTRONIC ASSMBLY ----------------------------- - ----------------------------------------------------------------------------- - if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value == true then - --create list of recipes to add to the electronicmachines - for _, elec in pairs({ - -- todo: move cables and coils to smelting! - "copper-cable", - "angels-wire-coil-copper-converting", - "angels-wire-gold", - "angels-wire-coil-gold-converting", - "basic-platinated-copper-wire", - "angels-wire-coil-platinum-converting", - "basic-silvered-copper-wire", - "angels-wire-coil-silver-converting", - "basic-tinned-copper-wire", - "angels-wire-coil-tin-converting", - "angels-roll-solder-converting", - "circuit-red-board", - "circuit-green-board", - "circuit-orange-board", - "circuit-blue-board", - --"circuit-yellow-board" --crafted with 2 fluids - "circuit-grey-board", - "circuit-grey-board-alternative", - "circuit-red", - "circuit-green", - "circuit-orange", - "circuit-blue", - "circuit-yellow", - "circuit-grey", - "circuit-red-loaded", - "circuit-green-loaded", - "circuit-orange-loaded", - "circuit-blue-loaded", - "circuit-yellow-loaded", - "circuit-resistor", - "circuit-transistor", - "circuit-microchip", - "circuit-transformer", - "circuit-cpu", - }) do - data.raw.recipe[elec].category = "electronics" - end - end - if angelsmods.industries.tech then else ----------------------------------------------------------------------------- @@ -231,7 +185,6 @@ if angelsmods.industries.components then OV.add_unlock("military-science-pack", "block-mechanical-2") OV.add_prereq("ore-leaching", "angels-basic-blocks-3") OV.add_prereq("advanced-ore-refining-2", "angels-basic-blocks-3") - OV.add_prereq("ore-electro-whinning-cell", "angels-basic-blocks-3") OV.add_prereq("angels-advanced-chemistry-2", "angels-basic-blocks-3") OV.add_prereq("angels-metallurgy-3", "angels-basic-blocks-3") diff --git a/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-assemblers-update.lua b/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-assemblers-update.lua index da63d98f2..e78fc2273 100644 --- a/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-assemblers-update.lua +++ b/angelsindustries/prototypes/overrides/components-bobs-entity-update/components-bobs-assemblers-update.lua @@ -126,7 +126,9 @@ if angelsmods.industries.components then OV.add_prereq("electronics-machine-2", "angels-components-construction-3") OV.add_prereq("electronics-machine-2", "advanced-electronics") OV.add_prereq("electronics-machine-3", "angels-components-construction-5") - OV.add_prereq("electronics-machine-3", "advanced-electronics-3") + if data.raw.technology["advanced-electronics-3"] then + OV.add_prereq("electronics-machine-3", "advanced-electronics-3") + end OV.set_science_pack("electronics-machine-3", "utility-science-pack") if angelsmods.industries.tech then OV.add_prereq("electronics-machine-1", "tech-specialised-labs-basic-enhance-1") 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 index 236398753..f224754db 100644 --- 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 @@ -56,12 +56,21 @@ if angelsmods.industries.components then }, }) - 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") + angelsmods.industries.blocks.enhancement5 = true + + if angelsmods.industries.tech then + OV.add_prereq("radars-2", "tech-specialised-labs-basic-enhance-2") + OV.add_prereq("radars-3", "tech-specialised-labs-basic-enhance-3") + OV.add_prereq("radars-4", "tech-specialised-labs-advanced-enhance-1") + OV.add_prereq("radars-5", "tech-specialised-labs-advanced-enhance-2") + else + 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") + end OV.remove_prereq("radars-2", "electronics") OV.remove_prereq("radars-3", "military-3") diff --git a/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua b/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua index 1a1bc4154..72be6a906 100644 --- a/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua +++ b/angelsindustries/prototypes/overrides/components-bobs-recipe-update.lua @@ -9,17 +9,17 @@ if angelsmods.industries.components then { name = "circuit-grey-board", category = "electronics" }, { name = "circuit-grey-board-alternative", category = "electronics" }, { name = "circuit-red-board", category = "electronics" }, - { name = "circuit-green-board", category = "electronics-machine" }, - { name = "circuit-orange-board", category = "electronics-machine" }, - { name = "circuit-blue-board", category = "electronics-machine" }, - --{ name = "circuit-yellow-board", category = "electronics-machine" }, + { name = "circuit-green-board", category = "electronics-with-fluid" }, + { name = "circuit-orange-board", category = "electronics-with-fluid" }, + { name = "circuit-blue-board", category = "electronics-with-fluid" }, + --{ name = "circuit-yellow-board", category = "electronics-with-fluid" }, --crafted with 2 fluids { name = "circuit-grey", category = "electronics" }, { name = "circuit-red", category = "electronics" }, { name = "circuit-green", category = "electronics-machine" }, - { name = "circuit-orange", category = "electronics-machine" }, - { name = "circuit-blue", category = "electronics-machine" }, - { name = "circuit-yellow", category = "electronics-machine" }, + { name = "circuit-orange", category = "electronics-with-fluid" }, + { name = "circuit-blue", category = "electronics-with-fluid" }, + { name = "circuit-yellow", category = "electronics-with-fluid" }, { name = "circuit-red-loaded", category = "electronics" }, { name = "circuit-green-loaded", category = "electronics-machine" }, @@ -29,9 +29,9 @@ if angelsmods.industries.components then { name = "circuit-resistor", category = "electronics" }, { name = "circuit-transistor", category = "electronics-machine" }, - { name = "circuit-microchip", category = "electronics-machine" }, + { name = "circuit-microchip", category = "electronics-with-fluid" }, { name = "circuit-transformer", category = "electronics-machine" }, - { name = "circuit-cpu", category = "electronics-machine" }, + { name = "circuit-cpu", category = "electronics-with-fluid" }, { name = "electronic-parts-resistor", category = "electronics-machine" }, { name = "electronic-parts-transistor", category = "electronics-machine" }, { name = "electronic-parts-microchip", category = "electronics-machine" }, @@ -51,7 +51,6 @@ if angelsmods.industries.components then -- BOB ELECTRONICS ---------------------------------------------------------- ----------------------------------------------------------------------------- if mods["bobelectronics"] then - OV.disable_recipe("wooden-board-paper") OV.disable_recipe("superior-circuit-board") end @@ -200,7 +199,17 @@ if angelsmods.industries.components then OV.global_replace_technology("battery-3", "angels-components-batteries-4") OV.disable_technology("battery-3") - OV.add_unlock("angels-components-batteries-6", "silver-oxide") + + OV.disable_recipe("silver-oxide") + OV.disable_recipe("lithium") + OV.disable_recipe("lithium-water-electrolysis") + OV.disable_recipe("lithium-chloride") + OV.disable_recipe("water-thermal-lithia") + angelsmods.functions.add_flag("silver-oxide", "hidden") + angelsmods.functions.add_flag("lithium", "hidden") + angelsmods.functions.add_flag("lithium-perchlorate", "hidden") + angelsmods.functions.add_flag("lithia-water", "hidden") + OV.disable_technology("lithium-processing") end ----------------------------------------------------------------------------- diff --git a/angelsindustries/prototypes/overrides/global-tech-base-cores.lua b/angelsindustries/prototypes/overrides/global-tech-base-cores.lua index 75fdefc97..9133a39c9 100644 --- a/angelsindustries/prototypes/overrides/global-tech-base-cores.lua +++ b/angelsindustries/prototypes/overrides/global-tech-base-cores.lua @@ -22,6 +22,8 @@ if angelsmods.industries.tech then AI.core_replace("turrets", "war", "basic") AI.core_replace("flammables", "war", "enhance") -- REFINING + -- PETROCHEM + AI.core_replace("basic-chemistry", "processing", "basic") -- SMELTING AI.core_replace("angels-solder-smelting-basic", "processing", "basic") -- BIO PROCESSING @@ -185,7 +187,6 @@ if angelsmods.industries.tech then OV.set_science_pack("low-density-structure", "datacore-processing-1", 2) -- REFINING OV.set_science_pack("geode-crystallization-1", "datacore-processing-1", 2) - OV.set_science_pack("geode-crystallization-2", "datacore-processing-1", 2) OV.set_science_pack("thermal-water-extraction", "datacore-processing-1", 2) -- PETROCHEM OV.set_science_pack("angels-coal-cracking", "datacore-processing-1", 2) @@ -198,6 +199,8 @@ if angelsmods.industries.tech then OV.set_science_pack("rubber", "datacore-processing-1", 2) AI.core_replace("rocket-booster-1", "war", "processing") AI.core_replace("rocket-booster-2", "war", "processing") + -- BIOPROCESSING + AI.core_replace("angels-composting", "basic", "processing") OV.execute() ------------------------------------------------------------------ -- now upgrade the cores to tier 2 and let them depend on the correct technology diff --git a/angelsindustries/prototypes/overrides/global-tech-base-packs.lua b/angelsindustries/prototypes/overrides/global-tech-base-packs.lua index 052a1e0dc..79570edf1 100644 --- a/angelsindustries/prototypes/overrides/global-tech-base-packs.lua +++ b/angelsindustries/prototypes/overrides/global-tech-base-packs.lua @@ -15,6 +15,8 @@ if angelsmods.industries.tech then "logistics", "turrets", -- REFINING + -- PETROCHEM + "basic-chemistry", -- SMELTING "angels-solder-smelting-basic", -- BIO PROCESSING @@ -71,6 +73,7 @@ if angelsmods.industries.tech then AI.pack_replace("lubricant", "blue", "green") -- BIO PROCESSING OV.add_prereq("bio-refugium-fish-1", "water-treatment-2") + AI.pack_replace("bio-paper-2", "blue", "green") -- INDUSTRIES OV.remove_prereq("tech-orange-circuit", "angels-components-batteries-3") OV.add_prereq("tech-orange-circuit", "angels-components-batteries-2") @@ -161,7 +164,6 @@ if angelsmods.industries.tech then AI.pack_replace("bio-processing-alien-2", "green", "orange") AI.pack_replace("bio-processing-alien-3", "green", "orange") AI.pack_replace("geode-crystallization-1", "green", "orange") - AI.pack_replace("geode-crystallization-2", "green", "orange") AI.pack_replace("bio-processing-crystal-splinter-1", "green", "orange") AI.pack_replace("bio-processing-crystal-splinter-2", "green", "orange") AI.pack_replace("bio-processing-crystal-splinter-3", "green", "orange") @@ -203,6 +205,8 @@ if angelsmods.industries.tech then -- SMELTING OV.remove_prereq("angels-metallurgy-4", "production-science-pack") OV.remove_science_pack("angels-tungsten-smelting-2", "production-science-pack") + -- BIOPROCESSING + OV.remove_prereq("bio-paper-3", "production-science-pack") -- INDUSTRIES AI.pack_replace("tech-yellow-circuit", "yellow", "blue") OV.remove_prereq("tech-yellow-circuit", "angels-components-batteries-5") diff --git a/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua b/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua index 8980e8026..f403318fc 100644 --- a/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua +++ b/angelsindustries/prototypes/overrides/global-tech-bobs-cores.lua @@ -40,8 +40,6 @@ if angelsmods.industries.tech then if settings.startup["bobmods-assembly-burner"].value == true then AI.core_replace("basic-automation", "processing", "basic") AI.core_replace("automation", "basic", "processing") - else - AI.core_replace("automation", "processing", "basic") end --chemplants if settings.startup["bobmods-assembly-chemicalplants"].value == true then @@ -160,7 +158,9 @@ if angelsmods.industries.tech then AI.core_replace("bob-robo-modular-1", "basic", "logistic") AI.core_replace("bob-robo-modular-2", "basic", "logistic") AI.core_replace("bob-robo-modular-3", "basic", "logistic") + -- "bob-robo-modular-4" could be using basic or processing core, depending on which of Bob's mods are enabled AI.core_replace("bob-robo-modular-4", "basic", "logistic") + AI.core_replace("bob-robo-modular-4", "processing", "logistic") -- repair packs AI.core_replace("bob-repair-pack-2", "basic", "enhance") AI.core_replace("bob-repair-pack-3", "basic", "enhance") @@ -221,7 +221,6 @@ if angelsmods.industries.tech then -- BOBS POWER ----------------------------------------------------------------- ------------------------------------------------------------------------------- if mods["bobpower"] then - AI.core_replace("steam-power", "energy", "basic") if settings.startup["bobmods-power-fluidgenerator"].value == true then AI.core_replace("fluid-generator-1", "logistic", "energy") AI.core_replace("fluid-generator-2", "logistic", "energy") @@ -252,6 +251,12 @@ if angelsmods.industries.tech then if mods["bobtech"] then --Remove cores associated with advanced alien technologies if data.raw.tool["science-pack-gold"] then + OV.remove_science_pack("alien-research-blue", "datacore-processing-1") + OV.remove_science_pack("alien-research-orange", "datacore-processing-1") + OV.remove_science_pack("alien-research-purple", "datacore-processing-1") + OV.remove_science_pack("alien-research-yellow", "datacore-processing-1") + OV.remove_science_pack("alien-research-green", "datacore-processing-1") + OV.remove_science_pack("alien-research-red", "datacore-processing-1") --blue tier OV.remove_science_pack("bob-battery-equipment-4", "datacore-enhance-1") OV.remove_science_pack("bob-battery-equipment-5", "datacore-enhance-1") @@ -284,6 +289,7 @@ if angelsmods.industries.tech then OV.remove_science_pack("vehicle-fusion-reactor-equipment-4", "datacore-enhance-1") OV.remove_science_pack("vehicle-fusion-reactor-equipment-5", "datacore-enhance-1") OV.remove_science_pack("vehicle-fusion-reactor-equipment-6", "datacore-enhance-1") + OV.remove_science_pack("personal-laser-defense-equipment-6", "datacore-enhance-1") table.insert( data.raw.recipe["science-pack-gold"].ingredients, diff --git a/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua b/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua index cdd48ec33..66c62ffc6 100644 --- a/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua +++ b/angelsindustries/prototypes/overrides/global-tech-bobs-packs.lua @@ -15,6 +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") + AI.pack_replace("gem-processing-3", "green", "orange") AI.pack_replace("electric-mixing-furnace", "blue", "orange") if not mods["bobtech"] then --alien resources @@ -213,6 +214,7 @@ if angelsmods.industries.tech then --AI.pack_replace("bob-robo-modular-1", "green", "orange") AI.pack_replace("bob-robo-modular-2", "blue", "orange") OV.remove_prereq("bob-robo-modular-2", "tech-blue-packs") + AI.pack_replace("bob-robo-modular-3", "yellow", "blue") -- robots OV.remove_science_pack("construction-robotics", "angels-science-pack-orange") AI.pack_replace("logistic-robotics", "blue", "orange") @@ -299,10 +301,17 @@ if angelsmods.industries.tech then OV.add_prereq("bob-laser-rifle-ammo-3", "military-3") --Drones/CombatBots AI.pack_replace("bob-robot-gun-1", "green", "orange") - AI.pack_replace("bob-robot-gun-drones", "green", "orange") - AI.pack_replace("bob-robot-plasma-drones", "green", "orange") - AI.pack_replace("bob-robot-laser-drones", "green", "orange") - AI.pack_replace("bob-robot-flamethrower-drones", "green", "orange") + if mods["boblogistics"] then + AI.pack_replace("bob-robot-gun-drones", "green", "orange") + AI.pack_replace("bob-robot-plasma-drones", "green", "orange") + AI.pack_replace("bob-robot-laser-drones", "green", "orange") + AI.pack_replace("bob-robot-flamethrower-drones", "green", "orange") + else + AI.pack_replace("bob-robot-gun-drones", "blue", "orange") + AI.pack_replace("bob-robot-plasma-drones", "blue", "orange") + AI.pack_replace("bob-robot-laser-drones", "blue", "orange") + AI.pack_replace("bob-robot-flamethrower-drones", "blue", "orange") + end AI.pack_replace("bob-laser-robot", "blue", "yellow") --Rockets AI.pack_replace("rocketry", "green", "orange") @@ -314,7 +323,6 @@ if angelsmods.industries.tech then --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 @@ -361,7 +369,6 @@ if angelsmods.industries.tech then -- BOBS POWER ----------------------------------------------------------------- ------------------------------------------------------------------------------- if mods["bobpower"] then - AI.pack_replace("steam-power", "red", "grey") --adds bob power stuffs OV.remove_science_pack("electric-engine", "angels-science-pack-green") -- steam power diff --git a/angelsindustries/prototypes/overrides/overhaul-nuclear-power.lua b/angelsindustries/prototypes/overrides/overhaul-nuclear-power.lua index 235f75c72..8ad71ff62 100644 --- a/angelsindustries/prototypes/overrides/overhaul-nuclear-power.lua +++ b/angelsindustries/prototypes/overrides/overhaul-nuclear-power.lua @@ -110,7 +110,6 @@ if angelsmods.industries.overhaul then -- Productivity ------------------------------------------------------------------------------- angelsmods.functions.allow_productivity("angels-thorium-processing") - angelsmods.functions.allow_productivity("angelsore-crystal-mix6-processing") --thorium ore angelsmods.functions.allow_productivity("angels-uranium-fuel-cell") angelsmods.functions.allow_productivity("angels-mixed-oxide-cell") angelsmods.functions.allow_productivity("angels-thorium-fuel-cell") @@ -188,6 +187,15 @@ if angelsmods.industries.overhaul then end end end + if data.raw.recipe["plutonium-nucleosynthesis"] then + OV.patch_recipes({ + { + name = "plutonium-nucleosynthesis", + subgroup = "angels-power-nuclear-processing", + order = "b[AMOX]-d[synthesis]", + }, + }) + end else --if not rtg, remove bobingabout process OV.remove_unlock("bobingabout-enrichment-process", "bobingabout-enrichment-process") diff --git a/angelsindustries/prototypes/technology/components-batteries-technology.lua b/angelsindustries/prototypes/technology/components-batteries-technology.lua index 838e574dd..c92309a6f 100644 --- a/angelsindustries/prototypes/technology/components-batteries-technology.lua +++ b/angelsindustries/prototypes/technology/components-batteries-technology.lua @@ -113,7 +113,7 @@ if angelsmods.industries.components then "thermal-water-extraction", "bio-processing-green", "angels-components-batteries-2", - "gas-steam-cracking-1", + "steam-cracking-1", }, effects = { { @@ -261,7 +261,7 @@ if angelsmods.industries.components then icon_size = 256, icon_mipmaps = 4, prerequisites = { - "sodium-processing", + "sodium-processing-2", "angels-tungsten-smelting-1", "angels-silver-smelting-2", "angels-components-batteries-5", diff --git a/angelsindustries/prototypes/technology/components-electronics-technology.lua b/angelsindustries/prototypes/technology/components-electronics-technology.lua index bdc2ff571..71850a441 100644 --- a/angelsindustries/prototypes/technology/components-electronics-technology.lua +++ b/angelsindustries/prototypes/technology/components-electronics-technology.lua @@ -1,6 +1,8 @@ local OV = angelsmods.functions.OV if angelsmods.industries.components then OV.add_unlock("bio-paper-1", "circuit-grey-board-alternative") + OV.remove_science_pack("bio-paper-1", "logistic-science-pack") + OV.remove_prereq("bio-paper-1", "logistic-science-pack") OV.execute() data:extend({ diff --git a/angelsinfiniteores/changelog.txt b/angelsinfiniteores/changelog.txt index d4380e6fa..26958b51b 100644 --- a/angelsinfiniteores/changelog.txt +++ b/angelsinfiniteores/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 0.9.11 +Date: 22.12.2023 + Bugfixes: + - Fixed infinite ore not showing for Bob's Ores (914) +--------------------------------------------------------------------------------------------------- Version: 0.9.10 Date: 19.12.2021 Changes: diff --git a/angelsinfiniteores/graphics/entity/ores/Thumbs.db b/angelsinfiniteores/graphics/entity/ores/Thumbs.db deleted file mode 100644 index 8a5636a0c8b29120aed8a0269c77901aa11baf0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84992 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 diff --git a/angelsinfiniteores/info.json b/angelsinfiniteores/info.json index 67a65d787..a3b921034 100644 --- a/angelsinfiniteores/info.json +++ b/angelsinfiniteores/info.json @@ -1,6 +1,6 @@ { "name": "angelsinfiniteores", - "version": "0.9.10", + "version": "0.9.11", "factorio_version": "1.1", "title": "Angel's Infinite Ores", "author": "Arch666Angel", diff --git a/angelsinfiniteores/prototypes/generation/bob-options.lua b/angelsinfiniteores/prototypes/generation/bob-options.lua index 16b816041..72ee12a5a 100644 --- a/angelsinfiniteores/prototypes/generation/bob-options.lua +++ b/angelsinfiniteores/prototypes/generation/bob-options.lua @@ -1,7 +1,12 @@ if mods["bobores"] then - if bobmods.ores.settings.UnsortedGemOre == true then + if not bobmods.ores.gems.enabled then + -- Do nothing + elseif bobmods.ores.settings.UnsortedGemOre == true then bobmods.lib.resource.add_result("infinite-gem-ore", { name = "gem-ore" }) else + -- remove unsorted gem ore + bobmods.lib.resource.remove_result("infinite-gem-ore", "gem-ore") + bobmods.lib.resource.add_result( "infinite-gem-ore", { name = "diamond-ore", probability = bobmods.gems.DiamondRatio } @@ -20,8 +25,6 @@ if mods["bobores"] then { name = "sapphire-ore", probability = bobmods.gems.SapphireRatio } ) bobmods.lib.resource.add_result("infinite-gem-ore", { name = "topaz-ore", probability = bobmods.gems.TopazRatio }) - --remove regular gems - bobmods.lib.resource.remove_result("infinite-gem-ore", "gem-ore") end if bobmods.ores.settings.GemsFromOtherOres == true then diff --git a/angelsinfiniteores/prototypes/generation/bob-ore-inf.lua b/angelsinfiniteores/prototypes/generation/bob-ore-inf.lua index e1675b7f9..1336cd200 100644 --- a/angelsinfiniteores/prototypes/generation/bob-ore-inf.lua +++ b/angelsinfiniteores/prototypes/generation/bob-ore-inf.lua @@ -1,6 +1,6 @@ if mods["bobores"] then if angelsmods.ores.disable_ore_override or not angelsmods.refining then - if settings.startup["bobmods-ores-enablebauxite"].value == true then + if bobmods.ores.bauxite.enabled == true then if data.raw.resource["bauxite-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-bauxite-ore", @@ -34,7 +34,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablecobaltore"].value == true then + if bobmods.ores.cobalt.enabled == true then if data.raw.resource["cobalt-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-cobalt-ore", @@ -68,7 +68,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablegemsore"].value == true then + if bobmods.ores.gems.enabled == true then if data.raw.resource["gem-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-gem-ore", @@ -102,7 +102,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablegoldore"].value == true then + if bobmods.ores.gold.enabled == true then if data.raw.resource["gold-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-gold-ore", @@ -136,7 +136,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enableleadore"].value == true then + if bobmods.ores.lead.enabled == true then if data.raw.resource["lead-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-lead-ore", @@ -170,7 +170,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablenickelore"].value == true then + if bobmods.ores.nickel.enabled == true then if data.raw.resource["nickel-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-nickel-ore", @@ -204,7 +204,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablequartz"].value == true then + if bobmods.ores.quartz.enabled == true then if data.raw.resource["quartz"] then angelsmods.functions.add_resource("make", { name = "infinite-quartz", @@ -238,7 +238,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablerutile"].value == true then + if bobmods.ores.rutile.enabled == true then if data.raw.resource["rutile-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-rutile-ore", @@ -272,7 +272,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablesilverore"].value == true then + if bobmods.ores.silver.enabled == true then if data.raw.resource["silver-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-silver-ore", @@ -306,7 +306,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablesulfur"].value == true then + if bobmods.ores.sulfur.enabled == true then if data.raw.resource["sulfur"] then angelsmods.functions.add_resource("make", { name = "infinite-sulfur", @@ -340,7 +340,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablethoriumore"].value == true then + if bobmods.ores.thorium.enabled == true then if data.raw.resource["thorium-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-thorium-ore", @@ -374,7 +374,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enabletinore"].value == true then + if bobmods.ores.tin.enabled == true then if data.raw.resource["tin-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-tin-ore", @@ -408,7 +408,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enabletungstenore"].value == true then + if bobmods.ores.tungsten.enabled == true then if data.raw.resource["tungsten-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-tungsten-ore", @@ -442,7 +442,7 @@ if mods["bobores"] then end end - if settings.startup["bobmods-ores-enablezincore"].value == true then + if bobmods.ores.zinc.enabled == true then if data.raw.resource["zinc-ore"] then angelsmods.functions.add_resource("make", { name = "infinite-zinc-ore", diff --git a/angelspetrochem/changelog.txt b/angelspetrochem/changelog.txt index 69a086d3f..d0c7fb03e 100644 --- a/angelspetrochem/changelog.txt +++ b/angelspetrochem/changelog.txt @@ -1,4 +1,14 @@ --------------------------------------------------------------------------------------------------- +Version: 0.9.25 +Date: 22.12.2023 + Changes: + - Compatibility with Bob's changes (911) + - Split tech Sodium processing into Sodium processing 1 and Sodium processing 2 (922) + - Combined techs Oil Steam cracking and Gas Steam Cracking (951) + Bugfixes: + - Fixed recipe order of carbon products to correctly display in helmod + - Fixed fertiliser not being craftable in mod configurations (924) +--------------------------------------------------------------------------------------------------- Version: 0.9.24 Date: 23.02.2023 Bugfixes: diff --git a/angelspetrochem/data.lua b/angelspetrochem/data.lua index 01739c6cc..e2d24626d 100644 --- a/angelspetrochem/data.lua +++ b/angelspetrochem/data.lua @@ -11,7 +11,7 @@ angelsmods.trigger.enableconverter = settings.startup["angels-enable-converter"] angelsmods.trigger.hideconverter = settings.startup["angels-hide-converter"].value --PETRO PRODUCS angelsmods.trigger.plastic = true -angelsmods.trigger.resin = not (angelsmods.functions.is_special_vanilla() or not mods["bobelectronics"]) +angelsmods.trigger.resin = (not angelsmods.functions.is_special_vanilla()) or (mods["bobelectronics"] and true or false) angelsmods.trigger.rubber = ( (not angelsmods.functions.is_special_vanilla()) or mods["bobelectronics"] @@ -25,6 +25,8 @@ angelsmods.trigger.gas_ammonium_chloride = false angelsmods.trigger.early_sulfuric_acid = false angelsmods.trigger.gas_hydrogen_fluoride = settings.startup["angels-enable-acids"].value or (mods["angelsbioprocessing"] and true or false) +angelsmods.trigger.gas_acetone = angelsmods.trigger.resin +angelsmods.trigger.gas_urea = (mods["bobgreenhouse"] or angelsmods.trigger.resin) and true or false --HIDE UNUSED BUILDINGS angelsmods.trigger.disable_bobs_electrolysers = settings.startup["angels-disable-bobs-electrolysers"].value diff --git a/angelspetrochem/info.json b/angelspetrochem/info.json index abc5a1bd7..4c205b40a 100644 --- a/angelspetrochem/info.json +++ b/angelspetrochem/info.json @@ -1,6 +1,6 @@ { "name": "angelspetrochem", - "version": "0.9.24", + "version": "0.9.25", "factorio_version": "1.1", "title": "Angel's Petrochemical Processing", "author": "Arch666Angel", @@ -11,6 +11,7 @@ "angelsrefining >= 0.12.3", "? bobplates >= 1.1.6", "? bobassembly >= 1.1.5", - "? bobrevamp >= 1.1.5" + "? bobrevamp >= 1.1.5", + "? bobelectronics >= 1.1.6" ] } diff --git a/angelspetrochem/locale/en/petrochem.cfg b/angelspetrochem/locale/en/petrochem.cfg index 04f9a10b2..86922f018 100644 --- a/angelspetrochem/locale/en/petrochem.cfg +++ b/angelspetrochem/locale/en/petrochem.cfg @@ -455,8 +455,7 @@ angels-advanced-chemistry=Advanced chemistry angels-coal-processing=Coal processing angels-coal-cracking=Coal cracking gas-synthesis=Synthesis gas processing -gas-steam-cracking=Gas steam cracking -oil-steam-cracking=Oil steam cracking +steam-cracking=Steam cracking plastic=Plastic resins=Resins resin=Resin @@ -475,7 +474,7 @@ water-chemistry=Enrichment and processing of heavy water. angels-sulfur-processing=Sulfur is a highly reactive non-metallic chemical with a broad range of applications. angels-nitrogen-processing=Nitrogen is a non-metallic chemical with a broad range of applications. chlorine-processing=Chlorine is a reactive halogen with a broad range of applications. -oil-gas-extraction=Organic compounds from fossile deposits serve as the base for a vast number of production chains. +oil-gas-extraction=Organic compounds from fossil deposits serve as the base for a vast number of production chains. angels-advanced-gas-processing=Alternative ways of fractioning short-chained hydrocarbons. angels-oil-processing=Key technology for the processing of long-chained hydrocarbons. angels-advanced-oil-processing=Alternative ways of fractioning of long-chained hydrocarbons. @@ -485,8 +484,7 @@ angels-advanced-chemistry=Selective chemical conversions using catalysts. angels-coal-processing=Purification and use of coke as well as carbon. angels-coal-cracking=Liquefaction and gasification of coal. gas-synthesis=De novo synthesis of hydrocarbons from base chemicals. -gas-steam-cracking=Re-combination of short-chained hydrocarbons. -oil-steam-cracking=Cracking down of long-chained hydrocarbons. +steam-cracking=Steam cracking of hydrocarbons. plastic=Various sources for plastic. resins=Synthetic polymeric materials that can be molded into protective composition. resin=Various sources for resins. diff --git a/angelspetrochem/migrations/angelspetrochem_0.9.25.json b/angelspetrochem/migrations/angelspetrochem_0.9.25.json new file mode 100644 index 000000000..01ec35ab9 --- /dev/null +++ b/angelspetrochem/migrations/angelspetrochem_0.9.25.json @@ -0,0 +1,6 @@ +{ + "technology": + [ + ["sodium-processing", "sodium-processing-1"] + ] +} diff --git a/angelspetrochem/migrations/angelspetrochem_0.9.25.lua b/angelspetrochem/migrations/angelspetrochem_0.9.25.lua new file mode 100644 index 000000000..921469f83 --- /dev/null +++ b/angelspetrochem/migrations/angelspetrochem_0.9.25.lua @@ -0,0 +1,7 @@ +for index, force in pairs(game.forces) do + local technologies = force.technologies + + if technologies["sodium-processing-1"].researched then + technologies["sodium-processing-2"].researched = true + end +end diff --git a/angelspetrochem/prototypes/global-override/bobplates.lua b/angelspetrochem/prototypes/global-override/bobplates.lua index 2540d9388..a68ae8594 100644 --- a/angelspetrochem/prototypes/global-override/bobplates.lua +++ b/angelspetrochem/prototypes/global-override/bobplates.lua @@ -83,6 +83,7 @@ if mods["bobplates"] then OV.remove_prereq("cobalt-processing", "electrolysis-1") OV.remove_prereq("chemical-processing-2", "electrolysis-2") + OV.remove_prereq("plastics", "chemical-plant") OV.remove_prereq("plastics", "electrolysis-2") OV.remove_prereq("aluminium-processing", "electrolysis-2") OV.add_prereq("aluminium-processing", "chlorine-processing-1") @@ -196,13 +197,6 @@ if mods["bobplates"] then -- other oil related stuffs OV.patch_recipes({ - { - name = "petroleum-jelly", - ingredients = { - { name = "gas-residual", type = "fluid", amount = "liquid-naphtha" }, - }, - crafting_machine_tint = angelsmods.functions.get_recipe_tints({ "gas-residual" }), - }, { name = "polishing-compound", ingredients = { @@ -218,65 +212,6 @@ elseif mods["bobelectronics"] then }) end -------------------------------------------------------------------------------- --- RUBBER HANDLING ------------------------------------------------------------ -------------------------------------------------------------------------------- -if mods["bobplates"] then - -- bob electronics - if mods["bobelectronics"] then --check if it exists first - move_item("insulated-cable", "petrochem-solids", "a[petrochem-solids]-c[rubber]-b") - --[[ - Normal Bob's (w or w/o Greenhouses) is 1 wood per 1 rubber per 2 circuit wires. - Bob's + Angel's Petrochem is 15 wood per 1 rubber per 2 circuit wires - Bob's + Angel's Petrochem + Bob's Greenhouses is 27 wood per 1 rubber per 2 circuit wires. - Bob's + Angel's Bioprocessing (w or w/o Greenhouses) is 30 wood per 1 rubber per 2 circuit wires. - How much tinned wire, and the yield is caculated by: - insulated-cable amount = wood_per_rubber * 2 - tinned-copper-cable amount = wood_per_rubber * 2 - energy_required = wood_per_rubber / 2 - ]] - local wood_per_rubber = 15 - if angelsmods.bioprocessing then - wood_per_rubber = 30 - elseif mods["bobgreenhouse"] then - wood_per_rubber = 27 - end - - OV.patch_recipes({ - { - name = "insulated-cable", - subgroup = "petrochem-solids-2", - order = "b[rubber]-c[cable]-c", - ingredients = { - { type = "item", name = "tinned-copper-cable", amount = wood_per_rubber * 2 }, - { type = "item", name = "rubber", amount = 1 }, - }, - results = { { type = "item", name = "insulated-cable", amount = wood_per_rubber * 2 } }, - energy_required = wood_per_rubber / 2, - }, - }) - - OV.remove_unlock("electronics", "insulated-cable") - OV.add_unlock("circuit-network", "insulated-cable") - OV.add_unlock("circuit-network", "bob-rubber") - if mods["angelsbioprocessing"] then - OV.add_prereq("circuit-network", "bio-arboretum-1") - end - OV.add_prereq("rubbers", "circuit-network") - OV.add_prereq("advanced-electronics-2", "rubbers") - end -end - -------------------------------------------------------------------------------- --- RESIN ---------------------------------------------------------------------- -------------------------------------------------------------------------------- -if mods["bobplates"] then - -- bob electronics - if mods["bobelectronics"] then --check if it exists first - OV.add_prereq("advanced-electronics", "resins") - end -end - ------------------------------------------------------------------------------- -- WATER ENRICHMENT ----------------------------------------------------------- ------------------------------------------------------------------------------- diff --git a/angelspetrochem/prototypes/global-override/bobrevamp.lua b/angelspetrochem/prototypes/global-override/bobrevamp.lua index 55acd98f0..41b615a0c 100644 --- a/angelspetrochem/prototypes/global-override/bobrevamp.lua +++ b/angelspetrochem/prototypes/global-override/bobrevamp.lua @@ -16,27 +16,9 @@ if mods["bobrevamp"] then OV.disable_technology({ "solid-fuel" }) - OV.remove_unlock("angels-oil-processing", "solid-fuel-fuel-oil") - OV.remove_unlock("angels-oil-processing", "solid-fuel-naphtha") - OV.remove_unlock("gas-processing", "solid-fuel-methane") - - OV.add_unlock("flammables", "solid-fuel-fuel-oil") - OV.add_unlock("flammables", "solid-fuel-naphtha") - OV.add_unlock("angels-advanced-gas-processing", "solid-fuel-methane") - - OV.add_prereq("angels-advanced-gas-processing", "flammables") - OV.add_prereq("gas-synthesis", "flammables") - OV.add_prereq("angels-nitrogen-processing-3", "flammables") - - if mods["bobplates"] then - OV.remove_unlock("angels-oil-processing", "liquid-fuel") - OV.remove_unlock("angels-oil-processing", "solid-fuel-from-hydrogen") - - --OV.add_unlock("flammables", "solid-fuel-from-hydrogen") - - if mods["bobwarfare"] then - OV.add_prereq("military-3", "flammables") - end + if mods["bobwarfare"] then + -- Napalm capsules require Liquid fuel / Fuel oil + OV.add_prereq("military-3", "flammables") end ----------------------------------------------------------------------------- @@ -45,7 +27,6 @@ if mods["bobrevamp"] then OV.disable_recipe("petroleum-gas-sweetening") angelsmods.functions.add_flag("sour-gas", "hidden") - angelsmods.functions.disable_barreling_recipes("sour-gas") OV.hide_recipe("ammonia") OV.converter_fluid("ammonia", "gas-ammonia") @@ -61,9 +42,8 @@ if mods["bobrevamp"] then end if settings.startup["bobmods-revamp-oil"] then OV.hide_recipe("solid-fuel-from-sour-gas") - if mods["bobelectronics"] then - OV.hide_recipe("bob-oil-processing") - end + OV.remove_unlock("flammables", "solid-fuel-from-sour-gas") + OV.remove_unlock("flammables", "solid-fuel-from-petroleum-gas") end if angelsmods.trigger.disable_bobs_chemical_plants then @@ -104,7 +84,6 @@ if mods["bobrevamp"] then OV.converter_fluid("carbon-dioxide", "gas-carbon-dioxide") angelsmods.functions.disable_barreling_recipes("carbon-dioxide") - --OV.remove_unlock("chemical-processing-2", "carbon-dioxide") OV.global_replace_item("sodium-carbonate", "solid-sodium-carbonate") angelsmods.functions.add_flag("sodium-carbonate", "hidden") @@ -142,7 +121,6 @@ if mods["bobrevamp"] then }) angelsmods.functions.add_flag("ammoniated-brine", "hidden") - angelsmods.functions.disable_barreling_recipes("ammoniated-brine") angelsmods.functions.add_flag("sodium-bicarbonate", "hidden") diff --git a/angelspetrochem/prototypes/global-override/bobwarfare.lua b/angelspetrochem/prototypes/global-override/bobwarfare.lua index 5bbe98118..92fde55df 100644 --- a/angelspetrochem/prototypes/global-override/bobwarfare.lua +++ b/angelspetrochem/prototypes/global-override/bobwarfare.lua @@ -28,11 +28,6 @@ if mods["bobwarfare"] then angelsmods.functions.add_flag("sulfuric-nitric-acid", "hidden") OV.disable_recipe({ "sulfuric-nitric-acid" }) end - - OV.add_prereq("nitroglycerin-processing", "angels-sulfur-processing-2") - OV.add_prereq("nitroglycerin-processing", "angels-nitrogen-processing-2") - else - OV.add_prereq("cordite-processing", "angels-nitrogen-processing-2") end ----------------------------------------------------------------------------- @@ -63,7 +58,7 @@ if mods["bobwarfare"] then data.raw["recipe"]["nitroglycerin"].always_show_products = true OV.remove_unlock("nitroglycerin-processing", "glycerol") - OV.add_prereq("nitroglycerin-processing", "chlorine-processing-2") + OV.add_prereq("nitroglycerin-processing", "angels-explosives-1") ----------------------------------------------------------------------------- -- GLYCEROL ----------------------------------------------------------------- @@ -89,4 +84,17 @@ if mods["bobwarfare"] then }, }, }) + + ----------------------------------------------------------------------------- + -- PETROLEUM JELLY ---------------------------------------------------------- + ----------------------------------------------------------------------------- + OV.patch_recipes({ + { + name = "petroleum-jelly", + ingredients = { + { name = "gas-residual", type = "fluid", amount = "liquid-naphtha" }, + }, + crafting_machine_tint = angelsmods.functions.get_recipe_tints({ "gas-residual" }), + }, + }) end diff --git a/angelspetrochem/prototypes/override/angelspetrochem.lua b/angelspetrochem/prototypes/override/angelspetrochem.lua index 22513069b..d05892f4f 100644 --- a/angelspetrochem/prototypes/override/angelspetrochem.lua +++ b/angelspetrochem/prototypes/override/angelspetrochem.lua @@ -19,7 +19,11 @@ if mods["bobplates"] and data.raw["fluid"]["deuterium"] then OV.disable_technology("deuterium-processing") OV.add_prereq("water-chemistry-2", "nuclear-fuel-reprocessing") - OV.add_unlock("water-chemistry-2", "deuterium-fuel-cell") + if mods["bobrevamp"] and mods["bobpower"] and settings.startup["bobmods-revamp-nuclear"].value == true then + -- deuterium-fuel-cell will be unlocked by bob-nuclear-power-3 + else + OV.add_unlock("water-chemistry-2", "deuterium-fuel-cell") + end OV.set_science_pack("deuterium-fuel-reprocessing", "utility-science-pack", 1) OV.set_science_pack("deuterium-fuel-cell-2", "utility-science-pack", 1) elseif angelsmods.industries and angelsmods.industries.overhaul then @@ -30,17 +34,11 @@ elseif angelsmods.industries and angelsmods.industries.overhaul then -- not bobs mods, should we do something, usual thing is to do nothing... else -- no deuterium required, disabling it... angelsmods.functions.add_flag("gas-enriched-hydrogen-sulfide", "hidden") - angelsmods.functions.disable_barreling_recipes("gas-enriched-hydrogen-sulfide") angelsmods.functions.add_flag("liquid-water-semiheavy-1", "hidden") - angelsmods.functions.disable_barreling_recipes("liquid-water-semiheavy-1") angelsmods.functions.add_flag("liquid-water-semiheavy-2", "hidden") - angelsmods.functions.disable_barreling_recipes("liquid-water-semiheavy-2") angelsmods.functions.add_flag("liquid-water-semiheavy-3", "hidden") - angelsmods.functions.disable_barreling_recipes("liquid-water-semiheavy-3") angelsmods.functions.add_flag("liquid-water-heavy", "hidden") - angelsmods.functions.disable_barreling_recipes("liquid-water-heavy") angelsmods.functions.add_flag("gas-deuterium", "hidden") - angelsmods.functions.disable_barreling_recipes("gas-deuterium") OV.disable_recipe({ "angels-hydrogen-sulfide-enrichment", @@ -186,25 +184,30 @@ end if angelsmods.functions.is_special_vanilla() then OV.disable_recipe({ "solid-calcium-chloride", - "cumene-process", -- "gas-acetone" - "gas-phosgene", }) - OV.remove_prereq("angels-nitrogen-processing-2", "chlorine-processing-1") angelsmods.functions.add_flag({ "solid-calcium-chloride", - "gas-phosgene", }, "hidden") +end - if angelsmods.bioprocessing then - else - OV.disable_recipe({ - "gas-urea", - }) - angelsmods.functions.add_flag({ - "gas-urea", - "gas-acetone", - }, "hidden") - end +if angelsmods.trigger.gas_acetone then +else + OV.disable_recipe({ + "cumene-process", + }) + angelsmods.functions.add_flag({ + "gas-acetone", + }, "hidden") +end + +if angelsmods.trigger.gas_urea then +else + OV.disable_recipe({ + "gas-urea", + }) + angelsmods.functions.add_flag({ + "gas-urea", + }, "hidden") end if angelsmods.trigger.resin then @@ -287,8 +290,9 @@ else OV.disable_recipe({ "gas-ammonium-chloride", }) - OV.remove_unlock("angels-nitrogen-processing-2", "gas-ammonium-chloride") + OV.remove_unlock("angels-nitrogen-processing-4", "gas-ammonium-chloride") angelsmods.functions.add_flag("gas-ammonium-chloride", "hidden") + OV.remove_prereq("angels-nitrogen-processing-3", "chlorine-processing-2") end ----------------------------------------------------------------------------- diff --git a/angelspetrochem/prototypes/override/angelsrefining.lua b/angelspetrochem/prototypes/override/angelsrefining.lua index 7275d75fd..7355b9d85 100644 --- a/angelspetrochem/prototypes/override/angelsrefining.lua +++ b/angelspetrochem/prototypes/override/angelsrefining.lua @@ -37,16 +37,12 @@ if angelsmods.refining then }) 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") OV.add_prereq("advanced-ore-refining-1", "ore-crushing") 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_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") OV.add_prereq("ore-advanced-floatation", "chlorine-processing-1") end diff --git a/angelspetrochem/prototypes/override/angelssmelting.lua b/angelspetrochem/prototypes/override/angelssmelting.lua index 4967e15bb..7033bd867 100644 --- a/angelspetrochem/prototypes/override/angelssmelting.lua +++ b/angelspetrochem/prototypes/override/angelssmelting.lua @@ -34,4 +34,6 @@ else "solid-sodium-hydroxide-solid-sodium-sulfate", }) angelsmods.functions.add_flag("solid-sodium-cyanide", "hidden") + OV.remove_prereq("sodium-processing-1", "chlorine-processing-1") + OV.add_prereq("sodium-processing-1", "chlorine-processing-3") end diff --git a/angelspetrochem/prototypes/override/base-game.lua b/angelspetrochem/prototypes/override/base-game.lua index 29ddb21e0..fd7b99b0d 100644 --- a/angelspetrochem/prototypes/override/base-game.lua +++ b/angelspetrochem/prototypes/override/base-game.lua @@ -45,8 +45,7 @@ angelsmods.functions.add_flag("heavy-oil", "hidden") move_item("lubricant", "petrochem-carbon-fluids", "dcd", "fluid") OV.remove_prereq("lubricant", "oil-processing") OV.remove_prereq("lubricant", "chemical-plant") -OV.add_prereq("lubricant", "angels-oil-processing") -OV.add_prereq("lubricant", "gas-steam-cracking-1") +OV.add_prereq("lubricant", "steam-cracking-1") ------------------------------------------------------------------------------- -- PLASTICS ------------------------------------------------------------------- @@ -81,11 +80,8 @@ end move_item("steam", "petrochem-basic-fluids", "a", "fluid") move_item("solid-fuel", "petrochem-fuel", "a[solid-fuel]-a") -OV.remove_unlock("angels-oil-processing", "solid-fuel-naphtha") OV.add_unlock("flammables", "solid-fuel-naphtha") -OV.remove_unlock("angels-oil-processing", "solid-fuel-fuel-oil") OV.add_unlock("flammables", "solid-fuel-fuel-oil") -OV.remove_unlock("gas-processing", "solid-fuel-methane") OV.add_unlock("flammables", "solid-fuel-methane") OV.add_prereq("flammables", "gas-processing") diff --git a/angelspetrochem/prototypes/override/bob.lua b/angelspetrochem/prototypes/override/bob.lua new file mode 100644 index 000000000..0356da3c1 --- /dev/null +++ b/angelspetrochem/prototypes/override/bob.lua @@ -0,0 +1,7 @@ +local OV = angelsmods.functions.OV + +if mods["bobelectronics"] or mods["boblogistics"] or mods["bobplates"] then + OV.remove_unlock("flammables", "solid-fuel-from-petroleum-gas") + OV.remove_unlock("flammables", "solid-fuel-from-light-oil") + OV.remove_unlock("flammables", "solid-fuel-from-heavy-oil") +end diff --git a/angelspetrochem/prototypes/override/bobelectronics.lua b/angelspetrochem/prototypes/override/bobelectronics.lua index 446455923..f6675029e 100644 --- a/angelspetrochem/prototypes/override/bobelectronics.lua +++ b/angelspetrochem/prototypes/override/bobelectronics.lua @@ -1,6 +1,64 @@ local OV = angelsmods.functions.OV +local move_item = angelsmods.functions.move_item if mods["bobelectronics"] then OV.add_prereq("advanced-electronics", "chlorine-processing-1") + OV.add_prereq("advanced-electronics", "resins") OV.hide_recipe("bob-oil-processing") end + +------------------------------------------------------------------------------- +-- RUBBER HANDLING ------------------------------------------------------------ +------------------------------------------------------------------------------- +if mods["bobelectronics"] then + move_item("insulated-cable", "petrochem-solids", "a[petrochem-solids]-c[rubber]-b") + --[[ + Normal Bob's (w or w/o Greenhouses) is 1 wood per 1 rubber per 2 circuit wires. + Bob's + Angel's Petrochem is 15 wood per 1 rubber per 2 circuit wires + Bob's + Angel's Petrochem + Bob's Greenhouses is 27 wood per 1 rubber per 2 circuit wires. + Bob's + Angel's Bioprocessing (w or w/o Greenhouses) is 30 wood per 1 rubber per 2 circuit wires. + How much tinned wire, and the yield is caculated by: + insulated-cable amount = wood_per_rubber * 2 + tinned-copper-cable amount = wood_per_rubber * 2 + energy_required = wood_per_rubber / 2 + ]] + local wood_per_rubber = 15 + if angelsmods.bioprocessing then + wood_per_rubber = 30 + elseif mods["bobgreenhouse"] then + wood_per_rubber = 27 + end + + if mods["bobplates"] then + OV.patch_recipes({ + { + name = "insulated-cable", + ingredients = { + { type = "item", name = "tinned-copper-cable", amount = wood_per_rubber * 2 }, + { type = "item", name = "rubber", amount = 1 }, + }, + }, + }) + end + OV.patch_recipes({ + { + name = "insulated-cable", + subgroup = "petrochem-solids-2", + order = "b[rubber]-c[cable]-c", + results = { { type = "item", name = "insulated-cable", amount = wood_per_rubber * 2 } }, + energy_required = wood_per_rubber / 2, + }, + }) + + OV.remove_unlock("bob-wood-processing", "bob-rubber") + OV.remove_unlock("electronics", "insulated-cable") + if mods["angelsbioprocessing"] then + OV.add_unlock("bio-wood-processing-2", "bob-rubber") + OV.add_prereq("circuit-network", "bio-wood-processing-2") + else + OV.add_unlock("circuit-network", "bob-rubber") + end + OV.add_unlock("circuit-network", "insulated-cable") + OV.add_prereq("rubbers", "circuit-network") + OV.add_prereq("advanced-electronics-2", "rubbers") +end diff --git a/angelspetrochem/prototypes/override/boblogistics.lua b/angelspetrochem/prototypes/override/boblogistics.lua index 54af654ce..756e99861 100644 --- a/angelspetrochem/prototypes/override/boblogistics.lua +++ b/angelspetrochem/prototypes/override/boblogistics.lua @@ -5,4 +5,6 @@ if mods["boblogistics"] then angelsmods.functions.move_item("angels-storage-tank-1", "angels-fluid-tanks", "c[large-tank]-c[gas]") angelsmods.functions.move_item("angels-storage-tank-2", "angels-fluid-tanks", "c[large-tank]-b[oil]") angelsmods.functions.move_item("angels-storage-tank-3", "angels-fluid-tanks", "c[large-tank]-a[inline]") + + OV.hide_recipe("bob-oil-processing") end diff --git a/angelspetrochem/prototypes/override/bobplates.lua b/angelspetrochem/prototypes/override/bobplates.lua index a2cae75a4..5785aa90b 100644 --- a/angelspetrochem/prototypes/override/bobplates.lua +++ b/angelspetrochem/prototypes/override/bobplates.lua @@ -143,6 +143,7 @@ if mods["bobplates"] then data.raw.fluid["tungstic-acid"].icon = nil data.raw.fluid["tungstic-acid"].icon_size = nil data.raw.fluid["tungstic-acid"].icon_mipmaps = nil + data.raw.recipe["tungstic-acid"].icon = nil OV.patch_recipes({ { name = "liquid-fuel", @@ -169,17 +170,19 @@ if mods["bobplates"] then OV.add_unlock("flammables", "liquid-fuel") OV.add_unlock("flammables", "enriched-fuel-from-liquid-fuel") OV.remove_prereq("flammables", "gas-processing") - OV.add_prereq("flammables", "gas-steam-cracking-1") + OV.add_prereq("flammables", "steam-cracking-1") end ------------------------------------------------------------------------------- -- RESIN HANDLING ------------------------------------------------------------- ------------------------------------------------------------------------------- -if mods["bobplates"] then +if mods["bobplates"] or mods["bobelectronics"] then if angelsmods.trigger.resin then OV.global_replace_item({ "solid-resin" }, "resin") angelsmods.functions.add_flag("solid-resin", "hidden") move_item("resin", "petrochem-solids", "a[petrochem-solids]-b[resin]") + local resin_icon = mods["bobplates"] and "__bobplates__/graphics/icons/resin.png" + or "__bobelectronics__/graphics/icons/resin.png" OV.patch_recipes({ { @@ -191,7 +194,7 @@ if mods["bobplates"] then order = "b[resin]-b[solid]-a", icons = angelsmods.functions.add_number_icon_layer({ { - icon = "__bobplates__/graphics/icons/resin.png", + icon = resin_icon, icon_size = 32, icon_mipmaps = 1, }, @@ -202,13 +205,13 @@ if mods["bobplates"] then order = "b[resin]-b[solid]-b", icons = mods["angelsbioprocessing"] and { { - icon = "__bobplates__/graphics/icons/resin.png", + icon = resin_icon, icon_size = 32, icon_mipmaps = 1, }, } or angelsmods.functions.add_number_icon_layer({ { - icon = "__bobplates__/graphics/icons/resin.png", + icon = resin_icon, icon_size = 32, icon_mipmaps = 1, }, @@ -218,17 +221,28 @@ if mods["bobplates"] then if mods["angelsbioprocessing"] then OV.disable_recipe({ "bob-resin-wood" }) + OV.disable_technology({ "bob-wood-processing" }) + OV.remove_prereq({ + "bodies", + "electronics", + "walking-vehicle", + }, "bob-wood-processing") + OV.add_prereq("electronics", "automation") + else + OV.add_prereq("resins", "bob-wood-processing") end - - OV.remove_unlock("plastics", "synthetic-wood") - OV.disable_recipe({ "synthetic-wood" }) else angelsmods.functions.add_flag("resin", "hidden") OV.disable_recipe({ "bob-resin-wood", "solid-resin", }) - OV.remove_unlock("plastics", "synthetic-wood") + end + + OV.remove_unlock("plastics", "synthetic-wood") + if mods["angelsbioprocessing"] then + OV.disable_recipe({ "synthetic-wood" }) + else OV.add_unlock("plastic-1", "synthetic-wood") end end @@ -236,7 +250,7 @@ end ------------------------------------------------------------------------------- -- RUBBER HANDLING ------------------------------------------------------------ ------------------------------------------------------------------------------- -if mods["bobplates"] then +if mods["bobplates"] or mods["bobelectronics"] then if angelsmods.trigger.rubber then OV.global_replace_item("solid-rubber", "rubber") angelsmods.functions.add_flag("solid-rubber", "hidden") @@ -246,7 +260,6 @@ if mods["bobplates"] then OV.patch_recipes({ { name = "bob-rubber", - enabled = false, ingredients = { { "!!" }, { type = "item", name = "resin", amount = 3 }, @@ -255,7 +268,7 @@ if mods["bobplates"] then order = "b[rubber]-b[solid]-a", icons = angelsmods.functions.add_number_icon_layer({ { - icon = "__bobplates__/graphics/icons/rubber.png", + icon = "__bobelectronics__/graphics/icons/rubber.png", icon_size = 32, icon_mipmaps = 1, }, @@ -267,7 +280,7 @@ if mods["bobplates"] then order = "b[rubber]-b[solid]-a", icons = angelsmods.functions.add_number_icon_layer({ { - icon = "__bobplates__/graphics/icons/rubber.png", + icon = "__bobelectronics__/graphics/icons/rubber.png", icon_size = 32, icon_mipmaps = 1, }, diff --git a/angelspetrochem/prototypes/override/bobrevamp.lua b/angelspetrochem/prototypes/override/bobrevamp.lua index 6ebec4543..f1cb0d626 100644 --- a/angelspetrochem/prototypes/override/bobrevamp.lua +++ b/angelspetrochem/prototypes/override/bobrevamp.lua @@ -5,6 +5,7 @@ if mods["bobrevamp"] and mods["bobplates"] then ----------------------------------------------------------------------------- -- SOLID FUEL --------------------------------------------------------------- ----------------------------------------------------------------------------- + data.raw.recipe["solid-fuel-from-hydrogen"].icon = nil data.raw.recipe["solid-fuel-from-hydrogen"].icons = angelsmods.functions.create_solid_recipe_icon({ { "__angelspetrochem__/graphics/icons/molecules/hydrogen.png", 72 }, }, "solid-fuel") @@ -39,6 +40,6 @@ if mods["bobrevamp"] and mods["bobplates"] then }, }) end - OV.add_prereq("rtg", "sodium-processing") + OV.add_prereq("rtg", "angels-coal-processing-3") end end diff --git a/angelspetrochem/prototypes/petrochem-override.lua b/angelspetrochem/prototypes/petrochem-override.lua index b44330db3..151b88770 100644 --- a/angelspetrochem/prototypes/petrochem-override.lua +++ b/angelspetrochem/prototypes/petrochem-override.lua @@ -14,6 +14,7 @@ require("prototypes.override.angelssmelting") require("prototypes.override.angelsindustries") --OVERRIDE FOR BOBS +require("prototypes.override.bob") require("prototypes.override.bobplates") require("prototypes.override.bobassembly") require("prototypes.override.bobgreenhouse") diff --git a/angelspetrochem/prototypes/recipes/petrochem-basics.lua b/angelspetrochem/prototypes/recipes/petrochem-basics.lua index d8b8538dd..18619f5f7 100644 --- a/angelspetrochem/prototypes/recipes/petrochem-basics.lua +++ b/angelspetrochem/prototypes/recipes/petrochem-basics.lua @@ -285,8 +285,12 @@ data:extend({ results = { { type = "item", name = "solid-calcium-chloride", amount = 3 }, }, - icon = "__angelspetrochem__/graphics/icons/solid-calcium-chloride.png", - icon_size = 32, + icons = { + { + icon = "__angelspetrochem__/graphics/icons/solid-calcium-chloride.png", + icon_size = 32, + }, + }, order = "e[solid-calcium-chloride]", crafting_machine_tint = AF.get_recipe_tints({ { r = 168 / 255, g = 203 / 255, b = 105 / 255, a = 0 / 255 }, @@ -487,7 +491,7 @@ data:extend({ { type = "item", name = "solid-carbon", amount = 3 }, }, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-carbon"), 1, angelsmods.petrochem.number_tint), - order = "d[coke-purification]", + order = "d[coke-purification]-a", crafting_machine_tint = AF.get_recipe_tints({ { r = 1, g = 1, b = 1 }, { r = 1, g = 1, b = 1 }, "steam" }),--[[{ primary = {r = 1, g = 0.5, b = 0.5, a = 0}, secondary = {r = 1, g = 0.5, b = 0.5, a = 0}, @@ -512,7 +516,7 @@ data:extend({ { type = "fluid", name = "water", amount = 10 }, }, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-carbon"), 2, angelsmods.petrochem.number_tint), - order = "d[coke-purification]", + order = "d[coke-purification]-b", crafting_machine_tint = AF.get_recipe_tints({ { r = 1, g = 1, b = 1 }, "gas-nitrogen", @@ -539,7 +543,7 @@ data:extend({ }, icon = "__angelspetrochem__/graphics/icons/coal-crushed.png", icon_size = 32, - order = "a[coal-crushed]", + order = "b[coal-crushed]", }, { type = "recipe", @@ -555,7 +559,7 @@ data:extend({ { type = "item", name = "solid-coke", amount = 2 }, }, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-coke"), 1, angelsmods.petrochem.number_tint), - order = "b[coal-crushed]", + order = "c[coke]-a", }, { type = "recipe", @@ -573,7 +577,7 @@ data:extend({ { type = "fluid", name = "water-yellow-waste", amount = 50 }, }, icons = AF.add_number_icon_layer(AF.get_object_icons("solid-coke"), 2, angelsmods.petrochem.number_tint), - order = "c[solid-coke-sulfur]", + order = "c[coke]-b", crafting_machine_tint = AF.get_recipe_tints({ "water-yellow-waste", "water-purified" }),--[[{ primary = {r = 1, g = 0.5, b = 0.5, a = 0}, secondary = {r = 0.9, g = 0.9, b = 0.4, a = 0}, diff --git a/angelspetrochem/prototypes/recipes/petrochem-solids.lua b/angelspetrochem/prototypes/recipes/petrochem-solids.lua index 71eaadc33..902c0fe9e 100644 --- a/angelspetrochem/prototypes/recipes/petrochem-solids.lua +++ b/angelspetrochem/prototypes/recipes/petrochem-solids.lua @@ -120,8 +120,12 @@ data:extend({ { type = "item", name = "solid-resin", amount = 4 }, }, }, - icon = "__angelspetrochem__/graphics/icons/solid-resin.png", - icon_size = 32, + icons = { + { + icon = "__angelspetrochem__/graphics/icons/solid-resin.png", + icon_size = 32, + }, + }, crafting_machine_tint = AF.get_fluid_recipe_tint("liquid-resin"), order = "b[resin]-b[solid]", }, @@ -214,8 +218,12 @@ data:extend({ { type = "item", name = "solid-rubber", amount = 4 }, }, }, - icon = "__angelspetrochem__/graphics/icons/solid-rubber.png", - icon_size = 32, + icons = { + { + icon = "__angelspetrochem__/graphics/icons/solid-rubber.png", + icon_size = 32, + }, + }, crafting_machine_tint = AF.get_fluid_recipe_tint("liquid-rubber"), order = "b[rubber]-b[solid]", }, diff --git a/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua b/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua index e4b3e13fa..b3eacea77 100644 --- a/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua +++ b/angelspetrochem/prototypes/technology/petrochem-basic-chemistry.lua @@ -8,6 +8,10 @@ data:extend({ "automation", }, effects = { + { + type = "unlock-recipe", + recipe = "liquifier", + }, { type = "unlock-recipe", recipe = "angels-electrolyser", @@ -493,7 +497,6 @@ data:extend({ "angels-nitrogen-processing-1", "angels-sulfur-processing-1", "angels-advanced-chemistry-1", - "chlorine-processing-1", "water-treatment-2", }, effects = { @@ -517,10 +520,6 @@ data:extend({ type = "unlock-recipe", recipe = "gas-nitrogen-dioxide", }, - { - type = "unlock-recipe", - recipe = "gas-ammonium-chloride", - }, { type = "unlock-recipe", recipe = "gas-urea", @@ -551,7 +550,9 @@ data:extend({ prerequisites = { "angels-nitrogen-processing-2", "angels-advanced-chemistry-3", - "sodium-processing", + "chlorine-processing-2", + "sodium-processing-1", + "flammables", }, effects = { { @@ -599,6 +600,10 @@ data:extend({ "angels-advanced-chemistry-5", }, effects = { + { + type = "unlock-recipe", + recipe = "gas-refinery-4", + }, { type = "unlock-recipe", recipe = "gas-dinitrogen-tetroxide", @@ -617,7 +622,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "gas-refinery-4", + recipe = "gas-ammonium-chloride", }, }, unit = { @@ -638,20 +643,13 @@ data:extend({ name = "chlorine-processing-1", icons = angelsmods.functions.create_gas_tech_icon("ClClCl"), prerequisites = { - --"basic-chemistry-2", - --"water-treatment", - "ore-crushing", - "gas-processing", + "basic-chemistry-3", }, effects = { { type = "unlock-recipe", recipe = "water-saline-separation", }, - { - type = "unlock-recipe", - recipe = "gas-chlor-methane", - }, { type = "unlock-recipe", recipe = "gas-hydrogen-chloride", @@ -677,20 +675,20 @@ data:extend({ icons = angelsmods.functions.create_gas_tech_icon("ClClCl"), prerequisites = { "chlorine-processing-1", - "gas-steam-cracking-1", + "steam-cracking-1", }, effects = { { type = "unlock-recipe", - recipe = "gas-allylchlorid", + recipe = "gas-chlor-methane", }, { type = "unlock-recipe", - recipe = "gas-epichlorhydrin", + recipe = "gas-allylchlorid", }, { type = "unlock-recipe", - recipe = "liquid-glycerol", + recipe = "gas-epichlorhydrin", }, { type = "unlock-recipe", @@ -715,7 +713,6 @@ data:extend({ prerequisites = { "chlorine-processing-2", "water-treatment-3", - "chemical-science-pack", }, effects = { { @@ -752,7 +749,7 @@ data:extend({ icons = angelsmods.functions.create_gas_tech_icon("ClClCl"), prerequisites = { "chlorine-processing-3", - "sodium-processing", + "sodium-processing-1", "angels-advanced-chemistry-3", }, effects = { @@ -782,50 +779,75 @@ data:extend({ }, { type = "technology", - name = "sodium-processing", + name = "sodium-processing-1", icon = "__angelspetrochem__/graphics/technology/sodium-tech.png", icon_size = 128, prerequisites = { - "chlorine-processing-3", - "angels-coal-processing-3", - "angels-nitrogen-processing-2", + "angels-sulfur-processing-1", + "chemical-science-pack", + "chlorine-processing-1", }, effects = { { type = "unlock-recipe", - recipe = "liquid-aqueous-sodium-hydroxide", + recipe = "solid-sodium-hydroxide-solid-sodium-sulfate", }, { type = "unlock-recipe", - recipe = "liquid-aqueous-sodium-hydroxide-reverse", + recipe = "solid-sodium-sulfate-separation", }, { type = "unlock-recipe", - recipe = "solid-sodium", + recipe = "solid-sodium-hydroxide", }, { type = "unlock-recipe", - recipe = "solid-sodium-hydroxide", + recipe = "liquid-aqueous-sodium-hydroxide", }, + }, + unit = { + count = 50, + ingredients = { + { type = "item", name = "automation-science-pack", amount = 1 }, + { type = "item", name = "logistic-science-pack", amount = 1 }, + { type = "item", name = "chemical-science-pack", amount = 1 }, + }, + time = 15, + }, + order = "c-a", + }, + { + type = "technology", + name = "sodium-processing-2", + icon = "__angelspetrochem__/graphics/technology/sodium-tech.png", + icon_size = 128, + prerequisites = { + "chlorine-processing-3", + "angels-coal-processing-3", + "angels-nitrogen-processing-2", + "production-science-pack", + "sodium-processing-1", + }, + effects = { { type = "unlock-recipe", - recipe = "solid-sodium-carbonate", + recipe = "liquid-aqueous-sodium-hydroxide-reverse", }, { type = "unlock-recipe", - recipe = "solid-sodium-carbonate-electrolysis", + recipe = "solid-sodium", }, { type = "unlock-recipe", - recipe = "solid-sodium-cyanide", + recipe = "solid-sodium-carbonate", }, { type = "unlock-recipe", - recipe = "solid-sodium-hydroxide-solid-sodium-sulfate", + recipe = "solid-sodium-carbonate-electrolysis", }, { type = "unlock-recipe", - recipe = "solid-sodium-sulfate-separation", + recipe = "solid-sodium-cyanide", }, }, unit = { @@ -834,6 +856,7 @@ data:extend({ { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, + { type = "item", name = "production-science-pack", amount = 1 }, }, time = 15, }, diff --git a/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua b/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua index e52476d28..2ac2dd73c 100644 --- a/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua +++ b/angelspetrochem/prototypes/technology/petrochem-petro-chemistry.lua @@ -64,14 +64,6 @@ data:extend({ type = "unlock-recipe", recipe = "condensates-oil-refining", }, - { - type = "unlock-recipe", - recipe = "solid-fuel-naphtha", - }, - { - type = "unlock-recipe", - recipe = "solid-fuel-fuel-oil", - }, }, unit = { count = 50, @@ -139,10 +131,6 @@ data:extend({ type = "unlock-recipe", recipe = "gas-fractioning", }, - { - type = "unlock-recipe", - recipe = "solid-fuel-methane", - }, }, unit = { count = 50, @@ -161,7 +149,7 @@ data:extend({ icon_size = 256, icon_mipmaps = 2, prerequisites = { - "gas-steam-cracking-2", + "steam-cracking-2", }, effects = { { @@ -226,6 +214,10 @@ data:extend({ "ore-floatation", }, effects = { + { + type = "unlock-recipe", + recipe = "liquifier-2", + }, { type = "unlock-recipe", recipe = "angels-electrolyser-2", @@ -269,12 +261,15 @@ data:extend({ prerequisites = { "angels-advanced-chemistry-1", "advanced-electronics", - "gas-steam-cracking-1", - "oil-steam-cracking-1", + "steam-cracking-1", "chemical-science-pack", "angels-sulfur-processing-2", }, effects = { + { + type = "unlock-recipe", + recipe = "liquifier-3", + }, { type = "unlock-recipe", recipe = "angels-electrolyser-3", @@ -328,7 +323,7 @@ data:extend({ "angels-advanced-chemistry-2", "angels-advanced-gas-processing", "chlorine-processing-1", - "oil-steam-cracking-2", + "steam-cracking-2", "thermal-water-extraction", }, effects = { @@ -348,14 +343,6 @@ data:extend({ type = "unlock-recipe", recipe = "catalyst-metal-blue", }, - { - type = "unlock-recipe", - recipe = "liquid-toluene-from-benzene", - }, - { - type = "unlock-recipe", - recipe = "liquid-toluene-from-naphtha", - }, }, unit = { count = 50, @@ -379,6 +366,10 @@ data:extend({ "production-science-pack", }, effects = { + { + type = "unlock-recipe", + recipe = "liquifier-4", + }, { type = "unlock-recipe", recipe = "angels-electrolyser-4", @@ -490,6 +481,7 @@ data:extend({ icons = angelsmods.functions.create_gas_tech_icon({ { 210, 120, 210 }, { 175, 100, 175 }, { 140, 080, 140 } }), prerequisites = { "angels-advanced-chemistry-3", + "flammables", }, effects = { { @@ -530,11 +522,13 @@ data:extend({ }, { type = "technology", - name = "gas-steam-cracking-1", + name = "steam-cracking-1", icon = "__angelspetrochem__/graphics/technology/steam-cracker-tech.png", icon_size = 128, prerequisites = { + "angels-advanced-chemistry-1", "gas-processing", + "oil-processing", }, effects = { { @@ -543,91 +537,35 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "steam-cracking-methane", - }, - { - type = "unlock-recipe", - recipe = "steam-cracking-ethane", - }, - { - type = "unlock-recipe", - recipe = "steam-cracking-butane", - }, - { - type = "unlock-recipe", - recipe = "gas-propene-synthesis", + recipe = "catalyst-steam-cracking-butane", }, { type = "unlock-recipe", - recipe = "gas-ethylene-oxide", + recipe = "catalyst-steam-cracking-naphtha", }, { type = "unlock-recipe", - recipe = "liquid-ethylene-carbonate", - }, - }, - unit = { - count = 50, - ingredients = { - { type = "item", name = "automation-science-pack", amount = 1 }, - { type = "item", name = "logistic-science-pack", amount = 1 }, + recipe = "steam-cracking-methane", }, - time = 15, - }, - order = "c-a", - }, - { - type = "technology", - name = "gas-steam-cracking-2", - icon = "__angelspetrochem__/graphics/technology/steam-cracker-tech.png", - icon_size = 128, - prerequisites = { - "gas-steam-cracking-1", - "angels-advanced-chemistry-2", - "chemical-science-pack", - }, - effects = { { type = "unlock-recipe", - recipe = "steam-cracker-2", + recipe = "steam-cracking-ethane", }, { type = "unlock-recipe", - recipe = "steam-cracking-gas-residual", - }, - }, - unit = { - count = 50, - ingredients = { - { type = "item", name = "automation-science-pack", amount = 1 }, - { type = "item", name = "logistic-science-pack", amount = 1 }, - { type = "item", name = "chemical-science-pack", amount = 1 }, + recipe = "steam-cracking-butane", }, - time = 15, - }, - order = "c-a", - }, - { - type = "technology", - name = "oil-steam-cracking-1", - icon = "__angelspetrochem__/graphics/technology/steam-cracker-tech.png", - icon_size = 128, - prerequisites = { - "oil-processing", - "angels-advanced-chemistry-1", - }, - effects = { { type = "unlock-recipe", - recipe = "steam-cracker", + recipe = "gas-propene-synthesis", }, { type = "unlock-recipe", - recipe = "catalyst-steam-cracking-butane", + recipe = "gas-ethylene-oxide", }, { type = "unlock-recipe", - recipe = "catalyst-steam-cracking-naphtha", + recipe = "liquid-ethylene-carbonate", }, }, unit = { @@ -642,13 +580,12 @@ data:extend({ }, { type = "technology", - name = "oil-steam-cracking-2", + name = "steam-cracking-2", icon = "__angelspetrochem__/graphics/technology/steam-cracker-tech.png", icon_size = 128, prerequisites = { - "oil-steam-cracking-1", "angels-advanced-chemistry-2", - "chemical-science-pack", + "steam-cracking-1", }, effects = { { @@ -671,6 +608,10 @@ data:extend({ type = "unlock-recipe", recipe = "steam-cracking-oil-residual", }, + { + type = "unlock-recipe", + recipe = "steam-cracking-gas-residual", + }, }, unit = { count = 50, @@ -689,8 +630,7 @@ data:extend({ icon = "__angelspetrochem__/graphics/technology/electric-boiler-tech.png", icon_size = 128, prerequisites = { - "oil-steam-cracking-1", - "gas-steam-cracking-1", + "steam-cracking-1", }, effects = { { @@ -719,8 +659,7 @@ data:extend({ icon_size = 128, prerequisites = { "angels-electric-boiler", - "oil-steam-cracking-2", - "gas-steam-cracking-2", + "steam-cracking-2", }, effects = { { diff --git a/angelspetrochem/prototypes/technology/petrochem-solids.lua b/angelspetrochem/prototypes/technology/petrochem-solids.lua index 35b009836..bc4f11299 100644 --- a/angelspetrochem/prototypes/technology/petrochem-solids.lua +++ b/angelspetrochem/prototypes/technology/petrochem-solids.lua @@ -6,8 +6,7 @@ data:extend({ icon = "__angelspetrochem__/graphics/technology/plastic-1-tech.png", icon_size = 128, prerequisites = { - "gas-steam-cracking-1", - "oil-steam-cracking-1", + "steam-cracking-1", }, effects = { { @@ -214,7 +213,7 @@ data:extend({ icon = "__angelspetrochem__/graphics/technology/separator-tech.png", icon_size = 128, prerequisites = { - --"oil-steam-cracking-1", + --"steam-cracking-1", "angels-advanced-chemistry-2", }, effects = { diff --git a/angelspetrochem/prototypes/technology/petrochem-weaponary.lua b/angelspetrochem/prototypes/technology/petrochem-weaponary.lua index c7c58b7b9..f7677c0cc 100644 --- a/angelspetrochem/prototypes/technology/petrochem-weaponary.lua +++ b/angelspetrochem/prototypes/technology/petrochem-weaponary.lua @@ -70,6 +70,10 @@ data:extend({ "military-science-pack", }, effects = { + { + type = "unlock-recipe", + recipe = "liquid-glycerol", + }, { type = "unlock-recipe", recipe = "solid-nitroglycerin", @@ -96,6 +100,14 @@ data:extend({ "angels-advanced-chemistry-3", }, effects = { + { + type = "unlock-recipe", + recipe = "liquid-toluene-from-benzene", + }, + { + type = "unlock-recipe", + recipe = "liquid-toluene-from-naphtha", + }, { type = "unlock-recipe", recipe = "solid-trinitrotoluene", diff --git a/angelsrefining/changelog.txt b/angelsrefining/changelog.txt index 7ab29aad8..4824690e6 100644 --- a/angelsrefining/changelog.txt +++ b/angelsrefining/changelog.txt @@ -1,4 +1,16 @@ --------------------------------------------------------------------------------------------------- +Version: 0.12.5 +Date: 22.12.2023 + Changes: + - Moved Electro-refining to purple science. Replaced Crystal catalyst with Hybrid catalyst in Thorium sorting recipe (909) + - Compatibility with Bob's changes (911) + - Enabled productivity modules for Thorium Ore sorting recipe (929) + - Added custom error message for when trying to insert invalid items into a barreling pump (933) + - Changed Crystal catalyst recipe to require Crystallizer 2 (943) + - Removed Crystal catalyst from Bob's gem ore crystallization recipes (943) + - Changed the Recipe Builder to make it easier for other mods to add their own materials (950) + - Added a beaconable electric offshore waterpump (952) +--------------------------------------------------------------------------------------------------- Version: 0.12.4 Date: 23.02.2023 Bugfixes: diff --git a/angelsrefining/control.lua b/angelsrefining/control.lua index 19f4bdd33..4f47d3f11 100644 --- a/angelsrefining/control.lua +++ b/angelsrefining/control.lua @@ -1,19 +1,64 @@ local starting_items = require("src.starting_items") local welcome_dialog = require("src.welcome_dialog") local ground_water_pump = require("src.ground_water_pump") +local sea_pump = require("src.sea-pump") +-- initialisation +local on_configuration_changed = require("src.mod-config") +script.on_configuration_changed(on_configuration_changed) script.on_init(function() starting_items:on_init() + sea_pump:on_init() end) script.on_event(defines.events.on_cutscene_cancelled, function(event) welcome_dialog:on_cutscene_cancelled(event.player_index) end) -script.on_event(defines.events.on_gui_click, function(event) - welcome_dialog:on_gui_click(event.element.name, event.player_index) +-- built events +script.on_event(defines.events.on_built_entity, function(event) + sea_pump:on_build_entity(event.created_entity, {}) +end) +script.on_event(defines.events.on_robot_built_entity, function(event) + sea_pump:on_build_entity(event.created_entity, event.tags or {}) +end) +script.on_event(defines.events.script_raised_built, function(event) + sea_pump:on_build_entity(event.entity, {}) +end) +script.on_event(defines.events.script_raised_revive, function(event) + sea_pump:on_build_entity(event.entity, {}) +end) +script.on_event(defines.events.on_post_entity_died, function(event) + sea_pump:on_build_entity(event.ghost, {}) end) script.on_event(defines.events.on_player_rotated_entity, function(event) ground_water_pump:on_player_rotated_entity(event.entity, event.previous_direction, event.player_index) end) + +-- destroy events +script.on_event(defines.events.on_entity_died, function(event) + sea_pump:on_remove_entity(event.entity) +end) +script.on_event(defines.events.on_player_mined_entity, function(event) + sea_pump:on_remove_entity(event.entity) +end) +script.on_event(defines.events.on_robot_mined_entity, function(event) + sea_pump:on_remove_entity(event.entity) +end) +script.on_event(defines.events.script_raised_destroy, function(event) + sea_pump:on_remove_entity(event.entity) +end) + +-- blueprint events +script.on_event(defines.events.on_player_setup_blueprint, function(event) + sea_pump:on_blueprint_setup(event.player_index) +end) +script.on_event(defines.events.on_player_configured_blueprint, function(event) + sea_pump:on_blueprint_setup(event.player_index) +end) + +-- gui events +script.on_event(defines.events.on_gui_click, function(event) + welcome_dialog:on_gui_click(event.element.name, event.player_index) +end) diff --git a/angelsrefining/data.lua b/angelsrefining/data.lua index 54f905f27..3956136ea 100644 --- a/angelsrefining/data.lua +++ b/angelsrefining/data.lua @@ -128,6 +128,7 @@ require("prototypes.buildings.hydro-plant") require("prototypes.buildings.ground-water-pump") require("prototypes.buildings.salination-plant") require("prototypes.buildings.seafloor-pump") +require("prototypes.buildings.sea-pump") require("prototypes.buildings.washing-plant") require("prototypes.buildings.clarifier") require("prototypes.buildings.barreling-pump") diff --git a/angelsrefining/graphics/entity/ores/Thumbs.db b/angelsrefining/graphics/entity/ores/Thumbs.db deleted file mode 100644 index 8a5636a0c8b29120aed8a0269c77901aa11baf0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84992 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 diff --git a/angelsrefining/graphics/entity/sea-pump/empty.png b/angelsrefining/graphics/entity/sea-pump/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..877eed1e3cd7e4897205825fbf69f5b85f02a535 GIT binary patch literal 179 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 literal 0 HcmV?d00001 diff --git a/angelsrefining/graphics/icons/sea-pump-ico.png b/angelsrefining/graphics/icons/sea-pump-ico.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c07dde607b406060a63c85dc6591e11d02c2ae GIT binary patch literal 3357 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 2.3.3", "? Yuoki >= 0.4.0", "? UraniumPower >= 0.6.4", diff --git a/angelsrefining/locale/en/water-treatment.cfg b/angelsrefining/locale/en/water-treatment.cfg index fa4baf2b5..02f007c02 100644 --- a/angelsrefining/locale/en/water-treatment.cfg +++ b/angelsrefining/locale/en/water-treatment.cfg @@ -51,6 +51,7 @@ clarifier=Clarifier salination-plant=Salination plant 1 salination-plant-2=Salination plant 2 seafloor-pump=Seafloor pump +sea-pump=Heavy offshore pump washing-plant=Washing plant 1 washing-plant-2=Washing plant 2 barreling-pump=Barreling pump @@ -64,6 +65,7 @@ clarifier=Helps you to get rid of all the water you don't want. salination-plant=Increases salinity of water via evaporation. salination-plant-2=Increases salinity of water via evaporation. seafloor-pump=Extracts viscous mud water from a body of water. +sea-pump=An energised offshore pump to increase pumping performance to pump fluids from a body of water. washing-plant=Dilutes mud water or extracts sediments. washing-plant-2=Dilutes mud water or extracts sediments. barreling-pump=Fills or empties fluid containers. @@ -92,3 +94,8 @@ water-treatment=Essential methods for the treatment of impure water. angels-fluid-barreling=Methods to fill fluids into containers for alternative transport. water-washing=Processing of mud water and extraction of sediments. +[cant_insert] +angels-barreling-pump-limitation=__1__ cannot be filled. + +[tooltip-description] +custom-parameter=\n__1__: [font=default][color=1,0.74,0.4]__2__[/color][/font] \ No newline at end of file diff --git a/angelsrefining/migrations/angelsrefining_0.11.17.lua b/angelsrefining/migrations/angelsrefining_0.11.17.lua index 91675624b..d3119685c 100644 --- a/angelsrefining/migrations/angelsrefining_0.11.17.lua +++ b/angelsrefining/migrations/angelsrefining_0.11.17.lua @@ -1,8 +1,4 @@ for _, force in pairs(game.forces) do - if force.technologies["geode-crystallization-2"] and force.technologies["geode-crystallization-1"] then - force.technologies["geode-crystallization-2"].researched = force.technologies["geode-crystallization-1"].researched - end - force.reset_recipes() force.reset_technologies() force.reset_technology_effects() diff --git a/angelsrefining/migrations/angelsrefining_0.11.20.lua b/angelsrefining/migrations/angelsrefining_0.11.20.lua index 60e32361d..461c0ff66 100644 --- a/angelsrefining/migrations/angelsrefining_0.11.20.lua +++ b/angelsrefining/migrations/angelsrefining_0.11.20.lua @@ -1,13 +1,4 @@ for _, force in pairs(game.forces) do - if force.technologies["geode-crystallization-2"] and force.technologies["geode-processing-3"] then - force.technologies["geode-processing-3"].researched = force.technologies["geode-crystallization-2"].researched - if force.technologies["gem-processing-1"] then - force.technologies["geode-crystallization-2"].researched = force.technologies["gem-processing-1"].researched - else - force.technologies["geode-crystallization-2"].researched = false - end - end - --left-overs from misfiring past migrations for _, tech_name in pairs({ "water-washing-1", diff --git a/angelsrefining/migrations/angelsrefining_0.12.5.json b/angelsrefining/migrations/angelsrefining_0.12.5.json new file mode 100644 index 000000000..cd7c15236 --- /dev/null +++ b/angelsrefining/migrations/angelsrefining_0.12.5.json @@ -0,0 +1,10 @@ +{ + "entity": + [ + ["electro-whinning-cell-3", "electro-whinning-cell-2"] + ], + "item": + [ + ["electro-whinning-cell-3", "electro-whinning-cell-2"] + ] +} diff --git a/angelsrefining/prototypes/buildings/barreling-pump.lua b/angelsrefining/prototypes/buildings/barreling-pump.lua index 340c6d4a7..15bc885e4 100644 --- a/angelsrefining/prototypes/buildings/barreling-pump.lua +++ b/angelsrefining/prototypes/buildings/barreling-pump.lua @@ -117,6 +117,7 @@ if angelsmods.trigger.enable_auto_barreling then barreling_pump.result_inventory_size = 1 barreling_pump.source_inventory_size = 1 barreling_pump.ingredient_count = nil + barreling_pump.cant_insert_at_source_message_key = "cant_insert.angels-barreling-pump-limitation" end data:extend({ barreling_pump }) diff --git a/angelsrefining/prototypes/buildings/electro-whinning-cell.lua b/angelsrefining/prototypes/buildings/electro-whinning-cell.lua index ff9ca3bc8..3f4962b0d 100644 --- a/angelsrefining/prototypes/buildings/electro-whinning-cell.lua +++ b/angelsrefining/prototypes/buildings/electro-whinning-cell.lua @@ -34,11 +34,11 @@ data:extend({ collision_box = { { -2.4, -2.4 }, { 2.4, 2.4 } }, selection_box = { { -2.5, -2.5 }, { 2.5, 2.5 } }, module_specification = { - module_slots = 1, + module_slots = 2, }, allowed_effects = { "consumption", "speed", "pollution", "productivity" }, crafting_categories = { "ore-refining-t3-5" }, - crafting_speed = 0.75, + crafting_speed = 1, energy_source = { type = "electric", usage_priority = "secondary-input", @@ -135,114 +135,6 @@ data:extend({ flags = { "placeable-neutral", "player-creation" }, minable = { mining_time = 1, result = "electro-whinning-cell-2" }, fast_replaceable_group = "electro-whinning-cell", - next_upgrade = "electro-whinning-cell-3", - max_health = 300, - corpse = "big-remnants", - dying_explosion = "medium-explosion", - collision_box = { { -2.4, -2.4 }, { 2.4, 2.4 } }, - selection_box = { { -2.5, -2.5 }, { 2.5, 2.5 } }, - module_specification = { - module_slots = 2, - }, - allowed_effects = { "consumption", "speed", "pollution", "productivity" }, - crafting_categories = { "ore-refining-t3-5" }, - crafting_speed = 1, - energy_source = { - type = "electric", - usage_priority = "secondary-input", - emissions_per_minute = 0.03 * 60, - }, - energy_usage = "250kW", - ingredient_count = 3, - animation = { - filename = "__angelsrefining__/graphics/entity/electro-whinning-cell/electro-whinning-cell.png", - priority = "extra-high", - width = 224, - height = 224, - frame_count = 36, - line_length = 6, - shift = { 0, 0 }, - animation_speed = 0.5, - -- hr_version = - -- { - -- filename = "__angelsrefining__/graphics/entity/electro-whinning-cell/1electro-whinning-cell.png", - -- priority = "extra-high", - -- width = 192, - -- height = 192, - -- frame_count = 16, - -- line_length = 4, - -- shift = {0.45, 0.7}, - -- animation_speed = 0.5, - -- scale = 0.5 - -- }, - }, - vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, - working_sound = { - sound = { filename = "__angelsrefining__/sound/ore-leaching-plant.ogg" }, - idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.6 }, - apparent_volume = 2.5, - }, - fluid_boxes = { - { - production_type = "input", - pipe_picture = angelsmods.refining.floatationpipepictures(), - pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = { { type = "input", position = { 1, 3 } } }, - }, - { - production_type = "input", - pipe_picture = angelsmods.refining.floatationpipepictures(), - pipe_covers = pipecoverspictures(), - base_area = 10, - base_level = -1, - pipe_connections = { { type = "input", position = { -1, 3 } } }, - }, - { - production_type = "output", - pipe_picture = angelsmods.refining.floatationpipepictures(), - pipe_covers = pipecoverspictures(), - base_level = 1, - pipe_connections = { { type = "output", position = { 1, -3 } } }, - }, - { - production_type = "output", - pipe_picture = angelsmods.refining.floatationpipepictures(), - pipe_covers = pipecoverspictures(), - base_level = 1, - pipe_connections = { { type = "output", position = { -1, -3 } } }, - }, - }, - }, - { - type = "item", - name = "electro-whinning-cell-3", - icons = angelsmods.functions.add_number_icon_layer({ - { - icon = "__angelsrefining__/graphics/icons/electro-whinning-cell-ico.png", - icon_size = 32, - icon_mipmaps = 1, - }, - }, 3, angelsmods.refining.number_tint), - subgroup = "ore-whinning", - order = "f", - place_result = "electro-whinning-cell-3", - stack_size = 10, - }, - { - type = "assembling-machine", - name = "electro-whinning-cell-3", - icons = angelsmods.functions.add_number_icon_layer({ - { - icon = "__angelsrefining__/graphics/icons/electro-whinning-cell-ico.png", - icon_size = 32, - icon_mipmaps = 1, - }, - }, 3, angelsmods.refining.number_tint), - flags = { "placeable-neutral", "player-creation" }, - minable = { mining_time = 1, result = "electro-whinning-cell-3" }, - fast_replaceable_group = "electro-whinning-cell", max_health = 300, corpse = "big-remnants", dying_explosion = "medium-explosion", @@ -257,9 +149,9 @@ data:extend({ energy_source = { type = "electric", usage_priority = "secondary-input", - emissions_per_minute = 0.04 * 60, + emissions_per_minute = 0.03 * 60, }, - energy_usage = "300kW", + energy_usage = "250kW", ingredient_count = 3, animation = { filename = "__angelsrefining__/graphics/entity/electro-whinning-cell/electro-whinning-cell.png", diff --git a/angelsrefining/prototypes/buildings/ore-leaching-plant.lua b/angelsrefining/prototypes/buildings/ore-leaching-plant.lua index d13395abc..f7a63aa90 100644 --- a/angelsrefining/prototypes/buildings/ore-leaching-plant.lua +++ b/angelsrefining/prototypes/buildings/ore-leaching-plant.lua @@ -116,7 +116,7 @@ data:extend({ module_slots = 2, }, allowed_effects = { "consumption", "speed", "pollution", "productivity" }, - crafting_categories = { "ore-refining-t3" }, + crafting_categories = { "ore-refining-t3", "ore-refining-t3b" }, crafting_speed = 1, energy_source = { type = "electric", @@ -206,7 +206,7 @@ data:extend({ module_slots = 3, }, allowed_effects = { "consumption", "speed", "pollution", "productivity" }, - crafting_categories = { "ore-refining-t3" }, + crafting_categories = { "ore-refining-t3", "ore-refining-t3b" }, crafting_speed = 1.5, energy_source = { type = "electric", diff --git a/angelsrefining/prototypes/buildings/sea-pump.lua b/angelsrefining/prototypes/buildings/sea-pump.lua new file mode 100644 index 000000000..2c858d397 --- /dev/null +++ b/angelsrefining/prototypes/buildings/sea-pump.lua @@ -0,0 +1,348 @@ +local sounds = require("__base__.prototypes.entity.sounds") +local hit_effects = require("__base__.prototypes.entity.hit-effects") + +data:extend({ + { + type = "item", + name = "sea-pump", + icon = "__angelsrefining__/graphics/icons/sea-pump-ico.png", + icon_size = 32, + subgroup = "washing-building", + order = "f", + place_result = "sea-pump-placeable", + stack_size = 10, + }, + { + type = "offshore-pump", + name = "sea-pump-placeable", + localised_name = { "entity-name.sea-pump" }, + localised_description = { "entity-description.sea-pump" }, + icon = "__angelsrefining__/graphics/icons/sea-pump-ico.png", + icon_size = 32, + flags = { "placeable-neutral", "player-creation", "filter-directions" }, + collision_mask = { "object-layer", "train-layer" }, -- collide just with object-layer and train-layer which don't collide with water, this allows us to build on 1 tile wide ground + center_collision_mask = { "water-tile", "object-layer", "player-layer" }, -- to test that tile directly under the pump is ground + fluid_box_tile_collision_test = { "ground-tile" }, + adjacent_tile_collision_test = { "water-tile" }, + adjacent_tile_collision_mask = { "ground-tile" }, -- to prevent building on edge of map :( + adjacent_tile_collision_box = { { -2, -3 }, { 2, -2 } }, + minable = { mining_time = 1, result = "sea-pump" }, + max_health = 200, + corpse = "small-remnants", + fluid = "water", + resistances = { + { + type = "fire", + percent = 70, + }, + }, + collision_box = { { -1.4, -2.45 }, { 1.4, 0.3 } }, + selection_box = { { -1.6, -2.49 }, { 1.6, 0.49 } }, + fluid_box = { + base_area = 1, + base_level = 1, + pipe_covers = pipecoverspictures(), + production_type = "output", + filter = "water", + pipe_connections = { + { + position = { 0, 1 }, + type = "output", + }, + }, + }, + pumping_speed = 1500 / 60, + tile_width = 3, + tile_height = 3, + vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 }, + picture = { + north = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { 0, -1 }, + width = 160, + height = 160, + }, + east = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { 1, 0 }, + x = 160, + width = 160, + height = 160, + }, + south = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { 0, 1 }, + x = 320, + width = 160, + height = 160, + }, + west = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { -1, 0 }, + x = 480, + width = 160, + height = 160, + }, + }, + placeable_position_visualization = { + filename = "__core__/graphics/cursor-boxes-32x32.png", + priority = "extra-high-no-scale", + width = 64, + height = 64, + scale = 0.5, + x = 3 * 64, + }, + circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, + circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, + circuit_wire_max_distance = default_circuit_wire_max_distance, + }, + { + type = "resource-category", + name = "sea-pump", + }, + { + type = "resource", + name = "sea-pump-resource", + localised_name = { "fluid-name.water" }, + icon = "__base__/graphics/icons/fluid/water.png", + icon_size = 64, + icon_mipmaps = 4, + flags = { "placeable-neutral", "not-on-map" }, + selectable_in_game = false, + category = "sea-pump", + subgroup = "raw-resource", + order = "a-b-a", + infinite = true, + highlight = false, + minimum = 100000, + normal = 100000, + infinite_depletion_amount = 1, + resource_patch_search_radius = 1, + --tree_removal_probability = 0.7, + --tree_removal_max_distance = 32 * 32, + minable = { + mining_time = 1, -- how long it takes to 'tick' + results = { + { + type = "fluid", + name = "water", + amount_min = 1500, -- amount of water it produces each 'tick' + amount_max = 1500, + probability = 1, + }, + }, + }, + walking_sound = sounds.oil, + collision_box = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + selection_box = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + --autoplace = resource_autoplace.resource_autoplace_settings + --{ + -- name = "crude-oil", + -- order = "c", -- Other resources are "b"; oil won't get placed if something else is already there. + -- base_density = 8.2, + -- base_spots_per_km2 = 1.8, + -- random_probability = 1/48, + -- random_spot_size_minimum = 1, + -- random_spot_size_maximum = 1, -- don't randomize spot size + -- additional_richness = 220000, -- this increases the total everywhere, so base_density needs to be decreased to compensate + -- has_starting_area_placement = false, + -- regular_rq_factor_multiplier = 1 + --}, + stage_counts = { 0 }, + stages = { + sheet = { + filename = "__angelsrefining__/graphics/entity/sea-pump/empty.png", + priority = "extra-high", + width = 1, + height = 1, + frame_count = 1, + variation_count = 1, + shift = util.by_pixel(0, 0), + hr_version = { + filename = "__angelsrefining__/graphics/entity/sea-pump/empty.png", + priority = "extra-high", + width = 1, + height = 1, + frame_count = 1, + variation_count = 1, + shift = util.by_pixel(0, 0), + scale = 1, + }, + }, + }, + --map_color = {0.78, 0.2, 0.77}, + --map_grid = false + }, + { + type = "mining-drill", + name = "sea-pump", + localised_name = { "entity-name.sea-pump" }, + localised_description = { "entity-description.sea-pump" }, + icon = "__angelsrefining__/graphics/icons/sea-pump-ico.png", + icon_size = 32, + icon_mipmaps = 1, + flags = { "placeable-neutral", "player-creation" }, + minable = { mining_time = 0.5, result = "sea-pump" }, + placeable_by = { item = "sea-pump", count = 1 }, + resource_categories = { "sea-pump" }, + max_health = 200, + corpse = "small-remnants", + dying_explosion = "pumpjack-explosion", + collision_box = { { -1.4, -2.45 }, { 1.4, 0.3 } }, + selection_box = { { -1.6, -2.49 }, { 1.6, 0.49 } }, + drawing_box = { { -1.6, -2.5 }, { 1.5, 1.6 } }, + damaged_trigger_effect = hit_effects.entity(), + energy_source = { + type = "electric", + emissions_per_minute = 10, + usage_priority = "secondary-input", + }, + output_fluid_box = { + filter = "water", + base_area = 50, -- box size = area * level * height * 100 = 10 000 + base_level = 1, + height = 2, + pipe_covers = pipecoverspictures(), + pipe_connections = { + { + position = { 0, 1 }, + type = "output", + }, + }, + }, + energy_usage = "250kW", + mining_speed = 1, -- how fast it 'ticks' + base_productivity = -0.8, -- partially disable mining productivity. Setting this more negative seems to have no effect + resource_searching_radius = 0.49, + vector_to_place_result = { 0, 0 }, + module_specification = { + module_slots = 2, + }, + allowed_effects = { "speed", "consumption", "pollution" }, -- disallow productivity modules + radius_visualisation_picture = { + filename = "__base__/graphics/entity/pumpjack/pumpjack-radius-visualization.png", + width = 12, + height = 12, + }, + --monitor_visualization_tint = {r=78, g=173, b=255}, + --base_render_layer = "lower-object-above-shadow", + base_picture = { + north = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { 0, -1 }, + width = 160, + height = 160, + }, + east = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { 1, 0 }, + x = 160, + width = 160, + height = 160, + }, + south = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { 0, 1 }, + x = 320, + width = 160, + height = 160, + }, + west = { + filename = "__angelsrefining__/graphics/entity/sea-pump/sea-pump.png", + priority = "high", + shift = { -1, 0 }, + x = 480, + width = 160, + height = 160, + }, + }, + --animations = + --{ + -- north = + -- { + -- layers = + -- { + -- { + -- priority = "high", + -- filename = "__base__/graphics/entity/pumpjack/pumpjack-horsehead.png", + -- line_length = 8, + -- width = 104, + -- height = 102, + -- frame_count = 40, + -- shift = util.by_pixel(-4, -24), + -- animation_speed = 0.5, + -- hr_version = + -- { + -- priority = "high", + -- filename = "__base__/graphics/entity/pumpjack/hr-pumpjack-horsehead.png", + -- animation_speed = 0.5, + -- scale = 0.5, + -- line_length = 8, + -- width = 206, + -- height = 202, + -- frame_count = 40, + -- shift = util.by_pixel(-4, -24) + -- } + -- }, + -- { + -- priority = "high", + -- filename = "__base__/graphics/entity/pumpjack/pumpjack-horsehead-shadow.png", + -- animation_speed = 0.5, + -- draw_as_shadow = true, + -- line_length = 8, + -- width = 155, + -- height = 41, + -- frame_count = 40, + -- shift = util.by_pixel(17.5, 14.5), + -- hr_version = + -- { + -- priority = "high", + -- filename = "__base__/graphics/entity/pumpjack/hr-pumpjack-horsehead-shadow.png", + -- animation_speed = 0.5, + -- draw_as_shadow = true, + -- line_length = 8, + -- width = 309, + -- height = 82, + -- frame_count = 40, + -- scale = 0.5, + -- shift = util.by_pixel(17.75, 14.5) + -- } + -- } + -- } + -- } + --}, + vehicle_impact_sound = sounds.generic_impact, + open_sound = sounds.machine_open, + close_sound = sounds.machine_close, + --working_sound = + --{ + -- sound = + -- { + -- { + -- filename = "__base__/sound/pumpjack.ogg", + -- volume = 0.7 + -- }, + -- --{ + -- -- filename = "__base__/sound/pumpjack-1.ogg", + -- -- volume = 0.43 + -- --} + -- }, + -- max_sounds_per_type = 3, + -- audible_distance_modifier = 0.6, + -- fade_in_ticks = 4, + -- fade_out_ticks = 10 + --}, + --fast_replaceable_group = "pumpjack", + + circuit_wire_connection_points = circuit_connector_definitions["offshore-pump"].points, + circuit_connector_sprites = circuit_connector_definitions["offshore-pump"].sprites, + circuit_wire_max_distance = default_circuit_wire_max_distance, + }, +}) diff --git a/angelsrefining/prototypes/override-functions.lua b/angelsrefining/prototypes/override-functions.lua index 1166d5b18..7fdec33e3 100644 --- a/angelsrefining/prototypes/override-functions.lua +++ b/angelsrefining/prototypes/override-functions.lua @@ -669,12 +669,6 @@ ov_functions.set_temperature_barreling = function(fluid, temp, min_temp, max_tem end end end - if temp then - fill_barrel.temperature = temp - else - fill_barrel.minimum_temperature = min_temp - fill_barrel.maximum_temperature = max_temp - end end end end diff --git a/angelsrefining/prototypes/override/refining-override-bobgems.lua b/angelsrefining/prototypes/override/refining-override-bobgems.lua index 384d202a5..6a94b96b2 100644 --- a/angelsrefining/prototypes/override/refining-override-bobgems.lua +++ b/angelsrefining/prototypes/override/refining-override-bobgems.lua @@ -12,7 +12,7 @@ local create_single_gem_crystallization = function(recipe_bace_name, ores) local ore_name = type(ore_data) == "table" and ore_data[1] or ore_data local ore_amount = type(ore_data) == "table" and ore_data[2] or 1 if data.raw.item[ore_name] and ore_amount > 0 then - table.insert(recipe.results, { ore_name, ore_amount }) + table.insert(recipe.results, { name = ore_name, amount = ore_amount }) recipe.order = type(ore_data) == "table" and ore_data[3] or nil recipe.icons = angelsmods.functions.create_liquid_recipe_icon( { ore_name }, diff --git a/angelsrefining/prototypes/override/refining-override-bobplates.lua b/angelsrefining/prototypes/override/refining-override-bobplates.lua index 4f9816c2c..a989baf58 100644 --- a/angelsrefining/prototypes/override/refining-override-bobplates.lua +++ b/angelsrefining/prototypes/override/refining-override-bobplates.lua @@ -106,53 +106,10 @@ if mods["bobplates"] then }, order = "a-a-a1", }, - { - type = "technology", - name = "geode-crystallization-2", - icon = "__angelsrefining__/graphics/technology/geode-processing-blue.png", - icon_size = 256, - icon_mipmaps = 2, - prerequisites = { - "geode-crystallization-1", - }, - effects = { - { - type = "unlock-recipe", - recipe = "bob-ruby-3", - }, - { - type = "unlock-recipe", - recipe = "bob-sapphire-3", - }, - { - type = "unlock-recipe", - recipe = "bob-emerald-3", - }, - { - type = "unlock-recipe", - recipe = "bob-amethyst-3", - }, - { - type = "unlock-recipe", - recipe = "bob-topaz-3", - }, - { - type = "unlock-recipe", - recipe = "bob-diamond-3", - }, - }, - unit = { - count = 50, - ingredients = { - { type = "item", name = "automation-science-pack", amount = 1 }, - { type = "item", name = "logistic-science-pack", amount = 1 }, - }, - time = 30, - }, - order = "a-a-a1", - }, }) - OV.add_prereq("gem-processing-1", "geode-crystallization-2") + OV.add_prereq("gem-processing-1", "geode-crystallization-1") + OV.set_science_pack("gem-processing-1", "logistic-science-pack", 1) + OV.set_research_difficulty("gem-processing-1", 30, 50) for _, recipeName in pairs({ "bob-ruby-3", "bob-sapphire-3", @@ -183,6 +140,7 @@ if mods["bobplates"] then -- angels industries takes care of this with angels nuclear overhaul else OV.add_prereq("thorium-processing", "ore-electro-whinning-cell") + OV.set_science_pack("thorium-processing", "production-science-pack", 1) move_item("thorium-processing", "raw-material", "l[thorium-processing]", "recipe") end end @@ -206,6 +164,19 @@ if mods["bobplates"] then OV.add_prereq("chemical-processing-2", "ore-crushing") if mods["bobwarfare"] then OV.set_science_pack("bob-rocket", "production-science-pack", 1) + if + not settings.startup["bobmods-enemies-enableartifacts"] + or settings.startup["bobmods-enemies-enableartifacts"].value == false + then + OV.set_science_pack("bob-ap-bullets", "production-science-pack", 1) + OV.set_science_pack("bob-shotgun-ap-shells", "production-science-pack", 1) + OV.set_science_pack("bob-piercing-rocket", "production-science-pack", 1) + OV.set_science_pack("bob-electric-rocket", "production-science-pack", 1) + OV.set_science_pack("bob-explosive-rocket", "production-science-pack", 1) + OV.set_science_pack("bob-acid-rocket", "production-science-pack", 1) + OV.set_science_pack("bob-flame-rocket", "production-science-pack", 1) + OV.set_science_pack("bob-poison-rocket", "production-science-pack", 1) + end end end diff --git a/angelsrefining/prototypes/override/refining-override-sorting.lua b/angelsrefining/prototypes/override/refining-override-sorting.lua index 966f75e22..fc71d00a4 100644 --- a/angelsrefining/prototypes/override/refining-override-sorting.lua +++ b/angelsrefining/prototypes/override/refining-override-sorting.lua @@ -539,6 +539,14 @@ OV.patch_recipes(merge_table_of_tables({ if special_vanilla then OV.remove_prereq("uranium-processing", "ore-leaching") OV.add_prereq("uranium-processing", "slag-processing-2") + OV.remove_unlock("slag-processing-3", "slag-processing-9") + OV.add_unlock("slag-processing-2", "slag-processing-9") + OV.patch_recipes({ + { + name = "slag-processing-9", + category = "crystallizing-2", + }, + }) else -- disable the nuggets and pebbles OV.disable_recipe({ @@ -565,19 +573,17 @@ else "ore-advanced-floatation", "ore-electro-whinning-cell", }) - OV.remove_prereq("advanced-ore-refining-3", "ore-electro-whinning-cell") + OV.remove_prereq("advanced-ore-refining-3", "ore-advanced-floatation") + OV.remove_prereq("advanced-ore-refining-4", "ore-electro-whinning-cell") -- hide electro winning cells OV.hide_recipe({ "electro-whinning-cell", "electro-whinning-cell-2", - "electro-whinning-cell-3", }) angelsmods.functions.add_flag("electro-whinning-cell", "hidden") angelsmods.functions.add_flag("electro-whinning-cell-2", "hidden") - angelsmods.functions.add_flag("electro-whinning-cell-3", "hidden") - OV.remove_unlock("advanced-ore-refining-3", "electro-whinning-cell-2") - OV.remove_unlock("advanced-ore-refining-4", "electro-whinning-cell-3") + OV.remove_unlock("advanced-ore-refining-4", "electro-whinning-cell-2") if angelsmods.bioprocessing then else @@ -600,7 +606,7 @@ end if ore_enabled("ferrous") and ore_enabled("cupric") then else - OV.remove_unlock("ore-electro-whinning-cell", "angelsore-crystal-mix6-processing") + OV.remove_unlock("advanced-ore-refining-3", "angelsore-crystal-mix6-processing") OV.disable_recipe("angelsore-crystal-mix6-processing") end if not ore_enabled("ferrous") then --I DON'T KNOW WHY THIS IS STILL GETTING THROUGH!!! diff --git a/angelsrefining/prototypes/override/refining-override-water-treatment.lua b/angelsrefining/prototypes/override/refining-override-water-treatment.lua index 7a750bb50..42918b424 100644 --- a/angelsrefining/prototypes/override/refining-override-water-treatment.lua +++ b/angelsrefining/prototypes/override/refining-override-water-treatment.lua @@ -155,6 +155,7 @@ if angelsmods.trigger.washing_tech == false then --not angelsmods.smelting then -- disable technology OV.disable_technology({ "water-washing-1", "water-washing-2" }) OV.remove_prereq("geode-processing-1", "water-washing-2") + OV.add_unlock("water-treatment", "clarifier") else angelsmods.trigger.geode_red = true angelsmods.trigger.geode_cyan = true @@ -306,8 +307,7 @@ if mods["bobplates"] then if data.raw.fluid["pure-water"] then OV.global_replace_item("pure-water", "water-purified") OV.disable_recipe({ "pure-water", "pure-water-from-lithia" }) - data.raw.fluid["pure-water"].hidden = true - angelsmods.functions.disable_barreling_recipes("pure-water") + angelsmods.functions.add_flag("pure-water", "hidden") end -- lithium processing ------------------------------------------------------- diff --git a/angelsrefining/prototypes/recipe-builder-fallbacks.lua b/angelsrefining/prototypes/recipe-builder-fallbacks.lua index 959727b8a..fb14b1f67 100644 --- a/angelsrefining/prototypes/recipe-builder-fallbacks.lua +++ b/angelsrefining/prototypes/recipe-builder-fallbacks.lua @@ -251,18 +251,15 @@ angelsmods.functions.RB.set_fallback("item", "orepowder-1", { { "block-productio angelsmods.functions.RB.set_fallback("item", "orepowder-2", { { "block-mprocessing-3", 1 }, { "ore-powderizer" } }) angelsmods.functions.RB.set_fallback("item", "orepowder-3", { { "block-mprocessing-4", 1 }, { "ore-powderizer-2" } }) -angelsmods.functions.RB.set_fallback("item", "oreelectro-1", { { "block-mprocessing-3", 3 } }) +angelsmods.functions.RB.set_fallback("item", "oreelectro-1", { { "block-mprocessing-4", 3 } }) angelsmods.functions.RB.set_fallback( "item", "oreelectro-2", - { { "block-mprocessing-4", 3 }, { "electro-whinning-cell" } } -) -angelsmods.functions.RB.set_fallback( - "item", - "oreelectro-3", - { { "block-mprocessing-5", 3 }, { "electro-whinning-cell-2" } } + { { "block-mprocessing-5", 3 }, { "electro-whinning-cell" } } ) +angelsmods.functions.RB.set_fallback("item", "waterpump-2", { { "block-production-2", 3 }, { "offshore-pump", 1 } }) + --PETROCHEM angelsmods.functions.RB.set_fallback("item", "ogseparat-1", { { "block-production-2", 3 } }) angelsmods.functions.RB.set_fallback("item", "ogseparat-2", { { "block-cprocessing-3", 3 }, { "separator" } }) @@ -425,33 +422,16 @@ angelsmods.functions.RB.set_fallback("item", "algaefarm-4", { { "block-bprocessi angelsmods.functions.RB.set_fallback("item", "cropfarm-1", { { "block-production-1", 3 }, { "solid-soil", 15 } }) angelsmods.functions.RB.set_fallback("item", "cropfarm-2", { { "block-bprocessing-3", 3 }, { "crop-farm" } }) -angelsmods.functions.RB.set_fallback("item", "compo-1", { { "block-production-1", 1 }, { "wooden-chest", 1 } }) ---angelsmods.functions.RB.set_fallback("item", "compo-2", { { "block-bprocessing-3", 3 }, { "composter" } } ) - +if angelsmods.industries and angelsmods.industries.components then + angelsmods.functions.RB.set_fallback("item", "compo-1", {}) +else + angelsmods.functions.RB.set_fallback("item", "compo-1", { { "wooden-chest", 1 } }) +end angelsmods.functions.RB.set_fallback("item", "seedex-1", { { "block-production-1", 1 } }) ---angelsmods.functions.RB.set_fallback("item", "seedex-2", { { "block-bprocessing-3", 3 }, { "seed-extractor" } } ) - angelsmods.functions.RB.set_fallback("item", "biopress-1", { { "block-production-2", 1 } }) ---angelsmods.functions.RB.set_fallback("item", "biopress-2", { { "block-bprocessing-3", 3 }, { "bio-press" } } ) - angelsmods.functions.RB.set_fallback("item", "biopro-1", { { "block-production-1", 1 } }) ---angelsmods.functions.RB.set_fallback("item", "biopro-2", { { "block-bprocessing-3", 3 }, { "bio-processor" } } ) - angelsmods.functions.RB.set_fallback("item", "nutrientex-1", { { "block-production-2", 1 } }) ---angelsmods.functions.RB.set_fallback("item", "nutrientex-2", { { "block-bprocessing-3", 3 }, { "nutrient-extractor" } } ) - -angelsmods.functions.RB.set_fallback("item", "arboretum-1", { - { "block-production-1", 1 }, - { "glass", 6 }, - { - "angels-plate-glass", - 6, - function(t, n) - return mods["angelssmelting"] and angelsmods.trigger.smelting_products["glass"].plate or false - end, - }, -}) ---angelsmods.functions.RB.set_fallback("item", "arboretum-2", { { "block-bprocessing-3", 3 }, { "bio-arboretum-1" } } ) +angelsmods.functions.RB.set_fallback("item", "arboretum-1", {}) angelsmods.functions.RB.set_fallback("item", "puffer-1", { { "block-bprocessing-3", 2 }, @@ -464,7 +444,6 @@ angelsmods.functions.RB.set_fallback("item", "puffer-1", { end, }, }) ---angelsmods.functions.RB.set_fallback("item", "puffer-2", { { "block-bprocessing-3", 3 }, { "bio-refugium-puffer" } } ) angelsmods.functions.RB.set_fallback("item", "fish-1", { { "block-production-2", 1 }, @@ -477,13 +456,9 @@ angelsmods.functions.RB.set_fallback("item", "fish-1", { end, }, }) ---angelsmods.functions.RB.set_fallback("item", "fish-2", { { "block-bprocessing-3", 3 }, { "bio-refugium-fish" } } ) angelsmods.functions.RB.set_fallback("item", "biter-1", { { "block-bprocessing-4", 3 }, { "stone-wall", 4 } }) ---angelsmods.functions.RB.set_fallback("item", "biter-2", { { "block-bprocessing-3", 3 }, { "bio-refugium-biter" } } ) angelsmods.functions.RB.set_fallback("item", "hatch-1", { { "block-bprocessing-3", 1 }, { "small-lamp", 3 } }) ---angelsmods.functions.RB.set_fallback("item", "hatch-2", { { "block-bprocessing-4", 3 }, { "bio-hatchery" } } ) angelsmods.functions.RB.set_fallback("item", "butch-1", { { "block-production-2", 1 } }) ---angelsmods.functions.RB.set_fallback("item", "butch-2", { { "block-bprocessing-3", 3 }, { "bio-butchery" } } ) diff --git a/angelsrefining/prototypes/recipe-builder.lua b/angelsrefining/prototypes/recipe-builder.lua index 22051a1e8..fbcc9668a 100644 --- a/angelsrefining/prototypes/recipe-builder.lua +++ b/angelsrefining/prototypes/recipe-builder.lua @@ -34,7 +34,9 @@ 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 + if parent[i_name] ~= nil then + -- fallback already exists + elseif 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 diff --git a/angelsrefining/prototypes/recipes/refining-dynamic/crystal-processing-mix.lua b/angelsrefining/prototypes/recipes/refining-dynamic/crystal-processing-mix.lua index 2e8f6e73b..f2b6fea8c 100644 --- a/angelsrefining/prototypes/recipes/refining-dynamic/crystal-processing-mix.lua +++ b/angelsrefining/prototypes/recipes/refining-dynamic/crystal-processing-mix.lua @@ -171,7 +171,7 @@ data:extend({ { type = "recipe", name = "angelsore8-crystal-processing", - category = "ore-sorting-3", + category = "ore-sorting-4", subgroup = "ore-sorting-t4", energy_required = 1.5, allow_decomposition = false, @@ -203,7 +203,7 @@ data:extend({ { type = "recipe", name = "angelsore9-crystal-processing", - category = "ore-sorting-3", + category = "ore-sorting-4", subgroup = "ore-sorting-t4", energy_required = 1.5, allow_decomposition = false, @@ -232,11 +232,11 @@ data:extend({ icon_size = 32, order = "h", }, - -- TIER 3.5 MIX + -- TIER 4 MIX { type = "recipe", name = "angelsore-crystal-mix6-processing", --thorium - category = "ore-sorting-3", + category = "ore-sorting-4", subgroup = "ore-sorting-advanced", energy_required = 1.5, allow_decomposition = false, @@ -245,7 +245,7 @@ data:extend({ ingredients = { { type = "item", name = "angels-ore8-crystal", amount = 2 }, { type = "item", name = "angels-ore9-crystal", amount = 2 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "item", name = "catalysator-orange", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, diff --git a/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua b/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua index fd11c777d..21656037e 100644 --- a/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua +++ b/angelsrefining/prototypes/recipes/refining-dynamic/gems.lua @@ -11,8 +11,7 @@ data:extend({ enabled = false, normal = { ingredients = { - { type = "fluid", name = "crystal-seedling", amount = 50 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "fluid", name = "crystal-seedling", amount = 75 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -21,7 +20,6 @@ data:extend({ expensive = { ingredients = { { type = "fluid", name = "crystal-seedling", amount = 75 * rawmulti }, - { type = "item", name = "catalysator-green", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -39,8 +37,7 @@ data:extend({ enabled = false, normal = { ingredients = { - { type = "fluid", name = "crystal-seedling", amount = 50 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "fluid", name = "crystal-seedling", amount = 75 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -49,7 +46,6 @@ data:extend({ expensive = { ingredients = { { type = "fluid", name = "crystal-seedling", amount = 75 * rawmulti }, - { type = "item", name = "catalysator-green", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -67,8 +63,7 @@ data:extend({ enabled = false, normal = { ingredients = { - { type = "fluid", name = "crystal-seedling", amount = 50 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "fluid", name = "crystal-seedling", amount = 75 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -77,7 +72,6 @@ data:extend({ expensive = { ingredients = { { type = "fluid", name = "crystal-seedling", amount = 75 * rawmulti }, - { type = "item", name = "catalysator-green", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -95,8 +89,7 @@ data:extend({ enabled = false, normal = { ingredients = { - { type = "fluid", name = "crystal-seedling", amount = 50 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "fluid", name = "crystal-seedling", amount = 75 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -105,7 +98,6 @@ data:extend({ expensive = { ingredients = { { type = "fluid", name = "crystal-seedling", amount = 75 * rawmulti }, - { type = "item", name = "catalysator-green", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -123,8 +115,7 @@ data:extend({ enabled = false, normal = { ingredients = { - { type = "fluid", name = "crystal-seedling", amount = 50 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "fluid", name = "crystal-seedling", amount = 75 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -133,7 +124,6 @@ data:extend({ expensive = { ingredients = { { type = "fluid", name = "crystal-seedling", amount = 75 * rawmulti }, - { type = "item", name = "catalysator-green", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -151,8 +141,7 @@ data:extend({ enabled = false, normal = { ingredients = { - { type = "fluid", name = "crystal-seedling", amount = 50 }, - { type = "item", name = "catalysator-green", amount = 1 }, + { type = "fluid", name = "crystal-seedling", amount = 75 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, @@ -161,7 +150,6 @@ data:extend({ expensive = { ingredients = { { type = "fluid", name = "crystal-seedling", amount = 75 * rawmulti }, - { type = "item", name = "catalysator-green", amount = 1 }, }, results = { { type = "item", name = "angels-void", amount = 1 }, diff --git a/angelsrefining/prototypes/recipes/refining-dynamic/slag-stone.lua b/angelsrefining/prototypes/recipes/refining-dynamic/slag-stone.lua index 9b5096bcf..6fe1806ca 100644 --- a/angelsrefining/prototypes/recipes/refining-dynamic/slag-stone.lua +++ b/angelsrefining/prototypes/recipes/refining-dynamic/slag-stone.lua @@ -239,7 +239,7 @@ data:extend({ { type = "recipe", name = "slag-processing-8", - category = "crystallizing-2", + category = "crystallizing-3", subgroup = "slag-processing-1", energy_required = 8, enabled = false, @@ -272,7 +272,7 @@ data:extend({ { type = "recipe", name = "slag-processing-9", - category = "crystallizing-2", + category = "crystallizing-3", subgroup = "slag-processing-1", energy_required = 8, enabled = false, diff --git a/angelsrefining/prototypes/recipes/refining-entity-angels.lua b/angelsrefining/prototypes/recipes/refining-entity-angels.lua index d383c8a60..d0a1d7065 100644 --- a/angelsrefining/prototypes/recipes/refining-entity-angels.lua +++ b/angelsrefining/prototypes/recipes/refining-entity-angels.lua @@ -1008,6 +1008,35 @@ angelsmods.functions.RB.build({ result = "seafloor-pump", }, }, + --SEA PUMP + { + type = "recipe", + name = "sea-pump", + normal = { + energy_required = 2, + enabled = false, + ingredients = { + { type = "item", name = "waterpump-2", amount = 1 }, + { type = "item", name = "t3-plate", amount = 2 }, + { type = "item", name = "t3-circuit", amount = 5 }, + { type = "item", name = "t3-brick", amount = 6 }, + { type = "item", name = "t3-pipe", amount = 4 }, + }, + result = "sea-pump", + }, + expensive = { + energy_required = 2 * buildingtime, + enabled = false, + ingredients = { + { type = "item", name = "waterpump-2", amount = 1 }, + { type = "item", name = "t3-plate", amount = 2 * buildingmulti }, + { type = "item", name = "t3-circuit", amount = 5 * buildingmulti }, + { type = "item", name = "t3-brick", amount = 6 * buildingmulti }, + { type = "item", name = "t3-pipe", amount = 4 * buildingmulti }, + }, + result = "sea-pump", + }, + }, --LAND PUMP { type = "recipe", @@ -1175,80 +1204,52 @@ angelsmods.functions.RB.build({ enabled = false, ingredients = { { type = "item", name = "oreelectro-1", amount = 1 }, - { type = "item", name = "t3-plate", amount = 4 }, - { type = "item", name = "t3-circuit", amount = 8 }, - { type = "item", name = "t3-brick", amount = 4 }, - { type = "item", name = "t3-pipe", amount = 6 }, - }, - result = "electro-whinning-cell", - }, - expensive = { - energy_required = 5 * buildingtime, - enabled = false, - ingredients = { - { type = "item", name = "oreelectro-1", amount = 1 }, - { type = "item", name = "t3-plate", amount = 4 * buildingmulti }, - { type = "item", name = "t3-circuit", amount = 8 * buildingmulti }, - { type = "item", name = "t3-brick", amount = 4 * buildingmulti }, - { type = "item", name = "t3-pipe", amount = 6 * buildingmulti }, - }, - result = "electro-whinning-cell", - }, - }, - { - type = "recipe", - name = "electro-whinning-cell-2", - normal = { - energy_required = 5, - enabled = false, - ingredients = { - { type = "item", name = "oreelectro-2", amount = 1 }, { type = "item", name = "t4-plate", amount = 4 }, { type = "item", name = "t4-circuit", amount = 8 }, { type = "item", name = "t4-brick", amount = 4 }, { type = "item", name = "t4-pipe", amount = 6 }, }, - result = "electro-whinning-cell-2", + result = "electro-whinning-cell", }, expensive = { energy_required = 5 * buildingtime, enabled = false, ingredients = { - { type = "item", name = "oreelectro-2", amount = 1 }, + { type = "item", name = "oreelectro-1", amount = 1 }, { type = "item", name = "t4-plate", amount = 4 * buildingmulti }, { type = "item", name = "t4-circuit", amount = 8 * buildingmulti }, { type = "item", name = "t4-brick", amount = 4 * buildingmulti }, { type = "item", name = "t4-pipe", amount = 6 * buildingmulti }, }, - result = "electro-whinning-cell-2", + result = "electro-whinning-cell", }, }, { type = "recipe", - name = "electro-whinning-cell-3", + name = "electro-whinning-cell-2", normal = { energy_required = 5, enabled = false, ingredients = { - { type = "item", name = "oreelectro-3", amount = 1 }, + { type = "item", name = "oreelectro-2", amount = 1 }, { type = "item", name = "t5-plate", amount = 4 }, { type = "item", name = "t5-circuit", amount = 8 }, { type = "item", name = "t5-brick", amount = 4 }, { type = "item", name = "t5-pipe", amount = 6 }, }, - result = "electro-whinning-cell-3", + result = "electro-whinning-cell-2", }, expensive = { energy_required = 5 * buildingtime, enabled = false, ingredients = { - { type = "item", name = "oreelectro-3", amount = 1 }, + { type = "item", name = "oreelectro-2", amount = 1 }, { type = "item", name = "t5-plate", amount = 4 * buildingmulti }, { type = "item", name = "t5-circuit", amount = 8 * buildingmulti }, { type = "item", name = "t5-brick", amount = 4 * buildingmulti }, { type = "item", name = "t5-pipe", amount = 6 * buildingmulti }, }, - result = "electro-whinning-cell-3", + result = "electro-whinning-cell-2", }, }, }) diff --git a/angelsrefining/prototypes/recipes/refining-entity.lua b/angelsrefining/prototypes/recipes/refining-entity.lua index 374ad472f..0582c5c99 100644 --- a/angelsrefining/prototypes/recipes/refining-entity.lua +++ b/angelsrefining/prototypes/recipes/refining-entity.lua @@ -372,6 +372,17 @@ data:extend({ }, result = "seafloor-pump", }, + --SEA PUMP + { + type = "recipe", + name = "sea-pump", + energy_required = 5, + enabled = false, + ingredients = { + { type = "item", name = "angels-void", amount = 1 }, + }, + result = "sea-pump", + }, --LAND PUMP { type = "recipe", @@ -457,14 +468,4 @@ data:extend({ }, result = "electro-whinning-cell-2", }, - { - type = "recipe", - name = "electro-whinning-cell-3", - energy_required = 2, - enabled = false, - ingredients = { - { type = "item", name = "angels-void", amount = 1 }, - }, - result = "electro-whinning-cell-3", - }, }) diff --git a/angelsrefining/prototypes/recipes/refining-static.lua b/angelsrefining/prototypes/recipes/refining-static.lua index faa02586e..545d3128a 100644 --- a/angelsrefining/prototypes/recipes/refining-static.lua +++ b/angelsrefining/prototypes/recipes/refining-static.lua @@ -639,7 +639,7 @@ data:extend({ type = "recipe", name = "angelsore8-solution", localised_name = { "recipe-name.angelsore8-solution" }, - category = "ore-refining-t3", + category = "ore-refining-t3b", subgroup = "ore-processing-c", energy_required = 2, enabled = false, @@ -665,7 +665,7 @@ data:extend({ type = "recipe", name = "angelsore8-anode-sludge-filtering", localised_name = { "recipe-name.angelsore8-solution-filtering" }, - category = "filtering-2", + category = "filtering-3", subgroup = "ore-processing-c", energy_required = 2, enabled = false, @@ -723,7 +723,7 @@ data:extend({ type = "recipe", name = "angelsore8-crystal", localised_name = { "recipe-name.angelsore8-crystal" }, - category = "crystallizing-2", + category = "crystallizing-3", subgroup = "ore-processing-d", energy_required = 2, enabled = false, @@ -745,7 +745,7 @@ data:extend({ type = "recipe", name = "angelsore9-solution", localised_name = { "recipe-name.angelsore9-solution" }, - category = "ore-refining-t3", + category = "ore-refining-t3b", subgroup = "ore-processing-c", energy_required = 2, enabled = false, @@ -771,7 +771,7 @@ data:extend({ type = "recipe", name = "angelsore9-anode-sludge-filtering", localised_name = { "recipe-name.angelsore9-solution-filtering" }, - category = "filtering-2", + category = "filtering-3", subgroup = "ore-processing-c", energy_required = 2, enabled = false, @@ -829,7 +829,7 @@ data:extend({ type = "recipe", name = "angelsore9-crystal", localised_name = { "recipe-name.angelsore9-crystal" }, - category = "crystallizing-2", + category = "crystallizing-3", subgroup = "ore-processing-d", energy_required = 2, enabled = false, @@ -1514,7 +1514,7 @@ data:extend({ { type = "recipe", name = "catalysator-green", - category = "crystallizing", + category = "crystallizing-2", subgroup = "geode-crystallization", energy_required = 0.5, enabled = false, diff --git a/angelsrefining/prototypes/refining-category.lua b/angelsrefining/prototypes/refining-category.lua index 1bda90401..3810e4b47 100644 --- a/angelsrefining/prototypes/refining-category.lua +++ b/angelsrefining/prototypes/refining-category.lua @@ -10,6 +10,7 @@ data:extend({ { type = "recipe-category", name = "ore-refining-t1-5" }, -- powderizer { type = "recipe-category", name = "ore-refining-t2" }, -- flotation { type = "recipe-category", name = "ore-refining-t3" }, -- leaching + { type = "recipe-category", name = "ore-refining-t3b" }, -- leaching 2 { type = "recipe-category", name = "ore-refining-t3-5" }, -- electrowinning { type = "recipe-category", name = "ore-refining-t4" }, -- refinery diff --git a/angelsrefining/prototypes/refining-override.lua b/angelsrefining/prototypes/refining-override.lua index 7c1e84fdd..5dad8c966 100644 --- a/angelsrefining/prototypes/refining-override.lua +++ b/angelsrefining/prototypes/refining-override.lua @@ -42,7 +42,6 @@ require("prototypes.override.refining-override-bobvehicleequipment") if mods["bobplates"] then --revamp override if mods["bobrevamp"] and settings.startup["bobmods-revamp-hardmode"].value then - angelsmods.functions.disable_barreling_recipes("brine") angelsmods.functions.add_flag("brine", "hidden") OV.disable_recipe({ "brine-electrolysis" }) -- equivalent of angels recipe "water-saline-seperation" OV.global_replace_item("brine", "water-saline") @@ -498,6 +497,7 @@ angelsmods.functions.allow_productivity("angelsore-crystal-mix2-processing") angelsmods.functions.allow_productivity("angelsore-crystal-mix3-processing") angelsmods.functions.allow_productivity("angelsore-crystal-mix4-processing") angelsmods.functions.allow_productivity("angelsore-crystal-mix5-processing") +angelsmods.functions.allow_productivity("angelsore-crystal-mix6-processing") angelsmods.functions.allow_productivity("angelsore-pure-mix1-processing") angelsmods.functions.allow_productivity("angelsore-pure-mix2-processing") diff --git a/angelsrefining/prototypes/technology/refining-technology.lua b/angelsrefining/prototypes/technology/refining-technology.lua index 6a7ca245c..0635d69b7 100644 --- a/angelsrefining/prototypes/technology/refining-technology.lua +++ b/angelsrefining/prototypes/technology/refining-technology.lua @@ -127,6 +127,7 @@ data:extend({ prerequisites = { --"ore-crushing", "ore-floatation", + "slag-processing-1", "water-washing-2", }, effects = { @@ -154,6 +155,14 @@ data:extend({ type = "unlock-recipe", recipe = "geode-yellow-processing", }, + { + type = "unlock-recipe", + recipe = "crystal-dust-liquify", + }, + { + type = "unlock-recipe", + recipe = "crystal-slurry-filtering-conversion-1", + }, }, unit = { count = 50, @@ -320,9 +329,9 @@ data:extend({ prerequisites = { --"ore-floatation", "advanced-ore-refining-1", - "geode-processing-2", "chemical-science-pack", "ore-powderizer", + "slag-processing-2", }, effects = { { @@ -384,9 +393,7 @@ data:extend({ icon_size = 256, icon_mipmaps = 2, prerequisites = { - --"ore-crushing", "geode-processing-1", - "slag-processing-1", }, effects = { { @@ -413,22 +420,10 @@ data:extend({ type = "unlock-recipe", recipe = "geode-yellow-liquify", }, - { - type = "unlock-recipe", - recipe = "crystal-dust-liquify", - }, { type = "unlock-recipe", recipe = "crystal-slurry-filtering-1", }, - { - type = "unlock-recipe", - recipe = "crystal-slurry-filtering-conversion-1", - }, - { - type = "unlock-recipe", - recipe = "catalysator-green", - }, }, unit = { count = 75, @@ -448,6 +443,7 @@ data:extend({ prerequisites = { "slag-processing-1", "chemical-science-pack", + "geode-processing-2", }, effects = { { @@ -462,6 +458,10 @@ data:extend({ type = "unlock-recipe", recipe = "liquifier-3", }, + { + type = "unlock-recipe", + recipe = "catalysator-green", + }, { type = "unlock-recipe", recipe = "slag-processing-4", @@ -478,14 +478,6 @@ data:extend({ type = "unlock-recipe", recipe = "slag-processing-7", }, - { - type = "unlock-recipe", - recipe = "slag-processing-8", - }, - { - type = "unlock-recipe", - recipe = "slag-processing-9", - }, { type = "unlock-recipe", recipe = "filter-ceramic", @@ -516,9 +508,9 @@ data:extend({ icon = "__angelsrefining__/graphics/technology/slag-processing.png", icon_size = 64, prerequisites = { - "geode-processing-3", "advanced-electronics-2", "production-science-pack", + "slag-processing-2", }, effects = { { @@ -537,6 +529,14 @@ data:extend({ type = "unlock-recipe", recipe = "catalysator-orange", }, + { + type = "unlock-recipe", + recipe = "slag-processing-8", + }, + { + type = "unlock-recipe", + recipe = "slag-processing-9", + }, }, unit = { count = 50, @@ -556,8 +556,7 @@ data:extend({ icon = "__angelsrefining__/graphics/technology/thermal-extractor.png", icon_size = 128, prerequisites = { - --"slag-processing-1", - "advanced-ore-refining-1", + "water-treatment-2", }, effects = { { @@ -717,8 +716,8 @@ data:extend({ prerequisites = { "ore-leaching", "advanced-ore-refining-2", - "ore-electro-whinning-cell", "slag-processing-3", + "ore-advanced-floatation", }, effects = { { @@ -737,10 +736,6 @@ data:extend({ type = "unlock-recipe", recipe = "ore-powderizer-3", }, - { - type = "unlock-recipe", - recipe = "electro-whinning-cell-2", - }, { type = "unlock-recipe", recipe = "angelsore-crystal-mix1-processing", @@ -893,6 +888,7 @@ data:extend({ prerequisites = { "ore-refining", "advanced-ore-refining-3", + "ore-electro-whinning-cell", "utility-science-pack", }, effects = { @@ -906,7 +902,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "electro-whinning-cell-3", + recipe = "electro-whinning-cell-2", }, { type = "unlock-recipe", @@ -1028,7 +1024,6 @@ data:extend({ icon_size = 128, prerequisites = { "ore-powderizer", - "advanced-ore-refining-2", "thermal-water-extraction-2", }, effects = { @@ -1078,9 +1073,8 @@ data:extend({ icon = "__angelsrefining__/graphics/technology/electro-whinning-cell-tech.png", icon_size = 128, prerequisites = { - "ore-advanced-floatation", - "geode-processing-3", "ore-leaching", + "advanced-ore-refining-3", }, effects = { { @@ -1138,6 +1132,7 @@ data:extend({ { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, + { type = "item", name = "production-science-pack", amount = 1 }, }, time = 15, }, diff --git a/angelsrefining/prototypes/technology/water-treatment-technology.lua b/angelsrefining/prototypes/technology/water-treatment-technology.lua index 9ec2f4c8c..73fe5fbff 100644 --- a/angelsrefining/prototypes/technology/water-treatment-technology.lua +++ b/angelsrefining/prototypes/technology/water-treatment-technology.lua @@ -38,20 +38,16 @@ data:extend({ effects = { { type = "unlock-recipe", - recipe = "hydro-plant", + recipe = "ground-water-pump", }, { type = "unlock-recipe", - recipe = "clarifier", + recipe = "hydro-plant", }, { type = "unlock-recipe", recipe = "liquifier", }, - { - type = "unlock-recipe", - recipe = "ground-water-pump", - }, { type = "unlock-recipe", recipe = "water-purification", @@ -124,6 +120,10 @@ data:extend({ "chemical-science-pack", }, effects = { + { + type = "unlock-recipe", + recipe = "sea-pump", + }, { type = "unlock-recipe", recipe = "hydro-plant-3", @@ -199,7 +199,7 @@ data:extend({ icon = "__angelsrefining__/graphics/technology/washing-plant-tech.png", icon_size = 128, prerequisites = { - "water-treatment", + "automation", }, effects = { { @@ -212,7 +212,7 @@ data:extend({ }, { type = "unlock-recipe", - recipe = "water-viscous-mud", + recipe = "clarifier", }, { type = "unlock-recipe", @@ -248,12 +248,13 @@ data:extend({ }, }, unit = { - count = 30, + count = 10, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, }, time = 15, }, + ignore_tech_cost_multiplier = true, order = "c-a", }, { @@ -271,6 +272,10 @@ data:extend({ type = "unlock-recipe", recipe = "washing-plant-2", }, + { + type = "unlock-recipe", + recipe = "water-viscous-mud", + }, { type = "unlock-recipe", recipe = "solid-geodes", diff --git a/angelsrefining/settings-updates.lua b/angelsrefining/settings-updates.lua index 88118295d..33c0ce04a 100644 --- a/angelsrefining/settings-updates.lua +++ b/angelsrefining/settings-updates.lua @@ -1,4 +1,9 @@ -- EXECUTE OVERRIDES +if mods["boblibrary"] then + angelsmods.settings.hide_setting("bool-setting", "bobmods-library-recipe-cleanup", true) + angelsmods.settings.hide_setting("bool-setting", "bobmods-library-technology-cleanup", true) +end + if mods["bobplates"] then angelsmods.settings.hide_setting("bool-setting", "bobmods-plates-groundwater") angelsmods.settings.hide_setting("bool-setting", "bobmods-plates-vanillabarrelling") @@ -36,6 +41,8 @@ if mods["bobores"] then angelsmods.settings.hide_setting("bool-setting", "bobmods-ores-nickelgivescobalt") angelsmods.settings.hide_setting("double-setting", "bobmods-ores-nickelcobaltratio") + angelsmods.settings.hide_setting("bool-setting", "bobmods-ores-infiniteore", false) + --gems angelsmods.settings.hide_setting("bool-setting", "bobmods-ores-unsortedgemore", false) angelsmods.settings.hide_setting("double-setting", "bobmods-gems-rubyratio") diff --git a/angelsrefining/src/mod-config.lua b/angelsrefining/src/mod-config.lua new file mode 100644 index 000000000..cbb447d7e --- /dev/null +++ b/angelsrefining/src/mod-config.lua @@ -0,0 +1,23 @@ +local sea_pump = require("src.sea-pump") + +return function(configuration_data) + local mod_changes = configuration_data.mod_changes["angelspump"] + if mod_changes and mod_changes.new_version ~= (mod_changes.old_version or "") then + log( + string.format( + "Updating angelspump from version %q to version %q", + mod_changes.old_version or "nil", + mod_changes.new_version + ) + ) + + -------------------------------------------------- + -- Sea pump script----- -- + -------------------------------------------------- + if global.SP_data.version == 1 then + log("Updating sea pump from version 1 to version 2.") + global.SP_data["entity_modules_data_tag"] = "sea-pump-modules_request" -- the tag name where the data is stored in the entity + global.SP_data.version = 2 + end + end +end diff --git a/angelsrefining/src/sea-pump.lua b/angelsrefining/src/sea-pump.lua new file mode 100644 index 000000000..f54b2ac9b --- /dev/null +++ b/angelsrefining/src/sea-pump.lua @@ -0,0 +1,228 @@ +require("util") + +-- Create class --------------------------------------------------------------- +local sea_pump = {} + +------------------------------------------------------------------------------- +-- Initiation of the class +------------------------------------------------------------------------------- +function sea_pump:on_init() + if not global.SP_data then + global.SP_data = self:init_global_data() + end +end + +function sea_pump:init_global_data() + local SP_data = { + ["version"] = 2, -- version of the global data + + ["prototype_data"] = self:init_prototype_data(), -- data storing info about the prototypes + ["entity_modules_data_tag"] = "sea-pump-modules_request", -- the tag name where the data is stored in the entity + } + return SP_data +end + +function sea_pump:init_prototype_data() + return { + ["sea_pump_name"] = "sea-pump", -- the actual pump + ["sea_pump_placeable"] = "sea-pump-placeable", -- the name of the entity being placed + ["sea_pump_resource"] = "sea-pump-resource", -- the resource the actual pump is placed on + } +end + +------------------------------------------------------------------------------- +-- Setter functions to alter data into the data structure +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- +-- Getter functions to extract data from the data structure +------------------------------------------------------------------------------- +function sea_pump:get_pump_name() + if global.SP_data then + return global.SP_data.prototype_data.sea_pump_name + else + return "angels-void" + end +end + +function sea_pump:get_placeable_name() + if global.SP_data then + return global.SP_data.prototype_data.sea_pump_placeable + else + return "angels-void" + end +end + +function sea_pump:get_resource_name() + if global.SP_data then + return global.SP_data.prototype_data.sea_pump_resource + else + return "angels-void" + end +end + +function sea_pump:get_ghost_tag_name() + if global.SP_data then + return global.SP_data.entity_modules_data_tag + else + return "angels-void" + end +end + +------------------------------------------------------------------------------- +-- Behaviour functions, mostly event handlers +------------------------------------------------------------------------------- +function sea_pump:on_build_entity(created_entity, entity_tags) + if not (created_entity and created_entity.valid) then + return + end + + if created_entity.name == self:get_placeable_name() then + local surface = created_entity.surface + local position = created_entity.position + local force = created_entity.force + local direction = created_entity.direction + + -- remove the sea pump placeable + created_entity.destroy({ raise_destroy = true }) + + -- create the resource to be mined by the sea pump (miner) + surface.create_entity({ + name = self:get_resource_name(), + position = position, + force = "neutral", + }) + + -- create the actual sea pump + local created_entity_2 = surface.create_entity({ + name = self:get_pump_name(), + position = position, + direction = direction, + force = force, + create_build_effect_smoke = true, + raise_built = true, + }) + + local requested_modules = entity_tags[self:get_ghost_tag_name()] + if requested_modules then + local created_entity_2_proxy = surface.create_entity({ + name = "item-request-proxy", + position = position, + force = force, + target = created_entity_2, + modules = requested_modules, + }) + end + elseif created_entity.name == self:get_pump_name() then + -- make sure the sea pump (miner) cannot be rotated + created_entity.rotatable = false + elseif created_entity.name == "entity-ghost" then + if created_entity.ghost_name == self:get_placeable_name() then + local modules = {} + local has_modules = false + local module_prototypes = game.get_filtered_item_prototypes({ + { filter = "type", type = "module" }, + }) + for module_name, module_count in pairs(created_entity.item_requests) do + if module_prototypes[module_name] then + modules[module_name] = module_count + has_modules = true + end + end + if has_modules then + local created_entity_tags = created_entity.tags or {} + created_entity_tags[self:get_ghost_tag_name()] = modules + created_entity.tags = created_entity_tags + end + elseif created_entity.ghost_name == self:get_pump_name() then + local surface = created_entity.surface + local position = created_entity.position + local force = created_entity.force + local direction = created_entity.direction + local time_to_live = created_entity.time_to_live + local item_requests = created_entity.item_requests + + -- remove the sea pump (miner) ghost + created_entity.destroy({ raise_destroy = true }) + + -- create the sea pump (placeable) ghost + created_entity_2 = surface.create_entity({ + name = "entity-ghost", + inner_name = self:get_placeable_name(), + position = position, + direction = direction, + force = force, + expires = time_to_live, + create_build_effect_smoke = false, + raise_built = false, -- raise manually after adding the item requests + }) + created_entity_2.item_requests = item_requests + script.raise_event(defines.events.script_raised_built, { entity = created_entity_2 }) + end + end +end + +function sea_pump:on_remove_entity(removed_entity) + if not removed_entity then + return + end + if removed_entity.name ~= self:get_pump_name() then + return + end + + -- remove the resource that was being mined by the sea pump (miner) + local surface = removed_entity.surface + local position = removed_entity.position + local resource_entity = surface.find_entity(self:get_resource_name(), position) + if resource_entity ~= nil then + resource_entity.destroy({ raise_destroy = false }) + end +end + +function sea_pump:on_blueprint_setup(player_index) + -- obtain the blueprint from the player + local player = game.get_player(player_index) + if not player then + return + end + + local blueprint = player.blueprint_to_setup + if not blueprint or not blueprint.valid_for_read then + blueprint = player.cursor_stack + if not blueprint or not blueprint.valid_for_read then + return + end + end + + while blueprint.type == "blueprint-book" do + local blueprint_inventory = blueprint.get_inventory(defines.inventory.item_main) + if blueprint_inventory then + blueprint = blueprint_inventory[blueprint.active_index] + else + return + end + end + + -- obtain all blueprint entitites + local entities = blueprint.get_blueprint_entities() + if entities == nil then + return + end + + -- replace the sea pump (miner) with sea pump (placeable) + local pump_mining_name = self:get_pump_name() + local pump_place_name = self:get_placeable_name() + local entities_replaced = false + for index, entity in pairs(entities) do + if entity.name == pump_mining_name then + entities[index].name = pump_place_name + entities_replaced = true + end + end + if entities_replaced then + blueprint.set_blueprint_entities(entities) + end +end + +-- Return class --------------------------------------------------------------- +return sea_pump diff --git a/angelssmelting/changelog.txt b/angelssmelting/changelog.txt index f253fac12..6a834d31c 100644 --- a/angelssmelting/changelog.txt +++ b/angelssmelting/changelog.txt @@ -1,4 +1,15 @@ --------------------------------------------------------------------------------------------------- +Version: 0.6.22 +Date: 22.12.2023 + Changes: + - Increased the tech and required machine tier of Chrome and Platinum (909) + - Allow Fibreglass boards to be made in Bob's Electronics assembling machines (921) + - Enabled productivity modules for Glass, Glass fiber, and Fibreglass recipes (929) + - Added water to recipe Glass fiber casting 1. Added new recipe Glass fiber casting 2 (939) + Bugfixes: + - Another attempt at fixed smoke on the blast furnace + - Fixed names and descriptions of Bronze processing and Brass processing techs from Bob's MCI mod (926) +--------------------------------------------------------------------------------------------------- Version: 0.6.21 Date: 23.02.2023 Changes: diff --git a/angelssmelting/data.lua b/angelssmelting/data.lua index 6d7b46668..26b53d537 100644 --- a/angelssmelting/data.lua +++ b/angelssmelting/data.lua @@ -26,7 +26,7 @@ angelsmods.trigger.smelting_products["gunmetal"] = angelsmods.trigger.smelting_p angelsmods.trigger.smelting_products["invar"] = angelsmods.trigger.smelting_products["invar"] or {} angelsmods.trigger.smelting_products["nitinol"] = angelsmods.trigger.smelting_products["nitinol"] or {} angelsmods.trigger.smelting_products["solder"] = angelsmods.trigger.smelting_products["solder"] or {} -angelsmods.trigger.smelting_products["steel"] = angelsmods.trigger.smelting_products["copper"] or {} +angelsmods.trigger.smelting_products["steel"] = angelsmods.trigger.smelting_products["steel"] or {} angelsmods.trigger.smelting_products["aluminium"] = angelsmods.trigger.smelting_products["aluminium"] or {} angelsmods.trigger.smelting_products["chrome"] = angelsmods.trigger.smelting_products["chrome"] or {} angelsmods.trigger.smelting_products["cobalt"] = angelsmods.trigger.smelting_products["cobalt"] or {} @@ -75,7 +75,10 @@ angelsmods.trigger.smelting_products["copper"].wire = true --glass angelsmods.trigger.smelting_products["glass"].plate = mods["bobplates"] and true or false angelsmods.trigger.smelting_products["glass"].fibre = false -angelsmods.trigger.smelting_products["glass"].board = mods["bobplates"] and mods["bobelectronics"] and true or false +angelsmods.trigger.smelting_products["glass"].board = not angelsmods.functions.is_special_vanilla() + and mods["bobelectronics"] + and true + or false --gold angelsmods.trigger.smelting_products["gold"].plate = mods["bobplates"] and true or false angelsmods.trigger.smelting_products["gold"].wire = angelsmods.trigger.smelting_products["gold"].plate diff --git a/angelssmelting/info.json b/angelssmelting/info.json index 2c052bc6e..3443f165d 100644 --- a/angelssmelting/info.json +++ b/angelssmelting/info.json @@ -1,6 +1,6 @@ { "name": "angelssmelting", - "version": "0.6.21", + "version": "0.6.22", "factorio_version": "1.1", "title": "Angel's Smelting", "author": "Arch666Angel", @@ -9,7 +9,7 @@ "description": "Angel's Smelting provides alternative ways to produce plate and increase ore yield at the expense of space and energy.", "dependencies": [ "angelsrefining >= 0.12.1", - "angelspetrochem >= 0.9.20", + "angelspetrochem >= 0.9.25", "? bobplates >= 1.1.6" ] } diff --git a/angelssmelting/locale/en/smelting.cfg b/angelssmelting/locale/en/smelting.cfg index c4faa8dc8..a498e71d7 100644 --- a/angelssmelting/locale/en/smelting.cfg +++ b/angelssmelting/locale/en/smelting.cfg @@ -200,6 +200,7 @@ ingot-copper=Copper ingot powder-copper=Copper powder angels-plate-copper=Copper plate angels-wire-copper=Copper wire +copper-cable=Copper wire angels-wire-coil-copper=Copper wire coil angels-roll-copper=Copper sheet coil @@ -218,6 +219,7 @@ angels-plate-gold=Gold plate angels-roll-gold=Gold sheet coil angels-wire-gold=Gold wire angels-wire-coil-gold=Gold wire coil +gilded-copper-cable=__ITEM__angels-wire-gold__ processed-iron=Processed iron pellet-iron=Iron pellet @@ -465,6 +467,9 @@ electric-mixing-furnace=Electric filtering furnace 1 angels-multi-purpose-furnace-1=Electric filtering furnace 2 angels-multi-purpose-furnace-2=Electric filtering furnace 3 +alloy-processing=Bronze processing +zinc-processing=Brass processing + [technology-description] angels-metallurgy=Machines for advanced metallurgical smelting. @@ -554,6 +559,8 @@ angels-invar-smelting=Advanced processing steps for the production of invar. angels-cobalt-steel-smelting=Advanced processing steps for the production of cobalt steel. angels-nitinol-smelting=Advanced processing steps for the production of nitinol. +alloy-processing= + [tile-name] clay-bricks=Clay path concrete-brick=Concrete slab (grid) diff --git a/angelssmelting/prototypes/buildings/blast-furnace.lua b/angelssmelting/prototypes/buildings/blast-furnace.lua index e442fd089..96cd157f5 100644 --- a/angelssmelting/prototypes/buildings/blast-furnace.lua +++ b/angelssmelting/prototypes/buildings/blast-furnace.lua @@ -52,7 +52,10 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { 2.0, -1.8 }, + north_position = { -2.0, -1.8 }, + south_position = { -2.0, -1.8 }, + east_position = { -2.0, -1.8 }, + west_position = { -2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, @@ -259,7 +262,10 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { 2.0, -1.8 }, + north_position = { -2.0, -1.8 }, + south_position = { -2.0, -1.8 }, + east_position = { -2.0, -1.8 }, + west_position = { -2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, @@ -466,7 +472,10 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { 2.0, -1.8 }, + north_position = { -2.0, -1.8 }, + south_position = { -2.0, -1.8 }, + east_position = { -2.0, -1.8 }, + west_position = { -2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, @@ -672,7 +681,10 @@ data:extend({ name = "smoke", deviation = { 0.1, 0.1 }, frequency = 10, - position = { 2.0, -1.8 }, + north_position = { -2.0, -1.8 }, + south_position = { -2.0, -1.8 }, + east_position = { -2.0, -1.8 }, + west_position = { -2.0, -1.8 }, starting_vertical_speed = 0.08, starting_frame_deviation = 60, }, diff --git a/angelssmelting/prototypes/override/smelting-override-alloy-bronze.lua b/angelssmelting/prototypes/override/smelting-override-alloy-bronze.lua index 6fcd7417d..a01446719 100644 --- a/angelssmelting/prototypes/override/smelting-override-alloy-bronze.lua +++ b/angelssmelting/prototypes/override/smelting-override-alloy-bronze.lua @@ -200,7 +200,6 @@ if angelsmods.trigger.smelting_products["bronze"].plate then order = "c-a", }, }) - OV.add_prereq("alloy-processing-1", "angels-bronze-smelting-1") angelsmods.functions.move_item("bronze-alloy", "angels-alloys-casting", "a[bronze]-b[bronze-alloy]") data.raw["item"]["bronze-alloy"].icon = "__angelssmelting__/graphics/icons/plate-bronze.png" data.raw["item"]["bronze-alloy"].icon_size = 32 @@ -209,7 +208,16 @@ if angelsmods.trigger.smelting_products["bronze"].plate then angelsmods.functions.allow_productivity("angels-plate-bronze") -- alloys shenanigans ------------------------------------------------------- OV.add_prereq("alloy-processing", "angels-bronze-smelting-1") + OV.add_prereq("logistics-2", "angels-bronze-smelting-1") + OV.remove_prereq("chemical-science-pack", "alloy-processing") + OV.remove_prereq("cobalt-processing", "alloy-processing") + OV.remove_prereq("logistics-2", "alloy-processing") + OV.remove_prereq("nitinol-processing", "alloy-processing") + OV.remove_prereq("tungsten-processing", "alloy-processing") + OV.remove_prereq("tungsten-alloy-processing", "alloy-processing") + OV.remove_prereq("zinc-processing", "alloy-processing") if mods["bobpower"] then + OV.remove_prereq("fluid-generator-1", "alloy-processing") OV.add_prereq("fluid-generator-1", "angels-bronze-smelting-1") end end diff --git a/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua b/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua index df3e0f89c..fe1693fd8 100644 --- a/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua +++ b/angelssmelting/prototypes/override/smelting-override-alloy-solder.lua @@ -34,7 +34,9 @@ if angelsmods.trigger.smelting_products["solder"].wire then else OV.add_prereq("electronics", "angels-solder-smelting-1") end + end + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then OV.patch_recipes({ { name = "angels-roll-solder-converting", category = "electronics-machine" } }) end diff --git a/angelssmelting/prototypes/override/smelting-override-copper.lua b/angelssmelting/prototypes/override/smelting-override-copper.lua index e1d5acd14..2f2d41f1a 100644 --- a/angelssmelting/prototypes/override/smelting-override-copper.lua +++ b/angelssmelting/prototypes/override/smelting-override-copper.lua @@ -172,7 +172,7 @@ if angelsmods.trigger.smelting_products["copper"].wire then "__angelssmelting__/graphics/icons/wire-copper.png" ) - if mods["bobassembly"] and mods["bobelectronics"] then + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then OV.patch_recipes({ { name = "copper-cable", diff --git a/angelssmelting/prototypes/override/smelting-override-glass.lua b/angelssmelting/prototypes/override/smelting-override-glass.lua index b9845bca2..e774d6c92 100644 --- a/angelssmelting/prototypes/override/smelting-override-glass.lua +++ b/angelssmelting/prototypes/override/smelting-override-glass.lua @@ -94,23 +94,10 @@ end -- FIBREGLASS ----------------------------------------------------------------- ------------------------------------------------------------------------------- if angelsmods.trigger.smelting_products["glass"].fibre then - if mods["bobelectronics"] then - else - --[[OV.patch_recipes( - { - { - name = "angels-glass-fiber-board", - results = { - {"!!"}, - {name = "angels-glass-fiber-board", type = "item", amount = 4} - }, - } - } - )]] - end else angelsmods.functions.add_flag("angels-coil-glass-fiber", "hidden") OV.disable_recipe({ "angels-coil-glass-fiber" }) + OV.disable_recipe({ "angels-coil-glass-fiber-fast" }) end ------------------------------------------------------------------------------- @@ -140,6 +127,8 @@ if angelsmods.trigger.smelting_products["glass"].board then }, }, icon_size = 32, + subgroup = "bob-boards", + order = "c-a3[fibreglass-board]", }, }) OV.add_unlock("angels-glass-smelting-2", "angels-glass-fiber-board") @@ -150,6 +139,15 @@ if angelsmods.trigger.smelting_products["glass"].board then OV.remove_unlock("advanced-electronics-2", "fibreglass-board") OV.disable_recipe({ "fibreglass-board" }) end + + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then + OV.patch_recipes({ + { + name = "angels-glass-fiber-board", + category = "electronics-with-fluid", + }, + }) + end else OV.disable_recipe({ "angels-glass-fiber-board" }) end diff --git a/angelssmelting/prototypes/override/smelting-override-gold.lua b/angelssmelting/prototypes/override/smelting-override-gold.lua index 5d764933c..6f78fb1db 100644 --- a/angelssmelting/prototypes/override/smelting-override-gold.lua +++ b/angelssmelting/prototypes/override/smelting-override-gold.lua @@ -100,7 +100,7 @@ if angelsmods.trigger.smelting_products["gold"].wire then { type = "item", name = angelsmods.trigger.smelting_products["platinum"].wire and "gilded-copper-cable" or "insulated-cable", - amount = "tinned-copper-cable" or 2, + amount = "tinned-copper-cable", }, }, }, @@ -117,7 +117,7 @@ if angelsmods.trigger.smelting_products["gold"].wire then OV.add_prereq("advanced-electronics-2", "angels-gold-smelting-1") end - if mods["bobassembly"] and mods["bobelectronics"] then + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then OV.patch_recipes({ { name = "angels-wire-gold", diff --git a/angelssmelting/prototypes/override/smelting-override-platinum.lua b/angelssmelting/prototypes/override/smelting-override-platinum.lua index d607f614b..aee53fa63 100644 --- a/angelssmelting/prototypes/override/smelting-override-platinum.lua +++ b/angelssmelting/prototypes/override/smelting-override-platinum.lua @@ -76,7 +76,7 @@ if angelsmods.trigger.smelting_products["platinum"].wire then }, }, }) - if mods["bobassembly"] and mods["bobelectronics"] then + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then OV.patch_recipes({ { name = "basic-platinated-copper-wire", diff --git a/angelssmelting/prototypes/override/smelting-override-productivity.lua b/angelssmelting/prototypes/override/smelting-override-productivity.lua index 2d2408f37..05b788963 100644 --- a/angelssmelting/prototypes/override/smelting-override-productivity.lua +++ b/angelssmelting/prototypes/override/smelting-override-productivity.lua @@ -41,6 +41,11 @@ angelsmods.functions.allow_productivity("angels-roll-platinum-converting") angelsmods.functions.allow_productivity("angels-mono-silicon-1") angelsmods.functions.allow_productivity("angels-mono-silicon-2") +angelsmods.functions.allow_productivity("angels-plate-glass-1") +angelsmods.functions.allow_productivity("angels-plate-glass-2") +angelsmods.functions.allow_productivity("angels-plate-glass-3") +angelsmods.functions.allow_productivity("angels-coil-glass-fiber") +angelsmods.functions.allow_productivity("angels-coil-glass-fiber-fast") angelsmods.functions.allow_productivity("angels-plate-silver") angelsmods.functions.allow_productivity("angels-wire-coil-silver-converting") diff --git a/angelssmelting/prototypes/override/smelting-override-silver.lua b/angelssmelting/prototypes/override/smelting-override-silver.lua index b9fa99592..8b3ca74a6 100644 --- a/angelssmelting/prototypes/override/smelting-override-silver.lua +++ b/angelssmelting/prototypes/override/smelting-override-silver.lua @@ -167,7 +167,7 @@ if angelsmods.trigger.smelting_products["silver"].wire then end OV.add_prereq("advanced-electronics", "angels-silver-smelting-1") - if mods["bobassembly"] and mods["bobelectronics"] then + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then OV.patch_recipes({ { name = "basic-silvered-copper-wire", diff --git a/angelssmelting/prototypes/override/smelting-override-tin.lua b/angelssmelting/prototypes/override/smelting-override-tin.lua index 42b40370f..2d31a9cea 100644 --- a/angelssmelting/prototypes/override/smelting-override-tin.lua +++ b/angelssmelting/prototypes/override/smelting-override-tin.lua @@ -153,19 +153,19 @@ if angelsmods.trigger.smelting_products["tin"].wire then "__bobelectronics__/graphics/icons/tinned-copper-cable.png", "__angelssmelting__/graphics/icons/wire-tin.png" ) + end - if mods["bobassembly"] then - OV.patch_recipes({ - { - name = "basic-tinned-copper-wire", - category = "electronics", - }, - { - name = "angels-wire-coil-tin-converting", - category = "electronics-machine", - }, - }) - end + if mods["bobassembly"] and settings.startup["bobmods-assembly-electronicmachines"].value then + OV.patch_recipes({ + { + name = "basic-tinned-copper-wire", + category = "electronics", + }, + { + name = "angels-wire-coil-tin-converting", + category = "electronics-machine", + }, + }) end else angelsmods.functions.add_flag("angels-wire-tin", "hidden") diff --git a/angelssmelting/prototypes/recipes/smelting-chrome.lua b/angelssmelting/prototypes/recipes/smelting-chrome.lua index 9eda7b92f..25abfceac 100644 --- a/angelssmelting/prototypes/recipes/smelting-chrome.lua +++ b/angelssmelting/prototypes/recipes/smelting-chrome.lua @@ -7,7 +7,7 @@ data:extend({ { type = "recipe", name = "chrome-ore-processing", - category = "ore-processing-3", + category = "ore-processing-4", subgroup = "angels-chrome", energy_required = 2, enabled = false, @@ -23,7 +23,7 @@ data:extend({ { type = "recipe", name = "chrome-processed-processing", - category = "pellet-pressing-3", + category = "pellet-pressing-4", subgroup = "angels-chrome", energy_required = 2, enabled = false, @@ -100,7 +100,7 @@ data:extend({ { type = "recipe", name = "chrome-ore-smelting", - category = "chemical-smelting-2", + category = "chemical-smelting-3", subgroup = "angels-chrome", energy_required = 4, enabled = false, @@ -173,7 +173,7 @@ data:extend({ { type = "recipe", name = "molten-chrome-smelting", - category = "induction-smelting-3", + category = "induction-smelting-4", subgroup = "angels-chrome-casting", energy_required = 4, enabled = false, @@ -189,7 +189,7 @@ data:extend({ { type = "recipe", name = "roll-chrome-casting", - category = "strand-casting-3", + category = "strand-casting-4", subgroup = "angels-chrome-casting", normal = { enabled = false, @@ -256,7 +256,7 @@ data:extend({ { type = "recipe", name = "angels-plate-chrome", - category = "casting-3", + category = "casting-4", subgroup = "angels-chrome-casting", normal = { enabled = false, diff --git a/angelssmelting/prototypes/recipes/smelting-glass.lua b/angelssmelting/prototypes/recipes/smelting-glass.lua index 60c4c0a94..0faff8828 100644 --- a/angelssmelting/prototypes/recipes/smelting-glass.lua +++ b/angelssmelting/prototypes/recipes/smelting-glass.lua @@ -117,6 +117,7 @@ data:extend({ energy_required = 4, ingredients = { { type = "fluid", name = "liquid-molten-glass", amount = 80 }, + { type = "fluid", name = "water", amount = 40 }, }, results = { { type = "item", name = "angels-coil-glass-fiber", amount = 4 }, @@ -127,12 +128,57 @@ data:extend({ energy_required = 4, ingredients = { { type = "fluid", name = "liquid-molten-glass", amount = 100 * intermediatemulti }, + { type = "fluid", name = "water", amount = 40 }, }, results = { { type = "item", name = "angels-coil-glass-fiber", amount = 4 }, }, }, - order = "c[angels-coil-glass-fiber]", + icons = angelsmods.functions.add_number_icon_layer( + angelsmods.functions.get_object_icons("angels-coil-glass-fiber"), + 1, + angelsmods.smelting.number_tint + ), + order = "c[angels-coil-glass-fiber]-a", + crafting_machine_tint = angelsmods.functions.get_fluid_recipe_tint("liquid-molten-glass"), + }, + { + type = "recipe", + name = "angels-coil-glass-fiber-fast", + category = "strand-casting-3", + subgroup = "angels-glass-casting", + normal = { + enabled = false, + energy_required = 2, + ingredients = { + { type = "fluid", name = "liquid-molten-glass", amount = 140 }, + { type = "fluid", name = "liquid-coolant", amount = 40 }, + }, + results = { + { type = "item", name = "angels-coil-glass-fiber", amount = 8 }, + { type = "fluid", name = "liquid-coolant-used", amount = 40, catalyst_amount = 40, temperature = 300 }, + }, + main_product = "angels-coil-glass-fiber", + }, + expensive = { + enabled = false, + energy_required = 2, + ingredients = { + { type = "fluid", name = "liquid-molten-glass", amount = 180 * intermediatemulti }, + { type = "fluid", name = "liquid-coolant", amount = 40 }, + }, + results = { + { type = "item", name = "angels-coil-glass-fiber", amount = 8 }, + { type = "fluid", name = "liquid-coolant-used", amount = 40, catalyst_amount = 40, temperature = 300 }, + }, + main_product = "angels-coil-glass-fiber", + }, + icons = angelsmods.functions.add_number_icon_layer( + angelsmods.functions.get_object_icons("angels-coil-glass-fiber"), + 2, + angelsmods.smelting.number_tint + ), + order = "c[angels-coil-glass-fiber]-b", crafting_machine_tint = angelsmods.functions.get_fluid_recipe_tint("liquid-molten-glass"), }, -- CASTING RESULT @@ -178,11 +224,11 @@ data:extend({ energy_required = 3, ingredients = { { type = "fluid", name = "liquid-molten-glass", amount = 40 }, - { type = "fluid", name = "liquid-molten-lead", amount = 20 }, + { type = "fluid", name = "liquid-molten-lead", amount = 20, catalyst_amount = 20 }, }, results = { { type = "item", name = "angels-plate-glass", amount = 4 }, - { type = "item", name = "solid-lead-oxide", amount = 2 }, + { type = "item", name = "solid-lead-oxide", amount = 2, catalyst_amount = 2 }, }, main_product = "angels-plate-glass", }, @@ -191,11 +237,11 @@ data:extend({ energy_required = 3, ingredients = { { type = "fluid", name = "liquid-molten-glass", amount = 50 * intermediatemulti }, - { type = "fluid", name = "liquid-molten-lead", amount = 20 }, + { type = "fluid", name = "liquid-molten-lead", amount = 20, catalyst_amount = 20 }, }, results = { { type = "item", name = "angels-plate-glass", amount = 4 }, - { type = "item", name = "solid-lead-oxide", amount = 2 }, + { type = "item", name = "solid-lead-oxide", amount = 2, catalyst_amount = 2 }, }, main_product = "angels-plate-glass", }, @@ -216,12 +262,12 @@ data:extend({ energy_required = 2, ingredients = { { type = "fluid", name = "liquid-molten-glass", amount = 40 }, - { type = "fluid", name = "liquid-molten-tin", amount = 20 }, + { type = "fluid", name = "liquid-molten-tin", amount = 20, catalyst_amount = 20 }, { type = "fluid", name = "gas-nitrogen", amount = 20 }, }, results = { { type = "item", name = "angels-plate-glass", amount = 5 }, - { type = "item", name = "ingot-tin", amount = 2 }, + { type = "item", name = "ingot-tin", amount = 2, catalyst_amount = 2 }, }, main_product = "angels-plate-glass", }, @@ -230,12 +276,12 @@ data:extend({ energy_required = 2, ingredients = { { type = "fluid", name = "liquid-molten-glass", amount = 50 * intermediatemulti }, - { type = "fluid", name = "liquid-molten-tin", amount = 20 }, + { type = "fluid", name = "liquid-molten-tin", amount = 20, catalyst_amount = 20 }, { type = "fluid", name = "gas-nitrogen", amount = 20 }, }, results = { { type = "item", name = "angels-plate-glass", amount = 5 }, - { type = "item", name = "ingot-tin", amount = 2 }, + { type = "item", name = "ingot-tin", amount = 2, catalyst_amount = 2 }, }, main_product = "angels-plate-glass", }, diff --git a/angelssmelting/prototypes/recipes/smelting-platinum.lua b/angelssmelting/prototypes/recipes/smelting-platinum.lua index 4530f7582..0d232a895 100644 --- a/angelssmelting/prototypes/recipes/smelting-platinum.lua +++ b/angelssmelting/prototypes/recipes/smelting-platinum.lua @@ -7,7 +7,7 @@ data:extend({ { type = "recipe", name = "platinum-ore-processing", - category = "ore-processing-3", + category = "ore-processing-4", subgroup = "angels-platinum", energy_required = 2, enabled = false, @@ -23,7 +23,7 @@ data:extend({ { type = "recipe", name = "platinum-processed-processing", - category = "pellet-pressing-3", + category = "pellet-pressing-4", subgroup = "angels-platinum", energy_required = 2, enabled = false, @@ -76,7 +76,7 @@ data:extend({ { type = "recipe", name = "platinum-ore-smelting", - category = "blast-smelting-3", + category = "blast-smelting-4", subgroup = "angels-platinum", energy_required = 4, enabled = false, @@ -141,7 +141,7 @@ data:extend({ { type = "recipe", name = "molten-platinum-smelting", - category = "induction-smelting-3", + category = "induction-smelting-4", subgroup = "angels-platinum-casting", energy_required = 4, enabled = false, @@ -157,7 +157,7 @@ data:extend({ { type = "recipe", name = "roll-platinum-casting", - category = "strand-casting-3", + category = "strand-casting-4", subgroup = "angels-platinum-casting", normal = { enabled = false, @@ -223,7 +223,7 @@ data:extend({ { type = "recipe", name = "angels-wire-coil-platinum-casting", - category = "strand-casting-3", + category = "strand-casting-4", subgroup = "angels-platinum-casting", normal = { enabled = false, @@ -302,7 +302,7 @@ data:extend({ { type = "recipe", name = "angels-plate-platinum", - category = "casting-3", + category = "casting-4", subgroup = "angels-platinum-casting", normal = { enabled = false, diff --git a/angelssmelting/prototypes/recipes/smelting-titanium.lua b/angelssmelting/prototypes/recipes/smelting-titanium.lua index 061daa6ec..4ca8c2c0b 100644 --- a/angelssmelting/prototypes/recipes/smelting-titanium.lua +++ b/angelssmelting/prototypes/recipes/smelting-titanium.lua @@ -1,7 +1,7 @@ local intermediatemulti = angelsmods.marathon.intermediatemulti data:extend({ - --CHROME + --TITANIUM -- SMELTING INTERMEDIATE { type = "recipe", diff --git a/angelssmelting/prototypes/recipes/smelting-tungsten.lua b/angelssmelting/prototypes/recipes/smelting-tungsten.lua index e8b5b96fb..c8e0d8803 100644 --- a/angelssmelting/prototypes/recipes/smelting-tungsten.lua +++ b/angelssmelting/prototypes/recipes/smelting-tungsten.lua @@ -1,7 +1,7 @@ local intermediatemulti = angelsmods.marathon.intermediatemulti data:extend({ - --CHROME + --TUNGSTEN -- SMELTING INTERMEDIATE { type = "recipe", diff --git a/angelssmelting/prototypes/technology/smelting-aluminium.lua b/angelssmelting/prototypes/technology/smelting-aluminium.lua index 84cb9466a..76dcdaeda 100644 --- a/angelssmelting/prototypes/technology/smelting-aluminium.lua +++ b/angelssmelting/prototypes/technology/smelting-aluminium.lua @@ -130,7 +130,7 @@ data:extend({ --"angels-metallurgy-4", "ore-processing-3", "angels-aluminium-smelting-2", - "sodium-processing", + "sodium-processing-2", }, effects = { { diff --git a/angelssmelting/prototypes/technology/smelting-chrome.lua b/angelssmelting/prototypes/technology/smelting-chrome.lua index 4f9e21085..3c68c626c 100644 --- a/angelssmelting/prototypes/technology/smelting-chrome.lua +++ b/angelssmelting/prototypes/technology/smelting-chrome.lua @@ -9,8 +9,8 @@ data:extend({ icon_mipmaps = 4, prerequisites = { "ore-electro-whinning-cell", - "angels-metallurgy-3", - "angels-coal-processing-2", + "angels-metallurgy-4", + "angels-coal-processing-3", }, effects = { { @@ -27,11 +27,12 @@ data:extend({ }, }, unit = { - count = 200, + count = 250, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, + { type = "item", name = "production-science-pack", amount = 1 }, }, time = 30, }, @@ -44,8 +45,8 @@ data:extend({ icon_size = 256, icon_mipmaps = 4, prerequisites = { - --"angels-metallurgy-4", - "ore-processing-3", + --"angels-metallurgy-5", + "ore-processing-4", "angels-chrome-smelting-1", }, effects = { @@ -63,12 +64,13 @@ data:extend({ }, }, unit = { - count = 250, + count = 300, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, { type = "item", name = "production-science-pack", amount = 1 }, + { type = "item", name = "utility-science-pack", amount = 1 }, }, time = 30, }, @@ -81,8 +83,8 @@ data:extend({ icon_size = 256, icon_mipmaps = 4, prerequisites = { - --"angels-metallurgy-4", - "strand-casting-3", + --"angels-metallurgy-5", + "strand-casting-4", "angels-chrome-smelting-1", }, effects = { @@ -96,12 +98,13 @@ data:extend({ }, }, unit = { - count = 250, + count = 300, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, { type = "item", name = "production-science-pack", amount = 1 }, + { type = "item", name = "utility-science-pack", amount = 1 }, }, time = 30, }, @@ -115,10 +118,9 @@ data:extend({ icon_mipmaps = 4, prerequisites = { --"angels-metallurgy-5", - "ore-processing-4", + "ore-processing-5", "angels-chrome-smelting-2", - --"angels-sulfur-processing-1", -- it seems rediculous adding this prerequisite to yellow... - "sodium-processing", + "sodium-processing-2", }, effects = { { @@ -143,7 +145,7 @@ data:extend({ }, }, unit = { - count = 300, + count = 350, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, @@ -163,7 +165,7 @@ data:extend({ icon_mipmaps = 4, prerequisites = { --"angels-metallurgy-5", - "strand-casting-4", + --"strand-casting-4", "angels-chrome-casting-2", }, effects = { @@ -173,7 +175,7 @@ data:extend({ }, }, unit = { - count = 300, + count = 350, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, diff --git a/angelssmelting/prototypes/technology/smelting-glass.lua b/angelssmelting/prototypes/technology/smelting-glass.lua index 4c4fad24c..6868887c5 100644 --- a/angelssmelting/prototypes/technology/smelting-glass.lua +++ b/angelssmelting/prototypes/technology/smelting-glass.lua @@ -81,11 +81,11 @@ data:extend({ prerequisites = { --"angels-metallurgy-4", "powder-metallurgy-4", - --[["strand-casting-1",]] + "strand-casting-3", "angels-glass-smelting-2", "angels-aluminium-smelting-2", "angels-tin-casting-3", - "sodium-processing", + "sodium-processing-2", --"angels-nitrogen-processing-1" }, effects = { @@ -101,10 +101,10 @@ data:extend({ type = "unlock-recipe", recipe = "angels-plate-glass-3", }, - --[[{ + { type = "unlock-recipe", - recipe = "angels-coil-glass-fiber" - },]] + recipe = "angels-coil-glass-fiber-fast", + }, }, unit = { count = 250, diff --git a/angelssmelting/prototypes/technology/smelting-gold.lua b/angelssmelting/prototypes/technology/smelting-gold.lua index 62a423f95..eabfb54fd 100644 --- a/angelssmelting/prototypes/technology/smelting-gold.lua +++ b/angelssmelting/prototypes/technology/smelting-gold.lua @@ -139,7 +139,7 @@ data:extend({ --"angels-metallurgy-5", "ore-processing-4", "angels-gold-smelting-2", - "sodium-processing", + "sodium-processing-2", }, effects = { { diff --git a/angelssmelting/prototypes/technology/smelting-platinum.lua b/angelssmelting/prototypes/technology/smelting-platinum.lua index 5414d4638..75d0c185b 100644 --- a/angelssmelting/prototypes/technology/smelting-platinum.lua +++ b/angelssmelting/prototypes/technology/smelting-platinum.lua @@ -9,7 +9,7 @@ data:extend({ icon_mipmaps = 4, prerequisites = { "ore-electro-whinning-cell", - "angels-metallurgy-3", + "angels-metallurgy-4", }, effects = { { @@ -30,11 +30,12 @@ data:extend({ }, }, unit = { - count = 200, + count = 250, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, + { type = "item", name = "production-science-pack", amount = 1 }, }, time = 30, }, @@ -47,8 +48,8 @@ data:extend({ icon_size = 256, icon_mipmaps = 4, prerequisites = { - --"angels-metallurgy-4", - "ore-processing-3", + --"angels-metallurgy-5", + "ore-processing-4", "angels-platinum-smelting-1", "angels-sulfur-processing-1", }, @@ -67,12 +68,13 @@ data:extend({ }, }, unit = { - count = 250, + count = 300, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, { type = "item", name = "production-science-pack", amount = 1 }, + { type = "item", name = "utility-science-pack", amount = 1 }, }, time = 30, }, @@ -85,8 +87,8 @@ data:extend({ icon_size = 256, icon_mipmaps = 4, prerequisites = { - --"angels-metallurgy-4", - "strand-casting-3", + --"angels-metallurgy-5", + "strand-casting-4", "angels-platinum-smelting-1", "angels-copper-casting-3", }, @@ -109,12 +111,13 @@ data:extend({ }, }, unit = { - count = 250, + count = 300, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, { type = "item", name = "chemical-science-pack", amount = 1 }, { type = "item", name = "production-science-pack", amount = 1 }, + { type = "item", name = "utility-science-pack", amount = 1 }, }, time = 30, }, @@ -128,10 +131,9 @@ data:extend({ icon_mipmaps = 4, prerequisites = { --"angels-metallurgy-5", - "ore-processing-4", + "ore-processing-5", "angels-platinum-smelting-2", - "chlorine-processing-1", -- it seems rediculous adding this prerequisite to yellow... - "angels-nitrogen-processing-2", -- it seems rediculous adding this prerequisite to yellow... + "angels-nitrogen-processing-4", }, effects = { { @@ -152,7 +154,7 @@ data:extend({ }, }, unit = { - count = 300, + count = 350, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, @@ -172,7 +174,7 @@ data:extend({ icon_mipmaps = 4, prerequisites = { --"angels-metallurgy-5", - "strand-casting-4", + --"strand-casting-4", "angels-platinum-casting-2", }, effects = { @@ -186,7 +188,7 @@ data:extend({ }, }, unit = { - count = 300, + count = 350, ingredients = { { type = "item", name = "automation-science-pack", amount = 1 }, { type = "item", name = "logistic-science-pack", amount = 1 }, diff --git a/angelssmelting/prototypes/technology/smelting-silver.lua b/angelssmelting/prototypes/technology/smelting-silver.lua index 3273a5799..c99475fee 100644 --- a/angelssmelting/prototypes/technology/smelting-silver.lua +++ b/angelssmelting/prototypes/technology/smelting-silver.lua @@ -131,7 +131,7 @@ data:extend({ --"angels-metallurgy-4", "ore-processing-3", "angels-silver-smelting-2", - "sodium-processing", + "sodium-processing-2", }, effects = { { diff --git a/angelssmelting/prototypes/technology/smelting-titanium.lua b/angelssmelting/prototypes/technology/smelting-titanium.lua index f86be4acc..464b69927 100644 --- a/angelssmelting/prototypes/technology/smelting-titanium.lua +++ b/angelssmelting/prototypes/technology/smelting-titanium.lua @@ -173,7 +173,7 @@ data:extend({ "angels-titanium-casting-2", "angels-tin-smelting-3", "angels-aluminium-smelting-3", - "angels-chrome-smelting-2", + "angels-chrome-smelting-1", "angels-cobalt-smelting-2", }, effects = {