Archipelago/worlds
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
..
_bizhawk BizHawkClient: Fix typing mistake (#3938) 2024-09-28 22:49:11 +02:00
_sc2common SC2: don't close all SC2 instances when one quits (#3507) 2024-06-12 02:14:30 +02:00
adventure Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
ahit AHIT: Fix Death Wish option check typo (#3978) 2024-09-22 16:22:11 +02:00
alttp ALttP: Use auto indirect conditions (#4153) 2024-11-07 09:29:47 +01:00
apsudoku APSudoku: Update setup guide, remove extraneous options page link (#3849) 2024-08-29 08:12:58 +02:00
aquaria [Aquaria] Adds Poptracker Pack to the Aquaria Setup Guides (#4037) 2024-10-17 03:34:10 +02:00
archipidle ArchipIDLE 2024 (#3079) 2024-04-12 00:32:10 -04:00
blasphemous Blasphemous: Move pre_fill to create_items #3901 2024-09-17 15:08:15 +02:00
bomb_rush_cyberfunk Bomb Rush Cyberfunk: Fix Coil quest being in glitched logic too early (#3720) 2024-07-31 17:32:51 +02:00
bumpstik Bumper Stickers: Update tests to bases.py #4137 2024-11-06 09:37:36 +01:00
celeste64 Celeste 64: Typo #3840 2024-08-24 02:05:42 +02:00
checksfinder ChecksFinder: Update description (#4145) 2024-11-04 08:19:34 +01:00
clique Clique: Update to new options API (#3759) 2024-08-11 14:47:17 +02:00
cv64 Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
dark_souls_3 [DS3] Remind players to remove the old dinput8.dll (#4034) 2024-10-28 23:30:07 +01:00
dkc3 Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
dlcquest DLC Quest: Update tests to use bases.py #4141 2024-11-06 09:36:49 +01:00
doom_1993 Doom 1993 (auto-generated files): Update E4 logic (#3957) 2024-09-21 23:06:31 +02:00
doom_ii DOOM II: Fix sector 95 assignment in DOOM II MAP17 to correctly flag the BFG9000 location as in the Yellow Key area (#3705) 2024-09-18 00:08:18 +02:00
factorio Factorio: update API use (#3760) 2024-09-18 00:18:17 +02:00
ff1 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
ffmq Docs: Add FFMQ French Setup Guide + Minor fixes to English Guide (#3590) 2024-07-31 17:40:45 +02:00
generic Adjusts Whitespaces in the Plando Doc to be able to be copied directly (#3902) 2024-09-27 01:30:23 +02:00
heretic Doom 2, Heretic: fix missing items (Doom2 Megasphere, Heretic Torch) (#3561) 2024-06-19 12:59:10 +02:00
hk HK: fix grubhunt required grubs count (#4094) 2024-10-30 23:58:40 +01:00
hylics2 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
kdl3 KDL3: Fix webhost not giving a patch #4023 2024-10-04 21:27:23 +02:00
kh1 Kingdom Hearts: Fix Hint Spam and Add Setting Queries #3899 2024-09-19 22:32:47 +02:00
kh2 [KH2] Add new Poptracker Pack to the KH2 Setup Guide (#4104) 2024-10-28 02:38:05 +01:00
ladx LADX: Update tests to use bases.py #4139 2024-11-04 08:40:08 +01:00
landstalker Landstalker: Fixed rare generation issues (#3353) 2024-06-01 06:39:57 -05:00
lingo Lingo: Mark Eight Room -> The Incomparable as a warp (#4119) 2024-10-29 23:09:31 +01:00
lufia2ac Lufia 2: Update tests to bases.py #4136 2024-11-04 08:39:12 +01:00
meritous Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
messenger The Messenger: fix missing money wrench rule (#4041) 2024-10-11 03:05:21 +02:00
minecraft Minecraft: Fix plando connections #4048 2024-10-14 00:22:37 +02:00
mlss MLSS: Various bugfixes and QoL updates (#3744) 2024-09-18 19:33:02 +02:00
mm2 MM2: fix Air Shooter minimum damage #3922 2024-09-17 14:42:19 +02:00
mmbn3 MMBN3: Add missing indirect conditions (#3931) 2024-09-17 14:41:56 +02:00
musedash Muse Dash: Update to 4.7.0 - Let's Rhythm Jam! (#3837) 2024-08-24 18:19:42 +02:00
noita Noita: Add the useful classification to important perks, making them progression + useful #4030 2024-10-17 03:31:53 +02:00
oot OoT: fix plando/item links (again) #4098 2024-10-26 06:25:03 +02:00
osrs OSRS: Add missing indirect conditions (#4029) 2024-10-28 23:26:08 +01:00
overcooked2 oc2: Reduce calls to meets_requirements (#4060) 2024-10-29 11:07:49 +01:00
pokemon_emerald Pokemon Emerald: Update tests to use bases.py #4142 2024-11-06 09:37:14 +01:00
pokemon_rb Pokemon R/B: Version 5 Update (#3566) 2024-09-18 20:37:17 +02:00
raft Raft: Move to new Options API (#3587) 2024-07-15 15:09:02 +02:00
rogue_legacy Rogue Legacy: Remove item/location id overlap rejection code. (#3893) 2024-11-05 08:33:41 +00:00
ror2 RoR2: Remove recursion from explore mode access rules (#3681) 2024-08-07 23:57:07 +02:00
sa2b Fix Incorrect Link Syntax in SA2B Linux Setup (#3524) 2024-06-13 06:53:01 +02:00
sc2 SC2: Small bugfix for SC2 logic #4126 2024-11-03 15:27:04 +01:00
shivers Shivers: Add collect behavior option. (#3854) 2024-08-31 13:30:42 +02:00
shorthike A Short Hike: Fix Boat Rental purchase being incorrectly calculated (#3639) 2024-07-22 01:47:46 +02:00
sm SM and SMZ3 option_definitions deprecation fix (#3372) 2024-08-31 13:49:33 +02:00
sm64ex SM64ex: Add links to documentation for makeflags and patches #4092 2024-10-27 01:31:56 +02:00
smw Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
smz3 SM and SMZ3 option_definitions deprecation fix (#3372) 2024-08-31 13:49:33 +02:00
soe SoE: fix determinism (#3745) 2024-08-10 13:08:24 +02:00
spire Spire: Convert options, clean up random calls, and add DeathLink (#3704) 2024-07-31 18:27:35 +02:00
stardew_valley Stardew Valley: Add Cinder Shard resource pack (#4001) 2024-09-27 01:26:06 +02:00
subnautica Core: Region handling customization (#3682) 2024-09-05 16:32:45 +02:00
terraria Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
timespinner Timespinner: Make hidden options pickleables (#4050) 2024-10-16 23:06:14 +02:00
tloz TLOZ: Fix non-deterministic item pool generation (#3779) 2024-08-16 20:57:04 +02:00
tunic TUNIC: Minor revision to IG and LS option descriptions #4115 2024-10-29 02:43:03 +01:00
undertale Undertale: Fix slot_data and options.as_dict() (#3774) 2024-08-12 01:53:40 +02:00
v6 VVVVVV: Make unnecessary Trinkets filler (#3806) 2024-08-18 23:03:57 +02:00
wargroove Wargroove: Switched to options API. (#3306) 2024-05-16 18:46:13 +02:00
witness The Witness: Small code refactor (cast_not_none) (#3798) 2024-10-02 00:02:17 +02:00
yachtdice Yacht Dice: Textual fixes and changes (Docs / yaml description) (#3967) 2024-10-28 02:37:21 +01:00
yoshisisland Yoshi's Island: Fix client giving victory randomly (#3586) 2024-06-26 13:19:16 +02:00
yugioh06 YGO06: slotdata fix (#3953) 2024-09-17 15:13:19 +02:00
zillion Zillion: fix logic cache (#3719) 2024-09-18 21:09:47 +02:00
zork_grand_inquisitor Zork Grand Inquisitor: Fix Determinism Issues on Fixed Seeds (#3134) 2024-04-18 18:47:27 +02:00
AutoSNIClient.py SNIClient: log exceptions and keep task alive (#3911) 2024-10-31 00:16:02 +01:00
AutoWorld.py Core: The Item Links fix to end them all (for now, hopefully) (#4096) 2024-11-03 15:22:10 +01:00
Files.py APProcedurePatch: fix RLE/COPY incorrect sizing (#3006) 2024-03-22 09:02:38 +01:00
LauncherComponents.py Launcher: explicitly handle cli arguments to be passed to the Component (#3714) 2024-09-08 18:13:01 +02:00
__init__.py Core: fix invalid __package__ of zipped worlds (#3686) 2024-08-10 13:49:32 +02:00