Skip to content

Conversation

@Rosalie-A
Copy link
Contributor

Please format your title with what portion of the project this pull request is
targeting and what it's changing.

ex. "MyGame4: implement new game" or "Docs: add new guide for customizing MyGame3"

What is this fixing or adding?

Converts FF1 to using the Bizhawk Client instead of its bespoke client and connector, with updated documentation.

Also makes the few changes needed to allow it to be an APWorld instead of a folder in lib/worlds, mostly for my convenience.

How was this tested?

Ran through an entire game, checked every location to make sure it sent. Received items, both naturally and through admin console, and confirmed they arrived properly. Also put this up for testing in the Discord, and no issues have been reported as of the latest version (whether this means no testers or no issues is, as always, up in the air).

If this makes graphical changes, please attach screenshots.

@github-actions github-actions bot added affects: core Issues/PRs that touch core and may need additional validation. waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. labels Jan 8, 2025
Copy link
Collaborator

@qwint qwint left a comment

Choose a reason for hiding this comment

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

pure code review, did not run the client at all nor play any games, also only briefly reviewed docs changes and full Client.py code

You will also need to update inno_setup.iss to remove the old frozen executable (and likely the old folder since you're moving to .apworld format too) but other than and my pkgutil comments looks good

FF1_PROGRESSION_LIST else ItemClassification.useful if name in FF1_USEFUL_LIST else
ItemClassification.filler) for name, code in items.items()]
self._item_table_lookup = {item.name: item for item in self._item_table}
file = pkgutil.get_data(__name__, os.path.join("data", "items.json")).decode("utf-8")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
file = pkgutil.get_data(__name__, os.path.join("data", "items.json")).decode("utf-8")
file = pkgutil.get_data(__name__, "data/items.json").decode("utf-8")

