2023-04-10 19:44:59 -04:00
|
|
|
import itertools
|
2025-04-11 20:19:17 -04:00
|
|
|
from typing import ClassVar
|
2023-03-04 12:34:51 -05:00
|
|
|
|
2025-03-08 11:19:29 -05:00
|
|
|
from BaseClasses import ItemClassification
|
2025-04-11 20:19:17 -04:00
|
|
|
from test.param import classvar_matrix
|
2024-03-15 15:05:14 +03:00
|
|
|
from .assertion import WorldAssertMixin
|
2025-05-13 03:58:03 -04:00
|
|
|
from .bases import SVTestCase, SVTestBase, solo_multiworld
|
2025-04-11 20:19:17 -04:00
|
|
|
from .options.option_names import all_option_choices
|
2025-03-23 22:32:34 -04:00
|
|
|
from .options.presets import allsanity_no_mods_6_x_x, allsanity_mods_6_x_x
|
2025-04-11 20:19:17 -04:00
|
|
|
from .. import items_by_group, Group
|
2023-07-19 14:26:38 -04:00
|
|
|
from ..locations import locations_by_tag, LocationTags, location_table
|
2025-05-10 17:57:24 -04:00
|
|
|
from ..options import ExcludeGingerIsland, ToolProgression, Goal, SeasonRandomization, TrapDifficulty, SpecialOrderLocations, ArcadeMachineLocations
|
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
|
2025-03-08 11:19:29 -05:00
|
|
|
from ..strings.tool_names import ToolMaterial, Tool, APTool
|
2023-07-19 14:26:38 -04:00
|
|
|
|
|
|
|
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"}
|
|
|
|
|
|
|
|
|
2025-04-11 20:19:17 -04:00
|
|
|
@classvar_matrix(option_and_choice=all_option_choices)
|
2024-03-15 15:05:14 +03:00
|
|
|
class TestGenerateDynamicOptions(WorldAssertMixin, SVTestCase):
|
2025-04-11 20:19:17 -04:00
|
|
|
option_and_choice: ClassVar[tuple[str, str]]
|
|
|
|
|
|
|
|
def test_given_option_and_choice_when_generate_then_basic_checks(self):
|
|
|
|
option, choice = self.option_and_choice
|
|
|
|
world_options = {option: choice}
|
|
|
|
with solo_multiworld(world_options) as (multiworld, stardew_world):
|
|
|
|
self.assert_basic_checks(multiworld)
|
|
|
|
|
|
|
|
|
|
|
|
@classvar_matrix(goal_and_location=[
|
|
|
|
("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),
|
|
|
|
])
|
2023-10-28 00:18:33 +02:00
|
|
|
class TestGoal(SVTestCase):
|
2025-04-11 20:19:17 -04:00
|
|
|
goal_and_location: ClassVar[tuple[str, str]]
|
|
|
|
|
2023-04-14 23:42:02 -04:00
|
|
|
def test_given_goal_when_generate_then_victory_is_in_correct_location(self):
|
2025-04-11 20:19:17 -04:00
|
|
|
goal, location = self.goal_and_location
|
|
|
|
world_options = {Goal.internal_name: goal}
|
|
|
|
with solo_multiworld(world_options) as (multi_world, _):
|
|
|
|
victory = multi_world.find_item("Victory", 1)
|
|
|
|
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
|
|
|
|
|
|
|
|
2025-03-08 11:19:29 -05:00
|
|
|
class TestToolProgression(SVTestBase):
|
|
|
|
options = {
|
|
|
|
ToolProgression.internal_name: ToolProgression.option_progressive,
|
|
|
|
}
|
2023-04-10 19:44:59 -04:00
|
|
|
|
|
|
|
def test_given_progressive_when_generate_then_tool_upgrades_are_locations(self):
|
2025-03-08 11:19:29 -05:00
|
|
|
locations = set(self.get_real_location_names())
|
|
|
|
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)
|
|
|
|
|
|
|
|
def test_given_progressive_when_generate_then_only_3_trash_can_are_progressive(self):
|
|
|
|
trash_cans = self.get_items_by_name(APTool.trash_can)
|
|
|
|
progressive_count = sum([1 for item in trash_cans if item.classification == ItemClassification.progression])
|
|
|
|
useful_count = sum([1 for item in trash_cans if item.classification == ItemClassification.useful])
|
|
|
|
|
|
|
|
self.assertEqual(progressive_count, 3)
|
|
|
|
self.assertEqual(useful_count, 1)
|
2023-07-19 14:26:38 -04:00
|
|
|
|
|
|
|
|
2025-04-11 20:19:17 -04:00
|
|
|
@classvar_matrix(option_and_choice=all_option_choices)
|
2024-03-15 15:05:14 +03:00
|
|
|
class TestGenerateAllOptionsWithExcludeGingerIsland(WorldAssertMixin, SVTestCase):
|
2025-04-11 20:19:17 -04:00
|
|
|
option_and_choice: ClassVar[tuple[str, str]]
|
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):
|
2025-04-11 20:19:17 -04:00
|
|
|
option, option_choice = self.option_and_choice
|
|
|
|
|
|
|
|
if option == ExcludeGingerIsland.internal_name:
|
|
|
|
self.skipTest("ExcludeGingerIsland is forced to true")
|
2024-03-15 15:05:14 +03:00
|
|
|
|
2025-04-11 20:19:17 -04:00
|
|
|
world_options = {
|
|
|
|
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true,
|
|
|
|
option: option_choice
|
|
|
|
}
|
2024-03-15 15:05:14 +03:00
|
|
|
|
2025-04-11 20:19:17 -04:00
|
|
|
with solo_multiworld(world_options) as (multiworld, stardew_world):
|
2024-03-15 15:05:14 +03:00
|
|
|
|
2025-04-11 20:19:17 -04:00
|
|
|
if stardew_world.options.exclude_ginger_island != ExcludeGingerIsland.option_true:
|
|
|
|
self.skipTest("Some options, like goals, will force Ginger island back in the game. We want to skip testing those.")
|
2024-03-15 15:05:14 +03:00
|
|
|
|
2025-04-11 20:19:17 -04:00
|
|
|
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()
|
2025-05-10 17:57:24 -04:00
|
|
|
world_options[TrapDifficulty.internal_name] = TrapDifficulty.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):
|
2025-05-10 17:57:24 -04:00
|
|
|
trap_option = TrapDifficulty
|
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()
|
2025-05-10 17:57:24 -04:00
|
|
|
world_options.update({TrapDifficulty.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)
|