Stardew Valley: Fixed potential softlock with walnut purchases if Entrance Randomizer locks access to the field office (#2261)

* - Added logic rules for reaching, then completing, the field office in order to be allowed to spend significant amounts of walnuts

* - Revert moving a method for some reason
This commit is contained in:
agilbert1412 2023-11-30 03:32:32 -05:00 committed by GitHub
parent b9ce2052c5
commit 80fed1c6fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 3 deletions

View File

@ -1536,6 +1536,7 @@ class StardewLogic:
reach_west = self.can_reach_region(Region.island_west) reach_west = self.can_reach_region(Region.island_west)
reach_hut = self.can_reach_region(Region.leo_hut) reach_hut = self.can_reach_region(Region.leo_hut)
reach_southeast = self.can_reach_region(Region.island_south_east) reach_southeast = self.can_reach_region(Region.island_south_east)
reach_field_office = self.can_reach_region(Region.field_office)
reach_pirate_cove = self.can_reach_region(Region.pirate_cove) reach_pirate_cove = self.can_reach_region(Region.pirate_cove)
reach_outside_areas = And(reach_south, reach_north, reach_west, reach_hut) reach_outside_areas = And(reach_south, reach_north, reach_west, reach_hut)
reach_volcano_regions = [self.can_reach_region(Region.volcano), reach_volcano_regions = [self.can_reach_region(Region.volcano),
@ -1544,12 +1545,12 @@ class StardewLogic:
self.can_reach_region(Region.volcano_floor_10)] self.can_reach_region(Region.volcano_floor_10)]
reach_volcano = Or(reach_volcano_regions) reach_volcano = Or(reach_volcano_regions)
reach_all_volcano = And(reach_volcano_regions) reach_all_volcano = And(reach_volcano_regions)
reach_walnut_regions = [reach_south, reach_north, reach_west, reach_volcano] reach_walnut_regions = [reach_south, reach_north, reach_west, reach_volcano, reach_field_office]
reach_caves = And(self.can_reach_region(Region.qi_walnut_room), self.can_reach_region(Region.dig_site), reach_caves = And(self.can_reach_region(Region.qi_walnut_room), self.can_reach_region(Region.dig_site),
self.can_reach_region(Region.gourmand_frog_cave), self.can_reach_region(Region.gourmand_frog_cave),
self.can_reach_region(Region.colored_crystals_cave), self.can_reach_region(Region.colored_crystals_cave),
self.can_reach_region(Region.shipwreck), self.has(Weapon.any_slingshot)) self.can_reach_region(Region.shipwreck), self.has(Weapon.any_slingshot))
reach_entire_island = And(reach_outside_areas, reach_all_volcano, reach_entire_island = And(reach_outside_areas, reach_field_office, reach_all_volcano,
reach_caves, reach_southeast, reach_pirate_cove) reach_caves, reach_southeast, reach_pirate_cove)
if number <= 5: if number <= 5:
return Or(reach_south, reach_north, reach_west, reach_volcano) return Or(reach_south, reach_north, reach_west, reach_volcano)
@ -1563,7 +1564,8 @@ class StardewLogic:
return reach_entire_island return reach_entire_island
gems = [Mineral.amethyst, Mineral.aquamarine, Mineral.emerald, Mineral.ruby, Mineral.topaz] gems = [Mineral.amethyst, Mineral.aquamarine, Mineral.emerald, Mineral.ruby, Mineral.topaz]
return reach_entire_island & self.has(Fruit.banana) & self.has(gems) & self.can_mine_perfectly() & \ return reach_entire_island & self.has(Fruit.banana) & self.has(gems) & self.can_mine_perfectly() & \
self.can_fish_perfectly() & self.has(Craftable.flute_block) & self.has(Seed.melon) & self.has(Seed.wheat) & self.has(Seed.garlic) self.can_fish_perfectly() & self.has(Craftable.flute_block) & self.has(Seed.melon) & self.has(Seed.wheat) & self.has(Seed.garlic) & \
self.can_complete_field_office()
def has_everything(self, all_progression_items: Set[str]) -> StardewRule: def has_everything(self, all_progression_items: Set[str]) -> StardewRule:
all_regions = [region.name for region in vanilla_regions] all_regions = [region.name for region in vanilla_regions]