From ee1e578201051829aec6115b50597b1eb9aaad3e Mon Sep 17 00:00:00 2001 From: Bryce Wilson Date: Thu, 18 Apr 2024 10:39:28 -0600 Subject: [PATCH] Pokemon Emerald: Fix client crash if 0.4.6 client connects to 0.4.5 seed (#3146) --- worlds/pokemon_emerald/__init__.py | 2 +- worlds/pokemon_emerald/client.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/worlds/pokemon_emerald/__init__.py b/worlds/pokemon_emerald/__init__.py index c7f060a7..92bad624 100644 --- a/worlds/pokemon_emerald/__init__.py +++ b/worlds/pokemon_emerald/__init__.py @@ -87,7 +87,7 @@ class PokemonEmeraldWorld(World): location_name_groups = LOCATION_GROUPS data_version = 2 - required_client_version = (0, 4, 5) + required_client_version = (0, 4, 6) badge_shuffle_info: Optional[List[Tuple[PokemonEmeraldLocation, PokemonEmeraldItem]]] hm_shuffle_info: Optional[List[Tuple[PokemonEmeraldLocation, PokemonEmeraldItem]]] diff --git a/worlds/pokemon_emerald/client.py b/worlds/pokemon_emerald/client.py index 0be48261..169a5a79 100644 --- a/worlds/pokemon_emerald/client.py +++ b/worlds/pokemon_emerald/client.py @@ -87,7 +87,8 @@ KEY_LOCATION_FLAGS = [ ] KEY_LOCATION_FLAG_MAP = {data.locations[location_name].flag: location_name for location_name in KEY_LOCATION_FLAGS} -LEGENDARY_NAMES = { +# .lower() keys for backward compatibility between 0.4.5 and 0.4.6 +LEGENDARY_NAMES = {k.lower(): v for k, v in { "Groudon": "GROUDON", "Kyogre": "KYOGRE", "Rayquaza": "RAYQUAZA", @@ -100,7 +101,7 @@ LEGENDARY_NAMES = { "Deoxys": "DEOXYS", "Ho-Oh": "HO_OH", "Lugia": "LUGIA", -} +}.items()} DEFEATED_LEGENDARY_FLAG_MAP = {data.constants[f"FLAG_DEFEATED_{name}"]: name for name in LEGENDARY_NAMES.values()} CAUGHT_LEGENDARY_FLAG_MAP = {data.constants[f"FLAG_CAUGHT_{name}"]: name for name in LEGENDARY_NAMES.values()} @@ -311,7 +312,7 @@ class PokemonEmeraldClient(BizHawkClient): num_caught = 0 for legendary, is_caught in caught_legendaries.items(): - if is_caught and legendary in [LEGENDARY_NAMES[name] for name in ctx.slot_data["allowed_legendary_hunt_encounters"]]: + if is_caught and legendary in [LEGENDARY_NAMES[name.lower()] for name in ctx.slot_data["allowed_legendary_hunt_encounters"]]: num_caught += 1 if num_caught >= ctx.slot_data["legendary_hunt_count"]: