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:
@@ -12,6 +12,7 @@ from ...logic.season_logic import SeasonLogicMixin
|
||||
from ...logic.time_logic import TimeLogicMixin
|
||||
from ...stardew_rule import StardewRule
|
||||
from ...strings.animal_product_names import AnimalProduct
|
||||
from ...strings.ap_names.mods.mod_items import SVEQuestItem
|
||||
from ...strings.artisan_good_names import ArtisanGood
|
||||
from ...strings.crop_names import Fruit, SVEFruit, SVEVegetable, Vegetable
|
||||
from ...strings.fertilizer_names import Fertilizer
|
||||
@@ -83,7 +84,8 @@ TimeLogicMixin, SeasonLogicMixin, RelationshipLogicMixin, MonsterLogicMixin]]):
|
||||
self.logic.region.can_reach(SVERegion.grandpas_shed),
|
||||
ModQuest.MarlonsBoat: self.logic.has_all(*(Loot.void_essence, Loot.solar_essence, Loot.slime, Loot.bat_wing, Loot.bug_meat)) &
|
||||
self.logic.relationship.can_meet(ModNPC.lance) & self.logic.region.can_reach(SVERegion.guild_summit),
|
||||
ModQuest.AuroraVineyard: self.logic.has(Fruit.starfruit) & self.logic.region.can_reach(SVERegion.aurora_vineyard),
|
||||
ModQuest.AuroraVineyard: self.logic.region.can_reach(SVERegion.aurora_vineyard) & self.logic.received(SVEQuestItem.aurora_vineyard_tablet) &
|
||||
self.logic.has(Fruit.starfruit) & self.logic.region.can_reach(Region.forest),
|
||||
ModQuest.MonsterCrops: self.logic.has_all(*(SVEVegetable.monster_mushroom, SVEFruit.slime_berry, SVEFruit.monster_fruit, SVEVegetable.void_root)),
|
||||
ModQuest.VoidSoul: self.logic.has(ModLoot.void_soul) & self.logic.region.can_reach(Region.farm) &
|
||||
self.logic.season.has_any_not_winter() & self.logic.region.can_reach(SVERegion.badlands_entrance) &
|
||||
@@ -91,6 +93,12 @@ TimeLogicMixin, SeasonLogicMixin, RelationshipLogicMixin, MonsterLogicMixin]]):
|
||||
self.logic.monster.can_kill_any((Monster.shadow_brute, Monster.shadow_shaman, Monster.shadow_sniper)),
|
||||
}
|
||||
|
||||
def has_completed_aurora_vineyard_bundle(self):
|
||||
if self.options.quest_locations.has_story_quests():
|
||||
return self.logic.received(SVEQuestItem.aurora_vineyard_reclamation)
|
||||
return self.logic.quest.can_complete_quest(ModQuest.AuroraVineyard)
|
||||
|
||||
|
||||
def _get_distant_lands_quest_rules(self):
|
||||
if ModNames.distant_lands not in self.options.mods:
|
||||
return {}
|
||||
|
||||
@@ -41,24 +41,24 @@ class SVELogic(BaseLogic[Union[HasLogicMixin, ReceivedLogicMixin, QuestLogicMixi
|
||||
return self.logic.or_(*(self.logic.received(rune) for rune in rune_list))
|
||||
|
||||
def has_iridium_bomb(self):
|
||||
if self.options.quest_locations < 0:
|
||||
return self.logic.quest.can_complete_quest(ModQuest.RailroadBoulder)
|
||||
return self.logic.received(SVEQuestItem.iridium_bomb)
|
||||
if self.options.quest_locations.has_story_quests():
|
||||
return self.logic.received(SVEQuestItem.iridium_bomb)
|
||||
return self.logic.quest.can_complete_quest(ModQuest.RailroadBoulder)
|
||||
|
||||
def has_marlon_boat(self):
|
||||
if self.options.quest_locations < 0:
|
||||
return self.logic.quest.can_complete_quest(ModQuest.MarlonsBoat)
|
||||
return self.logic.received(SVEQuestItem.marlon_boat_paddle)
|
||||
if self.options.quest_locations.has_story_quests():
|
||||
return self.logic.received(SVEQuestItem.marlon_boat_paddle)
|
||||
return self.logic.quest.can_complete_quest(ModQuest.MarlonsBoat)
|
||||
|
||||
def has_grandpa_shed_repaired(self):
|
||||
if self.options.quest_locations < 0:
|
||||
return self.logic.quest.can_complete_quest(ModQuest.GrandpasShed)
|
||||
return self.logic.received(SVEQuestItem.grandpa_shed)
|
||||
if self.options.quest_locations.has_story_quests():
|
||||
return self.logic.received(SVEQuestItem.grandpa_shed)
|
||||
return self.logic.quest.can_complete_quest(ModQuest.GrandpasShed)
|
||||
|
||||
def has_bear_knowledge(self):
|
||||
if self.options.quest_locations < 0:
|
||||
return self.logic.quest.can_complete_quest(Quest.strange_note)
|
||||
return self.logic.received(Wallet.bears_knowledge)
|
||||
if self.options.quest_locations.has_story_quests():
|
||||
return self.logic.received(Wallet.bears_knowledge)
|
||||
return self.logic.quest.can_complete_quest(Quest.strange_note)
|
||||
|
||||
def can_buy_bear_recipe(self):
|
||||
access_rule = (self.logic.quest.can_complete_quest(Quest.strange_note) & self.logic.tool.has_tool(Tool.axe, ToolMaterial.basic) &
|
||||
|
||||
Reference in New Issue
Block a user