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

Pokemon Emerald: v2 Update #2918

Merged
merged 709 commits into from
Mar 14, 2024
Merged

Conversation

Zunawe
Copy link
Collaborator

@Zunawe Zunawe commented Mar 8, 2024

What is this fixing or adding?

Adds all the new features that have been in development since the original new game PR. Unfortunately, that means it's a combination of refactoring and new code across pretty much every file, but the core of how it all works is pretty much the same.

The included changelog enumerates the changes.

How was this tested?

Two beta tests hosted by me in the AP discord, many unofficial tests held with other friends, and a few weeks of testing by the community via a pinned apworld in the discord channel. There have been a couple tricky client/mod problems, but they have been fixed. Generator logic has only had one or two easily fixed bugs since the first beta test.

I'll likely host another beta test or two in the next couple weeks.

…wild encounter randomization to generate_basic

All in service of ensuring Wailmer and Relicanth are accessible for the Regis
Used to avoid duplicate starters and avoid placing wild Latios with legendary hunt
Speeds up import of pokemon_emerald by ~15%
Copy link
Collaborator

@PoryGone PoryGone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REVIEW CONTEXT:

  • I have not personally playtested this yet, but I have familiarity with the previous version and the vanilla game.
  • I did not deeply analyze the data json files.
  • I skimmed the logic assignment.
  • I thoroughly analyzed code looking for errors and style.

I think this is overall great. I wouldn't block approval on any of the points, if Zunawe disagrees.
Once you've either adjusted or declined all of my comments, please ping me and I'll gladly approve.

@PoryGone PoryGone added the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Mar 9, 2024
@Zunawe
Copy link
Collaborator Author

Zunawe commented Mar 10, 2024

Unfortunately 7ced289 has kind of obscured the changes made to functions like randomize_wild_encounters. Something for future reviewers to keep in mind. It's something I could possibly revert and make a separate PR for.

Copy link
Collaborator

@PoryGone PoryGone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested changes were all either addressed or justified. This code looks good to me on a further look-over.

@PoryGone PoryGone removed the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Mar 10, 2024
@PoryGone
Copy link
Collaborator

PoryGone commented Mar 10, 2024

I've given my approval. I'll leave it to @Exempt-Medic or someone else to decide whether more review is needed than our two before tossing it to core-review.

