From 0ed3865c3045d7046d73510c1d4383bf432bcb1e Mon Sep 17 00:00:00 2001 From: alwaysintreble Date: Fri, 24 Mar 2023 18:55:24 -0500 Subject: [PATCH] The Messenger: Fix a missing location rule and missing known issue (#1586) * fix missing rule * document a missing known issue * fix a break when shuffle seals is off * test the thing i just fixed * invert the if so it's a bit faster --- worlds/messenger/Rules.py | 17 +++++++---------- worlds/messenger/docs/en_The Messenger.md | 1 + worlds/messenger/test/TestLogic.py | 1 + 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/worlds/messenger/Rules.py b/worlds/messenger/Rules.py index 24e03544..53ea90fe 100644 --- a/worlds/messenger/Rules.py +++ b/worlds/messenger/Rules.py @@ -134,22 +134,17 @@ class MessengerHardRules(MessengerRules): self.location_rules.update({ "Howling Grotto Seal - Windy Saws and Balls": self.true, "Glacial Peak Seal - Projectile Spike Pit": self.true, + "Claustro": self.has_wingsuit, }) self.extra_rules = { - "Climbing Claws": self.has_dart, - "Astral Seed": self.has_dart, - "Candle": self.has_dart, - "Key of Strength": lambda state: state.has("Power Thistle", self.player) or - self.has_dart(state) or - self.has_windmill(state), + "Key of Strength": lambda state: self.has_dart(state) or self.has_windmill(state), "Key of Symbiosis": self.has_windmill, "Autumn Hills Seal - Spike Ball Darts": lambda state: (self.has_dart(state) and self.has_windmill(state)) or self.has_wingsuit(state), "Glacial Peak Seal - Glacial Air Swag": self.has_windmill, - "Underworld Seal - Fireball Wave": lambda state: self.has_wingsuit(state) - or state.has_all({"Ninja Tabi", "Windmill Shuriken"}, - self.player), + "Underworld Seal - Fireball Wave": lambda state: state.has_all({"Ninja Tabi", "Windmill Shuriken"}, + self.player), } def has_windmill(self, state: CollectionState) -> bool: @@ -158,6 +153,8 @@ class MessengerHardRules(MessengerRules): def set_messenger_rules(self) -> None: super().set_messenger_rules() for loc, rule in self.extra_rules.items(): + if not self.world.multiworld.shuffle_seals[self.player] and "Seal" in loc: + continue add_rule(self.world.multiworld.get_location(loc, self.player), rule, "or") @@ -196,7 +193,7 @@ class MessengerOOBRules(MessengerRules): self.location_rules = { "Claustro": self.has_wingsuit, - "Key of Strength": self.has_wingsuit, + "Key of Strength": lambda state: self.has_vertical(state) or state.has("Power Thistle", self.player), "Key of Love": lambda state: state.has_all({"Sun Crest", "Moon Crest"}, self.player), "Pyro": self.has_tabi, "Key of Chaos": self.has_tabi, diff --git a/worlds/messenger/docs/en_The Messenger.md b/worlds/messenger/docs/en_The Messenger.md index 16faa97c..c4066845 100644 --- a/worlds/messenger/docs/en_The Messenger.md +++ b/worlds/messenger/docs/en_The Messenger.md @@ -66,6 +66,7 @@ for it. The groups you can use for The Messenger are: * Sometimes upon teleporting back to HQ, Ninja will run left and enter a different portal than the one entered by the player. * Text entry menus don't accept controller input +* Opening the shop chest in power seal hunt mode from the tower of time HQ will soft lock the game. ## What do I do if I have a problem? diff --git a/worlds/messenger/test/TestLogic.py b/worlds/messenger/test/TestLogic.py index f12f3bda..4f9e1ecc 100644 --- a/worlds/messenger/test/TestLogic.py +++ b/worlds/messenger/test/TestLogic.py @@ -79,6 +79,7 @@ class HardLogicTest(MessengerTestBase): class ChallengingLogicTest(MessengerTestBase): options = { + "shuffle_seals": "false", "logic_level": "challenging" }