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
This commit is contained in:
alwaysintreble 2023-03-24 18:55:24 -05:00 committed by GitHub
parent 77b2ed54a6
commit 0ed3865c30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 10 deletions

View File

@ -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,

View File

@ -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?

View File

@ -79,6 +79,7 @@ class HardLogicTest(MessengerTestBase):
class ChallengingLogicTest(MessengerTestBase):
options = {
"shuffle_seals": "false",
"logic_level": "challenging"
}