mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00

Despite earlier efforts, there were still rare fill errors when door shuffle and color shuffle were on and early color hallways was off, because sphere 1 was too small. This turns "Starting Room - HI" back into a location, which should give the algorithm more room. The "forced good item" pool has been reconsidered. The problem with the specific item that caused the recent failure (Welcome Back - Shortcut to Starting Room) is that it only provided one location when color shuffle was on, which is a net of zero considering that the GOOD LUCK check was forced. It will no longer show up as a good item unless color shuffle is off. On an opposite vein, Rhyme Room Doors will now show up even if color shuffle is on, because it gives color hallways access by itself. A good item will only be forced onto GOOD LUCK now if there is more than one player.
93 lines
4.6 KiB
Python
93 lines
4.6 KiB
Python
from . import LingoTestBase
|
|
|
|
|
|
class TestRequiredRoomLogic(LingoTestBase):
|
|
options = {
|
|
"shuffle_doors": "complex",
|
|
"shuffle_colors": "false",
|
|
}
|
|
|
|
def test_pilgrim_first(self) -> None:
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Antechamber", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Sun Painting")
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Antechamber", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Shortcut to The Seeker")
|
|
self.assertTrue(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Starting Room - Back Right Door")
|
|
self.assertTrue(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
def test_hidden_first(self) -> None:
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Starting Room - Back Right Door")
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Shortcut to The Seeker")
|
|
self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
self.collect_by_name("Pilgrim Room - Sun Painting")
|
|
self.assertTrue(self.multiworld.state.can_reach("The Seeker", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player))
|
|
self.assertTrue(self.can_reach_location("The Seeker - Achievement"))
|
|
|
|
|
|
class TestRequiredDoorLogic(LingoTestBase):
|
|
options = {
|
|
"shuffle_doors": "complex",
|
|
"shuffle_colors": "false",
|
|
}
|
|
|
|
def test_through_rhyme(self) -> None:
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Starting Room - Rhyme Room Entrance")
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Rhyme Room (Looped Square) - Door to Circle")
|
|
self.assertTrue(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
def test_through_hidden(self) -> None:
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Starting Room - Rhyme Room Entrance")
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Starting Room - Back Right Door")
|
|
self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
self.collect_by_name("Hidden Room - Rhyme Room Entrance")
|
|
self.assertTrue(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall"))
|
|
|
|
|
|
class TestSimpleDoors(LingoTestBase):
|
|
options = {
|
|
"shuffle_doors": "simple",
|
|
"shuffle_colors": "false",
|
|
}
|
|
|
|
def test_requirement(self):
|
|
self.assertFalse(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player))
|
|
self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player))
|
|
|
|
self.collect_by_name("Rhyme Room Doors")
|
|
self.assertTrue(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player))
|
|
self.assertTrue(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player))
|
|
|