Archipelago/worlds/alttp
Mysteryem 7449bf6b99
ALttP: Use auto indirect conditions (#4153)
ALttP makes common use of entrances with access rules that require
another entrance to be accessible. This results in requiring an indirect
condition to be registered for the other entrance's `.parent_region`,
but this indirect condition is often missing.

There are so many missing indirect conditions, and due to the complexity
of some of the chained rules, it is simply not realistic to add all the
missing indirect conditions.

This patch changes ALttP to use automatic indirect conditions instead of
explicit indirect conditions and removes the places that were
registering indirect conditions.

Without this patch, the missing indirect conditions almost never have an
effect on generating with default options, but enabling certain options,
such as `glitches_required` or `entrance_shuffle` can result in
frequently checking entrances that are missing indirect conditions.

Examples of complex chained rules:
`get_rule_to_add()` in `Rules.set_bunny_rules()` can create
rules on entrances that require access to any of a number of different
other entrances, which should require the parent regions of all of those
other entrances to be registered as indirect conditions.

There are entrance access rules that check
`StateHelpers.can_kill_most_things()` (e.g. `Turtle Rock Second Section
Bomb Wall`), which can check `can_extend_magic()`, which checks for
being able to buy unlimited `Blue Potion`, which checks for being able
to reach a shop that sells unlimited `Blue Potion`. This is usually
`Potion Shop`, but there is a yaml option that shuffles shop
inventories, so the shop that sells unlimited `Blue Potion` can be
randomized, meaning that the region that should be registered as an
indirect condition can also be randomized.

Example of many missing indirect conditions:
With `small_key_shuffle: universal`, every single
`ALttPLogic._lttp_has_key()` checks for being able to reach shops that
sell an unlimited number of universal Small Keys. Meaning that every
entrance access rule that uses `_lttp_has_key()` should register all
shop regions that sell unlimited universal small keys as indirect
conditions.
2024-11-07 09:29:47 +01:00
..
docs ALttP/Docs: Correcting the plando docs (#3835) 2024-08-31 23:36:29 +02:00
test LTTP: Update tests to use bases.py #4140 2024-11-04 08:38:47 +01:00
Bosses.py LttP: Bombless Start and Options/Shops overhaul (#2357) 2024-02-20 01:07:49 +01:00
Client.py Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
Dungeons.py Core, some worlds: Rename sweep_for_events to sweep_for_advancements (#3571) 2024-08-23 01:15:05 +02:00
EntranceRandomizer.py LttP/Core: more ripping and tearing (#3160) 2024-04-18 18:33:16 +02:00
EntranceShuffle.py ALttP: Use auto indirect conditions (#4153) 2024-11-07 09:29:47 +01:00
InvertedRegions.py ALTTP: Bomb Walls Logic Fixes (#3130) 2024-04-14 17:30:40 +02:00
ItemPool.py LTTP: Fix a bug in Triforce Pieces Mode: Extra (#3784) 2024-08-22 23:35:29 +02:00
Items.py LTTP: remove multiworld = None (#2290) 2024-03-10 08:18:25 +01:00
Options.py ALTTP: Plando (#2904) fixes (#3834) 2024-09-09 15:56:15 +02:00
OverworldGlitchRules.py LttP: fix single-player no-logic generation (#3454) 2024-06-15 19:18:26 +02:00
Regions.py Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
Rom.py LttP: allow Triforce Piece as start inventory item (#3292) 2024-06-01 14:38:45 +02:00
Rules.py ALttP: Fix accessibility (locations -> full) (#3801) 2024-08-24 10:53:56 +02:00
Shops.py Core: move PlandoConnections and PlandoTexts to the options system (#2904) 2024-06-01 06:34:41 -05:00
StateHelpers.py ALTTP: 0.4.6 fixes (#3215) 2024-04-28 01:48:59 +02:00
SubClasses.py Fill: remove sweep_for_events(key_only=True) (#2239) 2024-07-28 01:32:25 +02:00
Text.py Core: move PlandoConnections and PlandoTexts to the options system (#2904) 2024-06-01 06:34:41 -05:00
UnderworldGlitchRules.py LttP/Core: more ripping and tearing (#3160) 2024-04-18 18:33:16 +02:00
__init__.py ALttP: Use auto indirect conditions (#4153) 2024-11-07 09:29:47 +01:00
requirements.txt LttP: update xxtea to 3.0.0 2023-04-17 22:56:54 +02:00