From 484082616f3aba18da31f579e965c0f2f1d5227e Mon Sep 17 00:00:00 2001 From: JusticePS <5125765+JusticePS@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:42:01 -0700 Subject: [PATCH 1/5] Adventure: Update to use new options api (#3326) --- AdventureClient.py | 8 ++++---- worlds/adventure/Options.py | 37 ++++++++++++++++++------------------ worlds/adventure/Regions.py | 5 +++-- worlds/adventure/Rules.py | 4 ++-- worlds/adventure/__init__.py | 37 ++++++++++++++++++------------------ 5 files changed, 47 insertions(+), 44 deletions(-) diff --git a/AdventureClient.py b/AdventureClient.py index 7bfbd5ef6b..206c55df9a 100644 --- a/AdventureClient.py +++ b/AdventureClient.py @@ -80,7 +80,7 @@ class AdventureContext(CommonContext): self.local_item_locations = {} self.dragon_speed_info = {} - options = Utils.get_options() + options = Utils.get_settings() self.display_msgs = options["adventure_options"]["display_msgs"] async def server_auth(self, password_requested: bool = False): @@ -102,7 +102,7 @@ class AdventureContext(CommonContext): def on_package(self, cmd: str, args: dict): if cmd == 'Connected': self.locations_array = None - if Utils.get_options()["adventure_options"].get("death_link", False): + if Utils.get_settings()["adventure_options"].get("death_link", False): self.set_deathlink = True async_start(self.get_freeincarnates_used()) elif cmd == "RoomInfo": @@ -415,8 +415,8 @@ async def atari_sync_task(ctx: AdventureContext): async def run_game(romfile): - auto_start = Utils.get_options()["adventure_options"].get("rom_start", True) - rom_args = Utils.get_options()["adventure_options"].get("rom_args") + auto_start = Utils.get_settings()["adventure_options"].get("rom_start", True) + rom_args = Utils.get_settings()["adventure_options"].get("rom_args") if auto_start is True: import webbrowser webbrowser.open(romfile) diff --git a/worlds/adventure/Options.py b/worlds/adventure/Options.py index 9e0cc9d686..e6a8e4c202 100644 --- a/worlds/adventure/Options.py +++ b/worlds/adventure/Options.py @@ -2,7 +2,8 @@ from __future__ import annotations from typing import Dict -from Options import Choice, Option, DefaultOnToggle, DeathLink, Range, Toggle +from dataclasses import dataclass +from Options import Choice, Option, DefaultOnToggle, DeathLink, Range, Toggle, PerGameCommonOptions class FreeincarnateMax(Range): @@ -223,22 +224,22 @@ class StartCastle(Choice): option_white = 2 default = option_yellow +@dataclass +class AdventureOptions(PerGameCommonOptions): + dragon_slay_check: DragonSlayCheck + death_link: DeathLink + bat_logic: BatLogic + freeincarnate_max: FreeincarnateMax + dragon_rando_type: DragonRandoType + connector_multi_slot: ConnectorMultiSlot + yorgle_speed: YorgleStartingSpeed + yorgle_min_speed: YorgleMinimumSpeed + grundle_speed: GrundleStartingSpeed + grundle_min_speed: GrundleMinimumSpeed + rhindle_speed: RhindleStartingSpeed + rhindle_min_speed: RhindleMinimumSpeed + difficulty_switch_a: DifficultySwitchA + difficulty_switch_b: DifficultySwitchB + start_castle: StartCastle -adventure_option_definitions: Dict[str, type(Option)] = { - "dragon_slay_check": DragonSlayCheck, - "death_link": DeathLink, - "bat_logic": BatLogic, - "freeincarnate_max": FreeincarnateMax, - "dragon_rando_type": DragonRandoType, - "connector_multi_slot": ConnectorMultiSlot, - "yorgle_speed": YorgleStartingSpeed, - "yorgle_min_speed": YorgleMinimumSpeed, - "grundle_speed": GrundleStartingSpeed, - "grundle_min_speed": GrundleMinimumSpeed, - "rhindle_speed": RhindleStartingSpeed, - "rhindle_min_speed": RhindleMinimumSpeed, - "difficulty_switch_a": DifficultySwitchA, - "difficulty_switch_b": DifficultySwitchB, - "start_castle": StartCastle, -} diff --git a/worlds/adventure/Regions.py b/worlds/adventure/Regions.py index 00617b2f71..e72806ca45 100644 --- a/worlds/adventure/Regions.py +++ b/worlds/adventure/Regions.py @@ -1,4 +1,5 @@ from BaseClasses import MultiWorld, Region, Entrance, LocationProgressType +from Options import PerGameCommonOptions from .Locations import location_table, LocationData, AdventureLocation, dragon_room_to_region @@ -24,7 +25,7 @@ def connect(world: MultiWorld, player: int, source: str, target: str, rule: call connect(world, player, target, source, rule, True) -def create_regions(multiworld: MultiWorld, player: int, dragon_rooms: []) -> None: +def create_regions(options: PerGameCommonOptions, multiworld: MultiWorld, player: int, dragon_rooms: []) -> None: menu = Region("Menu", player, multiworld) @@ -74,7 +75,7 @@ def create_regions(multiworld: MultiWorld, player: int, dragon_rooms: []) -> Non credits_room_far_side.exits.append(Entrance(player, "CreditsFromFarSide", credits_room_far_side)) multiworld.regions.append(credits_room_far_side) - dragon_slay_check = multiworld.dragon_slay_check[player].value + dragon_slay_check = options.dragon_slay_check.value priority_locations = determine_priority_locations(multiworld, dragon_slay_check) for name, location_data in location_table.items(): diff --git a/worlds/adventure/Rules.py b/worlds/adventure/Rules.py index 6f4b53faa1..9302953012 100644 --- a/worlds/adventure/Rules.py +++ b/worlds/adventure/Rules.py @@ -6,7 +6,7 @@ from BaseClasses import LocationProgressType def set_rules(self) -> None: world = self.multiworld - use_bat_logic = world.bat_logic[self.player].value == BatLogic.option_use_logic + use_bat_logic = self.options.bat_logic.value == BatLogic.option_use_logic set_rule(world.get_entrance("YellowCastlePort", self.player), lambda state: state.has("Yellow Key", self.player)) @@ -28,7 +28,7 @@ def set_rules(self) -> None: lambda state: state.has("Bridge", self.player) or state.has("Magnet", self.player)) - dragon_slay_check = world.dragon_slay_check[self.player].value + dragon_slay_check = self.options.dragon_slay_check.value if dragon_slay_check: if self.difficulty_switch_b == DifficultySwitchB.option_hard_with_unlock_item: set_rule(world.get_location("Slay Yorgle", self.player), diff --git a/worlds/adventure/__init__.py b/worlds/adventure/__init__.py index 1c2583b3ed..ed5ebbd3dc 100644 --- a/worlds/adventure/__init__.py +++ b/worlds/adventure/__init__.py @@ -15,7 +15,8 @@ from Options import AssembleOptions from worlds.AutoWorld import WebWorld, World from Fill import fill_restrictive from worlds.generic.Rules import add_rule, set_rule -from .Options import adventure_option_definitions, DragonRandoType, DifficultySwitchA, DifficultySwitchB +from .Options import DragonRandoType, DifficultySwitchA, DifficultySwitchB, \ + AdventureOptions from .Rom import get_base_rom_bytes, get_base_rom_path, AdventureDeltaPatch, apply_basepatch, \ AdventureAutoCollectLocation from .Items import item_table, ItemData, nothing_item_id, event_table, AdventureItem, standard_item_max @@ -109,7 +110,7 @@ class AdventureWorld(World): game: ClassVar[str] = "Adventure" web: ClassVar[WebWorld] = AdventureWeb() - option_definitions: ClassVar[Dict[str, AssembleOptions]] = adventure_option_definitions + options_dataclass = AdventureOptions settings: ClassVar[AdventureSettings] item_name_to_id: ClassVar[Dict[str, int]] = {name: data.id for name, data in item_table.items()} location_name_to_id: ClassVar[Dict[str, int]] = {name: data.location_id for name, data in location_table.items()} @@ -149,18 +150,18 @@ class AdventureWorld(World): bytearray(f"ADVENTURE{__version__.replace('.', '')[:3]}_{self.player}_{self.multiworld.seed}", "utf8")[:21] self.rom_name.extend([0] * (21 - len(self.rom_name))) - self.dragon_rando_type = self.multiworld.dragon_rando_type[self.player].value - self.dragon_slay_check = self.multiworld.dragon_slay_check[self.player].value - self.connector_multi_slot = self.multiworld.connector_multi_slot[self.player].value - self.yorgle_speed = self.multiworld.yorgle_speed[self.player].value - self.yorgle_min_speed = self.multiworld.yorgle_min_speed[self.player].value - self.grundle_speed = self.multiworld.grundle_speed[self.player].value - self.grundle_min_speed = self.multiworld.grundle_min_speed[self.player].value - self.rhindle_speed = self.multiworld.rhindle_speed[self.player].value - self.rhindle_min_speed = self.multiworld.rhindle_min_speed[self.player].value - self.difficulty_switch_a = self.multiworld.difficulty_switch_a[self.player].value - self.difficulty_switch_b = self.multiworld.difficulty_switch_b[self.player].value - self.start_castle = self.multiworld.start_castle[self.player].value + self.dragon_rando_type = self.options.dragon_rando_type.value + self.dragon_slay_check = self.options.dragon_slay_check.value + self.connector_multi_slot = self.options.connector_multi_slot.value + self.yorgle_speed = self.options.yorgle_speed.value + self.yorgle_min_speed = self.options.yorgle_min_speed.value + self.grundle_speed = self.options.grundle_speed.value + self.grundle_min_speed = self.options.grundle_min_speed.value + self.rhindle_speed = self.options.rhindle_speed.value + self.rhindle_min_speed = self.options.rhindle_min_speed.value + self.difficulty_switch_a = self.options.difficulty_switch_a.value + self.difficulty_switch_b = self.options.difficulty_switch_b.value + self.start_castle = self.options.start_castle.value self.created_items = 0 if self.dragon_slay_check == 0: @@ -227,7 +228,7 @@ class AdventureWorld(World): extra_filler_count = num_locations - self.created_items # traps would probably go here, if enabled - freeincarnate_max = self.multiworld.freeincarnate_max[self.player].value + freeincarnate_max = self.options.freeincarnate_max.value actual_freeincarnates = min(extra_filler_count, freeincarnate_max) self.multiworld.itempool += [self.create_item("Freeincarnate") for _ in range(actual_freeincarnates)] self.created_items += actual_freeincarnates @@ -247,7 +248,7 @@ class AdventureWorld(World): self.created_items += 1 def create_regions(self) -> None: - create_regions(self.multiworld, self.player, self.dragon_rooms) + create_regions(self.options, self.multiworld, self.player, self.dragon_rooms) set_rules = set_rules @@ -354,7 +355,7 @@ class AdventureWorld(World): auto_collect_locations: [AdventureAutoCollectLocation] = [] local_item_to_location: {int, int} = {} bat_no_touch_locs: [LocationData] = [] - bat_logic: int = self.multiworld.bat_logic[self.player].value + bat_logic: int = self.options.bat_logic.value try: rom_deltas: { int, int } = {} self.place_dragons(rom_deltas) @@ -421,7 +422,7 @@ class AdventureWorld(World): item_position_data_start = get_item_position_data_start(unplaced_item.table_index) rom_deltas[item_position_data_start] = 0xff - if self.multiworld.connector_multi_slot[self.player].value: + if self.options.connector_multi_slot.value: rom_deltas[connector_port_offset] = (self.player & 0xff) else: rom_deltas[connector_port_offset] = 0 From 75bef3ddb15334d22ca6d0bbe905f93c4752a5ea Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Tue, 11 Jun 2024 00:42:57 +0200 Subject: [PATCH 2/5] Various: fix absolute imports in worlds (#3489) --- worlds/messenger/options.py | 2 +- worlds/shorthike/Rules.py | 3 ++- worlds/yugioh06/client_bh.py | 2 +- worlds/yugioh06/opponents.py | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/worlds/messenger/options.py b/worlds/messenger/options.py index 73adf4ebdf..1f76dba489 100644 --- a/worlds/messenger/options.py +++ b/worlds/messenger/options.py @@ -5,7 +5,7 @@ from schema import And, Optional, Or, Schema from Options import Accessibility, Choice, DeathLinkMixin, DefaultOnToggle, OptionDict, PerGameCommonOptions, \ PlandoConnections, Range, StartInventoryPool, Toggle, Visibility -from worlds.messenger.portals import CHECKPOINTS, PORTALS, SHOP_POINTS +from .portals import CHECKPOINTS, PORTALS, SHOP_POINTS class MessengerAccessibility(Accessibility): diff --git a/worlds/shorthike/Rules.py b/worlds/shorthike/Rules.py index 4a71ebd3c8..33741c6d80 100644 --- a/worlds/shorthike/Rules.py +++ b/worlds/shorthike/Rules.py @@ -1,5 +1,6 @@ from worlds.generic.Rules import forbid_items_for_player, add_rule -from worlds.shorthike.Options import Goal, GoldenFeatherProgression, MinShopCheckLogic, ShopCheckLogic +from .Options import Goal, GoldenFeatherProgression, MinShopCheckLogic, ShopCheckLogic + def create_rules(self, location_table): multiworld = self.multiworld diff --git a/worlds/yugioh06/client_bh.py b/worlds/yugioh06/client_bh.py index 910eba7c6a..ecbe48110a 100644 --- a/worlds/yugioh06/client_bh.py +++ b/worlds/yugioh06/client_bh.py @@ -5,7 +5,7 @@ from NetUtils import ClientStatus, NetworkItem import worlds._bizhawk as bizhawk from worlds._bizhawk.client import BizHawkClient -from worlds.yugioh06 import item_to_index +from . import item_to_index if TYPE_CHECKING: from worlds._bizhawk.context import BizHawkClientContext diff --git a/worlds/yugioh06/opponents.py b/worlds/yugioh06/opponents.py index 1746b56529..68d7c2880f 100644 --- a/worlds/yugioh06/opponents.py +++ b/worlds/yugioh06/opponents.py @@ -3,8 +3,8 @@ from typing import Dict, List, NamedTuple, Optional, Union from BaseClasses import MultiWorld from worlds.generic.Rules import CollectionRule -from worlds.yugioh06 import item_to_index, tier_1_opponents, yugioh06_difficulty -from worlds.yugioh06.locations import special +from . import item_to_index, tier_1_opponents, yugioh06_difficulty +from .locations import special class OpponentData(NamedTuple): From ccfffa11478981cdaa9317da88526bf75d27afdd Mon Sep 17 00:00:00 2001 From: Zach Parks Date: Mon, 10 Jun 2024 18:55:02 -0500 Subject: [PATCH 3/5] CODEOWNERS: Replace @ThePhar with @qwint as Hollow Knight maintainer. (#3508) --- docs/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index 10b962d499..9fbd483796 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -70,7 +70,7 @@ /worlds/heretic/ @Daivuk # Hollow Knight -/worlds/hk/ @BadMagic100 @ThePhar +/worlds/hk/ @BadMagic100 @qwint # Hylics 2 /worlds/hylics2/ @TRPG0 From 54531c6ebae4f3dab1ebb08a6513d51e96517e31 Mon Sep 17 00:00:00 2001 From: Justus Lind Date: Tue, 11 Jun 2024 11:11:19 +1000 Subject: [PATCH 4/5] Muse Dash: Remove regions for a decent speed gain in generating worlds (#3435) * Remove Muse Dash Regions. * Update comments. --- worlds/musedash/__init__.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/worlds/musedash/__init__.py b/worlds/musedash/__init__.py index a9eacbbcf8..ab3a4819fc 100644 --- a/worlds/musedash/__init__.py +++ b/worlds/musedash/__init__.py @@ -249,9 +249,7 @@ class MuseDashWorld(World): def create_regions(self) -> None: menu_region = Region("Menu", self.player, self.multiworld) - song_select_region = Region("Song Select", self.player, self.multiworld) - self.multiworld.regions += [menu_region, song_select_region] - menu_region.connect(song_select_region) + self.multiworld.regions += [menu_region] # Make a collection of all songs available for this rando. # 1. All starting songs @@ -265,18 +263,16 @@ class MuseDashWorld(World): self.random.shuffle(included_song_copy) all_selected_locations.extend(included_song_copy) - # Make a region per song/album, then adds 1-2 item locations to them + # Adds 2 item locations per song/album to the menu region. for i in range(0, len(all_selected_locations)): name = all_selected_locations[i] - region = Region(name, self.player, self.multiworld) - self.multiworld.regions.append(region) - song_select_region.connect(region, name, lambda state, place=name: state.has(place, self.player)) + loc1 = MuseDashLocation(self.player, name + "-0", self.md_collection.song_locations[name + "-0"], menu_region) + loc1.access_rule = lambda state, place=name: state.has(place, self.player) + menu_region.locations.append(loc1) - # Muse Dash requires 2 locations per song to be *interesting*. Balanced out by filler. - region.add_locations({ - name + "-0": self.md_collection.song_locations[name + "-0"], - name + "-1": self.md_collection.song_locations[name + "-1"] - }, MuseDashLocation) + loc2 = MuseDashLocation(self.player, name + "-1", self.md_collection.song_locations[name + "-1"], menu_region) + loc2.access_rule = lambda state, place=name: state.has(place, self.player) + menu_region.locations.append(loc2) def set_rules(self) -> None: self.multiworld.completion_condition[self.player] = lambda state: \ From 87d24eb38a00b1eee26b61a27d3cd9f1fd264e6a Mon Sep 17 00:00:00 2001 From: Louis M Date: Tue, 11 Jun 2024 18:59:46 -0400 Subject: [PATCH 5/5] Aquaria: Add entrance rule and fix start_inventory_from_pool (#3473) --- worlds/aquaria/Locations.py | 6 +++--- worlds/aquaria/Regions.py | 7 ++++--- worlds/aquaria/__init__.py | 12 ++++-------- worlds/aquaria/test/__init__.py | 6 +++--- worlds/aquaria/test/test_beast_form_access.py | 4 ++-- .../test_no_progression_hard_hidden_locations.py | 2 +- .../test/test_progression_hard_hidden_locations.py | 2 +- worlds/aquaria/test/test_sun_form_access.py | 3 +++ 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/worlds/aquaria/Locations.py b/worlds/aquaria/Locations.py index 7360efde06..33d165db41 100644 --- a/worlds/aquaria/Locations.py +++ b/worlds/aquaria/Locations.py @@ -185,7 +185,7 @@ class AquariaLocations: "Mithalas City, second bulb at the end of the top path": 698040, "Mithalas City, bulb in the top path": 698036, "Mithalas City, Mithalas Pot": 698174, - "Mithalas City, urn in the Cathedral flower tube entrance": 698128, + "Mithalas City, urn in the Castle flower tube entrance": 698128, } locations_mithalas_city_fishpass = { @@ -246,7 +246,7 @@ class AquariaLocations: "Kelp Forest top left area, bulb in the bottom left clearing": 698044, "Kelp Forest top left area, bulb in the path down from the top left clearing": 698045, "Kelp Forest top left area, bulb in the top left clearing": 698046, - "Kelp Forest top left, Jelly Egg": 698185, + "Kelp Forest top left area, Jelly Egg": 698185, } locations_forest_tl_fp = { @@ -332,7 +332,7 @@ class AquariaLocations: } locations_veil_tr_l = { - "The Veil top right area, bulb in the top of the waterfall": 698080, + "The Veil top right area, bulb at the top of the waterfall": 698080, "The Veil top right area, Transturtle": 698210, } diff --git a/worlds/aquaria/Regions.py b/worlds/aquaria/Regions.py index f2f85749f3..2812025925 100755 --- a/worlds/aquaria/Regions.py +++ b/worlds/aquaria/Regions.py @@ -771,6 +771,7 @@ class AquariaRegions: self.__connect_regions("Sunken City left area", "Sunken City boss area", self.sunken_city_l, self.sunken_city_boss, lambda state: _has_beast_form(state, self.player) and + _has_sun_form(state, self.player) and _has_energy_form(state, self.player) and _has_bind_song(state, self.player)) @@ -983,7 +984,7 @@ class AquariaRegions: lambda state: _has_damaging_item(state, self.player)) add_rule(self.multiworld.get_location("Mithalas City, third urn in the city reserve", self.player), lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, urn in the Cathedral flower tube entrance", self.player), + add_rule(self.multiworld.get_location("Mithalas City, urn in the Castle flower tube entrance", self.player), lambda state: _has_damaging_item(state, self.player)) add_rule(self.multiworld.get_location("Mithalas City Castle, urn in the bedroom", self.player), lambda state: _has_damaging_item(state, self.player)) @@ -1023,7 +1024,7 @@ class AquariaRegions: lambda state: _has_hot_soup(state, self.player) and _has_beast_form(state, self.player)) add_rule(self.multiworld.get_location("Sun Worm path, second cliff bulb", self.player), lambda state: _has_hot_soup(state, self.player) and _has_beast_form(state, self.player)) - add_rule(self.multiworld.get_location("The Veil top right area, bulb in the top of the waterfall", self.player), + add_rule(self.multiworld.get_location("The Veil top right area, bulb at the top of the waterfall", self.player), lambda state: _has_hot_soup(state, self.player) and _has_beast_form(state, self.player)) def __adjusting_under_rock_location(self) -> None: @@ -1175,7 +1176,7 @@ class AquariaRegions: self.multiworld.get_location("Sun Worm path, second cliff bulb", self.player).item_rule =\ lambda item: item.classification != ItemClassification.progression - self.multiworld.get_location("The Veil top right area, bulb in the top of the waterfall", + self.multiworld.get_location("The Veil top right area, bulb at the top of the waterfall", self.player).item_rule =\ lambda item: item.classification != ItemClassification.progression self.multiworld.get_location("Bubble Cave, bulb in the left cave wall", diff --git a/worlds/aquaria/__init__.py b/worlds/aquaria/__init__.py index 3c0cc3bded..ce46aeea75 100644 --- a/worlds/aquaria/__init__.py +++ b/worlds/aquaria/__init__.py @@ -167,14 +167,10 @@ class AquariaWorld(World): self.__pre_fill_item("Transturtle Simon Says", "Arnassi Ruins, Transturtle", precollected) self.__pre_fill_item("Transturtle Arnassi Ruins", "Simon Says area, Transturtle", precollected) for name, data in item_table.items(): - if name in precollected: - precollected.remove(name) - self.multiworld.itempool.append(self.create_item(self.get_filler_item_name())) - else: - if name not in self.exclude: - for i in range(data.count): - item = self.create_item(name) - self.multiworld.itempool.append(item) + if name not in self.exclude: + for i in range(data.count): + item = self.create_item(name) + self.multiworld.itempool.append(item) def set_rules(self) -> None: """ diff --git a/worlds/aquaria/test/__init__.py b/worlds/aquaria/test/__init__.py index 198ccb0f62..5c63c9bb29 100644 --- a/worlds/aquaria/test/__init__.py +++ b/worlds/aquaria/test/__init__.py @@ -56,7 +56,7 @@ after_home_water_locations = [ "Mithalas City, second bulb at the end of the top path", "Mithalas City, bulb in the top path", "Mithalas City, Mithalas Pot", - "Mithalas City, urn in the Cathedral flower tube entrance", + "Mithalas City, urn in the Castle flower tube entrance", "Mithalas City, Doll", "Mithalas City, urn inside a home fish pass", "Mithalas City Castle, bulb in the flesh hole", @@ -93,7 +93,7 @@ after_home_water_locations = [ "Kelp Forest top left area, bulb in the bottom left clearing", "Kelp Forest top left area, bulb in the path down from the top left clearing", "Kelp Forest top left area, bulb in the top left clearing", - "Kelp Forest top left, Jelly Egg", + "Kelp Forest top left area, Jelly Egg", "Kelp Forest top left area, bulb close to the Verse Egg", "Kelp Forest top left area, Verse Egg", "Kelp Forest top right area, bulb under the rock in the right path", @@ -125,7 +125,7 @@ after_home_water_locations = [ "Turtle cave, Urchin Costume", "The Veil top right area, bulb in the middle of the wall jump cliff", "The Veil top right area, Golden Starfish", - "The Veil top right area, bulb in the top of the waterfall", + "The Veil top right area, bulb at the top of the waterfall", "The Veil top right area, Transturtle", "The Veil bottom area, bulb in the left path", "The Veil bottom area, bulb in the spirit path", diff --git a/worlds/aquaria/test/test_beast_form_access.py b/worlds/aquaria/test/test_beast_form_access.py index c25070d470..4bb4d5656c 100644 --- a/worlds/aquaria/test/test_beast_form_access.py +++ b/worlds/aquaria/test/test_beast_form_access.py @@ -20,14 +20,14 @@ class BeastFormAccessTest(AquariaTestBase): "Mithalas City, second bulb at the end of the top path", "Mithalas City, bulb in the top path", "Mithalas City, Mithalas Pot", - "Mithalas City, urn in the Cathedral flower tube entrance", + "Mithalas City, urn in the Castle flower tube entrance", "Mermog cave, Piranha Egg", "Mithalas Cathedral, Mithalan Dress", "Turtle cave, bulb in Bubble Cliff", "Turtle cave, Urchin Costume", "Sun Worm path, first cliff bulb", "Sun Worm path, second cliff bulb", - "The Veil top right area, bulb in the top of the waterfall", + "The Veil top right area, bulb at the top of the waterfall", "Bubble Cave, bulb in the left cave wall", "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", "Bubble Cave, Verse Egg", diff --git a/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py b/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py index 817b9547a8..b0d2b0d880 100644 --- a/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py +++ b/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py @@ -30,7 +30,7 @@ class UNoProgressionHardHiddenTest(AquariaTestBase): "Final Boss area, bulb in the boss third form room", "Sun Worm path, first cliff bulb", "Sun Worm path, second cliff bulb", - "The Veil top right area, bulb in the top of the waterfall", + "The Veil top right area, bulb at the top of the waterfall", "Bubble Cave, bulb in the left cave wall", "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", "Bubble Cave, Verse Egg", diff --git a/worlds/aquaria/test/test_progression_hard_hidden_locations.py b/worlds/aquaria/test/test_progression_hard_hidden_locations.py index 2b7c8ddac9..390fc40b29 100644 --- a/worlds/aquaria/test/test_progression_hard_hidden_locations.py +++ b/worlds/aquaria/test/test_progression_hard_hidden_locations.py @@ -30,7 +30,7 @@ class UNoProgressionHardHiddenTest(AquariaTestBase): "Final Boss area, bulb in the boss third form room", "Sun Worm path, first cliff bulb", "Sun Worm path, second cliff bulb", - "The Veil top right area, bulb in the top of the waterfall", + "The Veil top right area, bulb at the top of the waterfall", "Bubble Cave, bulb in the left cave wall", "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", "Bubble Cave, Verse Egg", diff --git a/worlds/aquaria/test/test_sun_form_access.py b/worlds/aquaria/test/test_sun_form_access.py index dfd732ec91..cbe8c08a52 100644 --- a/worlds/aquaria/test/test_sun_form_access.py +++ b/worlds/aquaria/test/test_sun_form_access.py @@ -18,6 +18,9 @@ class SunFormAccessTest(AquariaTestBase): "Abyss right area, bulb behind the rock in the whale room", "Octopus Cave, Dumbo Egg", "Beating Octopus Prime", + "Sunken City, bulb on top of the boss area", + "Beating the Golem", + "Sunken City cleared", "Final Boss area, bulb in the boss third form room", "Objective complete" ]