-
Notifications
You must be signed in to change notification settings - Fork 671
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lingo: The Pilgrim Update #2884
Conversation
The Colorful did not actually properly split into individual doors when progressive colorful was off. This change refactors the code that handles special cases with progressive items to make things clearer (which is important because I will be introducing another one).
Also fixed a classic lambda capture bug, and an over-eager event capture issue, that was making pilgrimage detection completely break.
We are no longer using sub-states to determine pilgrimage access. Instead, five additional subgraphs are created, each containing entrances with the same access rules as the original map, but filtered so only allowable connections exist. The only location in each subgraph is an event (possibly with an access rule) saying whether the end of the pilgrimage segment is reachable. This change was needed because on vanilla doors, the sub-states would assume that you couldn't open doors if there was no way to open it without using warps, even though in reality you can just open the door before starting the pilgrimage. Items have been refactored a bit too. player_logic is more responsible for which items get instantiated. This was needed because sunwarps are technically doors, but are separate from the shuffle_doors option; you can shuffle sunwarps and not shuffle doors. The sun painting is another special case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed the code (not the logic files), nothing looked weird. Did many test generations with some settings set to random, no failures. Asserts on invalid settings combos.
Did not test it with client.
Instead of each graph being completely separate, the graphs lead into each other at the sunwarps. No event items are needed at all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did not look at Ruby code. if entrance_name in self.world.multiworld.regions.entrance_cache[self.player]
is pretty ugly, but it might also be the best option right now, which is upsetting, so I made this PR #3052 lol
* An option was added to enable or disable the pilgrimage, and it defaults to disabled. When disabled, the client will prevent you from performing a pilgrimage (i.e. the yellow border will not appear when you enter the 1 sunwarp). The sun painting is added to the item pool when pilgrimage is disabled, as otherwise there is no way into the Pilgrim Antechamber. Inversely, the sun painting is no longer in the item pool when pilgrimage is enabled (even if door shuffle is on), requiring you to perform a pilgrimage to get to that room. * The canonical pilgrimage has been deprecated. Instead, there is logic for determining whether a pilgrimage is possible. * Two options were added that allow the player to decide whether paintings and/or Crossroads - Roof Access are permitted during the pilgrimage. Both default to disabled. These options apply both to logical expectations in the generator, and are also enforced by the game client. * An option was added to control how sunwarps are accessed. The default is for them to always be accessible, like in the base game. It is also possible to disable them entirely (which is not possible when pilgrimage is enabled), or lock them behind items similar to door shuffle. It can either be one item that unlocks all sunwarps at the same time, six progressive items that unlock the sunwarps from 1 to 6, or six individual items that unlock the sunwarps in any order. This option is independent from door shuffle. * An option was added that shuffles sunwarps. This acts similarly to painting shuffle. The 12 sunwarps are re-ordered and re-paired. Sunwarps that were previously entrances or exits do not need to stay entrances or exits. Performing a pilgrimage requires proceeding through the sunwarps in the new order, rather than the original one. * Pilgrimage was added as a win condition. It requires you to solve the blue PILGRIM panel in the Pilgrim Antechamber.
What is this fixing or adding?
A number of features related to sunwarps and the pilgrimage have been added.
How was this tested?
pytest and test runs. A beta test sync was conducted successfully.
Prerelease versions of the client and tracker are available for testing too:
Apworld: lingo.zip (Rename this to lingo.apworld)
Client: archipelago-sunwarps-beta4.zip
Tracker: lingo-ap-tracker-sunwarps-beta3-win64.zip