| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | import itertools | 
					
						
							| 
									
										
										
										
											2023-03-04 12:34:51 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-08 21:00:30 -05:00
										 |  |  | from Options import NamedRange | 
					
						
							| 
									
										
										
											
												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
										 |  |  | from . import SVTestCase, allsanity_no_mods_6_x_x, allsanity_mods_6_x_x, solo_multiworld | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | from .assertion import WorldAssertMixin | 
					
						
							|  |  |  | from .long.option_names import all_option_choices | 
					
						
							|  |  |  | from .. import items_by_group, Group, StardewValleyWorld | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | from ..locations import locations_by_tag, LocationTags, location_table | 
					
						
							| 
									
										
										
											
												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
										 |  |  | from ..options import ExcludeGingerIsland, ToolProgression, Goal, SeasonRandomization, TrapItems, SpecialOrderLocations, ArcadeMachineLocations, \ | 
					
						
							|  |  |  |     SkillProgression | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  | from ..strings.goal_names import Goal as GoalName | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | from ..strings.season_names import Season | 
					
						
							|  |  |  | from ..strings.special_order_names import SpecialOrder | 
					
						
							|  |  |  | from ..strings.tool_names import ToolMaterial, Tool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SEASONS = {Season.spring, Season.summer, Season.fall, Season.winter} | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | TOOLS = {"Hoe", "Pickaxe", "Axe", "Watering Can", "Trash Can", "Fishing Rod"} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | class TestGenerateDynamicOptions(WorldAssertMixin, SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |     def test_given_special_range_when_generate_then_basic_checks(self): | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  |         options = StardewValleyWorld.options_dataclass.type_hints | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         for option_name, option in options.items(): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |             if not issubclass(option, NamedRange): | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |                 continue | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |             for value in option.special_range_names: | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                 world_options = {option_name: option.special_range_names[value]} | 
					
						
							| 
									
										
										
											
												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
										 |  |  |                 with self.solo_world_sub_test(f"{option_name}: {value}", world_options) as (multiworld, _): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                     self.assert_basic_checks(multiworld) | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |     def test_given_choice_when_generate_then_basic_checks(self): | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  |         options = StardewValleyWorld.options_dataclass.type_hints | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         for option_name, option in options.items(): | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |             if not option.options: | 
					
						
							|  |  |  |                 continue | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |             for value in option.options: | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                 world_options = {option_name: option.options[value]} | 
					
						
							| 
									
										
										
											
												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
										 |  |  |                 with self.solo_world_sub_test(f"{option_name}: {value}", world_options) as (multiworld, _): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |                     self.assert_basic_checks(multiworld) | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  | class TestGoal(SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |     def test_given_goal_when_generate_then_victory_is_in_correct_location(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         for goal, location in [("community_center", GoalName.community_center), | 
					
						
							|  |  |  |                                ("grandpa_evaluation", GoalName.grandpa_evaluation), | 
					
						
							|  |  |  |                                ("bottom_of_the_mines", GoalName.bottom_of_the_mines), | 
					
						
							|  |  |  |                                ("cryptic_note", GoalName.cryptic_note), | 
					
						
							|  |  |  |                                ("master_angler", GoalName.master_angler), | 
					
						
							|  |  |  |                                ("complete_collection", GoalName.complete_museum), | 
					
						
							|  |  |  |                                ("full_house", GoalName.full_house), | 
					
						
							|  |  |  |                                ("perfection", GoalName.perfection)]: | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |             world_options = {Goal.internal_name: Goal.options[goal]} | 
					
						
							|  |  |  |             with self.solo_world_sub_test(f"Goal: {goal}, Location: {location}", world_options) as (multi_world, _): | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |                 victory = multi_world.find_item("Victory", 1) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |                 self.assertEqual(victory.name, location) | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  | class TestSeasonRandomization(SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  |     def test_given_disabled_when_generate_then_all_seasons_are_precollected(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {SeasonRandomization.internal_name: SeasonRandomization.option_disabled} | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             precollected_items = {item.name for item in multi_world.precollected_items[1]} | 
					
						
							|  |  |  |             self.assertTrue(all([season in precollected_items for season in SEASONS])) | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 23:42:02 -04:00
										 |  |  |     def test_given_randomized_when_generate_then_all_seasons_are_in_the_pool_or_precollected(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {SeasonRandomization.internal_name: SeasonRandomization.option_randomized} | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             precollected_items = {item.name for item in multi_world.precollected_items[1]} | 
					
						
							|  |  |  |             items = {item.name for item in multi_world.get_items()} | precollected_items | 
					
						
							|  |  |  |             self.assertTrue(all([season in items for season in SEASONS])) | 
					
						
							|  |  |  |             self.assertEqual(len(SEASONS.intersection(precollected_items)), 1) | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_given_progressive_when_generate_then_3_progressive_seasons_are_in_the_pool(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {SeasonRandomization.internal_name: 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
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             items = [item.name for item in multi_world.get_items()] | 
					
						
							|  |  |  |             self.assertEqual(items.count(Season.progressive), 3) | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  | class TestToolProgression(SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  |     def test_given_vanilla_when_generate_then_no_tool_in_pool(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {ToolProgression.internal_name: ToolProgression.option_vanilla} | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             items = {item.name for item in multi_world.get_items()} | 
					
						
							|  |  |  |             for tool in TOOLS: | 
					
						
							|  |  |  |                 self.assertNotIn(tool, items) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_given_progressive_when_generate_then_each_tool_is_in_pool_4_times(self): | 
					
						
							|  |  |  |         world_options = {ToolProgression.internal_name: ToolProgression.option_progressive, | 
					
						
							|  |  |  |                          SkillProgression.internal_name: SkillProgression.option_progressive} | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             items = [item.name for item in multi_world.get_items()] | 
					
						
							|  |  |  |             for tool in TOOLS: | 
					
						
							|  |  |  |                 count = items.count("Progressive " + tool) | 
					
						
							|  |  |  |                 self.assertEqual(count, 4, f"Progressive {tool} was there {count} times") | 
					
						
							|  |  |  |             scythe_count = items.count("Progressive Scythe") | 
					
						
							|  |  |  |             self.assertEqual(scythe_count, 1, f"Progressive Scythe was there {scythe_count} times") | 
					
						
							|  |  |  |             self.assertEqual(items.count("Golden Scythe"), 0, f"Golden Scythe is deprecated") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_given_progressive_with_masteries_when_generate_then_fishing_rod_is_in_the_pool_5_times(self): | 
					
						
							|  |  |  |         world_options = {ToolProgression.internal_name: ToolProgression.option_progressive, | 
					
						
							|  |  |  |                          SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries} | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             items = [item.name for item in multi_world.get_items()] | 
					
						
							|  |  |  |             for tool in TOOLS: | 
					
						
							|  |  |  |                 count = items.count("Progressive " + tool) | 
					
						
							|  |  |  |                 expected_count = 5 if tool == "Fishing Rod" else 4 | 
					
						
							|  |  |  |                 self.assertEqual(count, expected_count, f"Progressive {tool} was there {count} times") | 
					
						
							|  |  |  |             scythe_count = items.count("Progressive Scythe") | 
					
						
							|  |  |  |             self.assertEqual(scythe_count, 2, f"Progressive Scythe was there {scythe_count} times") | 
					
						
							|  |  |  |             self.assertEqual(items.count("Golden Scythe"), 0, f"Golden Scythe is deprecated") | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_given_progressive_when_generate_then_tool_upgrades_are_locations(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {ToolProgression.internal_name: ToolProgression.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
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             locations = {locations.name for locations in multi_world.get_locations(1)} | 
					
						
							|  |  |  |             for material, tool in itertools.product(ToolMaterial.tiers.values(), | 
					
						
							|  |  |  |                                                     [Tool.hoe, Tool.pickaxe, Tool.axe, Tool.watering_can, Tool.trash_can]): | 
					
						
							|  |  |  |                 if material == ToolMaterial.basic: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  |                 self.assertIn(f"{material} {tool} Upgrade", locations) | 
					
						
							|  |  |  |             self.assertIn("Purchase Training Rod", locations) | 
					
						
							|  |  |  |             self.assertIn("Bamboo Pole Cutscene", locations) | 
					
						
							|  |  |  |             self.assertIn("Purchase Fiberglass Rod", locations) | 
					
						
							|  |  |  |             self.assertIn("Purchase Iridium Rod", locations) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | class TestGenerateAllOptionsWithExcludeGingerIsland(WorldAssertMixin, SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-08 21:00:30 -05:00
										 |  |  |     def test_given_choice_when_generate_exclude_ginger_island_then_ginger_island_is_properly_excluded(self): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         for option, option_choice in all_option_choices: | 
					
						
							|  |  |  |             if option is ExcludeGingerIsland: | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |                 continue | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |             world_options = { | 
					
						
							|  |  |  |                 ExcludeGingerIsland: ExcludeGingerIsland.option_true, | 
					
						
							|  |  |  |                 option: option_choice | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             with self.solo_world_sub_test(f"{option.internal_name}: {option_choice}", world_options) as (multiworld, stardew_world): | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 # Some options, like goals, will force Ginger island back in the game. We want to skip testing those. | 
					
						
							|  |  |  |                 if stardew_world.options.exclude_ginger_island != ExcludeGingerIsland.option_true: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 self.assert_basic_checks(multiworld) | 
					
						
							|  |  |  |                 self.assert_no_ginger_island_content(multiworld) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  | class TestTraps(SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |     def test_given_no_traps_when_generate_then_no_trap_in_pool(self): | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         world_options = allsanity_no_mods_6_x_x().copy() | 
					
						
							| 
									
										
										
										
											2024-03-15 15:05:14 +03:00
										 |  |  |         world_options[TrapItems.internal_name] = TrapItems.option_no_traps | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             trap_items = [item_data.name for item_data in items_by_group[Group.TRAP]] | 
					
						
							|  |  |  |             multiworld_items = [item.name for item in multi_world.get_items()] | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             for item in trap_items: | 
					
						
							|  |  |  |                 with self.subTest(f"{item}"): | 
					
						
							|  |  |  |                     self.assertNotIn(item, multiworld_items) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_given_traps_when_generate_then_all_traps_in_pool(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         trap_option = TrapItems | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |         for value in trap_option.options: | 
					
						
							|  |  |  |             if value == "no_traps": | 
					
						
							|  |  |  |                 continue | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             world_options = allsanity_mods_6_x_x() | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |             world_options.update({TrapItems.internal_name: trap_option.options[value]}) | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |                 trap_items = [item_data.name for item_data in items_by_group[Group.TRAP] if | 
					
						
							|  |  |  |                               Group.DEPRECATED not in item_data.groups and item_data.mod_name is None] | 
					
						
							|  |  |  |                 multiworld_items = [item.name for item in multi_world.get_items()] | 
					
						
							|  |  |  |                 for item in trap_items: | 
					
						
							|  |  |  |                     with self.subTest(f"Option: {value}, Item: {item}"): | 
					
						
							|  |  |  |                         self.assertIn(item, multiworld_items) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 00:18:33 +02:00
										 |  |  | class TestSpecialOrders(SVTestCase): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  |     def test_given_disabled_then_no_order_in_pool(self): | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         world_options = {SpecialOrderLocations.internal_name: SpecialOrderLocations.option_vanilla} | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             locations_in_pool = {location.name for location in multi_world.get_locations() if location.name in location_table} | 
					
						
							|  |  |  |             for location_name in locations_in_pool: | 
					
						
							|  |  |  |                 location = location_table[location_name] | 
					
						
							|  |  |  |                 self.assertNotIn(LocationTags.SPECIAL_ORDER_BOARD, location.tags) | 
					
						
							|  |  |  |                 self.assertNotIn(LocationTags.SPECIAL_ORDER_QI, location.tags) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_given_board_only_then_no_qi_order_in_pool(self): | 
					
						
							| 
									
										
										
											
												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
										 |  |  |         world_options = {SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board} | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             locations_in_pool = {location.name for location in multi_world.get_locations() if location.name in location_table} | 
					
						
							|  |  |  |             for location_name in locations_in_pool: | 
					
						
							|  |  |  |                 location = location_table[location_name] | 
					
						
							|  |  |  |                 self.assertNotIn(LocationTags.SPECIAL_ORDER_QI, location.tags) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             for board_location in locations_by_tag[LocationTags.SPECIAL_ORDER_BOARD]: | 
					
						
							|  |  |  |                 if board_location.mod_name: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  |                 self.assertIn(board_location.name, locations_in_pool) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_given_board_and_qi_then_all_orders_in_pool(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {SpecialOrderLocations.internal_name: 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
										 |  |  |                          ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_victories, | 
					
						
							|  |  |  |                          ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false} | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             locations_in_pool = {location.name for location in multi_world.get_locations()} | 
					
						
							|  |  |  |             for qi_location in locations_by_tag[LocationTags.SPECIAL_ORDER_QI]: | 
					
						
							|  |  |  |                 if qi_location.mod_name: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  |                 self.assertIn(qi_location.name, locations_in_pool) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												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
										 |  |  |             for board_location in locations_by_tag[LocationTags.SPECIAL_ORDER_BOARD]: | 
					
						
							|  |  |  |                 if board_location.mod_name: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  |                 self.assertIn(board_location.name, locations_in_pool) | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_given_board_and_qi_without_arcade_machines_then_lets_play_a_game_not_in_pool(self): | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |         world_options = {SpecialOrderLocations.internal_name: 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
										 |  |  |                          ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_disabled, | 
					
						
							|  |  |  |                          ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false} | 
					
						
							|  |  |  |         with solo_multiworld(world_options) as (multi_world, _): | 
					
						
							|  |  |  |             locations_in_pool = {location.name for location in multi_world.get_locations()} | 
					
						
							|  |  |  |             self.assertNotIn(SpecialOrder.lets_play_a_game, locations_in_pool) |