| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | import random | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  | from typing import ClassVar | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-08 12:37:45 -04:00
										 |  |  | from BaseClasses import get_seed | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  | from test.param import classvar_matrix | 
					
						
							|  |  |  | from .. import SVTestBase, SVTestCase, solo_multiworld | 
					
						
							| 
									
										
										
										
											2025-04-08 12:37:45 -04:00
										 |  |  | from ..TestGeneration import get_all_permanent_progression_items | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | from ..assertion import ModAssertMixin, WorldAssertMixin | 
					
						
							| 
									
										
										
										
											2025-03-23 22:32:34 -04:00
										 |  |  | from ..options.presets import allsanity_mods_6_x_x | 
					
						
							|  |  |  | from ..options.utils import fill_dataclass_with_default | 
					
						
							| 
									
										
										
										
											2025-04-08 12:37:45 -04:00
										 |  |  | from ... import options, Group, create_content | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  | from ...mods.mod_data import ModNames | 
					
						
							|  |  |  | from ...options.options import all_mods | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | from ...regions import RandomizationFlag, randomize_connections, create_final_connections_and_regions | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  | class TestCanGenerateAllsanityWithMods(WorldAssertMixin, ModAssertMixin, SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |     def test_allsanity_all_mods_when_generate_then_basic_checks(self): | 
					
						
							|  |  |  |         with solo_multiworld(allsanity_mods_6_x_x()) as (multi_world, _): | 
					
						
							|  |  |  |             self.assert_basic_checks(multi_world) | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |     def test_allsanity_all_mods_exclude_island_when_generate_then_basic_checks(self): | 
					
						
							|  |  |  |         world_options = allsanity_mods_6_x_x() | 
					
						
							|  |  |  |         world_options.update({options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true}) | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             self.assert_basic_checks(multi_world) | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  | @classvar_matrix(mod=all_mods) | 
					
						
							|  |  |  | class TestCanGenerateWithEachMod(WorldAssertMixin, ModAssertMixin, SVTestCase): | 
					
						
							|  |  |  |     mod: ClassVar[str] | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |     def test_given_single_mods_when_generate_then_basic_checks(self): | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  |         world_options = { | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |             options.Mods: self.mod, | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  |             options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							| 
									
										
										
										
											2025-01-28 17:19:20 -05:00
										 |  |  |             self.assert_basic_checks(multi_world) | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |             self.assert_stray_mod_items(self.mod, multi_world) | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  | @classvar_matrix(mod=all_mods.difference([ | 
					
						
							|  |  |  |     ModNames.ginger, ModNames.distant_lands, ModNames.skull_cavern_elevator, ModNames.wellwick, ModNames.magic, ModNames.binning_skill, ModNames.big_backpack, | 
					
						
							|  |  |  |     ModNames.luck_skill, ModNames.tractor, ModNames.shiko, ModNames.archaeology, ModNames.delores, ModNames.socializing_skill, ModNames.cooking_skill | 
					
						
							|  |  |  | ])) | 
					
						
							|  |  |  | class TestCanGenerateEachModWithEntranceRandomizationBuildings(WorldAssertMixin, SVTestCase): | 
					
						
							|  |  |  |     """The following tests validate that ER still generates winnable and logically-sane games with given mods.
 | 
					
						
							|  |  |  |     Mods that do not interact with entrances are skipped | 
					
						
							|  |  |  |     Not all ER settings are tested, because 'buildings' is, essentially, a superset of all others | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     mod: ClassVar[str] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_given_mod_when_generate_then_basic_checks(self) -> None: | 
					
						
							|  |  |  |         world_options = { | 
					
						
							|  |  |  |             options.EntranceRandomization: options.EntranceRandomization.option_buildings, | 
					
						
							|  |  |  |             options.Mods: self.mod, | 
					
						
							|  |  |  |             options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         with solo_multiworld(world_options, world_caching=False) as (multi_world, _): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |             self.assert_basic_checks(multi_world) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestBaseLocationDependencies(SVTestBase): | 
					
						
							|  |  |  |     options = { | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.Mods.internal_name: frozenset(options.Mods.valid_keys), | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         options.ToolProgression.internal_name: options.ToolProgression.option_progressive, | 
					
						
							|  |  |  |         options.SeasonRandomization.internal_name: options.SeasonRandomization.option_randomized | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestBaseItemGeneration(SVTestBase): | 
					
						
							|  |  |  |     options = { | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         options.SeasonRandomization.internal_name: options.SeasonRandomization.option_progressive, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, | 
					
						
							|  |  |  |         options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.Friendsanity.internal_name: options.Friendsanity.option_all_with_marriage, | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         options.Shipsanity.internal_name: options.Shipsanity.option_everything, | 
					
						
							|  |  |  |         options.Chefsanity.internal_name: options.Chefsanity.option_all, | 
					
						
							|  |  |  |         options.Craftsanity.internal_name: options.Craftsanity.option_all, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.Booksanity.internal_name: options.Booksanity.option_all, | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |         options.Walnutsanity.internal_name: options.Walnutsanity.preset_all, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.Mods.internal_name: frozenset(options.Mods.valid_keys) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_all_progression_items_are_added_to_the_pool(self): | 
					
						
							| 
									
										
										
										
											2025-04-08 12:37:45 -04:00
										 |  |  |         all_created_items = self.get_all_created_items() | 
					
						
							|  |  |  |         progression_items = get_all_permanent_progression_items() | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |         for progression_item in progression_items: | 
					
						
							|  |  |  |             with self.subTest(f"{progression_item.name}"): | 
					
						
							|  |  |  |                 self.assertIn(progression_item.name, all_created_items) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestNoGingerIslandModItemGeneration(SVTestBase): | 
					
						
							|  |  |  |     options = { | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         options.SeasonRandomization.internal_name: options.SeasonRandomization.option_progressive, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, | 
					
						
							|  |  |  |         options.Friendsanity.internal_name: options.Friendsanity.option_all_with_marriage, | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         options.Shipsanity.internal_name: options.Shipsanity.option_everything, | 
					
						
							|  |  |  |         options.Chefsanity.internal_name: options.Chefsanity.option_all, | 
					
						
							|  |  |  |         options.Craftsanity.internal_name: options.Craftsanity.option_all, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |         options.Booksanity.internal_name: options.Booksanity.option_all, | 
					
						
							|  |  |  |         options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, | 
					
						
							|  |  |  |         options.Mods.internal_name: frozenset(options.Mods.valid_keys) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_all_progression_items_except_island_are_added_to_the_pool(self): | 
					
						
							| 
									
										
										
										
											2025-04-08 12:37:45 -04:00
										 |  |  |         all_created_items = self.get_all_created_items() | 
					
						
							|  |  |  |         progression_items = get_all_permanent_progression_items() | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |         for progression_item in progression_items: | 
					
						
							|  |  |  |             with self.subTest(f"{progression_item.name}"): | 
					
						
							|  |  |  |                 if Group.GINGER_ISLAND in progression_item.groups: | 
					
						
							|  |  |  |                     self.assertNotIn(progression_item.name, all_created_items) | 
					
						
							|  |  |  |                 else: | 
					
						
							|  |  |  |                     self.assertIn(progression_item.name, all_created_items) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  | class TestModEntranceRando(SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_mod_entrance_randomization(self): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         for option, flag in [(options.EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), | 
					
						
							|  |  |  |                              (options.EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |                              (options.EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                              (options.EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: | 
					
						
							| 
									
										
										
										
											2024-12-08 21:00:30 -05:00
										 |  |  |             sv_options = fill_dataclass_with_default({ | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                 options.EntranceRandomization.internal_name: option, | 
					
						
							|  |  |  |                 options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, | 
					
						
							| 
									
										
										
										
											2025-04-11 20:19:17 -04:00
										 |  |  |                 options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, | 
					
						
							| 
									
										
										
											
												Stardew Valley 6.x.x: The Content Update (#3478)
Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests
This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.
In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
											
										 
											2024-07-07 16:04:25 +03:00
										 |  |  |                 options.Mods.internal_name: frozenset(options.Mods.valid_keys) | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |             }) | 
					
						
							| 
									
										
										
										
											2024-11-30 21:52:07 -05:00
										 |  |  |             content = create_content(sv_options) | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |             seed = get_seed() | 
					
						
							|  |  |  |             rand = random.Random(seed) | 
					
						
							|  |  |  |             with self.subTest(option=option, flag=flag, seed=seed): | 
					
						
							|  |  |  |                 final_connections, final_regions = create_final_connections_and_regions(sv_options) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-30 21:52:07 -05:00
										 |  |  |                 _, randomized_connections = randomize_connections(rand, sv_options, content, final_regions, final_connections) | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 for connection_name in final_connections: | 
					
						
							|  |  |  |                     connection = final_connections[connection_name] | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |                     if flag in connection.flag: | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                         connection_in_randomized = connection_name in randomized_connections | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |                         reverse_in_randomized = connection.reverse in randomized_connections | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                         self.assertTrue(connection_in_randomized, f"Connection {connection_name} should be randomized but it is not in the output") | 
					
						
							|  |  |  |                         self.assertTrue(reverse_in_randomized, f"Connection {connection.reverse} should be randomized but it is not in the output.") | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                                  f"Connections are duplicated in randomization.") | 
					
						
							| 
									
										
										
										
											2025-03-10 18:39:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestVanillaLogicAlternativeWhenQuestsAreNotRandomized(WorldAssertMixin, SVTestBase): | 
					
						
							|  |  |  |     """We often forget to add an alternative rule that works when quests are not randomized. When this happens, some
 | 
					
						
							|  |  |  |     Location are not reachable because they depend on items that are only added to the pool when quests are randomized. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     options = allsanity_mods_6_x_x() | { | 
					
						
							|  |  |  |         options.QuestLocations.internal_name: options.QuestLocations.special_range_names["none"], | 
					
						
							|  |  |  |         options.Goal.internal_name: options.Goal.option_perfection, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_given_no_quest_all_mods_when_generate_then_can_reach_everything(self): | 
					
						
							|  |  |  |         self.collect_everything() | 
					
						
							|  |  |  |         self.assert_can_reach_everything(self.multiworld) |