mods icon indicating copy to clipboard operation
mods copied to clipboard

Special Vanilla Contemplations, Part 1

Open adoa opened this issue 3 years ago • 14 comments

these observations are on the current dev branch, commit 38675ef0c

Unused items & fluids

  • [ ] paper
  • [ ] ferric chloride solution, cupric chloride solution
  • [x] resin & liquid resin
  • [x] liquid rubber
  • [ ] solid-lithium
  • [ ] crystal-full-red, -blue, -harmonic
  • [ ] all the crystals from Bioprocessing are mostly useless: they are only used in sawblades & bio modules, this makes half the mod feel useless

Crafting machines with no compatible recipes

  • [ ] Sintering oven

Library issues

  • [x] Angel's mods appear to add dependency on science pack techs to pure upgrade technologies. In vanilla, all the pure upgrade techs that don't unlock any recipe nor new bonuses also do not have explicit dependencies on science packs. It feels not intended that this should change by activating angel's mods. Affected techs:
    • weapon-shooting-speed-2 through -6
    • physical-projectile-damage-2 through -6
    • research-speed-2 through -6
    • stronger-explosives-2 through -6
    • mining-productivity-2 & -3
    • inserter-capacity-bonus-3 & -4

Technology issues at Automation Science tier

  • [x] Tech: bio-wood-processing
    Requires: automation science packs
    Depends on: none
    Building unlocks: none
    Recipe unlocks: bio-resin-wood-processing
    Action: resin has no use

  • [ ] Tech: angels-sulfur-processing-1
    Requires: automation science packs
    Depends on: basic-chemistry-2
    Building unlocks: none
    Recipe unlocks: liquid-sulfuric-acid
    Action: At this point in the game, the only unlocked recipe is not craftable. There is no source for sulfur dioxide gase yet. I recommend moving this recipe to the logistic science tech angels-sulfur-processing-2, removing this tech, and re-numbering. Note: with industry overhaul, this tech depends on lead processing, which is the earliest possible source for sulfur dioxide.

  • [ ] Tech: bio-paper-1
    Requires: automation & logistic science packs
    Depends on: bio-processing-brown
    Building unlocks: none
    Recipe unlocks: solid-wood-pulp, paper-bleaching-1
    Action: paper has no use, but pulp is required for other stuff later on

