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))
							 |