38 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from ..rules import _has_lasers
							 | 
						||
| 
								 | 
							
								from ..test import WitnessTestBase
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestDisableNonRandomized(WitnessTestBase):
							 | 
						||
| 
								 | 
							
								    options = {
							 | 
						||
| 
								 | 
							
								        "disable_non_randomized_puzzles": True,
							 | 
						||
| 
								 | 
							
								        "shuffle_doors": "panels",
							 | 
						||
| 
								 | 
							
								        "early_symbol_item": False,
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_locations_got_disabled_and_alternate_activation_triggers_work(self) -> None:
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								        Test the different behaviors of the disable_non_randomized mode:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        1. Unrandomized locations like Orchard Apple Tree 5 are disabled.
							 | 
						||
| 
								 | 
							
								        2. Certain doors or lasers that would usually be activated by unrandomized panels depend on event items instead.
							 | 
						||
| 
								 | 
							
								        3. These alternate activations are tied to solving Discarded Panels.
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with self.subTest("Test that unrandomized locations are disabled."):
							 | 
						||
| 
								 | 
							
								            self.assert_location_does_not_exist("Orchard Apple Tree 5")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with self.subTest("Test that alternate activation trigger events exist."):
							 | 
						||
| 
								 | 
							
								            self.assert_dependency_on_event_item(
							 | 
						||
| 
								 | 
							
								                self.world.get_entrance("Town Tower After Third Door to Town Tower Top"),
							 | 
						||
| 
								 | 
							
								                "Town Tower 4th Door Opens",
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with self.subTest("Test that alternate activation triggers award lasers."):
							 | 
						||
| 
								 | 
							
								            self.assertFalse(_has_lasers(1, self.world, False)(self.multiworld.state))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.collect_by_name("Triangles")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            # Alternate triggers yield Bunker Laser (Mountainside Discard) and Monastery Laser (Desert Discard)
							 | 
						||
| 
								 | 
							
								            self.assertTrue(_has_lasers(2, self.world, False)(self.multiworld.state))
							 | 
						||
| 
								 | 
							
								            self.assertFalse(_has_lasers(3, self.world, False)(self.multiworld.state))
							 |