Stardew valley: Fix Aurora Vineyard Tablet logic (#4512)

* - Add requirement on Aurora Vineyard tablet to start the quest

* - Add rule for using the aurora vineyard staircase

* - Added a test for the tablet

* - Add a few missing items to the test

* - Introduce a new item to split the quest from the door and avoir ER issues

* - Optimize imports

* - Forgot to generate the item

* fix Aurora mess

# Conflicts:
#	worlds/stardew_valley/rules.py
#	worlds/stardew_valley/test/mods/TestMods.py

* fix a couple errors in the cherry picked commit, added a method to improve readability and reduce chance of human error on story quest conditions

* - remove blank line

* - Code review comments

* - fixed weird assert name

* - fixed accidentally surviving line

* - Fixed imports

---------

Co-authored-by: Jouramie <16137441+Jouramie@users.noreply.github.com>
This commit is contained in:
agilbert1412
2025-03-10 18:39:35 +03:00
committed by GitHub
parent be550ff6fb
commit d83294efa7
15 changed files with 120 additions and 52 deletions

View File

@@ -149,7 +149,7 @@ def set_bundle_rules(bundle_rooms: List[BundleRoom], logic: StardewLogic, multiw
bundle_rules = logic.bundle.can_complete_bundle(bundle)
if bundle_room.name == CCRoom.raccoon_requests:
num = int(bundle.name[-1])
extra_raccoons = 1 if world_options.quest_locations >= 0 else 0
extra_raccoons = 1 if world_options.quest_locations.has_story_quests() else 0
extra_raccoons = extra_raccoons + num
bundle_rules = logic.received(CommunityUpgrade.raccoon, extra_raccoons) & bundle_rules
if num > 1:
@@ -505,7 +505,7 @@ def set_cropsanity_rules(logic: StardewLogic, multiworld, player, world_content:
def set_story_quests_rules(all_location_names: Set[str], logic: StardewLogic, multiworld, player, world_options: StardewValleyOptions):
if world_options.quest_locations < 0:
if world_options.quest_locations.has_no_story_quests():
return
for quest in locations.locations_by_tag[LocationTags.STORY_QUEST]:
if quest.name in all_location_names and (quest.mod_name is None or quest.mod_name in world_options.mods):
@@ -540,9 +540,9 @@ slay_monsters = "Slay Monsters"
def set_help_wanted_quests_rules(logic: StardewLogic, multiworld, player, world_options: StardewValleyOptions):
help_wanted_number = world_options.quest_locations.value
if help_wanted_number < 0:
if world_options.quest_locations.has_no_story_quests():
return
help_wanted_number = world_options.quest_locations.value
for i in range(0, help_wanted_number):
set_number = i // 7
month_rule = logic.time.has_lived_months(set_number)
@@ -973,6 +973,7 @@ def set_sve_rules(logic: StardewLogic, multiworld: MultiWorld, player: int, worl
set_entrance_rule(multiworld, player, SVEEntrance.use_bear_shop, (logic.mod.sve.can_buy_bear_recipe()))
set_entrance_rule(multiworld, player, SVEEntrance.railroad_to_grampleton_station, logic.received(SVEQuestItem.scarlett_job_offer))
set_entrance_rule(multiworld, player, SVEEntrance.museum_to_gunther_bedroom, logic.relationship.has_hearts(ModNPC.gunther, 2))
set_entrance_rule(multiworld, player, SVEEntrance.to_aurora_basement, logic.mod.quest.has_completed_aurora_vineyard_bundle())
logic.mod.sve.initialize_rules()
for location in logic.registry.sve_location_rules:
MultiWorldRules.set_rule(multiworld.get_location(location, player),