Skip to content
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

Merged
merged 36 commits into from
Apr 18, 2024
Merged

Lingo: The Pilgrim Update #2884

merged 36 commits into from
Apr 18, 2024

Conversation

hatkirby
Copy link
Collaborator

@hatkirby hatkirby commented Mar 3, 2024

What is this fixing or adding?

A number of features related to sunwarps and the pilgrimage have been added.

  • 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.

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

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.
@github-actions github-actions bot added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Mar 3, 2024
@ScipioWright ScipioWright added the is: enhancement Issues requesting new features or pull requests implementing new features. label Mar 3, 2024
Copy link
Collaborator

@ScipioWright ScipioWright left a 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.

Copy link
Member

@NewSoupVi NewSoupVi left a 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

worlds/lingo/data/LL1.yaml Show resolved Hide resolved
worlds/lingo/data/LL1.yaml Show resolved Hide resolved
worlds/lingo/player_logic.py Show resolved Hide resolved
worlds/lingo/player_logic.py Outdated Show resolved Hide resolved
worlds/lingo/player_logic.py Show resolved Hide resolved
worlds/lingo/regions.py Outdated Show resolved Hide resolved
worlds/lingo/regions.py Outdated Show resolved Hide resolved
@hatkirby hatkirby added the waiting-on: other Issue/PR is waiting for something else, like another PR. label Mar 29, 2024
worlds/lingo/rules.py Outdated Show resolved Hide resolved
@hatkirby hatkirby added waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer. and removed waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. waiting-on: other Issue/PR is waiting for something else, like another PR. labels Apr 14, 2024
@Berserker66 Berserker66 merged commit 740b76e into ArchipelagoMW:main Apr 18, 2024
15 checks passed
@hatkirby hatkirby deleted the sunwarp branch May 7, 2024 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: enhancement Issues requesting new features or pull requests implementing new features. waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants