67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from ..test import WitnessMultiworldTestBase, WitnessTestBase | ||
|  | 
 | ||
|  | 
 | ||
|  | class TestElevatorsComeToYou(WitnessTestBase): | ||
|  |     options = { | ||
|  |         "elevators_come_to_you": True, | ||
|  |         "shuffle_doors": "mixed", | ||
|  |         "shuffle_symbols": False, | ||
|  |     } | ||
|  | 
 | ||
|  |     def test_bunker_laser(self) -> None: | ||
|  |         """
 | ||
|  |         In elevators_come_to_you, Bunker can be entered from the back. | ||
|  |         This means that you can access the laser with just Bunker Elevator Control (Panel). | ||
|  |         It also means that you can, for example, access UV Room with the Control and the Elevator Room Entry Door. | ||
|  |         """
 | ||
|  | 
 | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", self.player)) | ||
|  | 
 | ||
|  |         self.collect_by_name("Bunker Elevator Control (Panel)") | ||
|  | 
 | ||
|  |         self.assertTrue(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", self.player)) | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker UV Room 2", "Location", self.player)) | ||
|  | 
 | ||
|  |         self.collect_by_name("Bunker Elevator Room Entry (Door)") | ||
|  |         self.collect_by_name("Bunker Drop-Down Door Controls (Panel)") | ||
|  | 
 | ||
|  |         self.assertTrue(self.multiworld.state.can_reach("Bunker UV Room 2", "Location", self.player)) | ||
|  | 
 | ||
|  | 
 | ||
|  | class TestElevatorsComeToYouBleed(WitnessMultiworldTestBase): | ||
|  |     options_per_world = [ | ||
|  |         { | ||
|  |             "elevators_come_to_you": False, | ||
|  |         }, | ||
|  |         { | ||
|  |             "elevators_come_to_you": True, | ||
|  |         }, | ||
|  |         { | ||
|  |             "elevators_come_to_you": False, | ||
|  |         }, | ||
|  |     ] | ||
|  | 
 | ||
|  |     common_options = { | ||
|  |         "shuffle_symbols": False, | ||
|  |         "shuffle_doors": "panels", | ||
|  |     } | ||
|  | 
 | ||
|  |     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). | ||
|  |         """
 | ||
|  | 
 | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", 1)) | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", 2)) | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", 3)) | ||
|  | 
 | ||
|  |         self.collect_by_name(["Bunker Elevator Control (Panel)"], 1) | ||
|  |         self.collect_by_name(["Bunker Elevator Control (Panel)"], 2) | ||
|  |         self.collect_by_name(["Bunker Elevator Control (Panel)"], 3) | ||
|  | 
 | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", 1)) | ||
|  |         self.assertTrue(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", 2)) | ||
|  |         self.assertFalse(self.multiworld.state.can_reach("Bunker Laser Panel", "Location", 3)) |