diff options
-rw-r--r-- | __init__.py | 1 | ||||
-rw-r--r-- | player_logic.py | 3 | ||||
-rw-r--r-- | test/TestDoors.py | 10 | ||||
-rw-r--r-- | test/TestOrangeTower.py | 4 | ||||
-rw-r--r-- | test/TestProgressive.py | 6 | ||||
-rw-r--r-- | test/__init__.py | 8 | ||||
-rw-r--r-- | testing.py | 2 |
7 files changed, 27 insertions, 7 deletions
diff --git a/__init__.py b/__init__.py index f22d344..0889674 100644 --- a/__init__.py +++ b/__init__.py | |||
@@ -11,7 +11,6 @@ from .options import LingoOptions | |||
11 | from .player_logic import LingoPlayerLogic | 11 | from .player_logic import LingoPlayerLogic |
12 | from .regions import create_regions | 12 | from .regions import create_regions |
13 | from .static_logic import Room, RoomEntrance | 13 | from .static_logic import Room, RoomEntrance |
14 | from .testing import LingoTestOptions | ||
15 | 14 | ||
16 | 15 | ||
17 | class LingoWebWorld(WebWorld): | 16 | class LingoWebWorld(WebWorld): |
diff --git a/player_logic.py b/player_logic.py index b046f1c..fa497c5 100644 --- a/player_logic.py +++ b/player_logic.py | |||
@@ -6,7 +6,6 @@ from .options import LocationChecks, ShuffleDoors, VictoryCondition | |||
6 | from .static_logic import DOORS_BY_ROOM, Door, PAINTINGS, PAINTINGS_BY_ROOM, PAINTING_ENTRANCES, PAINTING_EXITS, \ | 6 | from .static_logic import DOORS_BY_ROOM, Door, PAINTINGS, PAINTINGS_BY_ROOM, PAINTING_ENTRANCES, PAINTING_EXITS, \ |
7 | PANELS_BY_ROOM, PROGRESSION_BY_ROOM, REQUIRED_PAINTING_ROOMS, REQUIRED_PAINTING_WHEN_NO_DOORS_ROOMS, RoomAndDoor, \ | 7 | PANELS_BY_ROOM, PROGRESSION_BY_ROOM, REQUIRED_PAINTING_ROOMS, REQUIRED_PAINTING_WHEN_NO_DOORS_ROOMS, RoomAndDoor, \ |
8 | RoomAndPanel | 8 | RoomAndPanel |
9 | from .testing import LingoTestOptions | ||
10 | 9 | ||
11 | if TYPE_CHECKING: | 10 | if TYPE_CHECKING: |
12 | from . import LingoWorld | 11 | from . import LingoWorld |
@@ -224,7 +223,7 @@ class LingoPlayerLogic: | |||
224 | "kind of logic error.") | 223 | "kind of logic error.") |
225 | 224 | ||
226 | if door_shuffle != ShuffleDoors.option_none and location_classification != LocationClassification.insanity \ | 225 | if door_shuffle != ShuffleDoors.option_none and location_classification != LocationClassification.insanity \ |
227 | and not early_color_hallways and LingoTestOptions.disable_forced_good_item is False: | 226 | and not early_color_hallways is False: |
228 | # If shuffle doors is on, force a useful item onto the HI panel. This may not necessarily get you out of BK, | 227 | # If shuffle doors is on, force a useful item onto the HI panel. This may not necessarily get you out of BK, |
229 | # but the goal is to allow you to reach at least one more check. The non-painting ones are hardcoded right | 228 | # but the goal is to allow you to reach at least one more check. The non-painting ones are hardcoded right |
230 | # now. We only allow the entrance to the Pilgrim Room if color shuffle is off, because otherwise there are | 229 | # now. We only allow the entrance to the Pilgrim Room if color shuffle is off, because otherwise there are |
diff --git a/test/TestDoors.py b/test/TestDoors.py index f496c5f..49a0f9c 100644 --- a/test/TestDoors.py +++ b/test/TestDoors.py | |||
@@ -8,6 +8,8 @@ class TestRequiredRoomLogic(LingoTestBase): | |||
8 | } | 8 | } |
9 | 9 | ||
10 | def test_pilgrim_first(self) -> None: | 10 | def test_pilgrim_first(self) -> None: |
11 | self.remove_forced_good_item() | ||
12 | |||
11 | self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player)) | 13 | self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player)) |
12 | self.assertFalse(self.multiworld.state.can_reach("Pilgrim Antechamber", "Region", self.player)) | 14 | self.assertFalse(self.multiworld.state.can_reach("Pilgrim Antechamber", "Region", self.player)) |
13 | self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player)) | 15 | self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player)) |
@@ -28,6 +30,8 @@ class TestRequiredRoomLogic(LingoTestBase): | |||
28 | self.assertTrue(self.can_reach_location("The Seeker - Achievement")) | 30 | self.assertTrue(self.can_reach_location("The Seeker - Achievement")) |
29 | 31 | ||
30 | def test_hidden_first(self) -> None: | 32 | def test_hidden_first(self) -> None: |
33 | self.remove_forced_good_item() | ||
34 | |||
31 | self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player)) | 35 | self.assertFalse(self.multiworld.state.can_reach("The Seeker", "Region", self.player)) |
32 | self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player)) | 36 | self.assertFalse(self.multiworld.state.can_reach("Pilgrim Room", "Region", self.player)) |
33 | self.assertFalse(self.can_reach_location("The Seeker - Achievement")) | 37 | self.assertFalse(self.can_reach_location("The Seeker - Achievement")) |
@@ -55,6 +59,8 @@ class TestRequiredDoorLogic(LingoTestBase): | |||
55 | } | 59 | } |
56 | 60 | ||
57 | def test_through_rhyme(self) -> None: | 61 | def test_through_rhyme(self) -> None: |
62 | self.remove_forced_good_item() | ||
63 | |||
58 | self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall")) | 64 | self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall")) |
59 | 65 | ||
60 | self.collect_by_name("Starting Room - Rhyme Room Entrance") | 66 | self.collect_by_name("Starting Room - Rhyme Room Entrance") |
@@ -64,6 +70,8 @@ class TestRequiredDoorLogic(LingoTestBase): | |||
64 | self.assertTrue(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall")) | 70 | self.assertTrue(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall")) |
65 | 71 | ||
66 | def test_through_hidden(self) -> None: | 72 | def test_through_hidden(self) -> None: |
73 | self.remove_forced_good_item() | ||
74 | |||
67 | self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall")) | 75 | self.assertFalse(self.can_reach_location("Rhyme Room - Circle/Looped Square Wall")) |
68 | 76 | ||
69 | self.collect_by_name("Starting Room - Rhyme Room Entrance") | 77 | self.collect_by_name("Starting Room - Rhyme Room Entrance") |
@@ -83,6 +91,8 @@ class TestSimpleDoors(LingoTestBase): | |||
83 | } | 91 | } |
84 | 92 | ||
85 | def test_requirement(self): | 93 | def test_requirement(self): |
94 | self.remove_forced_good_item() | ||
95 | |||
86 | self.assertFalse(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player)) | 96 | self.assertFalse(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player)) |
87 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) | 97 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) |
88 | 98 | ||
diff --git a/test/TestOrangeTower.py b/test/TestOrangeTower.py index 7b0c3bb..9170de1 100644 --- a/test/TestOrangeTower.py +++ b/test/TestOrangeTower.py | |||
@@ -8,6 +8,8 @@ class TestProgressiveOrangeTower(LingoTestBase): | |||
8 | } | 8 | } |
9 | 9 | ||
10 | def test_from_welcome_back(self) -> None: | 10 | def test_from_welcome_back(self) -> None: |
11 | self.remove_forced_good_item() | ||
12 | |||
11 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower First Floor", "Region", self.player)) | 13 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower First Floor", "Region", self.player)) |
12 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Second Floor", "Region", self.player)) | 14 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Second Floor", "Region", self.player)) |
13 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) | 15 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) |
@@ -83,6 +85,8 @@ class TestProgressiveOrangeTower(LingoTestBase): | |||
83 | self.assertTrue(self.multiworld.state.can_reach("Orange Tower Seventh Floor", "Region", self.player)) | 85 | self.assertTrue(self.multiworld.state.can_reach("Orange Tower Seventh Floor", "Region", self.player)) |
84 | 86 | ||
85 | def test_from_hub_room(self) -> None: | 87 | def test_from_hub_room(self) -> None: |
88 | self.remove_forced_good_item() | ||
89 | |||
86 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower First Floor", "Region", self.player)) | 90 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower First Floor", "Region", self.player)) |
87 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Second Floor", "Region", self.player)) | 91 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Second Floor", "Region", self.player)) |
88 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) | 92 | self.assertFalse(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) |
diff --git a/test/TestProgressive.py b/test/TestProgressive.py index 917c6e7..8edc7ce 100644 --- a/test/TestProgressive.py +++ b/test/TestProgressive.py | |||
@@ -7,6 +7,8 @@ class TestComplexProgressiveHallwayRoom(LingoTestBase): | |||
7 | } | 7 | } |
8 | 8 | ||
9 | def test_item(self): | 9 | def test_item(self): |
10 | self.remove_forced_good_item() | ||
11 | |||
10 | self.assertFalse(self.multiworld.state.can_reach("Outside The Agreeable", "Region", self.player)) | 12 | self.assertFalse(self.multiworld.state.can_reach("Outside The Agreeable", "Region", self.player)) |
11 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (2)", "Region", self.player)) | 13 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (2)", "Region", self.player)) |
12 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (3)", "Region", self.player)) | 14 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (3)", "Region", self.player)) |
@@ -58,6 +60,8 @@ class TestSimpleHallwayRoom(LingoTestBase): | |||
58 | } | 60 | } |
59 | 61 | ||
60 | def test_item(self): | 62 | def test_item(self): |
63 | self.remove_forced_good_item() | ||
64 | |||
61 | self.assertFalse(self.multiworld.state.can_reach("Outside The Agreeable", "Region", self.player)) | 65 | self.assertFalse(self.multiworld.state.can_reach("Outside The Agreeable", "Region", self.player)) |
62 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (2)", "Region", self.player)) | 66 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (2)", "Region", self.player)) |
63 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (3)", "Region", self.player)) | 67 | self.assertFalse(self.multiworld.state.can_reach("Hallway Room (3)", "Region", self.player)) |
@@ -86,6 +90,8 @@ class TestProgressiveArtGallery(LingoTestBase): | |||
86 | } | 90 | } |
87 | 91 | ||
88 | def test_item(self): | 92 | def test_item(self): |
93 | self.remove_forced_good_item() | ||
94 | |||
89 | self.assertFalse(self.multiworld.state.can_reach("Art Gallery", "Region", self.player)) | 95 | self.assertFalse(self.multiworld.state.can_reach("Art Gallery", "Region", self.player)) |
90 | self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) | 96 | self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) |
91 | self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) | 97 | self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) |
diff --git a/test/__init__.py b/test/__init__.py index ffbf903..7ff456d 100644 --- a/test/__init__.py +++ b/test/__init__.py | |||
@@ -1,7 +1,6 @@ | |||
1 | from typing import ClassVar | 1 | from typing import ClassVar |
2 | 2 | ||
3 | from test.bases import WorldTestBase | 3 | from test.bases import WorldTestBase |
4 | from .. import LingoTestOptions | ||
5 | 4 | ||
6 | 5 | ||
7 | class LingoTestBase(WorldTestBase): | 6 | class LingoTestBase(WorldTestBase): |
@@ -9,5 +8,10 @@ class LingoTestBase(WorldTestBase): | |||
9 | player: ClassVar[int] = 1 | 8 | player: ClassVar[int] = 1 |
10 | 9 | ||
11 | def world_setup(self, *args, **kwargs): | 10 | def world_setup(self, *args, **kwargs): |
12 | LingoTestOptions.disable_forced_good_item = True | ||
13 | super().world_setup(*args, **kwargs) | 11 | super().world_setup(*args, **kwargs) |
12 | |||
13 | def remove_forced_good_item(self): | ||
14 | location = self.multiworld.get_location("Second Room - Good Luck", self.player) | ||
15 | self.remove(location.item) | ||
16 | self.multiworld.itempool.append(location.item) | ||
17 | self.multiworld.state.events.add(location) | ||
diff --git a/testing.py b/testing.py deleted file mode 100644 index 22fafea..0000000 --- a/testing.py +++ /dev/null | |||
@@ -1,2 +0,0 @@ | |||
1 | class LingoTestOptions: | ||
2 | disable_forced_good_item: bool = False | ||