HarbourMasters / Shipwright

3.29k stars 492 forks source link

Add support for multiple areas in regions and locations and remove Impa's house shuffle limits #4385

Closed Pepper0ni closed 1 month ago

Pepper0ni commented 1 month ago

This PR changes the logic such that regions and locations can exist in multiple hint areas, for example if Impa's house back is in Kokiri and front is in Goron City, the Cow will be considered to be in both Kokiri and GC. Because of this, there is no more need to limit where Impa's house shuffles to in interior entrance randomiser, and removing that restriction fixes the seed generation issue caused by having cows and interiors on at the same time.

In order to avoid unwanted double areas I have added a new variable to entrances that marks them as low priority for passing areas through them. This is used for the connection between dampe's grave and windmill, on owl drops, and blue warps with the intent of preserving expected hint areas, especially in the former case where there windmill would otherwise inherit graveyard from dampe's grave even with no entrance shuffle.

For hinting purposes, a multi-area location must be foolish for any of it's areas to be foolish, and if a multi-area location is selected for WotH one of it's areas is chosen at random to be hinted.

I have also done a check and found no theoretical problems with allow locations to exist in multiple regions now, so have move Impa's cow into 2 separate regions to test this functionality.

Lastly, to better cover cases where an area is only reachable from spawn (only theoretically possible in decoupled), the text for RA_NONE has changed from "Link's Pocket" to "an Isolated Place", to account for RA_NONE being used as a fallback for if an interior has no valid area can be found, even when allowing inheritance from low priority entrances.

Note while testing: while the entrance shuffler receives the benefits of this change, the code that actually got the most changes was hint creation, so bugs are most likely to be there.

Build Artifacts