A longstanding issue is that Fairy Ascension Cave has been treated as a simple two way connector, but in reality bunny cannot "logically" go through the cave in reverse as it requires lifting some pots with super bunny. This super bunny state is effectively unavoidable and can really only be lost if you have Boots and foolishly bonk before lifting a pot, but for logical consistency fixing this is the right thing to do. The logic should now correctly see that the cave is a two way connection with no particular item requirements in general but that the reverse direction isn't bunny transversable.
This update should fully fix the key logic for Turtle Rock. This involved fixing several longstanding bugs in the program we didn't realize we had until trying to really fix this issue. Notable inclusions are that now seeds generated with a count will be identical to similarly numbered seeds generated individually and that now the always allows actually work (key for key apparently actually never happened in ER before and we didn't notice!). This also required refactoring the item pool generation before rule setting and individually moving pendant/crystal placement out of item pool generation (it's not a separate step between rule setting and normal item fill). A few exotic seed generation fails are still possible involving multi-entrance dungeons being really, really inaccessible in non-keysanity, but they're now appropriately super rare instead of being as common as they were before.
This fixes two issues:
-The same seed number was producing (subtly) different seeds. This was caused by misplaced random calls in the changes to the entrance shuffle; these calls to the rng were happening before the random seed was decided. Re-arranging that function should solve this. Thanks to hycutype for both noticing this and providing a solution.
-Retro mode was broken with the addition of hints. This was caused by the retro exclusive regions not having defined hints (for reasons I truly question myself over, they are defined in ItemList.py...) and then further by an obscure function in copy_world that builds the playthrough and deals with the sword cave not being updated for the new three parameter regions (region objects used to only require two parameters). This has been fixed.
GT now pre-fills with junk if it's in the vanilla location regardless of the state of the shuffleganon flag.
The smith is now allowed to be in multi-entrance cave locations in the appropriate shuffles. A duplicate Old Man Cave (West) from bomb shop multis was also removed.
This should enable Sanctuary and the back of escape to enter Ganon's slot in the crossed shuffle only. I also removed a small bit of code that no longer did anything (the code that serviced Agahnim's Tower always being in LW back when that was necessary) and cleaned up a lot of the comments in this file to more accurately reflect the modern environment.
This implements the new restricted shuffle that does not respect the difference between single and multi-entrance caves. Restricted_legacy is present for the old restricted behavior. Full_cross_worlds is renamed to Crossed, and all listing of shuffles is given a consistent order that pushes all the _legacy variants to the back.
This is necessary to account for exiting here without otherwise having access to the area behind the rocks. Will mostly come up in insanity but has some extreme niches where it could matter in full.
The Dark World Hammer Pegs area and the Dark World shop in VoO are both regionalized to handle the possibility of connectors leading to them. Also an oversight in regionalizing Desert Palace that had broken the vanilla shuffle is corrected.
Desert Palace's main section is now broken into outer and inner regions separated by the pots, and the inner region is flagged as bunny impassable which should prevent the use of the central portion of Desert Main as a bunny by the logic while still permitting the outer two doors to be used as a connection.
Super Bomb logic was supposed to just be a small tweak to take care of the TODO on adding those three insanity only bomb shop locations to the logic, but then I realized that the rules for most of Death Mountain could be liberalized somewhat since that Flute to take the bomb away is also a direct access method and took care of all that. Hopefully Super Bomb logic won't need further tweaks for a good long while.
It now shuffles super bomb into multi-entrance caves
(The list of entrances that owuld be blacksmith safe are marked, but
they are not safe because dwarf will not enter them, we may patch this
eventually)
Also include a missing dungeon region in the hyrule castle dungeon
definition
Include Tower of Hera as a valid old man location in new Full shuffle
This is a simple tweak adding a mirror connection between the main Light World and the Hyrule Castle Courtyard. This will very rarely come into play; it only matters in circumstances where the uncle tunnel does not instantly connect to the courtyard (some madness/insanity situations and when Ganon's tunnel is there in full and below), when the player does not have access to the upper levels of Hyrule Castle or to the pyramid, but the player does have the Mirror. This correctly acknowledges that entering the castle main gate is fully and permanently softlock proof in this situation.
-From KevinCathcart, this adds a new region to the world for the castle courtyard reachable from the exit to the uncle tunnel and from the upper ledge of Hyrule Castle but not the main gate. In effect, this changes nothing if Ganon is not at the uncle passage, and if Ganon is at the uncle passage, either Mirror + pyramid access, Master Sword, or a connecting cave to the upper ledge of Hyrule Castle will be required to access the main gate. This is necessary to fix a very rare softlock in which the player could defeat Agahnim, lose access to the Hyrule Castle main gate, and make the seed impossible.
This is the Great renaming. Renaming to match V27. I've renamed pretty
much all Item locations to match, with a small number kept deliberatly
deferent for clarity.
There is probably more renaming that should be done at the Enterance and
Region levels, but that can be done later.