51 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
from ..test import WitnessMultiworldTestBase
 | 
						|
 | 
						|
 | 
						|
class TestElevatorsComeToYouBleed(WitnessMultiworldTestBase):
 | 
						|
    options_per_world = [
 | 
						|
        {
 | 
						|
            "elevators_come_to_you": {},
 | 
						|
        },
 | 
						|
        {
 | 
						|
            "elevators_come_to_you": {"Quarry Elevator", "Swamp Long Bridge", "Bunker Elevator"},
 | 
						|
        },
 | 
						|
        {
 | 
						|
            "elevators_come_to_you": {}
 | 
						|
        },
 | 
						|
    ]
 | 
						|
 | 
						|
    common_options = {
 | 
						|
        "shuffle_symbols": False,
 | 
						|
        "shuffle_doors": "panels",
 | 
						|
        "shuffle_boat": True,
 | 
						|
        "shuffle_EPs": "individual",
 | 
						|
        "obelisk_keys": False,
 | 
						|
    }
 | 
						|
 | 
						|
    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).
 | 
						|
        """
 | 
						|
 | 
						|
        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))
 |