| 
									
										
										
										
											2025-08-01 01:16:54 +02:00
										 |  |  | from ..test.bases import WitnessMultiworldTestBase | 
					
						
							| 
									
										
										
										
											2024-07-06 13:40:55 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestElevatorsComeToYouBleed(WitnessMultiworldTestBase): | 
					
						
							|  |  |  |     options_per_world = [ | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-11-29 20:45:44 +01:00
										 |  |  |             "elevators_come_to_you": {}, | 
					
						
							| 
									
										
										
										
											2024-07-06 13:40:55 +02:00
										 |  |  |         }, | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-11-29 20:45:44 +01:00
										 |  |  |             "elevators_come_to_you": {"Quarry Elevator", "Swamp Long Bridge", "Bunker Elevator"}, | 
					
						
							| 
									
										
										
										
											2024-07-06 13:40:55 +02:00
										 |  |  |         }, | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-11-29 20:45:44 +01:00
										 |  |  |             "elevators_come_to_you": {} | 
					
						
							| 
									
										
										
										
											2024-07-06 13:40:55 +02:00
										 |  |  |         }, | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     common_options = { | 
					
						
							|  |  |  |         "shuffle_symbols": False, | 
					
						
							|  |  |  |         "shuffle_doors": "panels", | 
					
						
							| 
									
										
										
										
											2024-11-29 20:45:44 +01:00
										 |  |  |         "shuffle_boat": True, | 
					
						
							|  |  |  |         "shuffle_EPs": "individual", | 
					
						
							|  |  |  |         "obelisk_keys": False, | 
					
						
							| 
									
										
										
										
											2024-07-06 13:40:55 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_correct_access_per_player(self) -> None: | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Test that in a multiworld with players that alternate the elevators_come_to_you option, | 
					
						
							|  |  |  |         the actual behavior alternates as well and doesn't bleed over from slot to slot. | 
					
						
							|  |  |  |         (This is essentially a "does connection info bleed over" test). | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-29 20:45:44 +01:00
										 |  |  |         combinations = [ | 
					
						
							|  |  |  |             ("Quarry Elevator Control (Panel)", "Quarry Boathouse Intro Left"), | 
					
						
							|  |  |  |             ("Swamp Long Bridge (Panel)", "Swamp Long Bridge Side EP"), | 
					
						
							|  |  |  |             ("Bunker Elevator Control (Panel)", "Bunker Laser Panel"), | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for item, location in combinations: | 
					
						
							|  |  |  |             with self.subTest(f"Test that {item} only locks {location} for player 2"): | 
					
						
							|  |  |  |                 self.assertFalse(self.multiworld.state.can_reach_location(location, 1)) | 
					
						
							|  |  |  |                 self.assertFalse(self.multiworld.state.can_reach_location(location, 2)) | 
					
						
							|  |  |  |                 self.assertFalse(self.multiworld.state.can_reach_location(location, 3)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 self.collect_by_name(item, 1) | 
					
						
							|  |  |  |                 self.collect_by_name(item, 2) | 
					
						
							|  |  |  |                 self.collect_by_name(item, 3) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 self.assertFalse(self.multiworld.state.can_reach_location(location, 1)) | 
					
						
							|  |  |  |                 self.assertTrue(self.multiworld.state.can_reach_location(location, 2)) | 
					
						
							|  |  |  |                 self.assertFalse(self.multiworld.state.can_reach_location(location, 3)) |