summary refs log tree commit diff stats
path: root/test/TestDoors.py
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2024-07-26 04:53:11 -0400
committerGitHub <noreply@github.com>2024-07-26 10:53:11 +0200
commit7641d9590110fa7b4901c7f7ca0384392ef24375 (patch)
tree8efdfa5be3a88879a690a4a7351eb7b635989dc7 /test/TestDoors.py
parent00c16023c45301224400a06f31f637fdedba00ee (diff)
downloadlingo-apworld-7641d9590110fa7b4901c7f7ca0384392ef24375.tar.gz
lingo-apworld-7641d9590110fa7b4901c7f7ca0384392ef24375.tar.bz2
lingo-apworld-7641d9590110fa7b4901c7f7ca0384392ef24375.zip
Lingo: Add panels mode door shuffle (#3163)
* Created panels mode door shuffle

* Added some panel door item names

* Remove RUNT TURN panel door

Not really useful.

* Fix logic with First SIX related stuff

* Add group_doors to slot data

* Fix LEVEL 2 behavior with panels mode

* Fixed unit tests

* Fixed duplicate IDs from merge

* Just regenerated new IDs

* Fixed duplication of color and door group items

* Removed unnecessary unit test option

* Fix The Seeker being achievable without entrance door

* Fix The Observant being achievable without locked panels

* Added some more panel doors

* Added Progressive Suits Area

* Lingo: Fix Basement access with THE MASTER

* Added indirect conditions for MASTER-blocked entrances

* Fixed Incomparable achievement access

* Fix STAIRS panel logic

* Fix merge error with good items

* Is this clearer?

* DREAD and TURN LEARN

* Allow a weird edge case for reduced locations

Panels mode door shuffle + grouped doors + color shuffle + pilgrimage enabled is exactly the right number of items for reduced locations. Removing color shuffle also allows for disabling pilgrimage, adding sunwarp locking, or both, with a couple of locations left over.

* Prevent small sphere one on panels mode

* Added shuffle_doors aliases for old options

* Fixed a unit test

* Updated datafile

* Tweaked requirements for reduced locations

* Added player name to OptionError messages

* Update generated.dat
Diffstat (limited to 'test/TestDoors.py')
-rw-r--r--test/TestDoors.py56
1 files changed, 53 insertions, 3 deletions
diff --git a/test/TestDoors.py b/test/TestDoors.py index f496c5f..cfbd7f3 100644 --- a/test/TestDoors.py +++ b/test/TestDoors.py
@@ -3,7 +3,7 @@ from . import LingoTestBase
3 3
4class TestRequiredRoomLogic(LingoTestBase): 4class TestRequiredRoomLogic(LingoTestBase):
5 options = { 5 options = {
6 "shuffle_doors": "complex", 6 "shuffle_doors": "doors",
7 "shuffle_colors": "false", 7 "shuffle_colors": "false",
8 } 8 }
9 9
@@ -50,7 +50,7 @@ class TestRequiredRoomLogic(LingoTestBase):
50 50
51class TestRequiredDoorLogic(LingoTestBase): 51class TestRequiredDoorLogic(LingoTestBase):
52 options = { 52 options = {
53 "shuffle_doors": "complex", 53 "shuffle_doors": "doors",
54 "shuffle_colors": "false", 54 "shuffle_colors": "false",
55 } 55 }
56 56
@@ -78,7 +78,8 @@ class TestRequiredDoorLogic(LingoTestBase):
78 78
79class TestSimpleDoors(LingoTestBase): 79class TestSimpleDoors(LingoTestBase):
80 options = { 80 options = {
81 "shuffle_doors": "simple", 81 "shuffle_doors": "doors",
82 "group_doors": "true",
82 "shuffle_colors": "false", 83 "shuffle_colors": "false",
83 } 84 }
84 85
@@ -90,3 +91,52 @@ class TestSimpleDoors(LingoTestBase):
90 self.assertTrue(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player)) 91 self.assertTrue(self.multiworld.state.can_reach("Outside The Wanderer", "Region", self.player))
91 self.assertTrue(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player)) 92 self.assertTrue(self.multiworld.state.can_reach("Orange Tower Third Floor", "Region", self.player))
92 93
94
95class TestPanels(LingoTestBase):
96 options = {
97 "shuffle_doors": "panels"
98 }
99
100 def test_requirement(self):
101 self.assertFalse(self.can_reach_location("Starting Room - HIDDEN"))
102 self.assertFalse(self.can_reach_location("Hidden Room - OPEN"))
103 self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
104
105 self.collect_by_name("Starting Room - HIDDEN (Panel)")
106 self.assertTrue(self.can_reach_location("Starting Room - HIDDEN"))
107 self.assertFalse(self.can_reach_location("Hidden Room - OPEN"))
108 self.assertFalse(self.can_reach_location("The Seeker - Achievement"))
109
110 self.collect_by_name("Hidden Room - OPEN (Panel)")
111 self.assertTrue(self.can_reach_location("Starting Room - HIDDEN"))
112 self.assertTrue(self.can_reach_location("Hidden Room - OPEN"))
113 self.assertTrue(self.can_reach_location("The Seeker - Achievement"))
114
115
116class TestGroupedPanels(LingoTestBase):
117 options = {
118 "shuffle_doors": "panels",
119 "group_doors": "true",
120 "shuffle_colors": "false",
121 }
122
123 def test_requirement(self):
124 self.assertFalse(self.can_reach_location("Hub Room - SLAUGHTER"))
125 self.assertFalse(self.can_reach_location("Dread Hallway - DREAD"))
126 self.assertFalse(self.can_reach_location("The Tenacious - Achievement"))
127
128 self.collect_by_name("Tenacious Entrance Panels")
129 self.assertTrue(self.can_reach_location("Hub Room - SLAUGHTER"))
130 self.assertFalse(self.can_reach_location("Dread Hallway - DREAD"))
131 self.assertFalse(self.can_reach_location("The Tenacious - Achievement"))
132
133 self.collect_by_name("Outside The Agreeable - BLACK (Panel)")
134 self.assertTrue(self.can_reach_location("Hub Room - SLAUGHTER"))
135 self.assertTrue(self.can_reach_location("Dread Hallway - DREAD"))
136 self.assertFalse(self.can_reach_location("The Tenacious - Achievement"))
137
138 self.collect_by_name("The Tenacious - Black Palindromes (Panels)")
139 self.assertTrue(self.can_reach_location("Hub Room - SLAUGHTER"))
140 self.assertTrue(self.can_reach_location("Dread Hallway - DREAD"))
141 self.assertTrue(self.can_reach_location("The Tenacious - Achievement"))
142