2023-04-10 19:44:59 -04:00
import itertools
2023-03-04 12:34:51 -05:00
2024-11-29 19:46:35 -05:00
from Options import NamedRange , Accessibility
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
2024-11-29 19:46:35 -05:00
def test_given_perfection_goal_when_generate_then_accessibility_is_forced_to_full ( self ) :
""" There is a bug with the current victory condition of the perfection goal that can create unwinnable seeds if the accessibility is set to minimal and
the world gets flooded with progression items through plando . This will increase the amount of collected progression items pass the total amount
calculated for the world when creating the item pool . This will cause the victory condition to be met before all locations are collected , so some could
be left inaccessible , which in practice will make the seed unwinnable .
"""
for accessibility in Accessibility . options . keys ( ) :
world_options = { Goal . internal_name : Goal . option_perfection , " accessibility " : accessibility }
with self . solo_world_sub_test ( f " Accessibility: { accessibility } " , world_options ) as ( _ , world ) :
self . assertEqual ( world . options . accessibility , Accessibility . option_full )
def test_given_allsanity_goal_when_generate_then_accessibility_is_forced_to_full ( self ) :
for accessibility in Accessibility . options . keys ( ) :
world_options = { Goal . internal_name : Goal . option_allsanity , " accessibility " : accessibility }
with self . solo_world_sub_test ( f " Accessibility: { accessibility } " , world_options ) as ( _ , world ) :
self . assertEqual ( world . options . accessibility , Accessibility . option_full )
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
def test_given_choice_when_generate_exclude_ginger_island ( 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
def test_given_island_related_goal_then_override_exclude_ginger_island ( self ) :
2024-03-15 15:05:14 +03:00
island_goals = [ " greatest_walnut_hunter " , " perfection " ]
for goal , exclude_island in itertools . product ( island_goals , ExcludeGingerIsland . options ) :
world_options = {
Goal : goal ,
ExcludeGingerIsland : exclude_island
}
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 " Goal: { goal } , { ExcludeGingerIsland . internal_name } : { exclude_island } " , world_options ) \
2024-03-15 15:05:14 +03:00
as ( multiworld , stardew_world ) :
self . assertEqual ( stardew_world . options . exclude_ginger_island , ExcludeGingerIsland . option_false )
self . assert_basic_checks ( 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 )