ref #4232
for this and the other similar suggestion (also there's no need for the os import after this change)

# Hardcode progression and categories for now
self._location_table = [LocationData(name, code) for name, code in locations.items()]
self._location_table_lookup = {item.name: item for item in self._location_table}
file = pkgutil.get_data(__name__, os.path.join("data", "locations.json"))
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
file = pkgutil.get_data(__name__, os.path.join("data", "locations.json"))
file = pkgutil.get_data(__name__, "data/locations.json")

…changed the logger in the client to actually do something.
Copy link
Collaborator

@qwint qwint left a comment

Choose a reason for hiding this comment

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

not certain there aren't more required inno_setup changes, but the updates fixed every issue that existed to my knowledge


async def read_ram_value(self, ctx, location):
value = ((await bizhawk.read(ctx.bizhawk_ctx, [(location, 1, self.wram)]))[0])
return int.from_bytes(value)

This comment was marked as resolved.

Comment on lines 109 to 112
if self.consumable_stack_amounts is None:
self.consumable_stack_amounts = {}
self.consumable_stack_amounts["Shard"] = 1
self.consumable_stack_amounts["Tent"] = (await self.read_rom(ctx, 0x47400, 1))[0] + 1

This comment was marked as resolved.

self.consumable_stack_amounts["Ext1"] = (await self.read_rom(ctx, 0x47406, 1))[0] + 1
self.consumable_stack_amounts["Ext2"] = (await self.read_rom(ctx, 0x47407, 1))[0] + 1
self.consumable_stack_amounts["Ext3"] = (await self.read_rom(ctx, 0x47408, 1))[0] + 1
self.consumable_stack_amounts["Ext4"] = (await self.read_rom(ctx, 0x47409, 1))[0] + 1

This comment was marked as resolved.

1. Download and install the latest version of Archipelago.
1. On Windows, download Setup.Archipelago.<HighestVersion\>.exe and run it
2. Assign EmuHawk version 2.3.1 or higher as your default program for launching `.nes` files.
2. Assign EmuHawk or higher as your default program for launching `.nes` files.

This comment was marked as resolved.

@ScipioWright ScipioWright added the is: enhancement Issues requesting new features or pull requests implementing new features. label Jan 10, 2025
@beauxq
Copy link
Collaborator

beauxq commented Jan 11, 2025

Rosalie-A#72

Fixed a bug with extended consumables being switched.
@Zunawe
Copy link
Collaborator

Zunawe commented Feb 8, 2025

You'll want to add the old client and script to the inno_setup script so they get get deleted by the installer.

@Rosalie-A
Copy link
Contributor Author

Rosalie-A commented Feb 8, 2025

You'll want to add the old client and script to the inno_setup script so they get get deleted by the installer.

Unless I'm crazy, I already caught the old client, but I did completely miss removing the old Lua script, thank you. Latest commit fixes that.

Copy link
Contributor

@wildham0 wildham0 left a comment

Choose a reason for hiding this comment

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

while i can't speak for the specifics of ap, the legacy lua behiavours have been correctly transferred to the client and the appropriate memory addresses and values are queried

Copy link
Collaborator

@Zunawe Zunawe left a comment

Choose a reason for hiding this comment

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

Mostly just a quick scroll through. I think the client looks fine from the standpoint of interacting with BizHawk. Comments are basically just suggestions.

status_b = await self.read_sram_value(ctx, status_b_location)
status_c = await self.read_sram_value(ctx, status_c_location)

# First character's name's first character will never have FF
Copy link
Collaborator

Choose a reason for hiding this comment

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

There's no problem here, I just have to comment on the silliness of this sentence.

Also implemented item received messages in Bizhawk.
Fixed a bug with the guard against writing on title screen.

Removed redundant read.
Copy link
Collaborator

@Zunawe Zunawe left a comment

Choose a reason for hiding this comment

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

Everything looks fine as far as correctly utilizing BizHawk Client. Didn't test, and couldn't say myself whether it correctly replaces all the necessary behaviors.

@qwint qwint 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 Feb 9, 2025
Comment on lines 209 to 211
current_gold = int.from_bytes(await self.read_sram_values_guarded(ctx, gp_location_low, 3), "little")
if current_gold is None:
return
Copy link
Collaborator

Choose a reason for hiding this comment

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

current_gold is not something that needs to be checked for None - It will never be None

What needs to be checked it the result of await self.read_sram_values_guarded(ctx, gp_location_low, 3)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oops. Fixed.

@Exempt-Medic
Copy link
Contributor

This has conflicts, somehow

@Exempt-Medic Exempt-Medic added the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Apr 5, 2025
@Rosalie-A
Copy link
Contributor Author

Something got modified in FF1Client.py by something that got merged into main so it rang up a conflict even though the thing the files were conflicted on was on one side "existing", but hey, git's gonna git.

Either way, fixed.

@Exempt-Medic Exempt-Medic removed the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Apr 8, 2025
@Exempt-Medic
Copy link
Contributor

This has conflicts again. I'll try to merge it after they're resolved

@Exempt-Medic Exempt-Medic merged commit 9c0ad2b into ArchipelagoMW:main May 22, 2025
19 checks passed
ProfDeCube pushed a commit to ProfDeCube/Archipelago that referenced this pull request Jun 13, 2025
Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Ars-Ignis added a commit to Ars-Ignis/Archipelago that referenced this pull request Jul 13, 2025
commit a9b35de7ee9d02d320aaae4b28259ae0ec3139ad
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Sat Jul 12 23:02:49 2025 +1000

    Muse Dash: Update song list to Rotaeno Update/7th Anniversary (#5066)

commit 125d053b61733031d0ebe8559f6edd006e1c4e94
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Sat Jul 12 07:52:02 2025 -0400

    TUNIC: Fix missing line for UT stuff #5185

commit 585cbf95a6d1b65facd1f0058ba49c6174b24a00
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Sat Jul 12 07:14:34 2025 -0400

    TUNIC: Add UT Support for Breakables (#5182)

commit 909565e5d958459093014e134ea21b18767cd1fd
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Sat Jul 12 07:12:04 2025 -0400

    Stardew Valley: Remove Rarecrow Locations from Night Market when Museumsanity is Disabled (#5146)

commit a79423534c30de502a71944a5ec1d95ff32847fe
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Fri Jul 11 18:44:26 2025 -0400

    LADX: Update marin.txt (#5178)

commit 7a6fb5e35b471ef196437dd97d23fd26402d903e
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Fri Jul 11 23:28:18 2025 +0200

    Revert "Core: Take Counter back out of RestrictedUnpickler" (#5184)

    * Revert "Core: Take Counter back out of RestrictedUnpickler #5169"

    This reverts commit 95e09c8e2a681ecd5666822b04fe7fed3ed9dec1.

    * Update Utils.py

commit 6af34b66fb166af42f73879152c1a030ff2423f1
Author: Zach “Phar” Parks <11338376+ThePhar@users.noreply.github.com>
Date:   Fri Jul 11 12:34:46 2025 -0500

    Various: Remove Rogue Legacy and Clique (#5177)

    * Various: Remove Rogue Legacy and Clique

    * Remove Clique from setup.py and revert network diagram.md change.

    * Try again.

    * Update network diagram.md

    ---------

    Co-authored-by: Zach “Phar” Parks <phar@pharware.com>
    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

commit 2974f7d11f57e97da00a568b1c03a670fd8938d0
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Fri Jul 11 19:27:28 2025 +0200

    Core: Replace Clique with V6 in unit tests (#5181)

    * replace Clique with V6 in unit tests

    * no hard mode in V6

    * modify regex in copy_world to allow : str

    * oops

    * I see now

    * work around all typing

    * there actually needs to be something

commit edc0c89753b6e5283d7289d6e60c5e050e5d8303
Author: Carter Hesterman <hestermancarter@gmail.com>
Date:   Thu Jul 10 07:10:56 2025 -0600

    CIV 6: Remove Erroneous Boost Prereqs for Computers Boost (#5134)

commit b1ff55dd061af9158c1747a57472d157e42ded92
Author: axe-y <58866768+axe-y@users.noreply.github.com>
Date:   Thu Jul 10 08:33:52 2025 -0400

    DLCQ: Fix/Refactor LFoD Start Inventory (#5176)

commit f4b5422f66c0f5332cb05998ad0f7731d4a436f3
Author: Remy Jette <remy@remyjette.com>
Date:   Mon Jul 7 13:57:55 2025 -0700

    Factorio: Fix link to world_gen documentation (#5171)

commit d4ebace99f17299c0fa861a1ccad42bdf4e332fe
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Mon Jul 7 13:15:37 2025 -0400

    [Jak and Daxter] Auto Detect Install Path after Game Launcher Update #5152

commit 95e09c8e2a681ecd5666822b04fe7fed3ed9dec1
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Mon Jul 7 16:24:35 2025 +0200

    Core: Take Counter back out of RestrictedUnpickler #5169

commit 4623d59206e88132432b6db74945a717057b2f8a
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Mon Jul 7 15:51:39 2025 +0200

    Core: ensure slot_data and er_hint_info are only base data types (#5144)

    ---------

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

commit e68b1ad42896ce5ec4c0ef0e46a21f0a21ab5cbb
Author: Doug Hoskisson <beauxq@users.noreply.github.com>
Date:   Sun Jul 6 10:22:02 2025 -0700

    CommonClient: fix extra panels added to `main_area_container` (#5151)

commit 072e2ece15429a49dda18898d266c9fa63905205
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Sat Jul 5 22:01:08 2025 +0100

    Docs: 'get_prefill_items' -> 'get_pre_fill_items' (#5167)

commit 11130037fe9a88d8be70a1624c35aea17daab680
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Thu Jul 3 15:08:36 2025 -0400

    Stardew Valley: Fixed luck level requirements for slot machines #5160

    # Conflicts:
    #	worlds/stardew_valley/data/craftable_data.py

commit ba66ef14ccdac88b486d357f9e5dbefb0aced610
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Wed Jul 2 08:14:35 2025 -0400

    Update world api.md (#5149)

commit 8aacc23882c25a276dc03d766c9c3d6d11d65c79
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Sat Jun 28 11:36:09 2025 -0400

    SDV: Add "Desert Transportation" and "Island Transportation" Item Groups (#5143)

commit 03e5fd3dae5a27cddd9fd4d3134d2d19f8d7562b
Author: Jonathan Tan <tanjo3@users.noreply.github.com>
Date:   Sat Jun 28 10:46:37 2025 -0400

    TWW: Fix Swords in Swordless Mode (#5137)

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

commit da52598c0843922d02912a933aeb6aa23833587c
Author: Fly Hyping <brajcan@hotmail.com>
Date:   Fri Jun 27 19:42:35 2025 -0400

    Wargroove: Fix Communication Thread (#5125)

commit 52389731ebef8e0b516059c2597657690d99eeee
Author: Jonathan Tan <tanjo3@users.noreply.github.com>
Date:   Fri Jun 27 18:46:00 2025 -0400

    TWW: Update Preset S7 to S8 (#5138)

commit 21864f6f950d752b3fb8c0411517f5b442708ac4
Author: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>
Date:   Fri Jun 27 16:25:45 2025 -0600

    CVCotM: Fix Advance Collection ROM (#5132)

commit 00f862528083fec98af71a1c8b94120c99469ff1
Author: DJ-lennart <alexander.lt.carlsson@hotmail.com>
Date:   Sat Jun 21 16:31:12 2025 +0200

    Civilization VI: Updated setup and info pages (#5123)

    * Update setup_en.md

    Updated setup instructions for Civilization VI in Archipelago

    * Update en_Civilization VI.md

    Updated info page for Civilization VI in Archipelago

    * Update setup_en.md

commit c34e29c7124a1b66d9e68f0a747780cd8254d61a
Author: James White <james_white_d@hotmail.com>
Date:   Fri Jun 20 21:52:54 2025 +0100

    Pokemon RB: Client: Send bounce messages with current map ID (#5121)

commit e0ae3359f130e85f8c3a0d22dcdd315635d7cb5c
Author: palex00 <32203971+palex00@users.noreply.github.com>
Date:   Fri Jun 20 20:55:49 2025 +0200

    Pokémon RB: Use new link for a new tracker (#5122)

    * Update setup_en.md

    * Update setup_es.md

commit c2666bacd791e70a555e7d7fe1a35818b54c0905
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Fri Jun 20 02:05:52 2025 +1000

    core: Don't attempt to write to the inside of an OSX App Bundle (#4380)

    * core: Frozen OSX should also use Home Directory

    * Use Application Support instead of homedir

    * Suggested changes

commit 4eefd9c3ceff76d35091895308f3097c16c0c6ca
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Thu Jun 19 06:39:26 2025 -0500

    Kivy: swap from the tab carousel to navigation bar  (#4930)

    * implement tabs as NavigationBar

    * update the underline bar with the screen manager

    * remove some unneeded kv

    * remove the underline in favor of a full tab highlight

    * fix insert transitions

    * use on_release instead of on_press

    * minor cleanup

    * add remove_client_tab and add a caller to the NavigationBar for back compat

    * unused imports

    * Update kvui.py

    ---------

    Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
    Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

commit 211456242e0e018bd3356ecca5325862fb654f2d
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Mon Jun 16 12:00:47 2025 -0500

    KDL3: update to gifting protocol 3 and update settings usage (#4814)

    * gift version 3

    * update settings usage

    * that really has just been broken this entire time

    * remove unnecessary print

    * Update client.py

    * fix random flavor handling

    * fix incorrect sender/receiver

    ---------

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

commit 6f244c4661a7aee59f452f61a51e61adb3f856d5
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Mon Jun 16 12:54:08 2025 -0400

    Docs: Update Plando Guide and Make it More User Friendly (#4858)

    * Make plando guide more user friendly.

    * Apply suggestions from code review

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

    * Further updates for review.

    * Clear search box when filtering by type.

    * Forget previous commit name - more code review updates to doc.

    * Move link to yaml tutorial.

    * Replace STS example with Pokemon RB.

    * Use non-key item examples in RB.

    * Rooby's code review updates.

    * Update worlds/generic/docs/plando_en.md

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

    * Update worlds/generic/docs/plando_en.md

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

    * Address some more feedback.

    * Make Factorio example more accurate.

    * Exempt's code review updates (round 4)

    * Exempt's code review updates (round 4 + 1)

    * Update worlds/generic/docs/plando_en.md

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

    * Update worlds/generic/docs/plando_en.md

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

    * Update worlds/generic/docs/plando_en.md

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

    * Update worlds/generic/docs/plando_en.md

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

    ---------

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

commit 47bf6d724b20bb8455f360cc2ddecf82bfcf445c
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Mon Jun 16 10:56:47 2025 -0400

    Minecraft Removal Cleanup (#5118)

commit 5c710ad032eedb6bd79ea2436490423c5a41aee0
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Mon Jun 16 13:36:12 2025 +0100

    Docs: Rework the "Events" Section of `world api.md` (#5012)

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>
    Co-authored-by: qwint <qwint.42@gmail.com>
    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

commit dda5a05cbb37fec368f811242c137817f85525a0
Author: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com>
Date:   Mon Jun 16 14:07:27 2025 +0200

    shapez: Change Links to Shapesanity Cheat Sheet (#5047)

commit e0a63e0290270f117d1575896c0e9ab61eb05cae
Author: Natalie Weizenbaum <nex342@gmail.com>
Date:   Mon Jun 16 05:02:06 2025 -0700

    DS3: Link to the Appropriate .NET Runtime for Proton (#5093)

commit 92466595897a95c5ec984e4c530d0833fb8c8a72
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Mon Jun 16 13:49:30 2025 +0200

    Make sure ladx removes the same copy of the starting item from the itempool that it's placing (#5110)

commit 377cdb84b4114de86ef370103641b3f00a8ababa
Author: digiholic <digikun@gmail.com>
Date:   Mon Jun 16 05:47:55 2025 -0600

    MMBN3: Fixes Generation Errors and General UX Smoothing (#5077)

    Co-authored-by: qwint <qwint.42@gmail.com>

commit 0e759f25fd4a241cbd1a8793ff0a891a2b3bc322
Author: KonoTyran <Kono.Tyran@gmail.com>
Date:   Mon Jun 16 03:31:16 2025 -0700

    Remove Minecraft (#4672)

    * Remove Minecraft

    * remove minecraft

    * remove minecraft

    * elif -> if

    ---------

    Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

commit b408bb4f6eedc797ac693e4a9aacc40b1922a2a7
Author: qwint <qwint.42@gmail.com>
Date:   Sun Jun 15 19:31:12 2025 -0500

    Core: Docstring typo on Region.add_exits (#5089)

    * doc typo

    * Update BaseClasses.py

commit 135647941527b601248b8ba1331a82732a685806
Author: JusticePS <5125765+JusticePS@users.noreply.github.com>
Date:   Sun Jun 15 16:30:45 2025 -0700

    AdventureClient: Replace Utils.get_settings with settings.get_settings #5043

commit ec5b4e704f8167dd262579120a9aa99d746ab04d
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Sat Jun 14 09:28:02 2025 -0400

    Plando Items: Better Warning for Nonexisting Worlds (#5112)

commit aa9e6175108afb16caec2411486e2f1a054ae4a6
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Sat Jun 14 09:27:22 2025 -0400

    DS3: Apply Rules to Non-Randomized Locations (#5106)

commit ecb739ce96716f83d128648d0350df69b5aae7eb
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Sat Jun 14 09:26:58 2025 -0400

    Plando Items: Fix Location Groups Unfolding (#5099)

commit 3b72140435d4d587a60865ea5e325f5b6aa1d950
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Sat Jun 14 09:26:22 2025 -0400

    Shivers: Fix get_pre_fill_items (#5113)

commit 27a67705692e5abafbfc5dbd5753feb81294855c
Author: Louis M <prog@tioui.com>
Date:   Sat Jun 14 07:17:33 2025 -0400

    Aquaria: Fixing open waters urns not breakable with nature forms logic bug (#5072)

    * Fixing open waters urns not breakable with nature forms logic bug

    * Using list in comprehension only when useful

    * Replacing damaging items by a constant

    * Removing comprehension list creating from lambda

commit 2ff611167a4415f2d06b6904434e814cf6595174
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat Jun 14 12:21:25 2025 +0200

    ALTTP: Fix take_any leaving a placed item in the multiworld itempool #5108

commit e83e178b63272d2a1ec96dd2ae04dbae64c3f737
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Fri Jun 13 20:29:23 2025 -0400

    Stardew Valley: Fix 3 Logic Issues (#5094)

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

commit 068a7573737078d413cdd0fe1ea4c94bc2903821
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Fri Jun 13 20:29:06 2025 -0400

    Item Plando: Fix `count` value (#5101)

commit 0ad4527719c60caacbb6b1777b256556c7ad52d9
Author: PoryGone <98504756+PoryGone@users.noreply.github.com>
Date:   Fri Jun 13 16:01:19 2025 -0400

    SA2B: Logic Fixes (#5095)

    - Fixed King Boom Boo being able to appear in multiple boss gates
    - `Final Rush - 16 Animals (Expert)` no longer requires `Sonic - Bounce Bracelet`
    - `Dry Lagoon - 5 (Standard)` now requires `Rouge - Pick Nails`
    - `Sand Ocean - Extra Life Box 2 (Standard/Hard/Expert)` no longer requires `Eggman - Jet Engine`
    - `Security Hall - 8 Animals (Expert)` no longer requires `Rouge - Pick Nails`
    - `Sky Rail - Item Box 8 (Standard)` now requires `Shadow - Air Shoes` and `Shadow - Mystic Melody`
    - `Cosmic Wall - Chao Key 1 (Standard/Hard/Expert)` no longer requires `Eggman - Mystic Melody`
    - `Cannon's Core - Pipe 2 (Expert)` no longer requires `Tails - Booster`
    - `Cannon's Core - Gold Beetle` no longer requires `Tails - Booster` nor `Knuckles - Hammer Gloves`

commit 8c6327d024e6d18503b018b3555c0f24d88b13a6
Author: qwint <qwint.42@gmail.com>
Date:   Fri Jun 13 14:56:09 2025 -0500

    LTTP/SDV: use .name when appropriate in subtests (#5107)

commit aecbb2ab0259e8683dc848b538ac2ab7d5ee1fb9
Author: qwint <qwint.42@gmail.com>
Date:   Fri Jun 13 05:28:58 2025 -0500

    fix saving princess's use of subprocess helpers (#5103)

commit 52b11083fe23a6fdbf01ee4cda1dd2bc97800006
Author: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Date:   Wed Jun 11 15:52:47 2025 -0400

    KH2: Raise Exception for Misusing DonaldGoofyStatsanity Option (#4710)

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

commit a8c87ce54ba68007e5f8f291355ffeeeed408ca1
Author: BadMagic100 <dempsey.sean@outlook.com>
Date:   Mon Jun 9 20:55:40 2025 -0700

    CI: Add GH_REPO environment variable to labeler (#5081)

commit ddb3240591feab473e76b1363fe4b45ff1110610
Author: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Date:   Mon Jun 9 08:58:08 2025 -0400

    KH2: Give warning when client has cached locations (#5000)

    * a

    * disconnect when connect to wrong slot

    * connection to the wrong seed fix

    * seed_name is always none

commit f25ef639f2d127bb991b6bf30913d1da832816c0
Author: qwint <qwint.42@gmail.com>
Date:   Sun Jun 8 17:43:23 2025 -0500

    Launcher: Fix Cli Components when installed to a directory with a space (#5091)

commit ab7d3ce4aadfc647c42c8d4dd0c7aa10f9e0e49d
Author: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com>
Date:   Fri Jun 6 00:05:53 2025 +0200

    shapez: Remove preset unittests #5086

commit 50db922cefbde107dd33d588ce621336b956a397
Author: Jarno <jarnowesthof@gmail.com>
Date:   Thu Jun 5 15:05:00 2025 +0200

    Timespinner: Fixed generation error because of timezone locking (#5084)

    * Fixed generation error because of timezone locking

    * Refactored logic + prevent excluding warps when unchained keys in on

commit a2708edc37ff98e70b58f0f552deb14282f5a7ad
Author: Ehseezed <97066152+Ehseezed@users.noreply.github.com>
Date:   Wed Jun 4 12:51:08 2025 -0500

    Timespinner: Fix Castle Ramparts Region Connection #5082

    Co-authored-by: ehseezed <Ehseezed@users.noreply.github.com>

commit 603a5005e2f5d055f1b66ac5d75c133459240868
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Tue Jun 3 08:49:10 2025 -0400

    DS3: Fix Non-Crow Itemlinking and Mark Aldrich Ruby and Twin Dragon Greatshield As Missable (#4510)

    * Fix Branch (Not Crow)

    * Oops

    * Mark Aldrich Ruby as missable

    * Expand comment

    * Short circuit

    * Mark Twin Dragon Greatshield as missable

    * Add missable cause

commit b4f68bce7671e83e1fd4a358e506705777228eb6
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Tue Jun 3 13:49:44 2025 +0200

    Factorio: revamp args parsing and passing (#5036)

commit a76cec15397efc4758fc1d487fc5cbc97e663d7c
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Tue Jun 3 06:51:06 2025 -0400

    TUNIC: Fix decoupled ER + ladder storage making invalid entrances #5075

commit 694e6bcae36bab4e49c60c3c8f097d2f440a0979
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Tue Jun 3 10:42:37 2025 +0000

    Launcher/Utils: reset LD_LIBRARY_PATH for system EXEs (#5022)

commit b85b18cf5fb5db4dbcbd736ff4a3dafcfeeb0f3b
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Mon Jun 2 16:39:42 2025 +0000

    SoE: remove outdated info from guide (#5064)

    The client does not depend on Animation Frame anymore, so it can be backgrounded.

commit 04c707f8740c25373f090c8f03199d8c56f067de
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Mon Jun 2 17:06:54 2025 +0100

    DKC3: Add missing indirect conditions (#5073)

    A couple of Entrance access rules were checking for being able to reach
    a Location, but a Location first checks for being able to reach its
    parent Region, so it needs to be registered that access to that parent
    Region can give access to the Entrance.

commit 99142fd6625b3bf3ef013bbd3bc1813c5d95923f
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Mon Jun 2 12:01:21 2025 -0400

    Plando Items: Fix count with empty locations/location #5040

commit 0c5cb17d96af6091a5c35f13cc2fc62551679b09
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Mon Jun 2 16:56:11 2025 +0100

    DLCQuest: Add missing indirect conditions (#5074)

    The `Behind Rocks` and `Pickaxe Hard Cave` Entrances require being able
    to reach the `Cut Content` region, but no indirect conditions were being
    registered for this region.

    The `set_lfod_self_obtained_items_rules` function was also using a
    `world` parameter that was actually expecting a `MultiWorld` instance,
    so I have renamed it for clarity and updated the function to use
    `world.get_entrance()` rather than `multiworld.get_entrance()`.

    Much of the rest of the file passes `MultiWorld` instances to `world`
    parameters, but fixing all of these is out of the scope of the changes
    in this patch, so has not been included.

commit cabde313b563990171c39bf2b644bf8f779df81b
Author: qwint <qwint.42@gmail.com>
Date:   Mon Jun 2 10:53:57 2025 -0500

    WebHost: Use expected APPlayerContainer manifest location directly when ingesting them #4754

commit 8f68bb342dcd9e4a38f41bbeb605a6e5c81319a4
Author: qwint <qwint.42@gmail.com>
Date:   Mon Jun 2 10:53:18 2025 -0500

    Core and Various Worlds: define patch_file_ending to APPlayerContainer (#5058)

    * move to playercontainer

    * moves patch_file_ending handling to APPlayerContainer and updates the worlds using it to define their extensions

    * give oot a patch_file_ending as well

commit fab75d3a32ee16198b7bc67215dcef252e726250
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Sat May 31 07:57:42 2025 -0400

    Stardew Valley: Fix Wizard Tower and Entrance Randomizer Softlocks (#4631)

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

commit d19bf98dc4d977372759e73bd97356f3c3cd08c4
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Fri May 30 10:31:00 2025 -0400

    Jak and Daxter: Post-merge Polish (#5031)

    - Cleans up a few missed references in the setup guide.
    - Refactors Options class to use metaclass and decorators to enforce friendly limits on multiple levels.
      - Templates generated from the website, even ones with `random` should not fail generation because the website will only allow values inside the friendly limits.
      - _Uploaded_ yamls to the website with `random`, should also now respect friendly limits without the need for `random-range` shenanigans.
      - _Uploaded_ yamls to the website, or yamls that are used to generate locally, that have hard-defined values outside the friendly limits, will be clamped/dragged/massaged into those limits (with logged warnings).
    - Removed an early completion goal that was playing havoc with fill. Not enough people seem to use this goal, so its loss will not be mourned.

commit b0f41c0360bdd7621d6733204a03448dc82f42aa
Author: sgrunt <smelenchuk@gmail.com>
Date:   Wed May 28 18:40:24 2025 -0600

    Timespinner: Fix Connection Logic from Maw Cave Entrance to Maw (#4831)

    Co-authored-by: sgrunt <sgrunt1987@gmail.com>

commit 6ebd60feaa4f70ca73ba473c1e40186e7383e901
Author: sgrunt <smelenchuk@gmail.com>
Date:   Wed May 28 18:37:39 2025 -0600

    Timespinner: Fix Logic Error with Risky Warp to Emperor's Tower and Lab Access (#4784)

    Co-authored-by: sgrunt <sgrunt1987@gmail.com>

commit dd6007b3094e4cf3be4d13dc55b9ceb692e23123
Author: Jonathan Tan <tanjo3@users.noreply.github.com>
Date:   Wed May 28 18:27:03 2025 -0400

    TWW: Remove unnecessary items from slot data (#5045)

commit fde203379d9a844da8cea2bd620a0b48d9765429
Author: Ehseezed <97066152+Ehseezed@users.noreply.github.com>
Date:   Wed May 28 14:04:57 2025 -0500

    Timespinner: Fix Logic (#4803)

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

commit fcb3efee01b2bdad2d29e099e8de9e19c85e95ad
Author: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>
Date:   Wed May 28 08:47:24 2025 -0600

    CVCotM: Add Nerf Roc Wing to Slot Data and HoD Max Ups to `other_game_item_appearances` (#5051)

commit 19a21099ed11fa0fb92fa46606e62a8ac8dbdd43
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Tue May 27 16:21:43 2025 +0000

    Webhost: update Flask to 3.1.1 (#5052)

commit 20ca7e71c765899007756490669b041878cc4e55
Author: Jonathan Tan <tanjo3@users.noreply.github.com>
Date:   Tue May 27 01:57:20 2025 -0400

    TWW: Update patch class (#5046)

commit 002202ff5fa9ced9fd100fc394f22323cc5efe73
Author: ScootyPuffJr1 <77215594+ScootyPuffJr1@users.noreply.github.com>
Date:   Mon May 26 03:25:39 2025 -0400

    Update OOT Guides (#5041)

    * Update OOT Guides

    * Minor update per review

commit 32487137e81d23139820aa2a6d3fd86d6ac104f5
Author: FlitPix <8645405+FlitPix@users.noreply.github.com>
Date:   Sun May 25 17:17:30 2025 -0400

    Core: Add descriptions to Components (#4849)

    * Add descriptions to components

    * Adhere to style guide

    * Tweak BHC wording

    * Trim Open Patch description

    * Update text client description for consistency

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    * Remove newlines

    ---------

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

commit f327ab30a653acdd56376f53ee54577c9e0e06ed
Author: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>
Date:   Sun May 25 03:20:25 2025 -0600

    CV64: Allow Holding Z to Use the Regular Shimmy Speed (#4730)

    * Add the shimmy modifier hack.

    * Update the Increase Shimmy Speed option description.

    ---------

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

commit e7545cbc28d41e781a996a9fbe28dcf4c683174c
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Sat May 24 17:59:55 2025 -0400

    SDV: Fixed Region for two Parrot Locations (#5042)

commit eba757d2cd468182f4d0500ab87c45d379b225d2
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat May 24 23:02:27 2025 +0200

    Raft: Implement get_filler_item_name and refactor filler item code a bit (#4782)

    * refactor filler item creation for Raft, implement get_filler_item_name

    * wrong indent

    * Update worlds/raft/__init__.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>

commit 4119763e23f948ccf9f2d2c7658456d33b953eb4
Author: Star Rauchenberger <fefferburbia@gmail.com>
Date:   Sat May 24 09:35:06 2025 -0400

    Lingo: Fix The Bearer's Pilgrimage Logic (#5005)

commit e830a6d6f56a5c97603c86599dbd9726aeaaf51b
Author: Jonathan Tan <tanjo3@users.noreply.github.com>
Date:   Sat May 24 09:17:54 2025 -0400

    TWW: Only add Filler for Excluded Locations Which are Progress Locations (#4993)

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

commit 704cd97f211a44b3a792f11a906f523da8554627
Author: Bryce Wilson <gyroscope15@gmail.com>
Date:   Fri May 23 22:33:01 2025 -0700

    BizHawkClient: Fix script to list all cores instead of explicit mapping (#5033)

commit 47a0dd696f9dd292788be284012e920c1b35067d
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Sat May 24 01:28:25 2025 -0400

    Stardew Valley: Added moss to statue of blessings recipe (#5038)

commit c64791e3a8b0c51378182ad12da8d6f2a72e132e
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Sat May 24 01:15:41 2025 -0400

    Stardew Valley: Replace current naive entrance rando with GER (#4624)

commit e82d50a3c5cdc67091a42059f922520dec691f9c
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Fri May 23 17:13:34 2025 -0500

    The Messenger: more generous portal validation (#5011)

    * The Messenger: more generous portal validation

    * remove the while and just go for 20 attempts. hopefully that's enough

commit 0a7aa9e3e2a1a9aea371a471f6102e554a042bd4
Author: qwint <qwint.42@gmail.com>
Date:   Fri May 23 17:02:50 2025 -0500

    Launcher: skip launcher gui when opening webhost list with no game handlers (#4888)

    * calc relevant components before opening the launcher app so it can be skipped for text client only uri launches

    * generically passthrough the url arg

    * Apply suggestions from code review

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

    * flip if not else

    * Update Launcher.py

    * pluralize

    ---------

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

commit 13ca134d125d573af1394512a0ef4f78d60f0e7e
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Fri May 23 23:47:21 2025 +0200

    Core: Fix a playthrough crash when a world uses "placement based logic" (#3915)

    * Fix playthrough

    * oops

    * oops 2

    * I don't like this

    * that should do it

    * Update BaseClasses.py

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

    * Update BaseClasses.py

    ---------

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

commit 8671e9a39150d1efa41e04e12f00edecf916bb28
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Fri May 23 15:52:47 2025 -0400

    Stardew Valley: Make animal catalog logically year 2 (#5032)

commit a7de89f45cadb885ee01a6216af836a34bc8b843
Author: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com>
Date:   Fri May 23 21:41:27 2025 +0200

    shapez: Add game to README and CODEOWNERS (#5034)

    * Aktualisieren von README.md

    * Aktualisieren von CODEOWNERS

commit e9f51e330211743f52d20a9a1b570da8db4db6af
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Fri May 23 19:26:37 2025 +0000

    Linux: avoid adding cwd to LD_LIBRARY_PATH (#5029)

    When LD_LIBRARY_PATH is not set, the old code would also add
    the current working directory to LD_LIBRARY_PATH, which is bad.

commit 5491f8c4598b93c179761014c5d4d6fc7ee3ed62
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Thu May 22 21:28:56 2025 -0500

    Core: Make `get_all_state` Sweeping Optional (#4828)

commit de71677208f43730ce62191290901759363e407c
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Thu May 22 21:30:30 2025 +0200

    Core: only raise min_client_version for new gens (#4896)

commit 653ee2b625cc64461589abe3c836e87f3ca21bc3
Author: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Date:   Thu May 22 15:00:30 2025 -0400

    Docs: Update Snippets to Modern Type Hints (#4987)

commit 62694b1ce77f881e0b3915358d1ab9867502d7fc
Author: qwint <qwint.42@gmail.com>
Date:   Thu May 22 10:37:23 2025 -0500

    Launcher: Fix on File Drop Error Message (#5026)

commit 9c0ad2b825ac3f95216a34b529291e3a1c02b8c1
Author: Rosalie <61372066+Rosalie-A@users.noreply.github.com>
Date:   Thu May 22 11:35:38 2025 -0400

    FF1: Bizhawk Client and APWorld Support (#4448)

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

commit 88b529593f655084b64040b731ad57a93a243e5a
Author: qwint <qwint.42@gmail.com>
Date:   Thu May 22 10:08:15 2025 -0500

    CommonClient: Add docs for Attributes (#5003)

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

commit 0351698ef71f3aa7b8fe178a6517c69e93e49053
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Thu May 22 11:07:57 2025 -0400

    SDV: Fixed Import bases (#5025)

commit 984df75f837044aa55168816109ea284efba52f2
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Thu May 22 10:24:04 2025 -0400

    Stardew Valley: Move and Rework Monstersanity Tests (#4911)

commit 402a8fb967d1306555da2c9b252781a10bc7b820
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Thu May 22 15:16:16 2025 +0100

    AHiT: Add Dweller Mask Requirement to Normal Logic Rush Hour (#4499)

commit 45e3027f81fc0eba4ccd06b5e1ed1f3a1597a38d
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Thu May 22 09:06:44 2025 -0500

    The Messenger: Add a Component Icon and Description (#4850)

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

commit 1d655a07cdffb6c58715ec1b97837a8be5bf8fab
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Thu May 22 08:46:33 2025 -0500

    Core: Add State add/remove/set Helpers (#4845)

commit c5e768ffe32fcea48ecfc81adca330e4a0b11d38
Author: FlitPix <8645405+FlitPix@users.noreply.github.com>
Date:   Thu May 22 09:42:54 2025 -0400

    Minecraft: Stop Using Utils.get_options (#4879)

commit 8cc6f1063475433e80f62107b95bb58769e3ed6b
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Thu May 22 08:40:50 2025 -0500

    The Messenger: Swap Options Docstrings to use rst, Add Option Groups (#4913)

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

commit aeac83d643aaa91c2ab310414c959447d2be5cda
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Thu May 22 08:29:24 2025 -0500

    Generate: Don't Force Player Name for Weights Files (#4943)

commit 95efcf6803c7d60e0994e15dd18d1f00e9ff31a7
Author: qwint <qwint.42@gmail.com>
Date:   Thu May 22 08:27:18 2025 -0500

    Tests: Create CollectionState after MultiWorld.worlds (#4949)

commit 44a78cc821002a4b59feb3ffc9a195a8e28d5143
Author: josephwhite <22449090+josephwhite@users.noreply.github.com>
Date:   Thu May 22 09:26:28 2025 -0400

    OoT: Stop Using Utils.get_options (#4957)

commit e0918a7a89513fc13ad648b20c1cdf9a2502fd19
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Thu May 22 09:24:50 2025 -0400

    TUNIC: Move some UT stuff out of init, put in UT poptracker integration support (#4967)

commit b52310f641a07a579169ce0ce3b07e7f26f946cb
Author: qwint <qwint.42@gmail.com>
Date:   Thu May 22 08:12:28 2025 -0500

    Wargroove: Cleanup `script_name` Component in `LauncherComponents` (#5021)

commit e3219ba45253132b932c1bad93d9d567d85e91c6
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Thu May 22 02:47:48 2025 -0500

    WebHost: allow APPlayerContainers from "custom" worlds to be displayed in rooms (#4981)

    Gives WebHost the ability to verify that a patch file is an APPlayerContainer (defined by #4331 as a APContainer containing the "player" field), and allowed it to display any patch file that it can verify is an APPlayerContainer.

commit 7079c17a0f761935b464e4949b0f08aab2535e00
Author: Fly Hyping <brajcan@hotmail.com>
Date:   Thu May 22 03:11:34 2025 -0400

    Wargroove: apworld doc fixes (#5023)

commit 3b8450036abf1861cf20129978e291f0e2baf9a3
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Wed May 21 23:22:55 2025 +0000

    core: don't reconfigure stdout if it's fake (#5020)

commit defdf34e609ea91a9ce7373aa3dea4771d050ec0
Author: Fly Hyping <brajcan@hotmail.com>
Date:   Wed May 21 19:00:45 2025 -0400

    Wargroove: apworld (#4764)

    - Players and AI can sacrifice their own units and upload them to the multiworld.
    - Players and AI can summon random units from the multiworld.
    - Has 4 new separate options for how many sacrifices and summons either the player or the AI can make per level attempt.
    - New /sacrifice_summon command to toggle sacrifices and summons on/off. Useful if the AI makes a level impossible with their summons.
    - Linux Support.
    - Is an apworld now.

    ---------

    Co-authored-by: Raspberry Floof <raspberry@rosenthalcastle.org>
    Co-authored-by: KScl <ks@rosenthalcastle.org>
    Co-authored-by: Abigail Fox <Raspberryfloof@users.noreply.github.com>
    Co-authored-by: qwint <qwint.42@gmail.com>
    Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

commit 6827368e60c1a3ef95002ea1b43b2a0f643dc8d4
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Thu May 22 00:45:49 2025 +0200

    Core: generate templates faster and "cleaner" (#5019)

commit a409167f6479caa4b896daa4a9fbdee71ae1d0ae
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Thu May 22 04:27:03 2025 +1000

    core: Reconfigure stdout to utf8 (#5017)

commit a076b9257d3c15da7f7a96ae6b6aa0c2684244d7
Author: Natalie Weizenbaum <nex342@gmail.com>
Date:   Wed May 21 09:59:04 2025 -0700

    DS3: Don't make unrandomized items into events (#5018)

    The DS3 static randomizer uses the relative ordering of location names
    to map between Archipelago's notion of location IDs and the static
    randomizer's. Treating unrandomized locations as excluded can break this
    behavior by removing some locations from the list, causing further
    locations to be incorrectly assigned.

    The only reason this wasn't a bigger problem up to this point was that
    location order only matters on a per-region and per-item basis. That
    means this only causes problems in practice when a single region has
    multiple locations with the same default item, and some of those
    locations are randomized while others are not. Since exclusions (and
    thus randomization) are usually done based on item types, we managed to
    dodge this bullet for a long time.

commit 7e772b4ee9462045b0b0aff54e5fe7431ec4067f
Author: Sunny Bat <SunnyBat@users.noreply.github.com>
Date:   Wed May 21 09:12:37 2025 -0700

    Raft: Small Raft doc update, bugfix (#5008)

    * Small doc touchups

    * Advanced Scarecrow progressive

    * Add period to doc

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

    ---------

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

commit 955a86803fe42006a3fd4d2e3915183a849a5df2
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date:   Wed May 21 11:02:30 2025 -0400

    Super Mario Land 2: Implement New Game (#2730)

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
    Co-authored-by: alchav <alchav@jalchavware.com>

commit d5bacaba639a9fc14a8148ea005112a76c700b56
Author: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com>
Date:   Wed May 21 14:30:39 2025 +0200

    shapez: Implement New Game (#3960)

    Adds shapez as a supported game in AP.

commit 3069deb019cf06a21af4625224be78d5118d61c6
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Wed May 21 08:12:27 2025 -0400

    Jak and Daxter: Implement New Game (#3291)

    * Jak 1: Initial commit: Cell Locations, Items, and Regions modeled.

    * Jak 1: Wrote Regions, Rules, init. Untested.

    * Jak 1: Fixed mistakes, need better understanding of Entrances.

    * Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated.

    * Jak 1: Add Scout Fly Locations, code and style cleanup.

    * Jak 1: Add Scout Flies to Regions.

    * Jak 1: Add version info.

    * Jak 1: Reduced code smell.

    * Jak 1: Fixed UT bugs, added Free The Sages as Locations.

    * Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances.

    * Jak 1: Add some one-ways, adjust scout fly offset.

    * Jak 1: Found Scout Fly ID's for first 4 maps.

    * Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse.

    * Jak 1: Fixed a few things. Four maps to go.

    * Jak 1: Last of the scout flies mapped!

    * Jak 1: simplify citadel sages logic.

    * Jak 1: WebWorld setup, some documentation.

    * Jak 1: Initial checkin of Client. Removed the colon from the game name.

    * Jak 1: Refactored client into components, working on async communication between the client and the game.

    * Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory.

    * Jak 1: There's magic in the air...

    * Jak 1: Fixed bug translating scout fly ID's.

    * Jak 1: Make the REPL a little more verbose, easier to debug.

    * Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't.

    * Jak 1: Update Documentation.

    * Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops.

    * Jak 1: Simplified startup process, updated docs, prayed.

    * Jak 1: quick fix to settings.

    * Jak and Daxter: Implement New Game (#1)

    * Jak 1: Initial commit: Cell Locations, Items, and Regions modeled.

    * Jak 1: Wrote Regions, Rules, init. Untested.

    * Jak 1: Fixed mistakes, need better understanding of Entrances.

    * Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated.

    * Jak 1: Add Scout Fly Locations, code and style cleanup.

    * Jak 1: Add Scout Flies to Regions.

    * Jak 1: Add version info.

    * Jak 1: Reduced code smell.

    * Jak 1: Fixed UT bugs, added Free The Sages as Locations.

    * Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances.

    * Jak 1: Add some one-ways, adjust scout fly offset.

    * Jak 1: Found Scout Fly ID's for first 4 maps.

    * Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse.

    * Jak 1: Fixed a few things. Four maps to go.

    * Jak 1: Last of the scout flies mapped!

    * Jak 1: simplify citadel sages logic.

    * Jak 1: WebWorld setup, some documentation.

    * Jak 1: Initial checkin of Client. Removed the colon from the game name.

    * Jak 1: Refactored client into components, working on async communication between the client and the game.

    * Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory.

    * Jak 1: There's magic in the air...

    * Jak 1: Fixed bug translating scout fly ID's.

    * Jak 1: Make the REPL a little more verbose, easier to debug.

    * Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't.

    * Jak 1: Update Documentation.

    * Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops.

    * Jak 1: Simplified startup process, updated docs, prayed.

    * Jak 1: quick fix to settings.

    * Jak and Daxter: Genericize Items, Update Scout Fly logic, Add Victory Condition. (#3)

    * Jak 1: Update to 0.4.6. Decouple locations from items, support filler items.

    * Jak 1: Total revamp of Items. This is where everything broke.

    * Jak 1: Decouple 7 scout fly checks from normal checks, update regions/rules for orb counts/traders.

    * Jak 1: correct regions/rules, account for sequential oracle/miner locations.

    * Jak 1: make nicer strings.

    * Jak 1: Add logic for finished game. First full run complete!

    * Jak 1: update group names.

    * Jak and Daxter - Gondola, Pontoons, Rules, Regions, and Client Update

    * Jak 1: Overhaul of regions, rules, and special locations. Updated game info page.

    * Jak 1: Preparations for Alpha. Reintroducing automatic startup in client. Updating docs, readme, codeowners.

    * Alpha Updates (#15)

    * Jak 1: Consolidate client into apworld, create launcher icon, improve setup docs.

    * Jak 1: Update setup guide.

    * Jak 1: Load title screen, save states of in/outboxes.

    * Logging Update (#16)

    * Jak 1: Separate info and debug logs.

    * Jak 1: Update world info to refer to Archipelago Options menu.

    * Deathlink (#18)

    * Jak 1: Implement Deathlink. TODO: make it optional...

    * Jak 1: Issue a proper send-event for deathlink deaths.

    * Jak 1: Added cause of death to deathlink, fixed typo.

    * Jak 1: Make Deathlink toggleable.

    * Jak 1: Added player name to death text, added zoomer/flut/fishing text, simplified GOAL call for deathlink.

    * Jak 1: Fix death text in client logger.

    * Move Randomizer (#26)

    * Finally remove debug-segment text, update Python imports to relative paths.

    * HUGE refactor to Regions/Rules to support move rando, first hub area coded.

    * More refactoring.

    * Another refactor - may squash.

    * Fix some Rules, reuse some code by returning key regions from build_regions.

    * More regions added. A couple of TODOs.

    * Fixed trade logic, added LPC regions.

    * Added Spider, Snowy, Boggy. Fixed Misty's orbs.

    * Fix circular import, assert orb counts per level, fix a few naming errors.

    * Citadel added, missing locs and connections fixed. First move rando seed generated.

    * Add Move Rando to Options class.

    * Fixed rules for prerequisite moves.

    * Implement client functionality for move rando, add blurbs to game info page.

    * Fix wrong address for cache checks.

    * Fix byte alignment of offsets, refactor read_memory for better code reuse.

    * Refactor memory offsets and add some unit tests.

    * Make green eco the filler item, also define a maximum ID. Fix Boggy tether locations.

    * Move rando fixes (#29)

    * Fix virtual regions in Snowy. Fix some GMC problems.

    * Fix Deathlink on sunken slides.

    * Removed unncessary code causing build failure.

    * Orbsanity (#32)

    * My big dumb shortcut: a 2000 item array.

    * A better idea: bundle orbs as a numerical option and make array variable size.

    * Have Item/Region generation respect the chosen Orbsanity bundle size. Fix trade logic.

    * Separate Global/Local Orbsanity options. TODO - re-introduce orb factory for per-level option.

    * Per-level Orbsanity implemented w/ orb bundle factory.

    * Implement Orbsanity for client, fix some things up for regions.

    * Fix location name/id mappings.

    * Fix client orb collection on connection.

    * Fix minor Deathlink bug, add Update instructions.

    * Finishing Touches (#36)

    * Set up connector level thresholds, completion goal choices.

    * Send AP sender/recipient info to game via client.

    * Slight refactors.

    * Refactor option checking, add DataStorage handling of traded orbs.

    * Update instructions to change order of load/connect.

    * Add Option check to ensure enough Locations exist for Cell Count thresholds. Fix Final Door region.

    * Need some height move to get LPC sunken chamber cell.

    * Rename completion_condition to jak_completion_condition (#41)

    * The Afterparty (#42)

    * Fixes to Jak client, rules, options, and more.

    * Post-rebase fixes.

    * Remove orbsanity reset code, optimize game text in client.

    * More game text optimization.

    * Added more specific troubleshooting/setup instructions.

    * Add known issue about large releases taking time. (Dodge 6,666th commit.)

    * Remove "Bundle of", Add location name groups, set better default RootDirectory for new players.

    * Make orb trade amounts configurable, make orbsanity defaults more reasonable.

    * Add HUD info to doc.

    * Exempt's Code Review Updates (#43)

    * Round 1 of code review updates, the easy stuff.

    * Factor options checking away from region/rule creation.

    * Code review updates round 2, more complex stuff.

    * Code review updates round 3: the mental health annihilator

    * Code review updates part 4: redemption.

    * More code review feedback, simplifying code, etc.

    * Added a host.yaml option to override friendly limits, plus a couple of code review updates.

    * Added singleplayer limits, player names to enforcement rules.

    * Updated friendly limits to be more strict, optimized recalculate logic.

    * Today's the big day Jak: updates docs for mod support in OpenGOAL Launcher

    * Rearranged and clarified some instructions, ADDED PATH-SPACE FIX TO CLIENT.

    * Fix deathlink reset stalls on a busy client. (#47)

    * Jak & Daxter Client : queue game text messages to get items faster during release (#48)

    * queue game text messages to write them during the main_tick function and empty the message queue faster during release

    * wrap comment for code style character limit

    Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

    * remove useless blank line

    Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

    * whitespace code style

    Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

    * Move JsonMessageData dataclass outside of ReplClient class for code clarity

    ---------

    Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

    * Item Classifications (and REPL fixes) (#49)

    * Changes to item classifications

    * Bugfixes to power cell thresholds.

    * Fix bugs in item_type_helper.

    * Refactor 100 cell door to pass unit tests.

    * Quick fix to ReplClient.

    * Not so quick fix to ReplClient.

    * Display friendly limits in options tooltips.

    * Use math.ceil like a normal person.

    * Missed a space.

    * Fix non-accessibility due to bad orb calculation.

    * Updated documentation.

    * More Options, More Docs, More Tests (#51)

    * Reorder cell counts, require punch for Klaww.

    * Friendlier friendly friendlies.

    * Removed custom_worlds references from docs/setup guide, focused OpenGOAL Launcher language.

    * Increased breadth of unit tests.

    * Clean imports of unit tests.

    * Create OptionGroups.

    * Fix region rule bug with Punch for Klaww.

    * Include Punch For Klaww in slot data.

    * Update worlds/jakanddaxter/__init__.py

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    * Temper and Harden Text Client (#52)

    * Provide config path so OpenGOAL can use mod-specific saves and settings.

    * Add versioning to MemoryReader. Harden the client against user errors.

    * Updated comments.

    * Add Deathlink as a "statement of intent" to the YAML. Small updates to client.

    * Revert deathlink changes.

    * Update error message.

    * Added color markup to log messages printed in text client.

    * Separate loggers by agent, write markup to GUI and non-markup to disk simultaneously.

    * Refactor MemoryReader callbacks from main_tick to constructor.

    * Make callback names more... informative.

    * Give users explicit instructions in error messages.

    * Stellar Messaging (#54)

    * Use new ap-messenger functions for text writing.

    * Remove Powershell requirement, bump memory version to 3.

    * Error message update w/ instructions for game crash.

    * Create no console window for gk.

    * ISO Data Enhancement (#58)

    * Add iso-path as argument to GOAL compiler.

    # Conflicts:
    #	worlds/jakanddaxter/Client.py

    * More resilient handling of iso_path.

    * Fixed scout fly ID mismatches.

    * Corrected iso_data subpath.

    * Update memory version to 4.

    * Docs update for iso_data.

    * Auto Detect OpenGOAL Install (#63)

    * Auto detect OpenGOAL install path. Also fix Deathlink on server connection.

    * Updated docs, add instructions to error messages.

    * Slight tweak to error text.

    * J&D : add per region location groups (#64)

    * add per region power cells location group

    * add per region scout flies location group

    * add per zone orb bundle groups
    (I'm not particularly happy about this code, but I figured doing it this way was the point of least friction/duplication)

    * guess who forgot 9 very important characters in each line of the last commit

    * Rearrange location group names, quick fix to client error handling.

    * Fix pycharm warnings.

    * Fix more pycharm warnings.

    * Light cleanup: fix icons, add bug report page, remove py 3.8 code.

    * Update worlds/jakanddaxter/Options.py

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

    * Update worlds/jakanddaxter/Options.py

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

    * Update worlds/jakanddaxter/Options.py

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

    * Update worlds/jakanddaxter/Options.py

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

    * Code review updates on comments, tooltips, and type hints.

    * Update type hint for lists in regions.

    * Missed todo removal.

    * More type hint updates.

    * Small region updates for location accessibility, small updates to world guide and README.md.

    * Add GMC scout fly location group.

    * Improved sanitization of game text.

    * Traps 2 (#70)

    * Add trap items, relevant options, and citadel orb caches.

    * Update REPL to send traps to game.

    * Fix item counter.

    * Allow player to select which traps to use.

    * Fix host.yaml doc strings, ap-setup-options typing, bump memory version to 5.

    * Alter some trap names.

    * Update world doc.

    * Add health trap.

    * Added 3 more trap types.

    * Protect against empty trap list.

    * Reword traps paragraph in world doc.

    * Another update to trap paragraph.

    * Concisify trap option docstring.

    * Timestamp on game log file.

    * Update client to handle waiting on title screen.

    * Send slot name and seed to game.

    * Use self.random instead.

    * Update setup doc for new title screen.

    * Quick clarification of orb caches in world doc.

    * Sanitize slot info earlier.

    * Added to and improved unit tests.

    * Light cleanup on world.

    * Optimizations to movement rules, docs: known issues update.

    * Quick fixes for beta 0.5.0 release: template options and LPC logic.

    * Quick fix to spoiler counts.

    * Reorganize world guide for faster navigation.

    * Fix links.

    * Update HUD section.

    * Found a way to render apostrophes in item names.

    * March Refactors (#77)

    * Reorg imports, small fix to Rock Village movement.

    * Fix wait-on-title message never going to ready message.

    * Colorama init fix.

    * Swap trap list for a dictionary of trap weights.

    * The more laws, the less justice.

    * Quick readability update.

    * Have memory reader provide instructions for slow booting games.

    * Revert some things.

    * Update setup_en.md

    * Update HUD mode lingo for combined msgs.

    * Remade launcher icon, sized correctly.

    * I don't know why I can't be satisfied with things.

    * Apply suggestions from Scipio

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    * Properly use the settings API instead of Utils.

    * Newline on requirements.txt.

    * Add __init__ files for frozen builds.

    * Replace an ap_inform function with a CommonClient built-in.

    * Resize icon to match kivymd expected size.

    * First round of Treble code reviews.

    * Second round of Treble code reviews.

    * Third round of Treble code reviews.

    * Missed an unncessary if condition.

    * Missed unnecessary comments.

    * Fourth round of Treble code reviews.

    * Switch trap dictionary to OptionCounter.

    * Use existing slot name/seed from network protocol.

    * Violet code review updates.

    * Violet code review updates part 2.

    * Refactor to avoid floating imports (Violet part 3).

    * Found a few more valid characters for messaging.

    * Move tests out of init, add colon to game name (now that it's safe).

    * But don't include those chars for file text.

    * Implement Vi suggestion on webhost-capable friendly limits.

    * Revert "Implement Vi suggestion on webhost-capable friendly limits."

    This reverts commit 2d012b7f4a9a4c13985ecd7303bb1fc646831c86.

    * Rename all files for PEP8.

    * Refactor how maximums work on webhost.

    * Fix rogue UT.

    * Don't rush.

    * Fix client post-PEP8.

    ---------

    Co-authored-by: Justus Lind <DeamonHunter@users.noreply.github.com>
    Co-authored-by: Romain BERNARD <30secondstodraw@gmail.com>
    Co-authored-by: Scipio Wright <scipiowright@gmail.com>
    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

commit 7f4bf71807f7b6fc2fb70082abeff4376b1a0e34
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Wed May 21 14:12:00 2025 +0200

    Adventure: Update AdventureDeltaPatch.read_contents to return the manifest as required by #4331 (#5016)

commit f3e00b6d62ec773a35a1abdc867a2d95fb546d43
Author: Doug Hoskisson <beauxq@users.noreply.github.com>
Date:   Tue May 20 16:48:24 2025 -0700

    Zillion: fix `read_contents` to be compatible with base class (#5015)

commit feef0f484d2c5851bbbcabfe9e8a1a3cb2965aef
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Wed May 21 00:52:00 2025 +0200

    Core: disable worlds_disabled (#5014)

commit 9adbd4031f74ab5066e2993bdc317b0466cc8c25
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Tue May 20 23:55:16 2025 +0200

    Core: prepare worlds.Files for APWorldContainer (#4331)

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

commit e0d31010664cc03e24900ccd7f4216c69647feac
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Tue May 20 20:23:44 2025 +0100

    Core: Remove redundant reachable location counting in swap (#4990)

    `prev_state` starts off as a copy of `swap_state` and then `swap_state`
    collects `item_to_place`. Collecting an item must never reduce
    accessibility (otherwise generation breaks horribly), so it is
    guaranteed that `swap_state` will always be able to reach at least as
    many locations as `prev_state`, so `new_loc_count >= prev_loc_count` is
    always `True`.

    As a sideeffect of this change, this fixes generation of Pokemon Emerald
    with locally shuffled Badges/HMs when there are worlds with unconnected
    entrances present in the multiworld e.g. KH1. This is because this
    location counting did not respect `single_player_placement=True` and
    counted reachable locations across the entire multiworld.

    Fixes #4834 as a sideeffect of removing the redundant code.

commit 485387ebbe93daa2bb8435568bcb8f7145a6d5ac
Author: SunCat <suncat.game@ya.ru>
Date:   Tue May 20 21:12:13 2025 +0300

    ChecksFinder: Update setup guide (#4973)

    * Update setup_en.md

    * Update worlds/checksfinder/docs/setup_en.md

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    * Update worlds/checksfinder/docs/setup_en.md

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    * Update worlds/checksfinder/docs/setup_en.md

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    ---------

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

commit 9ac628f020bfa5999ce03208d8dcaa0528e4137c
Author: Seldom <38388947+Seldom-SE@users.noreply.github.com>
Date:   Tue May 20 11:11:44 2025 -0700

    Terraria: remove 1.4.3-specific docs #5013

commit 07664c4d543431676ce24844a0abd44b9e6bf31b
Author: PoryGone <98504756+PoryGone@users.noreply.github.com>
Date:   Mon May 19 18:48:31 2025 -0400

    SA2B: Logic Fixes (#5009)

    - Fixes Shadow's mission count being set by Sonic's mission count option
    - Fixes one small logic error on `Security Hall - 5` on Hard Logic difficulty
    - Removes stray character that was probably harmless

commit d3dbdb4491fa2c6b03c6ba45f6a893478b9c3f8a
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Sun May 18 18:08:39 2025 -0500

    Kivy: Add a button prompt box (#3470)

    * Kivy: Add a button prompt box

    * auto format the buttons to display 2 per row to look nicer

    * update to kivymd

    * have the uri popup use the new API

    * have messenger use the new API

    * make the buttonprompt import even more lazy

    * messenger needs to be lazy too

    * make the buttons take up the full dialog width

    ---------

    Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

commit 90ee9ffe367a8766bea9b685ac5bdf6e43ee1f83
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Sat May 17 09:20:53 2025 -0400

    Stardew Valley: Remove Crab Pot Requirement for Help Wanted Fishing (#4985)

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

commit 15e6383aadc27eba861ab5391e3facb2f953881b
Author: el-u <109771707+el-u@users.noreply.github.com>
Date:   Thu May 15 19:58:10 2025 +0200

    lufia2ac: rearrange tests to comply with new conventions (#5001)

commit 2a0d0b4224eb818f83d0426f7c042a334608b41b
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Wed May 14 07:55:45 2025 -0400

    Noita: Modernization Refactor (#4980)

commit 02fd75c018b7172ddad306a2851af482a753cfef
Author: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Date:   Wed May 14 07:40:38 2025 -0400

    Core: Update Some Outdated Typing (#4986)

commit a87fec0cbd682148b7ee1aad84bea2552070af14
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Wed May 14 07:27:15 2025 -0400

    SDV: Add Missing Marriage Requirement for Spouse Stardrop (#4988)

commit 11842d396ab11ca5099a8f071c38e004438eeae7
Author: Natalie Weizenbaum <nex342@gmail.com>
Date:   Wed May 14 04:23:12 2025 -0700

    DS3: Fix the Name of "Red and White Round Shield" (#4994)

    This item name is unusual in that it loses the word "round" when it's
    infused, *and* the only guaranteed drop in the base game is the infused
    "Blessed Red and White Round Shield +1". But since we're just listing
    the uninfused version, we should use the uninfused name.

commit 72854cde44dff707109ad66e489fa100e7db18ee
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Wed May 14 12:21:40 2025 +0100

    Docs: Add a "Missable Locations" Question to apworld FAQ (#4965)

    * Docs: add a "missable locations" question to apworld_dev_faq.md

    Basically turning the conversation at https://discord.com/channels/731205301247803413/1214608557077700720/1368996789260128388 into a FAQ entry.

    * feedback

    * qwint feedback

    * Update docs/apworld_dev_faq.md

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

    ---------

    Co-authored-by: Scipio Wright <scipiowright@gmail.com>

commit b71c8005e7b38e42fa76b27869b7b1862de21886
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Wed May 14 05:18:36 2025 -0600

    AHiT: Fix Client Argument Handling (#4992)

commit 0994afa25bc393b3d68dbaffc2a79b9f9afd8b74
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Tue May 13 08:59:41 2025 +0100

    Tests: actually run tests in __init__.py files (#4969)

    * demonstrate our pytest/CI configuration missing a __init__ test failure

    * tell pytest/CI to run tests in __init__.py files

    * revert the demonstration test failure

    ---------

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

commit 7d5693e0fb6c09d185d02850a3c69d3a2508ea6f
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Tue May 13 03:58:03 2025 -0400

    Stardew Valley: Move BaseTest out of `__init__.py` to comply with future conventions (#4991)

    * move everything out of init; fix from imports and some typing errors

    * why is there a change in multiserver

    * fix some relative shits

commit feaed7ea00bcae83bebf0844ca4ee8e1bd1f83a6
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Tue May 13 07:49:43 2025 +0000

    Docs: tests: add naming / file naming conventions (#4982)

    * Docs: tests: add naming / file naming conventions

    Deprecates putting stuff into `__init__.py`.
    This may be relevant for test discovery in the future.

    * Docs: tests: fix class naming

    * Docs: tests: update examples

    * Punctuation is hard

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

    * Revert part of one suggestion

    The first set of () make the sentence make less sense.

    * Docs: tests: clarify that __init__.py may be empty

    * Make sentence nicer to read

    I simply kept the original wording, but I agree that it reads somewhat odd

    Co-authored-by: Ixrec <ericrhitchcock@gmail.com>

    ---------

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

commit 8340371f9c27d59f674369f079844736d75ade91
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Tue May 13 08:47:19 2025 +1000

    Muse Dash: Update to Otaku Pack Vol 20 (#4924)

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

commit 824caaffd0bcc8d706f0e3d7dc6fe62be634d18e
Author: Emerassi <78173681+Emerassi@users.noreply.github.com>
Date:   Sun May 11 03:41:35 2025 -0700

    Docs: clarify that ModuleUpdate.py is a prerequisite for running tests (#4970)

    * Update tests.md

    Spelled out that tests will not run without running UpdateModule.py first and including a link to the instructions on how to do that.

    * Applied black-silver's feedback and also I ran into tests that don't run correctly unless you also have run Webhost.py once.  I have included that in the documentation as well.

    * More black-silver feedback.

commit c0b3fa9ff74e89b33b668cbfe0201ebc65f1a31c
Author: lordlou <87331798+lordlou@users.noreply.github.com>
Date:   Sun May 11 02:10:51 2025 -0400

    SMZ3: replace copyright credits music (#4978)

commit e809b9328bbbbf7c65599cb8d3bbb726f7f1ab0f
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date:   Sat May 10 17:57:16 2025 -0500

    The Messenger: do all empty state validation during portal shuffle (#4971)

commit 53defd310835e064c9ca10d142d13185be717ae3
Author: qwint <qwint.42@gmail.com>
Date:   Sat May 10 17:51:44 2025 -0500

    MultiSe…
da-stealth added a commit to da-stealth/MK64-Archipelago that referenced this pull request Aug 22, 2025
* AHiT: Fix Client Argument Handling (#4992)

* Docs: Add a "Missable Locations" Question to apworld FAQ (#4965)

* Docs: add a "missable locations" question to apworld_dev_faq.md

Basically turning the conversation at https://discord.com/channels/731205301247803413/1214608557077700720/1368996789260128388 into a FAQ entry.

* feedback

* qwint feedback

* Update docs/apworld_dev_faq.md

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

---------

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* DS3: Fix the Name of "Red and White Round Shield" (#4994)

This item name is unusual in that it loses the word "round" when it's
infused, *and* the only guaranteed drop in the base game is the infused
"Blessed Red and White Round Shield +1". But since we're just listing
the uninfused version, we should use the uninfused name.

* SDV: Add Missing Marriage Requirement for Spouse Stardrop (#4988)

* Core: Update Some Outdated Typing (#4986)

* Noita: Modernization Refactor (#4980)

* lufia2ac: rearrange tests to comply with new conventions (#5001)

* Stardew Valley: Remove Crab Pot Requirement for Help Wanted Fishing (#4985)

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

* Kivy: Add a button prompt box (#3470)

* Kivy: Add a button prompt box

* auto format the buttons to display 2 per row to look nicer

* update to kivymd

* have the uri popup use the new API

* have messenger use the new API

* make the buttonprompt import even more lazy

* messenger needs to be lazy too

* make the buttons take up the full dialog width

---------

Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* SA2B: Logic Fixes (#5009)

- Fixes Shadow's mission count being set by Sonic's mission count option
- Fixes one small logic error on `Security Hall - 5` on Hard Logic difficulty
- Removes stray character that was probably harmless

* Terraria: remove 1.4.3-specific docs #5013

* ChecksFinder: Update setup guide (#4973)

* Update setup_en.md

* Update worlds/checksfinder/docs/setup_en.md

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Update worlds/checksfinder/docs/setup_en.md

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Update worlds/checksfinder/docs/setup_en.md

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

---------

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Core: Remove redundant reachable location counting in swap (#4990)

`prev_state` starts off as a copy of `swap_state` and then `swap_state`
collects `item_to_place`. Collecting an item must never reduce
accessibility (otherwise generation breaks horribly), so it is
guaranteed that `swap_state` will always be able to reach at least as
many locations as `prev_state`, so `new_loc_count >= prev_loc_count` is
always `True`.

As a sideeffect of this change, this fixes generation of Pokemon Emerald
with locally shuffled Badges/HMs when there are worlds with unconnected
entrances present in the multiworld e.g. KH1. This is because this
location counting did not respect `single_player_placement=True` and
counted reachable locations across the entire multiworld.

Fixes #4834 as a sideeffect of removing the redundant code.

* Core: prepare worlds.Files for APWorldContainer (#4331)



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

* Core: disable worlds_disabled (#5014)

* Zillion: fix `read_contents` to be compatible with base class (#5015)

* Adventure: Update AdventureDeltaPatch.read_contents to return the manifest as required by #4331 (#5016)

* Jak and Daxter: Implement New Game (#3291)

* Jak 1: Initial commit: Cell Locations, Items, and Regions modeled.

* Jak 1: Wrote Regions, Rules, init. Untested.

* Jak 1: Fixed mistakes, need better understanding of Entrances.

* Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated.

* Jak 1: Add Scout Fly Locations, code and style cleanup.

* Jak 1: Add Scout Flies to Regions.

* Jak 1: Add version info.

* Jak 1: Reduced code smell.

* Jak 1: Fixed UT bugs, added Free The Sages as Locations.

* Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances.

* Jak 1: Add some one-ways, adjust scout fly offset.

* Jak 1: Found Scout Fly ID's for first 4 maps.

* Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse.

* Jak 1: Fixed a few things. Four maps to go.

* Jak 1: Last of the scout flies mapped!

* Jak 1: simplify citadel sages logic.

* Jak 1: WebWorld setup, some documentation.

* Jak 1: Initial checkin of Client. Removed the colon from the game name.

* Jak 1: Refactored client into components, working on async communication between the client and the game.

* Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory.

* Jak 1: There's magic in the air...

* Jak 1: Fixed bug translating scout fly ID's.

* Jak 1: Make the REPL a little more verbose, easier to debug.

* Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't.

* Jak 1: Update Documentation.

* Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops.

* Jak 1: Simplified startup process, updated docs, prayed.

* Jak 1: quick fix to settings.

* Jak and Daxter: Implement New Game (#1)

* Jak 1: Initial commit: Cell Locations, Items, and Regions modeled.

* Jak 1: Wrote Regions, Rules, init. Untested.

* Jak 1: Fixed mistakes, need better understanding of Entrances.

* Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated.

* Jak 1: Add Scout Fly Locations, code and style cleanup.

* Jak 1: Add Scout Flies to Regions.

* Jak 1: Add version info.

* Jak 1: Reduced code smell.

* Jak 1: Fixed UT bugs, added Free The Sages as Locations.

* Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances.

* Jak 1: Add some one-ways, adjust scout fly offset.

* Jak 1: Found Scout Fly ID's for first 4 maps.

* Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse.

* Jak 1: Fixed a few things. Four maps to go.

* Jak 1: Last of the scout flies mapped!

* Jak 1: simplify citadel sages logic.

* Jak 1: WebWorld setup, some documentation.

* Jak 1: Initial checkin of Client. Removed the colon from the game name.

* Jak 1: Refactored client into components, working on async communication between the client and the game.

* Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory.

* Jak 1: There's magic in the air...

* Jak 1: Fixed bug translating scout fly ID's.

* Jak 1: Make the REPL a little more verbose, easier to debug.

* Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't.

* Jak 1: Update Documentation.

* Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops.

* Jak 1: Simplified startup process, updated docs, prayed.

* Jak 1: quick fix to settings.

* Jak and Daxter: Genericize Items, Update Scout Fly logic, Add Victory Condition. (#3)

* Jak 1: Update to 0.4.6. Decouple locations from items, support filler items.

* Jak 1: Total revamp of Items. This is where everything broke.

* Jak 1: Decouple 7 scout fly checks from normal checks, update regions/rules for orb counts/traders.

* Jak 1: correct regions/rules, account for sequential oracle/miner locations.

* Jak 1: make nicer strings.

* Jak 1: Add logic for finished game. First full run complete!

* Jak 1: update group names.

* Jak and Daxter - Gondola, Pontoons, Rules, Regions, and Client Update

* Jak 1: Overhaul of regions, rules, and special locations. Updated game info page.

* Jak 1: Preparations for Alpha. Reintroducing automatic startup in client. Updating docs, readme, codeowners.

* Alpha Updates (#15)

* Jak 1: Consolidate client into apworld, create launcher icon, improve setup docs.

* Jak 1: Update setup guide.

* Jak 1: Load title screen, save states of in/outboxes.

* Logging Update (#16)

* Jak 1: Separate info and debug logs.

* Jak 1: Update world info to refer to Archipelago Options menu.

* Deathlink (#18)

* Jak 1: Implement Deathlink. TODO: make it optional...

* Jak 1: Issue a proper send-event for deathlink deaths.

* Jak 1: Added cause of death to deathlink, fixed typo.

* Jak 1: Make Deathlink toggleable.

* Jak 1: Added player name to death text, added zoomer/flut/fishing text, simplified GOAL call for deathlink.

* Jak 1: Fix death text in client logger.

* Move Randomizer (#26)

* Finally remove debug-segment text, update Python imports to relative paths.

* HUGE refactor to Regions/Rules to support move rando, first hub area coded.

* More refactoring.

* Another refactor - may squash.

* Fix some Rules, reuse some code by returning key regions from build_regions.

* More regions added. A couple of TODOs.

* Fixed trade logic, added LPC regions.

* Added Spider, Snowy, Boggy. Fixed Misty's orbs.

* Fix circular import, assert orb counts per level, fix a few naming errors.

* Citadel added, missing locs and connections fixed. First move rando seed generated.

* Add Move Rando to Options class.

* Fixed rules for prerequisite moves.

* Implement client functionality for move rando, add blurbs to game info page.

* Fix wrong address for cache checks.

* Fix byte alignment of offsets, refactor read_memory for better code reuse.

* Refactor memory offsets and add some unit tests.

* Make green eco the filler item, also define a maximum ID. Fix Boggy tether locations.

* Move rando fixes (#29)

* Fix virtual regions in Snowy. Fix some GMC problems.

* Fix Deathlink on sunken slides.

* Removed unncessary code causing build failure.

* Orbsanity (#32)

* My big dumb shortcut: a 2000 item array.

* A better idea: bundle orbs as a numerical option and make array variable size.

* Have Item/Region generation respect the chosen Orbsanity bundle size. Fix trade logic.

* Separate Global/Local Orbsanity options. TODO - re-introduce orb factory for per-level option.

* Per-level Orbsanity implemented w/ orb bundle factory.

* Implement Orbsanity for client, fix some things up for regions.

* Fix location name/id mappings.

* Fix client orb collection on connection.

* Fix minor Deathlink bug, add Update instructions.

* Finishing Touches (#36)

* Set up connector level thresholds, completion goal choices.

* Send AP sender/recipient info to game via client.

* Slight refactors.

* Refactor option checking, add DataStorage handling of traded orbs.

* Update instructions to change order of load/connect.

* Add Option check to ensure enough Locations exist for Cell Count thresholds. Fix Final Door region.

* Need some height move to get LPC sunken chamber cell.

* Rename completion_condition to jak_completion_condition (#41)

* The Afterparty (#42)

* Fixes to Jak client, rules, options, and more.

* Post-rebase fixes.

* Remove orbsanity reset code, optimize game text in client.

* More game text optimization.

* Added more specific troubleshooting/setup instructions.

* Add known issue about large releases taking time. (Dodge 6,666th commit.)

* Remove "Bundle of", Add location name groups, set better default RootDirectory for new players.

* Make orb trade amounts configurable, make orbsanity defaults more reasonable.

* Add HUD info to doc.

* Exempt's Code Review Updates (#43)

* Round 1 of code review updates, the easy stuff.

* Factor options checking away from region/rule creation.

* Code review updates round 2, more complex stuff.

* Code review updates round 3: the mental health annihilator

* Code review updates part 4: redemption.

* More code review feedback, simplifying code, etc.

* Added a host.yaml option to override friendly limits, plus a couple of code review updates.

* Added singleplayer limits, player names to enforcement rules.

* Updated friendly limits to be more strict, optimized recalculate logic.

* Today's the big day Jak: updates docs for mod support in OpenGOAL Launcher

* Rearranged and clarified some instructions, ADDED PATH-SPACE FIX TO CLIENT.

* Fix deathlink reset stalls on a busy client. (#47)

* Jak & Daxter Client : queue game text messages to get items faster during release (#48)

* queue game text messages to write them during the main_tick function and empty the message queue faster during release

* wrap comment for code style character limit

Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

* remove useless blank line

Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

* whitespace code style

Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

* Move JsonMessageData dataclass outside of ReplClient class for code clarity

---------

Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

* Item Classifications (and REPL fixes) (#49)

* Changes to item classifications

* Bugfixes to power cell thresholds.

* Fix bugs in item_type_helper.

* Refactor 100 cell door to pass unit tests.

* Quick fix to ReplClient.

* Not so quick fix to ReplClient.

* Display friendly limits in options tooltips.

* Use math.ceil like a normal person.

* Missed a space.

* Fix non-accessibility due to bad orb calculation.

* Updated documentation.

* More Options, More Docs, More Tests (#51)

* Reorder cell counts, require punch for Klaww.

* Friendlier friendly friendlies.

* Removed custom_worlds references from docs/setup guide, focused OpenGOAL Launcher language.

* Increased breadth of unit tests.

* Clean imports of unit tests.

* Create OptionGroups.

* Fix region rule bug with Punch for Klaww.

* Include Punch For Klaww in slot data.

* Update worlds/jakanddaxter/__init__.py

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Temper and Harden Text Client (#52)

* Provide config path so OpenGOAL can use mod-specific saves and settings.

* Add versioning to MemoryReader. Harden the client against user errors.

* Updated comments.

* Add Deathlink as a "statement of intent" to the YAML. Small updates to client.

* Revert deathlink changes.

* Update error message.

* Added color markup to log messages printed in text client.

* Separate loggers by agent, write markup to GUI and non-markup to disk simultaneously.

* Refactor MemoryReader callbacks from main_tick to constructor.

* Make callback names more... informative.

* Give users explicit instructions in error messages.

* Stellar Messaging (#54)

* Use new ap-messenger functions for text writing.

* Remove Powershell requirement, bump memory version to 3.

* Error message update w/ instructions for game crash.

* Create no console window for gk.

* ISO Data Enhancement (#58)

* Add iso-path as argument to GOAL compiler.

# Conflicts:
#	worlds/jakanddaxter/Client.py

* More resilient handling of iso_path.

* Fixed scout fly ID mismatches.

* Corrected iso_data subpath.

* Update memory version to 4.

* Docs update for iso_data.

* Auto Detect OpenGOAL Install (#63)

* Auto detect OpenGOAL install path. Also fix Deathlink on server connection.

* Updated docs, add instructions to error messages.

* Slight tweak to error text.

* J&D : add per region location groups (#64)

* add per region power cells location group

* add per region scout flies location group

* add per zone orb bundle groups
(I'm not particularly happy about this code, but I figured doing it this way was the point of least friction/duplication)

* guess who forgot 9 very important characters in each line of the last commit

* Rearrange location group names, quick fix to client error handling.

* Fix pycharm warnings.

* Fix more pycharm warnings.

* Light cleanup: fix icons, add bug report page, remove py 3.8 code.

* Update worlds/jakanddaxter/Options.py

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Update worlds/jakanddaxter/Options.py

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Update worlds/jakanddaxter/Options.py

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Update worlds/jakanddaxter/Options.py

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Code review updates on comments, tooltips, and type hints.

* Update type hint for lists in regions.

* Missed todo removal.

* More type hint updates.

* Small region updates for location accessibility, small updates to world guide and README.md.

* Add GMC scout fly location group.

* Improved sanitization of game text.

* Traps 2 (#70)

* Add trap items, relevant options, and citadel orb caches.

* Update REPL to send traps to game.

* Fix item counter.

* Allow player to select which traps to use.

* Fix host.yaml doc strings, ap-setup-options typing, bump memory version to 5.

* Alter some trap names.

* Update world doc.

* Add health trap.

* Added 3 more trap types.

* Protect against empty trap list.

* Reword traps paragraph in world doc.

* Another update to trap paragraph.

* Concisify trap option docstring.

* Timestamp on game log file.

* Update client to handle waiting on title screen.

* Send slot name and seed to game.

* Use self.random instead.

* Update setup doc for new title screen.

* Quick clarification of orb caches in world doc.

* Sanitize slot info earlier.

* Added to and improved unit tests.

* Light cleanup on world.

* Optimizations to movement rules, docs: known issues update.

* Quick fixes for beta 0.5.0 release: template options and LPC logic.

* Quick fix to spoiler counts.

* Reorganize world guide for faster navigation.

* Fix links.

* Update HUD section.

* Found a way to render apostrophes in item names.

* March Refactors (#77)

* Reorg imports, small fix to Rock Village movement.

* Fix wait-on-title message never going to ready message.

* Colorama init fix.

* Swap trap list for a dictionary of trap weights.

* The more laws, the less justice.

* Quick readability update.

* Have memory reader provide instructions for slow booting games.

* Revert some things.

* Update setup_en.md

* Update HUD mode lingo for combined msgs.

* Remade launcher icon, sized correctly.

* I don't know why I can't be satisfied with things.

* Apply suggestions from Scipio

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Properly use the settings API instead of Utils.

* Newline on requirements.txt.

* Add __init__ files for frozen builds.

* Replace an ap_inform function with a CommonClient built-in.

* Resize icon to match kivymd expected size.

* First round of Treble code reviews.

* Second round of Treble code reviews.

* Third round of Treble code reviews.

* Missed an unncessary if condition.

* Missed unnecessary comments.

* Fourth round of Treble code reviews.

* Switch trap dictionary to OptionCounter.

* Use existing slot name/seed from network protocol.

* Violet code review updates.

* Violet code review updates part 2.

* Refactor to avoid floating imports (Violet part 3).

* Found a few more valid characters for messaging.

* Move tests out of init, add colon to game name (now that it's safe).

* But don't include those chars for file text.

* Implement Vi suggestion on webhost-capable friendly limits.

* Revert "Implement Vi suggestion on webhost-capable friendly limits."

This reverts commit 2d012b7f4a9a4c13985ecd7303bb1fc646831c86.

* Rename all files for PEP8.

* Refactor how maximums work on webhost.

* Fix rogue UT.

* Don't rush.

* Fix client post-PEP8.

---------

Co-authored-by: Justus Lind <DeamonHunter@users.noreply.github.com>
Co-authored-by: Romain BERNARD <30secondstodraw@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* shapez: Implement New Game (#3960)

Adds shapez as a supported game in AP.

* Super Mario Land 2: Implement New Game (#2730)

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: alchav <alchav@jalchavware.com>

* Raft: Small Raft doc update, bugfix (#5008)

* Small doc touchups

* Advanced Scarecrow progressive

* Add period to doc

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

---------

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* DS3: Don't make unrandomized items into events (#5018)

The DS3 static randomizer uses the relative ordering of location names
to map between Archipelago's notion of location IDs and the static
randomizer's. Treating unrandomized locations as excluded can break this
behavior by removing some locations from the list, causing further
locations to be incorrectly assigned.

The only reason this wasn't a bigger problem up to this point was that
location order only matters on a per-region and per-item basis. That
means this only causes problems in practice when a single region has
multiple locations with the same default item, and some of those
locations are randomized while others are not. Since exclusions (and
thus randomization) are usually done based on item types, we managed to
dodge this bullet for a long time.

* core: Reconfigure stdout to utf8 (#5017)

* Core: generate templates faster and "cleaner" (#5019)

* Wargroove: apworld (#4764)

- Players and AI can sacrifice their own units and upload them to the multiworld.
- Players and AI can summon random units from the multiworld.
- Has 4 new separate options for how many sacrifices and summons either the player or the AI can make per level attempt.
- New /sacrifice_summon command to toggle sacrifices and summons on/off. Useful if the AI makes a level impossible with their summons.
- Linux Support.
- Is an apworld now.


---------

Co-authored-by: Raspberry Floof <raspberry@rosenthalcastle.org>
Co-authored-by: KScl <ks@rosenthalcastle.org>
Co-authored-by: Abigail Fox <Raspberryfloof@users.noreply.github.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

* core: don't reconfigure stdout if it's fake (#5020)

* Wargroove: apworld doc fixes (#5023)

* WebHost: allow APPlayerContainers from "custom" worlds to be displayed in rooms (#4981)

Gives WebHost the ability to verify that a patch file is an APPlayerContainer (defined by #4331 as a APContainer containing the "player" field), and allowed it to display any patch file that it can verify is an APPlayerContainer.

* Wargroove: Cleanup `script_name` Component in `LauncherComponents` (#5021)

* TUNIC: Move some UT stuff out of init, put in UT poptracker integration support (#4967)

* OoT: Stop Using Utils.get_options (#4957)

* Tests: Create CollectionState after MultiWorld.worlds (#4949)

* Generate: Don't Force Player Name for Weights Files (#4943)

* The Messenger: Swap Options Docstrings to use rst, Add Option Groups (#4913)

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

* Minecraft: Stop Using Utils.get_options (#4879)

* Core: Add State add/remove/set Helpers (#4845)

* The Messenger: Add a Component Icon and Description (#4850)

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

* AHiT: Add Dweller Mask Requirement to Normal Logic Rush Hour (#4499)

* Stardew Valley: Move and Rework Monstersanity Tests (#4911)

* SDV: Fixed Import bases (#5025)

* CommonClient: Add docs for Attributes (#5003)

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

* FF1: Bizhawk Client and APWorld Support (#4448)

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

* Launcher: Fix on File Drop Error Message (#5026)

* Docs: Update Snippets to Modern Type Hints (#4987)

* Core: only raise min_client_version for new gens (#4896)

* Core: Make `get_all_state` Sweeping Optional (#4828)

* Linux: avoid adding cwd to LD_LIBRARY_PATH (#5029)

When LD_LIBRARY_PATH is not set, the old code would also add
the current working directory to LD_LIBRARY_PATH, which is bad.

* shapez: Add game to README and CODEOWNERS (#5034)

* Aktualisieren von README.md

* Aktualisieren von CODEOWNERS

* Stardew Valley: Make animal catalog logically year 2 (#5032)

* Core: Fix a playthrough crash when a world uses "placement based logic" (#3915)

* Fix playthrough

* oops

* oops 2

* I don't like this

* that should do it

* Update BaseClasses.py

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

* Update BaseClasses.py

---------

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

* Launcher: skip launcher gui when opening webhost list with no game handlers (#4888)

* calc relevant components before opening the launcher app so it can be skipped for text client only uri launches

* generically passthrough the url arg

* Apply suggestions from code review

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

* flip if not else

* Update Launcher.py

* pluralize

---------

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

* The Messenger: more generous portal validation (#5011)

* The Messenger: more generous portal validation

* remove the while and just go for 20 attempts. hopefully that's enough

* Stardew Valley: Replace current naive entrance rando with GER (#4624)

* Stardew Valley: Added moss to statue of blessings recipe (#5038)

* BizHawkClient: Fix script to list all cores instead of explicit mapping (#5033)

* TWW: Only add Filler for Excluded Locations Which are Progress Locations (#4993)

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

* Lingo: Fix The Bearer's Pilgrimage Logic (#5005)

* Raft: Implement get_filler_item_name and refactor filler item code a bit (#4782)

* refactor filler item creation for Raft, implement get_filler_item_name

* wrong indent

* Update worlds/raft/__init__.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>

* SDV: Fixed Region for two Parrot Locations (#5042)

* CV64: Allow Holding Z to Use the Regular Shimmy Speed (#4730)

* Add the shimmy modifier hack.

* Update the Increase Shimmy Speed option description.

---------

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

* Core: Add descriptions to Components (#4849)

* Add descriptions to components

* Adhere to style guide

* Tweak BHC wording

* Trim Open Patch description

* Update text client description for consistency

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Remove newlines

---------

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Update OOT Guides (#5041)

* Update OOT Guides

* Minor update per review

* TWW: Update patch class (#5046)

* Webhost: update Flask to 3.1.1 (#5052)

* CVCotM: Add Nerf Roc Wing to Slot Data and HoD Max Ups to `other_game_item_appearances` (#5051)

* Timespinner: Fix Logic (#4803)

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

* TWW: Remove unnecessary items from slot data (#5045)

* Timespinner: Fix Logic Error with Risky Warp to Emperor's Tower and Lab Access (#4784)

Co-authored-by: sgrunt <sgrunt1987@gmail.com>

* Timespinner: Fix Connection Logic from Maw Cave Entrance to Maw (#4831)

Co-authored-by: sgrunt <sgrunt1987@gmail.com>

* Jak and Daxter: Post-merge Polish (#5031)

- Cleans up a few missed references in the setup guide.
- Refactors Options class to use metaclass and decorators to enforce friendly limits on multiple levels.    
  - Templates generated from the website, even ones with `random` should not fail generation because the website will only allow values inside the friendly limits. 
  - _Uploaded_ yamls to the website with `random`, should also now respect friendly limits without the need for `random-range` shenanigans.
  - _Uploaded_ yamls to the website, or yamls that are used to generate locally, that have hard-defined values outside the friendly limits, will be clamped/dragged/massaged into those limits (with logged warnings).
- Removed an early completion goal that was playing havoc with fill. Not enough people seem to use this goal, so its loss will not be mourned.

* Stardew Valley: Fix Wizard Tower and Entrance Randomizer Softlocks (#4631)

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

* Core and Various Worlds: define patch_file_ending to APPlayerContainer (#5058)

* move to playercontainer

* moves patch_file_ending handling to APPlayerContainer and updates the worlds using it to define their extensions

* give oot a patch_file_ending as well

* WebHost: Use expected APPlayerContainer manifest location directly when ingesting them #4754

* DLCQuest: Add missing indirect conditions (#5074)

The `Behind Rocks` and `Pickaxe Hard Cave` Entrances require being able
to reach the `Cut Content` region, but no indirect conditions were being
registered for this region.

The `set_lfod_self_obtained_items_rules` function was also using a
`world` parameter that was actually expecting a `MultiWorld` instance,
so I have renamed it for clarity and updated the function to use
`world.get_entrance()` rather than `multiworld.get_entrance()`.

Much of the rest of the file passes `MultiWorld` instances to `world`
parameters, but fixing all of these is out of the scope of the changes
in this patch, so has not been included.

* Plando Items: Fix count with empty locations/location #5040

* DKC3: Add missing indirect conditions (#5073)

A couple of Entrance access rules were checking for being able to reach
a Location, but a Location first checks for being able to reach its
parent Region, so it needs to be registered that access to that parent
Region can give access to the Entrance.

* SoE: remove outdated info from guide (#5064)

The client does not depend on Animation Frame anymore, so it can be backgrounded.

* Launcher/Utils: reset LD_LIBRARY_PATH for system EXEs (#5022)

* TUNIC: Fix decoupled ER + ladder storage making invalid entrances #5075

* Factorio: revamp args parsing and passing (#5036)

* DS3: Fix Non-Crow Itemlinking and Mark Aldrich Ruby and Twin Dragon Greatshield As Missable (#4510)

* Fix Branch (Not Crow)

* Oops

* Mark Aldrich Ruby as missable

* Expand comment

* Short circuit

* Mark Twin Dragon Greatshield as missable

* Add missable cause

* Timespinner: Fix Castle Ramparts Region Connection #5082

Co-authored-by: ehseezed <Ehseezed@users.noreply.github.com>

* Timespinner: Fixed generation error because of timezone locking (#5084)

* Fixed generation error because of timezone locking

* Refactored logic + prevent excluding warps when unchained keys in on

* shapez: Remove preset unittests #5086

* Launcher: Fix Cli Components when installed to a directory with a space (#5091)

* KH2: Give warning when client has cached locations (#5000)

* a

* disconnect when connect to wrong slot

* connection to the wrong seed fix

* seed_name is always none

* CI: Add GH_REPO environment variable to labeler (#5081)

* KH2: Raise Exception for Misusing DonaldGoofyStatsanity Option (#4710)

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

* fix saving princess's use of subprocess helpers (#5103)

* LTTP/SDV: use .name when appropriate in subtests (#5107)

* SA2B: Logic Fixes (#5095)

- Fixed King Boom Boo being able to appear in multiple boss gates
- `Final Rush - 16 Animals (Expert)` no longer requires `Sonic - Bounce Bracelet`
- `Dry Lagoon - 5 (Standard)` now requires `Rouge - Pick Nails`
- `Sand Ocean - Extra Life Box 2 (Standard/Hard/Expert)` no longer requires `Eggman - Jet Engine`
- `Security Hall - 8 Animals (Expert)` no longer requires `Rouge - Pick Nails`
- `Sky Rail - Item Box 8 (Standard)` now requires `Shadow - Air Shoes` and `Shadow - Mystic Melody`
- `Cosmic Wall - Chao Key 1 (Standard/Hard/Expert)` no longer requires `Eggman - Mystic Melody`
- `Cannon's Core - Pipe 2 (Expert)` no longer requires `Tails - Booster`
- `Cannon's Core - Gold Beetle` no longer requires `Tails - Booster` nor `Knuckles - Hammer Gloves`

* Item Plando: Fix `count` value (#5101)

* Stardew Valley: Fix 3 Logic Issues (#5094)

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

* ALTTP: Fix take_any leaving a placed item in the multiworld itempool #5108

* Aquaria: Fixing open waters urns not breakable with nature forms logic bug (#5072)

* Fixing open waters urns not breakable with nature forms logic bug

* Using list in comprehension only when useful

* Replacing damaging items by a constant

* Removing comprehension list creating from lambda

* Shivers: Fix get_pre_fill_items (#5113)

* Plando Items: Fix Location Groups Unfolding (#5099)

* DS3: Apply Rules to Non-Randomized Locations (#5106)

* Plando Items: Better Warning for Nonexisting Worlds (#5112)

* AdventureClient: Replace Utils.get_settings with settings.get_settings #5043

* Core: Docstring typo on Region.add_exits (#5089)

* doc typo

* Update BaseClasses.py

* Remove Minecraft (#4672)

* Remove Minecraft

* remove minecraft

* remove minecraft

* elif -> if

---------

Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* MMBN3: Fixes Generation Errors and General UX Smoothing (#5077)

Co-authored-by: qwint <qwint.42@gmail.com>

* Make sure ladx removes the same copy of the starting item from the itempool that it's placing (#5110)

* DS3: Link to the Appropriate .NET Runtime for Proton (#5093)

* shapez: Change Links to Shapesanity Cheat Sheet (#5047)

* Docs: Rework the "Events" Section of `world api.md` (#5012)

Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* Minecraft Removal Cleanup (#5118)

* Docs: Update Plando Guide and Make it More User Friendly (#4858)

* Make plando guide more user friendly.

* Apply suggestions from code review

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

* Further updates for review.

* Clear search box when filtering by type.

* Forget previous commit name - more code review updates to doc.

* Move link to yaml tutorial.

* Replace STS example with Pokemon RB.

* Use non-key item examples in RB.

* Rooby's code review updates.

* Update worlds/generic/docs/plando_en.md

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

* Update worlds/generic/docs/plando_en.md

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

* Address some more feedback.

* Make Factorio example more accurate.

* Exempt's code review updates (round 4)

* Exempt's code review updates (round 4 + 1)

* Update worlds/generic/docs/plando_en.md

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

* Update worlds/generic/docs/plando_en.md

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

* Update worlds/generic/docs/plando_en.md

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

* Update worlds/generic/docs/plando_en.md

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

---------

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

* KDL3: update to gifting protocol 3 and update settings usage (#4814)

* gift version 3

* update settings usage

* that really has just been broken this entire time

* remove unnecessary print

* Update client.py

* fix random flavor handling

* fix incorrect sender/receiver

---------

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

* Kivy: swap from the tab carousel to navigation bar  (#4930)

* implement tabs as NavigationBar

* update the underline bar with the screen manager

* remove some unneeded kv

* remove the underline in favor of a full tab highlight

* fix insert transitions

* use on_release instead of on_press

* minor cleanup

* add remove_client_tab and add a caller to the NavigationBar for back compat

* unused imports

* Update kvui.py

---------

Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* core: Don't attempt to write to the inside of an OSX App Bundle (#4380)

* core: Frozen OSX should also use Home Directory

* Use Application Support instead of homedir

* Suggested changes

* Pokémon RB: Use new link for a new tracker (#5122)

* Update setup_en.md

* Update setup_es.md

* Pokemon RB: Client: Send bounce messages with current map ID (#5121)

* Civilization VI: Updated setup and info pages (#5123)

* Update setup_en.md

Updated setup instructions for Civilization VI in Archipelago

* Update en_Civilization VI.md

Updated info page for Civilization VI in Archipelago

* Update setup_en.md

* CVCotM: Fix Advance Collection ROM (#5132)

* TWW: Update Preset S7 to S8 (#5138)

* Wargroove: Fix Communication Thread (#5125)

* TWW: Fix Swords in Swordless Mode (#5137)

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

* SDV: Add "Desert Transportation" and "Island Transportation" Item Groups (#5143)

* Update world api.md (#5149)

* Stardew Valley: Fixed luck level requirements for slot machines #5160

# Conflicts:
#	worlds/stardew_valley/data/craftable_data.py

* Docs: 'get_prefill_items' -> 'get_pre_fill_items' (#5167)

* CommonClient: fix extra panels added to `main_area_container` (#5151)

* Core: ensure slot_data and er_hint_info are only base data types (#5144)


---------

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

* Core: Take Counter back out of RestrictedUnpickler #5169

* [Jak and Daxter] Auto Detect Install Path after Game Launcher Update #5152

* Factorio: Fix link to world_gen documentation (#5171)

* DLCQ: Fix/Refactor LFoD Start Inventory (#5176)

* CIV 6: Remove Erroneous Boost Prereqs for Computers Boost (#5134)

* Core: Replace Clique with V6 in unit tests (#5181)

* replace Clique with V6 in unit tests

* no hard mode in V6

* modify regex in copy_world to allow : str

* oops

* I see now

* work around all typing

* there actually needs to be something

* Various: Remove Rogue Legacy and Clique (#5177)

* Various: Remove Rogue Legacy and Clique

* Remove Clique from setup.py and revert network diagram.md change.

* Try again.

* Update network diagram.md

---------

Co-authored-by: Zach “Phar” Parks <phar@pharware.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* Revert "Core: Take Counter back out of RestrictedUnpickler" (#5184)

* Revert "Core: Take Counter back out of RestrictedUnpickler #5169"

This reverts commit 95e09c8e2a681ecd5666822b04fe7fed3ed9dec1.

* Update Utils.py

* LADX: Update marin.txt (#5178)

* Stardew Valley: Remove Rarecrow Locations from Night Market when Museumsanity is Disabled (#5146)

* TUNIC: Add UT Support for Breakables (#5182)

* TUNIC: Fix missing line for UT stuff #5185

* Muse Dash: Update song list to Rotaeno Update/7th Anniversary (#5066)

* Doc: match statement in style guide (#5187)

* Test: add micro benchmark for match

* Doc: add 'match' to python style guide

* Core: Update UUID handling to be more easily sharable between libraries (#5088)

moves uuid caching to appdata and uuid generation to be a random uuid instead of getnode's hardware address driven identifier and updates docs to point to the shared cache

* Super Metroid: Only Put Relevant Options in `slot_data` (#5192)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* Fixed multiworld support patch not working with VariaRandomizer's

Added stage_fill_hook to set morph first in progitempool
Added back VariaRandomizer's standard patches

* + added missing files from variaRandomizer project

* + added missing variaRandomizer files (custom sprites)

+ started integrating VariaRandomizer options (WIP)

* Some fixes for player and server name display

- fixed player name of 16 characters reading too far in SM client
- fixed 12 bytes SM player name limit (now 16)
- fixed server name not being displayed in SM when using server cheat ( now displays RECEIVED FROM ARCHIPELAGO)
- request: temporarly changed default seed names displayed in SM main menu to OWTCH

* Fixed Goal completion not triggering in smClient

* integrated VariaRandomizer's options into AP (WIP)

- startAP is working
- door rando is working
- skillset is working

* - fixed itemsounds.ips crash by always including nofanfare.ips into multiworld.ips (itemsounds is now always applied and "itemsounds" preset must always be "off")

* skillset are now instanced per player instead of being a singleton class

* RomPatches are now instanced per player instead of being a singleton class

* DoorManager is now instanced per player instead of being a singleton class

* - fixed the last bugs that prevented generation of >1 SM world

* fixed crash when no skillset preset is specified in randoPreset (default to "casual")

* maxDifficulty support and itemsounds removal

- added support for maxDifficulty
- removed itemsounds patch as its always applied from multiworld patch for now

* Fixed bad merge

* Post merge adaptation

* fixed player name length fix that got lost with the merge

* fixed generation with other game type than SM

* added default randoPreset json for SM in playerSettings.yaml

* fixed broken SM client following merge

* beautified json skillset presets

* Fixed ArchipelagoSmClient not building

* Fixed conflict between mutliworld patch and beam_doors_plms patch

- doorsColorsRando now working

* SM generation now outputs APBP

- Fixed paths for patches and presets when frozen

* added missing file and fixed multithreading issue

* temporarily set data_version = 0

* more work

- added support for AP starting items
- fixed client crash with gamemode being None
- patch.py "compatible_version" is now 3

* commited missing asm files

fixed start item reserve breaking game (was using bad write offset when patching)

* Nothing item are now handled game-side. the game will now skip displaying a message box for received Nothing item (but the client will still receive it).

fixed crash in SMClient when loosing connection to SNI

* fixed No Energy Item missing its ID

fixed Plando

* merge post fixes

* fixed start item Grapple, XRay and Reserve HUD, as well as graphic beams (except ice palette color)

* fixed freeze in blue brinstar caused by Varia's custom PLM not being filled with proper Multiworld PLM address (altLocsAddresses)

* fixed start item x-ray HUD display

* Fixed start items being sent by the server (is all handled in ROM)

Start items are now not removed from itempool anymore
Nothing Item is now local_items so no player will ever pickup Nothing. Doing so reduces contribution of this world to the Multiworld the more Nothing there is though.
Fixed crash (and possibly passing but broken) at generation where the static list of IPSPatches used by all SM worlds was being modified

* fixed settings that could be applied to any SM players

* fixed auth to server only using player name (now does as ALTTP to authenticate)

* - fixed End Credits broken text

* added non SM item name display

* added all supported SM options in playerSettings.yaml

* fixed locations needing a list of parent regions (now generate a region for each location with one-way exits to each (previously) parent region

did some cleaning (mainly reverts on unnecessary core classes

* minor setting fixes and tweaks

- merged Area and lightArea settings
- made missileQty, superQty and powerBombQty use value from 10 to 90 and divide value by float(10) when generating
- fixed inverted layoutPatch setting

* added option start_inventory_removes_from_pool

fixed option names formatting
fixed lint errors
small code and repo cleanup

* Hopefully fixed ROR2 that could not send any items

* - fixed missing required change to ROR2

* fixed 0 hp when respawning without having ever saved (start items were not updating the save checksum)

* fixed typo with doors_colors_rando

* fixed checksum

* added custom sprites for off-world items (progression or not)

the original AP sprite was made with PierRoulette's SM Item Sprite Utility by ijwu

* - added missing change following upstream merge

- changed patch filename extension from apbp to apm3 so patch can be used with the new client

* added morph placement options: early means local and sphere 1

* fixed failing unit tests

* - fixed broken custom_preset options

* - big cleanup to remove unnecessary or unsupported features

* - more cleanup

* - moved sm_randomizer_rom and all always applied patches into an external project that outputs basepatch.ips

- small cleanup

* - added comment to refer to project for generating basepatch.ips (https://github.com/lordlou/SMBasepatch)

* fixed g4_skip patch that can be not applied if hud is enabled

* - fixed off world sprite that can have broken graphics (restricted to use only first 2 palette)

* - updated basepatch to reflect g4_skip removal

- moved more asm files to SMBasepatch project

* - tourian grey doors at baby metroid are now always flashing (allowing to go back if needed)

* fixed wrong path if using built as exe

* - cleaned exposed maxDifficulty options

- removed always enabled Knows

* Merged LttPClient and SMClient into SNIClient

* added varia_custom Preset Option that fetch a preset (read from a new varia_custom_preset Option) from varia's web service

* small doc precision

* - added death_link support

- fixed broken Goal Completion
- post merge fix

* - removed now useless presets

* - fixed bad internal mapping with maxDiff

- increases maxDiff if only Bosses is preventing beating the game

* - added support for lowercase custom preset sections (knows, settings and controller)

- fixed controller settings not applying to ROM

* - fixed death loop when dying with Door rando, bomb or speed booster as starting items

- varia's backup save should now be usable (automatically enabled when doing door rando)

* -added docstring for generated yaml

* fixed bad merge

* fixed broken infinity max difficulty

* commented debug prints

* adjusted credits to mark progression speed and difficulty as Non Available

* added support for more than 255 players (will print Archipelago for higher player number)

* fixed missing cleanup

* added support for 65535 different player names in ROM

* fixed generations failing when only bosses are unreachable

* - replaced setting maxDiff to infinity with a bool only affecting boss logics if only bosses are left to finish

* fixed failling generations when using 'fun' settings

Accessibility checks are forced to 'items' if restricted locations are used by VARIA following usage of 'fun' settings

* fixed debug logger

* removed unsupported "suits_restriction" option

* fixed generations failing when only bosses are unreachable (using a less intrusive approach for AP)

* - fixed deathlink emptying reserves

- added death_link_survive option that lets player survive when receiving a deathlink if the have non-empty reserves

* - merged death_link and death_link_survive options

* fixed death_link

* added a fallback default starting location instead of failing generation if an invalid one was chosen

* added Nothing and NoEnergy as hint blacklist

added missing NoEnergy as local items and removed it from progression

* reduced slot_data to only what should be needed by PopTracker (for https://github.com/ArchipelagoMW/Archipelago/pull/5039)

* Core: Adds Visual Formatting to Option Group Headers in Template Yamls (#5092)

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

* CC: Add Assert to Catch Old Datapackage Lookup API (#5131)

* Core: Assert that all the items in the multiworld itempool are actually unplaced at the start of distribute_items_restrictive (#5109)

* Assert at the beginning of distribute items restrictive that no items in the itempool already have locations associated with them

* actual message

* placement

* oops

* Update Fill.py

* Core: Crash on full accessibility if there are unreachable locations (Yes, you read that right) #3787

* Core: Cleanup: Replace direct calling of dunder methods on objects (#4584)

Calling the dunder method has to:
1. Look up the dunder method for that object/class
2. Bind a new method instance to the object instance
3. Call the method with its arguments
4. Run the appropriate operation on the object

Whereas running the appropriate operation on the object from the start
skips straight to step 4.

Region.Register.__getitem__ is called a lot without #4583. In that case,
generation of 10 template Blasphemous yamls with
`--skip_output --seed 1` and progression balancing disabled went from
19.0s to 18.8s (1.3% reduction in generation duration).

From profiling with `timeit`
```py
        def __getitem__(self, index: int) -> Location:
            return self._list[index]
```
appears to be about twice as fast as the old code:
```py
        def __getitem__(self, index: int) -> Location:
            return self._list.__getitem__(index)
```

Besides this, there is not expected to be any noticeable difference in
performance, and there is not expected to be any difference in semantics
with these changes.

Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* Core: Cache previous swap states to use as the base state to sweep from (#3859)

The previous swap_state can often be used as the base state to create
the next swap_state. This previous swap_state will already have
collected all items in item_pool and is likely to have checked many
locations, meaning that creating the next swap_state from it instead of
from base_state is faster.

From generating with extra code to raise an exception if more than 2
previous swap states were used, and using A Hat in Time and Pokemon
Red/Blue yamls that often result in lots of swapping in progression
fill, I could not get a single seed go through more than 2 previous swap
states. A few worlds' pre-fills do often use more than 2 previous swap
states, notably LADX which sometimes goes through over 20.

Given a 20 player Pokemon Red/Blue multiworld that usually generates in
around 16 or 17 seconds, but on a specific seed that results in 56
swaps, generation went from about 260 seconds before this patch to about
104 seconds after this patch (generated with a meta.yaml to disable
progression balancing and `python -O Generate.py --skip_output`).

Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* Core: Add new ItemClassification "deprioritized" which will not be placed on priority locations (if possible) (#4610)

* Add new deprioritized item flag

* 4 retries

* indent

* .

* style

* I think this is nicer

* Nicer

* remove two lines again that I added unnecessarily

* I think this test makes a bit more sense like this

* Idk how to word this lol

* Add progression_deprioritized_skip_balancing bc why not ig

* More text

* Update Fill.py

* Update Fill.py

* I am the big stupid

* Actually collect the other half of progression items into state when filling without them

* More clarity on the descriptions (hopefully)

* visually separate technical description and use cases

* Actually make the call do what the comments say it does

* Stardew Valley: Add French Guide (#4697)

Co-authored-by: tmarquis <thomas.marquis@cellance.com>

* Core: increment version (#5194)

* Hollow Knight: Explicitly Exclude Palace Items as Filler (#5119)

* Witness: Add French and German Setup Documentation (#2527)

Co-authored-by: Lolo <lowgau@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* Hollow Knight: Add Spanish Language Docs (#5156)

Co-authored-by: qwint <qwint.42@gmail.com>

* Various Games: Improve Custom Death Link Option Description (#4171)

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>

* Core: Don't Cache the `get_all_state` Result (#4795)

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

* TUNIC: Update Tests Per #4982 (#5191)

* The Witness: Add Glass Factory Entry Panel as a location in all options #4695

* Dics: Add Webhost API Documententation (#4887)

* capitialization changes

* ditto

* Revert "ditto"

This reverts commit 17cf596735888e91850954c7306ce0b80d7e453d.

* Revert "capitialization changes"

This reverts commit 6fb86c6568da2c08b5f8e691d4fc810e3ab09a44.

* full revert and full commit

* Update docs/webhost api.md

Co-authored-by: qwint <qwint.42@gmail.com>

* Update docs/webhost api.md

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

* Update docs/webhost api.md

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

* Update webhost api.md

* Removed in-devolopment API

* Apply standard capitilization and grammar flow

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* declarative language

* Apply suggestions from code review

Co-authored-by: qwint <qwint.42@gmail.com>

* datapackage_checksum clarification, and /datapackage clairfication

* /dp/checksum clarification

* Detailed responces and /generation breakdown

* Update webhost api.md

* Made output anonomous

* Update docs/webhost api.md

Co-authored-by: qwint <qwint.42@gmail.com>

* Swapped IDs to UUID, and added language around UUID vs SUUID

* Apply suggestions from code review

formatting and grammar

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

* Condensed paragraphs and waterfalled headders

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* WebHostLib: Properly Format IDs in API Responses  (#4944)

* update the id formatter to use staticmethods to not fake the unused self arg, and then use the formatter for the user session endpoints

* missed an id (ty treble)

* clean up duplicate code

* Update WebHostLib/__init__.py

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

* keep the BaseConverter format

* lol, change all the instances

* revert this

---------

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

* Docs: Clean up SUUID Post #4944  (#5196)

* Stardew Valley: Add walnutsanity prefix to locations (#4934)

* AHIT: Fix Test Fail for assert_not_all_options (#5197)

* Options: Assert Not All Option in `Options.as_dict` (#5039)

* Options: forbid worlds just dumping every single option they don't need

* make the equal proper

---------

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

* Lingo: Fix Painting Gen Failures on Panels Mode Door Shuffle (#5199)

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

* Docker: Add initial configuration for project (#4419)

* feat(docker): Add initial Docker configuration for project
- Add .dockerignore file to ignore unnecessary files
- Create Dockerfile with basic build and deployment configuration

* feat(docker): Updated Docker configuration for improved security and build efficiency
- Removed sensitive files from .dockerignore
- Moved WORKDIR to /app in Dockerfile
- Added gunicorn==23.0.0 dependency in RUN command
- Created new docker-compose.yml file for service definition

* feat(deployment): Implement containerized deployment configuration

- Add additional environment variables for Python optimization
- Update Dockerfile with new dependencies: eventlet, gevent, tornado
- Create docker-compose.yml and configure services for web and nginx
- Implement example configurations for web host settings and gunicorn
- Establish nginx configuration for reverse proxy
- Remove outdated docker-compose.yml from root directory

* feat(deploy): Introduce Docker Compose configuration for multi-world deployment
- Separate web service into two containers, one for main process and one for gunicorn
- Update container configurations for improved security and maintainability
- Remove unused volumes and network configurations

* docs: Add new documentation for deploying Archipelago using containers
- Document standalone image build and run process
- Include example Docker Compose file for container orchestration
- Provide information on services defined in the `docker-compose.yaml` file
- Mention optional Enemizer feature and Git requirements

* fixup! feat(docker): Updated Docker configuration for improved security and build efficiency - Removed sensitive files from .dockerignore - Moved WORKDIR to /app in Dockerfile - Added gunicorn==23.0.0 dependency in RUN command - Created new docker-compose.yml file for service definition

* feat(deploy): Updated gunicorn configuration example
- Adjusted worker and thread counts
- Switched worker class from sync to gthread
- Changed log level to info
- Added example code snippet for customizing worker count

* fix(deploy): Adjust concurrency settings for self-launch configuration
- Reduce the number of world generators from 8 to 3
- Decrease the number of hosters from 5 to 4

* docs(deploy using containers): Improve readability, fix broken links
- Update links to other documentation pages
- Improve formatting for better readability
- Remove unnecessary sections and files
- Add note about building the image requiring a local copy of ArchipelagoMW source code

* Update deploy/example_config.yaml

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

* Update deploy/example_selflaunch.yaml

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

* Update Dockerfile

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

* Update deploy/example_selflaunch.yaml

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

* fixup! Update Dockerfile

* fix(Dockerfile): Update package installations to use latest versions
- Remove specific version pins for git and libc6-dev
- Ensure compatibility with newer package updates

* feat(ci): Add GitHub Actions workflow for building and publishing Docker images
- Create a new workflow for Docker image build and publish
- Configure triggers for push and pull_request on main branch
- Set up QEMU and Docker Buildx for multi-platform builds
- Implement Docker login for GitHub Container Registry
- Include Docker image metadata extraction and tagging

* feat(healthcheck): Update Dockerfile and docker-compose for health checks
- Add health check for the Webhost service in Dockerfile
- Modify docker-compose to include a placeholder health check for multiworld service
- Standardize comments and remove unnecessary lines

* Revert "feat(ci): Add GitHub Actions workflow for building and publishing Docker images"

This reverts commit 32a51b272627d99ca9796cbfda2e821bfdd95c70.

* feat(docker): Enhance Dockerfile with Cython build stage
- Add Cython builder stage for compiling speedups
- Update package installation and organization for efficiency
- Improve caching by copying requirements before installing
- Add documentation for rootless Podman

* fixup! feat(docker): Enhance Dockerfile with Cython build stage - Add Cython builder stage for compiling speedups - Update package installation and organization for efficiency - Improve caching by copying requirements before installing - Add documentation for rootless Podman

---------

Co-authored-by: Adrian Priestley <apriestley@gmail.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Adrian Priestley <apriestley@bob.localdomain>

* Super Metroid: Improve Option Descriptions and Add Option Groups (#5100)

* SMZ3: Add Yaml Options to Slot Data (#5111)

* Raft: Fix filler_item_types TypeError introduced in #4782 (#5203)

* Dockerfile/Core: Prevent module update during container runtime (#5205)

* fix(env): Prevent module update during requirements processing
- Add environment variable SKIP_REQUIREMENTS_UPDATE check
- Ensure update is skipped if SKIP_REQUIREMENTS_UPDATE is set to true

* squash! fix(env): Prevent module update during requirements processing - Add environment variable SKIP_REQUIREMENTS_UPDATE check - Ensure update is skipped if SKIP_REQUIREMENTS_UPDATE is set to true

* ALttP: Fix `pre_fill` State Sweeping Too Early (#5215)

* OoT: Fix remove not invalidating cached reachability (#5222)

Collecting an item into a CollectionState without sweeping, finding all
reachable locations, removing that item from the state, and then finding
all reachable locations again could result in more locations being
reachable than before the item was initially collected into the
CollectionState.

This issue was present because OoT was not invalidating its reachable
region caches for the different ages when items were removed from the
CollectionState.

To fix the issue, this PR has updated `OOTWorld.remove()` to invalid its
ca…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

affects: core Issues/PRs that touch core and may need additional validation. 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.

7 participants