(Also for some reason, GitHub won't let me resolve a bunch of the threads.)

Copy link
Contributor

@nicholassaylor nicholassaylor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Breadth of Review:

  • All documentation
  • items.py
  • locations.py
  • /data/*

Changes seem to be well-done and thought-out. Documentation is very thorough and free of any errors. For anyone afraid to review, a good chunk of the LOC are data files and documentation.

What was not done:

Run tests/generation
Review remaining files

Copy link
Contributor

@benny-dreamly benny-dreamly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good. granted I only looked over the data folder and the docs, didn't touch any of the actual python code.

Copy link
Collaborator

@alwaysintreble alwaysintreble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

read over the docs and the python code and only a few small things to comment on. otherwise it all looks good

Copy link
Collaborator

@alwaysintreble alwaysintreble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comments i had were addressed

@alwaysintreble alwaysintreble 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. labels Mar 12, 2024
@Berserker66 Berserker66 merged commit fa233b2 into ArchipelagoMW:main Mar 14, 2024
15 checks passed
EmilyV99 pushed a commit to EmilyV99/Archipelago that referenced this pull request Apr 15, 2024
EmilyV99 pushed a commit to EmilyV99/Archipelago that referenced this pull request Apr 15, 2024
FlySniper added a commit to FlySniper/Archipelago that referenced this pull request Aug 3, 2024
…pelagoMW#2922)

* remove component checking

* fix missing deathlink messages

* move reads under deathlink check
Core: Fix OptionList and OptionSet to allow Iterable of Iterable (ArchipelagoMW#2911)

* fix, maybe

* typegard for iterable of any

* wow I'm so tired I just changed the method name without changing what it actually does...

* also exclude bytes in is_iterable_but_str

* apply pr comments

* Update Utils.py

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* Revert "also exclude bytes in is_iterable_but_str"

This reverts commit cf087d2.

---------

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Docs: Added snes9x-nwa as recommended emulator to the setup guides for SNES games (ArchipelagoMW#1778)

* Added snes9x-nwa as recommended emulator to the setup guides

* Removed snes9x-nwa from the setup guides of DKC3 and SMW

* Update worlds/alttp/docs/multiworld_en.md

Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>

* Removed duplicate text
Minor grammar and spelling fixes

* Unified required software for SM, SMZ3 and SoE with ALTTP

* Added instructions for usage of BSNES-Plus for ALTTP, SM and SMZ3

---------

Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
KH2: Update all instances of multiworld.option_name to option.option_name (ArchipelagoMW#2634)

* update the multiworld to options

* Update worlds/kh2/Rules.py

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* does this work

* namine sketches

* wrong branch :)

---------

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
The Messenger: fix items accessibility reachability bug due to new rules (ArchipelagoMW#2937)

CI: Don't auto-remove content based labels (ArchipelagoMW#2941)

Docs: improve AutoWorld method docstrings (ArchipelagoMW#2509)

* clarify some autoworld docstrings

* revert accidental change
The Witness: Don't unnecessarily break people's 0.4.4 yamls (ArchipelagoMW#2940)

kvui: allow sorting hints in the hint tab (ArchipelagoMW#2684)

MultiServer: send new read_hints datastore values on change (ArchipelagoMW#2558)

The Witness: Obelisk Keys (ArchipelagoMW#2805)

Core: String comparison with FreeText class (ArchipelagoMW#2942)

CommonClient: use rich text for /received (ArchipelagoMW#2715)

CommonClient: Fix item link group name when member slot name contains brackets (ArchipelagoMW#2794)

SMW: v2.0 Content Update (ArchipelagoMW#2762)

Changelog:

Features:
- New optional Location Checks
  - 3-Up Moons
  - Hidden 1-Ups
  - Bonus Blocks
  - Blocksanity
    - All blocks that contain coins or items are included, with the exception of:
      - Blocks in Top Secret Area & Front Door/Bowser Castle
      - Blocks that are unreachable without glitches/unreasonable movement
- New Items
  - Special Zone Clear
  - New Filler Items
    - 1 Coin
    - 5 Coins
    - 10 Coins
    - 50 Coins
  - New Trap Items
    - Reverse Trap
    - Thwimp Trap
- SFX Shuffle
- Palette Shuffle Overhaul
  - New Curated Palette can now be used for the Overworld and Level Palette Shuffle options
  - Foreground and Background Shuffle options have been merged into a single setting
- Max possible Yoshi Egg value is 255
  - UI in-game is updated to handle 3-digits
  - New `Display Received Item Popups` option: `progression_minus_yoshi_eggs`

Quality of Life:
- In-Game Indicators are now displayed on the map screen for location checks and received items
- In-level sprites are displayed upon receiving certain items
- The Camera Scroll unlocking is now only enabled on levels where it needs to be
- SMW can now handle receiving more than 255 items
- Significant World Code cleanup
  - New Options API
  - Removal of `world: MultiWorld` across the world
- The PopTracker pack now has tabs for every level/sublevel, and can automatically swap tabs while playing if connected to the server

Bug Fixes:
- Several logic tweaks/fixes

"Major credit to @TheLX5 for being the driving force for almost all of this update. We've been collaborating on design and polish of the features for the last few months, but all of the heavy lifting was all @TheLX5."
Core: typing for `Option.default` and a few other ClassVars (ArchipelagoMW#2899)

* Core: typing for `Option.default` and a few other `Option` class variables

This is a replacement for ArchipelagoMW#2173

You can read discussion there for issues we found for why we can't have more specific typing on `default`

instead of setting a default in `Option` (where we don't know the type), we check in the metaclass to make sure they have a default.

* NumericOption doesn't need the type annotation that brings out the mypy bug

* SoE default ClassVar
Core: add list/dict merging feature to triggers (ArchipelagoMW#2793)

* proof of concept

* add dict support, block top/game level merge

* prevent key error when option being merged is new

* update triggers guide

* Add documentation about add/remove/replace

* move to trailing name instead of proper tag

* update docs

* confirm types

* Update Utils.py

* Update Generate.py

* pep8

* move to + syntax

* forgot to support sets

* specify received type of type error

* Update Generate.py

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

* Apply suggestion from review

* add test for update weights

* move test to new test case

* Apply suggestions from code review

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

---------

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
CI: build: create setup (ArchipelagoMW#2936)

* CI: build: create setup

also add /DNO_SIGNTOOL to inno_setup.iss

* CI: build: trigger when changing setup-related files
Shivers: Renaming for clarity and consistency (ArchipelagoMW#2869)

* Moves plaque location to front for better tracker referencing.

* Tiki should be Shaman.

* Hanging should be Gallows.

* Merrick spelling.

* Clarity change.
FFMQ: Update Map Shuffle Seed description (ArchipelagoMW#2658)

* Update Map Shuffle Seed description

* Update worlds/ffmq/Options.py

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

---------

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Core: fix incorrect ordering on the always_allow static method (ArchipelagoMW#2938)

CI: update actions (ArchipelagoMW#2943)

HK: Removes Vanilla Items from ItemPool and Uses Grimmchild1 when relevant (ArchipelagoMW#2898)

KDL3: Ensure all abilities accessible on non-minimal (ArchipelagoMW#2929)

Pokemon Emerald: v2 Update (ArchipelagoMW#2918)

Core: add layer for patches that don't use `Patch.py` (ArchipelagoMW#2889)

* Core: add layer for patches that don't use `Patch.py`

* bump container version

* APAutoPatchInterface name

* mystic quest change

* OoT and Adventure changes

* missed name in docstring

* container version compatibility
Lingo: Pre-compile datafile to improve loading time (ArchipelagoMW#2829)

CommonClient: Don't retry connection when connection details are invalid (ArchipelagoMW#2831)

Stardew Valley: 5.x.x - The Allsanity Update (ArchipelagoMW#2764)

Major Content update for Stardew Valley, including the following features

- Major performance improvements all across the Stardew Valley apworld, including a significant reduction in the test time
- Randomized Farm Type
- Bundles rework (Remixed Bundles and Missing Bundle!)
- New Settings:
  * Shipsanity - Shipping individual items
  * Monstersanity - Slaying monsters
  * Cooksanity - Cooking individual recipes
  * Chefsanity - Learning individual recipes
  * Craftsanity - Crafting individual items
- New Goals:
  * Protector of the Valley - Complete every monster slayer goal
  * Full Shipment - Ship every item
  * Craftmaster - Craft every item
  * Gourmet Chef - Cook every recipe
  * Legend - Earn 10 000 000g
  * Mystery of the Stardrops - Find every stardrop (Maguffin Hunt)
  * Allsanity - Complete every check in your slot
- Building Shuffle: Cheaper options
- Tool Shuffle: Cheaper options
- Money rework
- New traps
- New isolated checks and items, including the farm cave, the movie theater, etc
- Mod Support: SVE [Albrekka]
- Mod Support: Distant Lands [Albrekka]
- Mod Support: Hat Mouse Lacey [Albrekka]
- Mod Support: Boarding House [Albrekka]

Co-authored-by: Witchybun <elnendil@gmail.com>
Co-authored-by: Witchybun <96719127+Witchybun@users.noreply.github.com>
Co-authored-by: Jouramie <jouramie@hotmail.com>
Co-authored-by: Alchav <59858495+Alchav@users.noreply.github.com>
Launcher: make scrollbar more prominent (ArchipelagoMW#2955)

TUNIC: Updated display name for a few options (ArchipelagoMW#2953)

SMW: Add CHANGELOG.md (ArchipelagoMW#2947)

Celeste 64: Add CHANGELOG.md (ArchipelagoMW#2948)

DKC3: Add CHANGELOG.md (ArchipelagoMW#2946)

Core: increment version (ArchipelagoMW#2958)

SA2B: Add CHANGELOG.md (ArchipelagoMW#2945)

The Witness: Add newly submitted junk hints (ArchipelagoMW#2949)

OoT: Entrance Spoiler Fixes (ArchipelagoMW#2500)

Stardew Valley: Added a Great Combat requirement to an entrance that could block its own key (ArchipelagoMW#2959)

SC2: Multi-campaign (ArchipelagoMW#2954)

Adds HotS, LotV and NCO campaigns to SC2 game.
The world's name has changed to reflect that (it's not only Wings of Liberty now)
The client was patched in a way that can still join to games generated prior this change
---------

Co-authored-by: Magnemania <magnemight@gmail.com>
Co-authored-by: EnvyDragon <138727357+EnvyDragon@users.noreply.github.com>
Co-authored-by: Matthew <matthew.marinets@gmail.com>
Co-authored-by: hopop201 <benjy.hopop201@gmail.com>
Co-authored-by: Salzkorn <salzkitty@gmail.com>
Co-authored-by: genderdruid <pallyoffail@gmail.com>
Co-authored-by: MadiMadsen <137329235+MadiMadsen@users.noreply.github.com>
Co-authored-by: neocerber <neocerber@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Zork Grand Inquisitor: Implement New Game (ArchipelagoMW#2539)

Adds Archipelago support for Zork Grand Inquisitor, the 1997 point-and-click PC adventure game.

The client (based on `CommonClient`), on top of its regular Archipelago duties, fully handles the randomization of the game and the monitoring / modification of the game state. No game modding needed at all; the player is ready to play an Archipelago seed if they can play the vanilla game through ScummVM.

The "reverse engineering" (there's likely a better term for this...) of the game is my own original work and I included an MIT license at the root of my world directory.

A PopTracker pack was also created to help people learn the game: https://github.com/SerpentAI/ZorkGrandInquisitorAPTracker
TUNIC: Implement support for connection plando (ArchipelagoMW#2864)

The Witness: Add junk hint for Zork: Grand Inquisitor (ArchipelagoMW#2961)

SMW: Increment Required Client Version (ArchipelagoMW#2962)

Core: implement APProcedurePatch and APTokenMixin (ArchipelagoMW#2536)

* initial work on procedure patch

* more flexibility

load default procedure for version 5 patches
add args for procedure
add default extension for tokens and bsdiff
allow specifying additional required extensions for generation

* pushing current changes to go fix tloz bug

* move tokens into a separate inheritable class

* forgot the commit to remove token from ProcedurePatch

* further cleaning from bad commit

* start on docstrings

* further work on docstrings and typing

* improve docstrings

* fix incorrect docstring

* cleanup

* clean defaults and docstring

* define interface that has only the bare minimum required
for `Patch.create_rom_file`

* change to dictionary.get

* remove unnecessary if statement

* update to explicitly check for procedure, restore compatible version and manual override

* Update Files.py

* remove struct uses

* ensure returning bytes, add token type checking

* Apply suggestions from code review

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* pep8

---------

Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Pokemon Emerald: Bump required client version (ArchipelagoMW#2963)
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.

9 participants