From 57c1bc800ce97900af0b081fcb6ca8db72d387ef Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Fri, 21 Jul 2023 13:56:03 -0400 Subject: [PATCH] Stardew Valley: Turned the Treehouse into an unlockable item (#2004) --- worlds/stardew_valley/__init__.py | 2 +- worlds/stardew_valley/data/items.csv | 1 + worlds/stardew_valley/items.py | 1 + worlds/stardew_valley/rules.py | 3 +-- worlds/stardew_valley/test/TestOptions.py | 4 ++-- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/worlds/stardew_valley/__init__.py b/worlds/stardew_valley/__init__.py index 495b52c3..36b99d99 100644 --- a/worlds/stardew_valley/__init__.py +++ b/worlds/stardew_valley/__init__.py @@ -56,7 +56,7 @@ class StardewValleyWorld(World): item_name_to_id = {name: data.code for name, data in item_table.items()} location_name_to_id = {name: data.code for name, data in location_table.items()} - data_version = 2 + data_version = 3 required_client_version = (0, 4, 0) options: StardewOptions diff --git a/worlds/stardew_valley/data/items.csv b/worlds/stardew_valley/data/items.csv index c3cd8526..fcc0e034 100644 --- a/worlds/stardew_valley/data/items.csv +++ b/worlds/stardew_valley/data/items.csv @@ -271,6 +271,7 @@ id,name,classification,groups,mod_name 284,Cute Baby,progression,"BABY", 285,Ugly Baby,progression,"BABY", 286,Deluxe Scarecrow Recipe,progression,"FESTIVAL,RARECROW", +287,Treehouse,progression,"GINGER_ISLAND", 4001,Burnt,trap,TRAP, 4002,Darkness,trap,TRAP, 4003,Frozen,trap,TRAP, diff --git a/worlds/stardew_valley/items.py b/worlds/stardew_valley/items.py index 38435207..7d024fb4 100644 --- a/worlds/stardew_valley/items.py +++ b/worlds/stardew_valley/items.py @@ -415,6 +415,7 @@ def create_walnut_purchase_rewards(item_factory: StardewItemFactory, world_optio items.extend([item_factory("Boat Repair"), item_factory("Open Professor Snail Cave"), item_factory("Ostrich Incubator Recipe"), + item_factory("Treehouse"), *[item_factory(item) for item in items_by_group[Group.WALNUT_PURCHASE]]]) diff --git a/worlds/stardew_valley/rules.py b/worlds/stardew_valley/rules.py index 69d0688a..cd283dcb 100644 --- a/worlds/stardew_valley/rules.py +++ b/worlds/stardew_valley/rules.py @@ -211,8 +211,7 @@ def set_entrance_rules(logic, multi_world, player, world_options: StardewOptions MultiWorldRules.set_rule(multi_world.get_entrance(Entrance.enter_wizard_basement, player), logic.has_relationship(NPC.wizard, 4)) MultiWorldRules.set_rule(multi_world.get_entrance(Entrance.mountain_to_leo_treehouse, player), - logic.has_relationship(NPC.leo, 6) & logic.can_reach_region(Region.island_south) & - logic.can_reach_region(Region.island_east) & logic.can_reach_region(Region.leo_hut)) + logic.received("Treehouse")) if ModNames.alec in world_options[options.Mods]: MultiWorldRules.set_rule(multi_world.get_entrance(AlecEntrance.petshop_to_bedroom, player), (logic.has_relationship(ModNPC.alec, 2) | magic.can_blink(logic)).simplify()) diff --git a/worlds/stardew_valley/test/TestOptions.py b/worlds/stardew_valley/test/TestOptions.py index d3e9848a..350f1862 100644 --- a/worlds/stardew_valley/test/TestOptions.py +++ b/worlds/stardew_valley/test/TestOptions.py @@ -67,8 +67,8 @@ class TestGenerateDynamicOptions(SVTestBase): continue for value in option.options: with self.subTest(f"{option.internal_name}: {value} [Seed: {seed}]"): - choices = {option.internal_name: option.options[value]} - multiworld = setup_solo_multiworld(choices, seed) + world_options = {option.internal_name: option.options[value]} + multiworld = setup_solo_multiworld(world_options, seed) basic_checks(self, multiworld)