| 
									
										
										
											
												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 SVContentPackTestBase | 
					
						
							| 
									
										
										
										
											2025-05-13 03:58:03 -04:00
										 |  |  | from ..bases import SVTestBase | 
					
						
							| 
									
										
										
											
												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 options | 
					
						
							|  |  |  | from ...content import content_packs | 
					
						
							|  |  |  | from ...data.artisan import MachineSource | 
					
						
							|  |  |  | from ...strings.artisan_good_names import ArtisanGood | 
					
						
							|  |  |  | from ...strings.crop_names import Fruit, Vegetable | 
					
						
							|  |  |  | from ...strings.fish_names import Fish | 
					
						
							|  |  |  | from ...strings.machine_names import Machine | 
					
						
							|  |  |  | from ...strings.villager_names import NPC | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestGingerIsland(SVContentPackTestBase): | 
					
						
							|  |  |  |     vanilla_packs = SVContentPackTestBase.vanilla_packs + (content_packs.ginger_island_content_pack,) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_leo_is_included(self): | 
					
						
							|  |  |  |         self.assertIn(NPC.leo, self.content.villagers) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_ginger_island_fishes_are_included(self): | 
					
						
							|  |  |  |         fish_names = self.content.fishes.keys() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertIn(Fish.blue_discus, fish_names) | 
					
						
							|  |  |  |         self.assertIn(Fish.lionfish, fish_names) | 
					
						
							|  |  |  |         self.assertIn(Fish.stingray, fish_names) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # 63 from pelican town + 3 ginger island exclusive | 
					
						
							|  |  |  |         self.assertEqual(63 + 3, len(self.content.fishes)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_ginger_island_fruits_can_be_made_into_wines(self): | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Fruit.banana, machine=Machine.keg), self.content.game_items[ArtisanGood.specific_wine(Fruit.banana)].sources) | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Fruit.banana, machine=Machine.keg), self.content.game_items[ArtisanGood.wine].sources) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Fruit.mango, machine=Machine.keg), self.content.game_items[ArtisanGood.specific_wine(Fruit.mango)].sources) | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Fruit.mango, machine=Machine.keg), self.content.game_items[ArtisanGood.wine].sources) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Fruit.pineapple, machine=Machine.keg), self.content.game_items[ArtisanGood.specific_wine(Fruit.pineapple)].sources) | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Fruit.pineapple, machine=Machine.keg), self.content.game_items[ArtisanGood.wine].sources) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_ginger_island_vegetables_can_be_made_into_wines(self): | 
					
						
							|  |  |  |         taro_root_juice_sources = self.content.game_items[ArtisanGood.specific_juice(Vegetable.taro_root)].sources | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Vegetable.taro_root, machine=Machine.keg), taro_root_juice_sources) | 
					
						
							|  |  |  |         self.assertIn(MachineSource(item=Vegetable.taro_root, machine=Machine.keg), self.content.game_items[ArtisanGood.juice].sources) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestWithoutGingerIslandE2E(SVTestBase): | 
					
						
							|  |  |  |     options = { | 
					
						
							|  |  |  |         options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_true | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_leo_is_not_in_the_pool(self): | 
					
						
							|  |  |  |         for item in self.multiworld.itempool: | 
					
						
							|  |  |  |             self.assertFalse(("Friendsanity: " + NPC.leo) in item.name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for location in self.multiworld.get_locations(self.player): | 
					
						
							|  |  |  |             self.assertFalse(("Friendsanity: " + NPC.leo) in location.name) |