Logistic Science tier

  • [ ] Tech: advanced-ore-refining-1
    Requires: automation & logistic science packs
    Depends on: slag-processing-1, ore-crushing
    Building unlocks: 2 buildings
    Recipe unlocks: angelsore-crushed-mix1-processing, angelsore-crushed-mix3-processing
    Action: Recipe icon angelsore-crushed-mix3-processing is wrong, it does not show copper as result, neither does it show the nugget ingredient as -mix1-processing recipe does.

  • [ ] Tech: advanced-ore-refining-2
    Requires: automation & logistic science packs
    Depends on: geode-processing-2, advanced-ore-refining-1
    Building unlocks: 3 buildings
    Recipe unlocks: angelsore-chunk-mix1-processing, angelsore-chunk-mix2-processing
    Action: Recipe icons for both recipes is wrong, it does not show correct ore as result, neither does it show the slag ingredient as crushed-mix1-processing recipe does.

  • [ ] Tech: chlorine-processing-1
    Requires: automation & logistic science packs
    Depends on: gas-processing, ore-crushing
    Building unlocks: none
    Recipe unlocks: 3 recipes + liquid-ferric-chloride-solution, liquid-cupric-chloride-solution
    Action: ferric & cupric chloride solutions have no use, recipes should be removed.

  • [ ] Tech: chlorine-processing-2
    Requires: automation & logistic science packs
    Depends on: gas-steam-cracking, chlorine-processing-1
    Building unlocks: none
    Recipe unlocks: liquid-glycerol
    Action: Recipe is not craftable because epichlorhydrin ingredient is not craftable. Furthermore, glycerol liquid has only one use: solid-nitroglycerin, which only makes explosives. Not sure what is to happen with this tech in special-vanilla mode.

  • [x] Tech: resins
    Requires: automation & logistic science packs
    Depends on: basic-chemistry-3
    Building unlocks: none
    Recipe unlocks: none
    Action: Resin & liquid resin have no use. Tech is empty, needs to be removed. All subsequent techs need to be removed, too.

  • [x] Tech: rubbers
    Requires: automation & logistic science packs
    Depends on: angels-oil-processing
    Building unlocks: none
    Recipe unlocks: none
    Action: rubber has no use and is already hidden. This tech is empty, useless, and should be removed.

  • [x] Tech: resin-1
    Requires: automation & logistic science packs
    Depends on: angels-nitrogen-processing-2, angels-advanced-chemistry-1, resins
    Building unlocks: none
    Recipe unlocks: none
    Action: empty tech with no use, same for subsequent tiers -2 and -3

  • [ ] Tech: plastics
    Requires: automation & logistic science packs
    Depends on: angels-advanced-chemistry-1
    Building unlocks: none
    Recipe unlocks: none
    Action: This tech is currently empty. I suggest moving recipe solid-plastic into this tech, and removing it from the three subsequent techs plastic-1, bio-plastic-1, bio-arboretum-swamp-1

  • [ ] Tech: lubricant
    Requires: automation & logistic science packs
    Depends on: oil-steam-cracking-1
    Building unlocks: none
    Recipe unlocks: mineral-oil-lubricant
    Action: In special vanilla, gas-residual is not unlocked by oil-steam-cracking-1, maybe make this tech depend on gas-steam-cracking-1 instead, otherwise the only recipe is not craftable at time of research.

  • [x] Tech: rubber
    Requires: automation & logistic science packs
    Depends on: angels-advanced-chemistry-2, rubbers
    Building unlocks: none
    Recipe unlocks: none
    Action: empty tech with no use

  • [ ] Tech: water-treatment-3
    Requires: automation & logistic science packs
    Depends on: water-treatment-2, advanced-electronics
    Building unlocks: 2 buildings
    Recipe unlocks: 2 recipes + solid-lithium
    Action: Lithium has no use

  • [ ] Tech: powder-metallurgy-1
    Requires: automation & logistic science packs
    Depends on: angels-metallurgy-2
    Building unlocks: sintering-oven, powder-mixer
    Recipe unlocks: none
    Action: sintering oven has no compatible recipes

  • [ ] Tech: bio-paper-2
    Requires: automation & logistic science packs
    Depends on: bio-paper-1
    Building unlocks: none
    Recipe unlocks: 4 recipes
    Action: paper has no use, but pulp is required for other stuff later on. To this day the purpose of this tech and its recipes is not clear to me: it adds unreasonable complexity for minimal boos in yield of pulp.

  • [x] Tech: bio-arboretum-desert-1
    Requires: automation & logistic science packs
    Depends on: bio-arboretum-1, bio-nutrient-paste, rubbers
    Building unlocks: none
    Recipe unlocks: 3 recipes
    Action: Liquid rubber has no use, this tech and all its recipes are entirely pointless. Same is true for subsequent tier -2

  • [x] Tech: bio-arboretum-temperate-1
    Requires: automation & logistic science packs
    Depends on: resins, bio-fermentation, bio-arboretum-1
    Building unlocks: none
    Recipe unlocks: 4 recipes
    Action: Liquid resin has no use, this tech and all its recipes are entirely pointless. Same is true for subsequent tier -2

  • [ ] Tech: angels-bio-yield-module
    Requires: automation & logistic science packs
    Depends on: gardens-2, effectivity-module, productivity-module
    Building unlocks: none
    Recipe unlocks: angels-bio-yield-module
    Action: This is the only module that has crystals as ingredients. Either make all modules use crystals, or none. This is very inconsistent.

  • [ ] Tech: angels-construction-robots-2
    Requires: automation & logistic science packs
    Depends on: cargo-robots, angels-construction-robots
    Building unlocks: 2 buildings
    Recipe unlocks: none
    Action: Both recipes require red circuits, this tech should depend on advanced-electronics

  • [ ] Tech: angels-vequipment
    Requires: automation & logistic science packs
    Depends on: logistic-science-pack
    Building unlocks: none
    Recipe unlocks: angels-burner-generator-vequip, angels-repair-roboport-vequip
    Action:

    • This tech only provides equipment for vehicles. It is entirely useless without having previously unlocked a vehicle. The most logical prerequisite tech is engine or automobilism and it should depend on that instead of on the science pack directly. This was previously reported for Industry overhaul (#428).
    • angels-repair-roboport-vequip requires red circuits, but it is worse than the angels-construction-roboport-vequip unlocked by a subsequent tech, and the better one only requires green circuits. Please take a look and adjust ingrendiets.

adoa avatar Sep 26 '21 21:09 adoa

Library issues

  • [ ] Angel's mods appear to add dependency on science pack techs to pure upgrade technologies. In vanilla, all the pure upgrade techs that don't unlock any recipe nor new bonuses also do not have explicit dependencies on science packs. It feels not intended that this should change by activating angel's mods. Affected techs:

    • weapon-shooting-speed-2 through -6
    • physical-projectile-damage-2 through -6
    • research-speed-2 through -6
    • stronger-explosives-2 through -6
    • mining-productivity-2 & -3
    • inserter-capacity-bonus-3 & -4

This is due to the requirement of unit-test-006: https://github.com/Arch666Angel/mods/blob/38675ef0c0f2faf2d962de382ae828b543c65c32/angelsrefining/prototypes/override/refining-override-base.lua#L3-L43

Either we ignore these in the unit test, or we keep explicit dependencies... I let someone else decide, I can do the corresponding changes if need be.

LovelySanta avatar Sep 27 '21 17:09 LovelySanta

Can you change the unit test so that it checks if the tech adds new recipes or new bonuses? These techs do neither, they just give a boost to a previously unlocked bonus.

adoa avatar Sep 27 '21 17:09 adoa

I would not do it conditionally, I rather just code an exception for certain techs... And then we can create the exceptions still dynamically if we want afterwards...

LovelySanta avatar Sep 27 '21 17:09 LovelySanta

Do I understand correctly that this only affects techs from vanilla and angel's? Bob's mods introduce many such upgrade techs, which should stay untouched as well.

adoa avatar Sep 28 '21 03:09 adoa

It could dynamically add the upgrade techs from bobs mods as well, I think I did not fix the upgrades from bobs mods yet.

Moreover, we could create another part of the unit test that verifies it does not have additional prerequisites other than a previous tier...

LovelySanta avatar Sep 28 '21 18:09 LovelySanta

I implemented this in https://github.com/Arch666Angel/mods/commit/26c443cbe1748ee47abe8ba33b987f44c483bd21:

The clue of the change from https://github.com/Arch666Angel/mods/blob/d81799b46564fa0f5e1340c43f8ab15a68adb46c/angelsdev-unit-test/unit-tests/unit-test-006.lua#L197 to https://github.com/Arch666Angel/mods/blob/26c443cbe1748ee47abe8ba33b987f44c483bd21/angelsdev-unit-test/unit-tests/unit-test-006.lua#L286

In general, when the technology is a pure bonus tech (only unlocks bonusses, no recipes) then it will not check if it has sufficient prerequisites.

  • For example, it will no longer produce an error for "physical-projectile-damage-2" which require "logistic-science-pack", but there are no prerequisites that also require "logistic-science-pack" or any prerequisites that unlock a recipe that produces "logistic-science-pack".
  • On the other hand, it will still produce an error if a prerequisite requires higher science packs. A fictional example, it will produce an error for "physical-projectile-damage-2" in case it depended on "physical-projectile-damage-1", if "physical-projectile-damage-1" required "chemical-science-pack" to be researched.

There is one exception to this general rule: the first pure bonus technology (=the one that does not has another pure bonus technology as prerequisite, e.g. "physical-projectile-damage-1" or "artillery-shooting-speed-1") must still depend on a correct prerequisite.

  • For example, "laser-shooting-speed-1" depends on "laser". Both techs require "chemical-science-pack" as ingredient. If however the dependency on "laser" would be omitted, an error would be thrown that "laser-shooting-speed-1" requires higher science packs than its prerequisites provide.
  • This error will not be thrown if this would be the case for "laser-shooting-speed-1" (see explanation of the general case above).

https://github.com/Arch666Angel/mods/commit/26c443cbe1748ee47abe8ba33b987f44c483bd21 also removes the prerequisites of the bonus technologies mentioned in https://github.com/Arch666Angel/mods/issues/691#issuecomment-928078254. Due to the change of the unit test 006 behavior, no additional errors occur in the test log.

@adoa, if you agree with this change, please check this one off the list.

LovelySanta avatar Sep 28 '21 20:09 LovelySanta

This sounds exactly as it should be.

adoa avatar Sep 29 '21 02:09 adoa

Unused items & fluids

  • [ ] paper
  • [ ] ferric chloride solution, cupric chloride solution
  • [ ] resin & liquid resin
  • [ ] liquid rubber
  • [ ] solid-lithium
  • [ ] crystal-full-red, -blue, -harmonic

These unused items / fluids and more are detected by unit test 007 (#709)

KiwiHawk avatar Oct 16 '21 21:10 KiwiHawk

As from the unit tests added in #709, https://github.com/Arch666Angel/mods/commit/a0ea5cbaedc28fa5287fefa0124ea8d0f6fbe3c2 fixes the milling drum and electro whinning cell not being used in some cases.

LovelySanta avatar Oct 27 '21 17:10 LovelySanta

Some more things to check off the list:

Unused items & fluids

  • [ ] resin & liquid resin
  • [ ] liquid rubber

Logistic Science tier

  • [ ] Tech: resins Requires: automation & logistic science packs Depends on: basic-chemistry-3 Building unlocks: none Recipe unlocks: none Action: Resin & liquid resin have no use. Tech is empty, needs to be removed. All subsequent techs need to be removed, too.
  • [ ] Tech: rubbers Requires: automation & logistic science packs Depends on: angels-oil-processing Building unlocks: none Recipe unlocks: none Action: rubber has no use and is already hidden. This tech is empty, useless, and should be removed.
  • [ ] Tech: resin-1 Requires: automation & logistic science packs Depends on: angels-nitrogen-processing-2, angels-advanced-chemistry-1, resins Building unlocks: none Recipe unlocks: none Action: empty tech with no use, same for subsequent tiers -2 and -3
  • [ ] Tech: rubber Requires: automation & logistic science packs Depends on: angels-advanced-chemistry-2, rubbers Building unlocks: none Recipe unlocks: none Action: empty tech with no use

https://github.com/Arch666Angel/mods/commit/2607345fe046f953d596cd75fd90029ca88471d8 introduces 3 new petrochem triggers: https://github.com/Arch666Angel/mods/blob/2607345fe046f953d596cd75fd90029ca88471d8/angelspetrochem/data.lua#L12-L15 When these triggers are set to false, the corresponding solid and liquid item are hidden together with their corresponding recipes (petrochem only). Also handles the corresponding technologies. Note: These triggers are not configured exactly correct; they are still too permissive in some overhaul cases, but they are restrictive enough to handle all special vanilla cases. Calling it good enough for this issue.

Technology issues at Automation Science tier

  • [ ] Tech: bio-wood-processing Requires: automation science packs Depends on: none Building unlocks: none Recipe unlocks: bio-resin-wood-processing Action: resin has no use
  • [ ] Tech: bio-arboretum-desert-1 Requires: automation & logistic science packs Depends on: bio-arboretum-1, bio-nutrient-paste, rubbers Building unlocks: none Recipe unlocks: 3 recipes Action: Liquid rubber has no use, this tech and all its recipes are entirely pointless. Same is true for subsequent tier -2
  • [ ] Tech: bio-arboretum-temperate-1 Requires: automation & logistic science packs Depends on: resins, bio-fermentation, bio-arboretum-1 Building unlocks: none Recipe unlocks: 4 recipes Action: Liquid resin has no use, this tech and all its recipes are entirely pointless. Same is true for subsequent tier -2

https://github.com/Arch666Angel/mods/commit/2607345fe046f953d596cd75fd90029ca88471d8 introduces 3 new bioprocessing triggers depending on the aforementioned petrochem triggers: https://github.com/Arch666Angel/mods/blob/2607345fe046f953d596cd75fd90029ca88471d8/angelsbioprocessing/data.lua#L52-L55 When these triggers are set to false, the corresponding liquid tree generation items are hidden together with their corresponding recipes (bioprocessing only). Also handles the corresponding technologies and early game recipes.

LovelySanta avatar Oct 27 '21 18:10 LovelySanta

Some more things to (partially) check off the list with https://github.com/Arch666Angel/mods/commit/2d263e2e61c5fd9fd4073256352db4380d0d9a60. See comment below why it's not checked off yet.

Crafting machines with no compatible recipes

  • [ ] Sintering oven

@KiwiHawk can you extend unit test 009 such that it verifies that each (visible) recipe can be crafted in a machine (or character)? image I believe I did hide too many sintering ovens is this Special vanilla (BA) case: image The test should say something like There is no suitable machine or character that can craft recipe "recipe_name" (crafting category "crafting_category_name"). In this example case I would expect something to be craftable in sintering oven 3 & 4: https://github.com/Arch666Angel/mods/blob/2d263e2e61c5fd9fd4073256352db4380d0d9a60/angelssmelting/prototypes/override/smelting-override-support.lua#L23-L33

LovelySanta avatar Oct 27 '21 19:10 LovelySanta

@KiwiHawk can you also extend unit test 008 to dynamically add items that can be looted from enemies to the items_to_ignore list: https://github.com/Arch666Angel/mods/blob/25b1c093ee1a64b3a6ea7c521c446a09962b313a/angelsdev-unit-test/unit-tests/unit-test-008.lua#L4 This will prevent these items from throwing the following errors in this Special vanilla (BA) case:

angelsdev-unit-test:     No recipe is creating item "small-alien-artifact" as a product.
angelsdev-unit-test:     No recipe is creating item "small-alien-artifact-red" as a product.
angelsdev-unit-test:     No recipe is creating item "small-alien-artifact-orange" as a product.
angelsdev-unit-test:     No recipe is creating item "small-alien-artifact-yellow" as a product.
angelsdev-unit-test:     No recipe is creating item "small-alien-artifact-green" as a product.
angelsdev-unit-test:     No recipe is creating item "small-alien-artifact-blue" as a product.
angelsdev-unit-test:     No recipe is creating item "small-alien-artifact-purple" as a product.

You can use LuaEntityPrototype.loot, but make sure count_max > 0 and probability > 0 (i think they can also be set to nil)

LovelySanta avatar Oct 28 '21 17:10 LovelySanta

@KiwiHawk can you also extend unit test 008 to dynamically add fluids that can be pumped from the sea to the fluids_to_ignore list: https://github.com/Arch666Angel/mods/blob/25b1c093ee1a64b3a6ea7c521c446a09962b313a/angelsdev-unit-test/unit-tests/unit-test-008.lua#L5 This will prevent this fluid from throwing the following error in this Special vanilla (BA) case:

No recipe is creating fluid "water-viscous-mud" as a product.

You can use LuaEntityPrototype.fluid, but make sure the pump is not hidden.

LovelySanta avatar Oct 28 '21 18:10 LovelySanta

image

I fixed this issue with the puffer nests. I'm still not sure why the puffer nest entity has placeable_by set though.

KiwiHawk avatar Nov 02 '21 11:11 KiwiHawk