Files
Grinch-AP/worlds/stardew_valley/test/rules/TestBundles.py
Jérémie Bolduc 9ac921380f Stardew Valley: Refactor buildings to use content packs (#4239)
* create building data object and rename ItemSource to Source to be more generic

# Conflicts:
#	worlds/stardew_valley/content/game_content.py

# Conflicts:
#	worlds/stardew_valley/data/artisan.py
#	worlds/stardew_valley/data/game_item.py
#	worlds/stardew_valley/data/harvest.py
#	worlds/stardew_valley/data/shop.py

* remove compound sources, replace by other requirements which already handle this usecase

* add coops to content packs

* add building progression in game features

* add shippping bin to starting building; remove has_house

* replace config check with feature

* add other buildings in content packs

* not passing

* tests passes, unbelievable

* use newly create methods more

* use new assets to ease readability

* self review

* fix flake8 maybe

* properly split rule for mapping cave systems

* fix tractor garage name

* self review

* add upgrade_from to farm house buldings

* don't override building name variable in logic

* remove has_group from buildings

* mark some items easy in grinding logic so blueprints buildings can be in more early spheres

* move stuff around to maybe avoid future conflicts cuz I have like 10 PRs opened right now

* remove price_multiplier, turns out it's unused during generation

* disable shop source for mapping cave systems

* bunch of code review changes

* add petbowl and farmhouse to autobuilding

* set min easy items to 300

* fix farm type
2025-04-08 12:37:45 -04:00

65 lines
2.3 KiB
Python

from ... import options
from ...options import BundleRandomization
from ...strings.bundle_names import BundleName
from ...test import SVTestBase
class TestBundlesLogic(SVTestBase):
options = {
options.BundleRandomization: BundleRandomization.option_vanilla,
options.BundlePrice: options.BundlePrice.default,
}
def test_vault_2500g_bundle(self):
self.assert_cannot_reach_location("2,500g Bundle")
self.collect_lots_of_money()
self.assert_can_reach_location("2,500g Bundle")
class TestRemixedBundlesLogic(SVTestBase):
options = {
options.BundleRandomization: BundleRandomization.option_remixed,
options.BundlePrice: options.BundlePrice.default,
options.BundlePlando: frozenset({BundleName.sticky})
}
def test_sticky_bundle_has_grind_rules(self):
self.assert_cannot_reach_location("Sticky Bundle")
self.collect_all_the_money()
self.assert_can_reach_location("Sticky Bundle")
class TestRaccoonBundlesLogic(SVTestBase):
options = {
options.BundleRandomization: BundleRandomization.option_vanilla,
options.BundlePrice: options.BundlePrice.option_normal,
options.Craftsanity: options.Craftsanity.option_all,
}
seed = 2 # Magic seed that does what I want. Might need to get changed if we change the randomness behavior of raccoon bundles
def test_raccoon_bundles_rely_on_previous_ones(self):
self.collect("Progressive Raccoon", 6)
self.collect("Progressive Mine Elevator", 24)
self.collect("Mining Level", 12)
self.collect("Combat Level", 12)
self.collect("Progressive Axe", 4)
self.collect("Progressive Pickaxe", 4)
self.collect("Progressive Weapon", 4)
self.collect("Dehydrator Recipe")
self.collect("Mushroom Boxes")
self.collect("Progressive Fishing Rod", 4)
self.collect("Fishing Level", 10)
self.collect("Furnace Recipe")
# The first raccoon bundle is a fishing one
self.assert_cannot_reach_location("Raccoon Request 1")
# The third raccoon bundle is a foraging one
self.assert_cannot_reach_location("Raccoon Request 3")
self.collect("Fish Smoker Recipe")
self.assert_can_reach_location("Raccoon Request 1")
self.assert_can_reach_location("Raccoon Request 3")