Stardew Valley: Fix a bug where walnutsanity would get deactivated even tho ginger island got forced activated (and move some files) (#4311)
This commit is contained in:
@@ -7,10 +7,10 @@ from .combat_logic import CombatLogicMixin
|
||||
from .has_logic import HasLogicMixin
|
||||
from .received_logic import ReceivedLogicMixin
|
||||
from .region_logic import RegionLogicMixin
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..options import ExcludeGingerIsland, Walnutsanity
|
||||
from ..stardew_rule import StardewRule, False_, True_
|
||||
from ..strings.ap_names.ap_option_names import OptionName
|
||||
from ..strings.ap_names.ap_option_names import WalnutsanityOptionName
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..strings.craftable_names import Furniture
|
||||
from ..strings.crop_names import Fruit
|
||||
from ..strings.metal_names import Mineral, Fossil
|
||||
@@ -25,7 +25,7 @@ class WalnutLogicMixin(BaseLogicMixin):
|
||||
|
||||
|
||||
class WalnutLogic(BaseLogic[Union[WalnutLogicMixin, ReceivedLogicMixin, HasLogicMixin, RegionLogicMixin, CombatLogicMixin,
|
||||
AbilityLogicMixin]]):
|
||||
AbilityLogicMixin]]):
|
||||
|
||||
def has_walnut(self, number: int) -> StardewRule:
|
||||
if self.options.exclude_ginger_island == ExcludeGingerIsland.option_true:
|
||||
@@ -44,22 +44,22 @@ class WalnutLogic(BaseLogic[Union[WalnutLogicMixin, ReceivedLogicMixin, HasLogic
|
||||
total_walnuts = puzzle_walnuts + bush_walnuts + dig_walnuts + repeatable_walnuts
|
||||
walnuts_to_receive = 0
|
||||
walnuts_to_collect = number
|
||||
if OptionName.walnutsanity_puzzles in self.options.walnutsanity:
|
||||
if WalnutsanityOptionName.puzzles in self.options.walnutsanity:
|
||||
puzzle_walnut_rate = puzzle_walnuts / total_walnuts
|
||||
puzzle_walnuts_required = round(puzzle_walnut_rate * number)
|
||||
walnuts_to_receive += puzzle_walnuts_required
|
||||
walnuts_to_collect -= puzzle_walnuts_required
|
||||
if OptionName.walnutsanity_bushes in self.options.walnutsanity:
|
||||
if WalnutsanityOptionName.bushes in self.options.walnutsanity:
|
||||
bush_walnuts_rate = bush_walnuts / total_walnuts
|
||||
bush_walnuts_required = round(bush_walnuts_rate * number)
|
||||
walnuts_to_receive += bush_walnuts_required
|
||||
walnuts_to_collect -= bush_walnuts_required
|
||||
if OptionName.walnutsanity_dig_spots in self.options.walnutsanity:
|
||||
if WalnutsanityOptionName.dig_spots in self.options.walnutsanity:
|
||||
dig_walnuts_rate = dig_walnuts / total_walnuts
|
||||
dig_walnuts_required = round(dig_walnuts_rate * number)
|
||||
walnuts_to_receive += dig_walnuts_required
|
||||
walnuts_to_collect -= dig_walnuts_required
|
||||
if OptionName.walnutsanity_repeatables in self.options.walnutsanity:
|
||||
if WalnutsanityOptionName.repeatables in self.options.walnutsanity:
|
||||
repeatable_walnuts_rate = repeatable_walnuts / total_walnuts
|
||||
repeatable_walnuts_required = round(repeatable_walnuts_rate * number)
|
||||
walnuts_to_receive += repeatable_walnuts_required
|
||||
@@ -104,9 +104,9 @@ class WalnutLogic(BaseLogic[Union[WalnutLogicMixin, ReceivedLogicMixin, HasLogic
|
||||
return reach_entire_island
|
||||
gems = (Mineral.amethyst, Mineral.aquamarine, Mineral.emerald, Mineral.ruby, Mineral.topaz)
|
||||
return reach_entire_island & self.logic.has(Fruit.banana) & self.logic.has_all(*gems) & \
|
||||
self.logic.ability.can_mine_perfectly() & self.logic.ability.can_fish_perfectly() & \
|
||||
self.logic.has(Furniture.flute_block) & self.logic.has(Seed.melon) & self.logic.has(Seed.wheat) & \
|
||||
self.logic.has(Seed.garlic) & self.can_complete_field_office()
|
||||
self.logic.ability.can_mine_perfectly() & self.logic.ability.can_fish_perfectly() & \
|
||||
self.logic.has(Furniture.flute_block) & self.logic.has(Seed.melon) & self.logic.has(Seed.wheat) & \
|
||||
self.logic.has(Seed.garlic) & self.can_complete_field_office()
|
||||
|
||||
@cached_property
|
||||
def can_start_field_office(self) -> StardewRule:
|
||||
@@ -132,4 +132,4 @@ class WalnutLogic(BaseLogic[Union[WalnutLogicMixin, ReceivedLogicMixin, HasLogic
|
||||
|
||||
def can_complete_field_office(self) -> StardewRule:
|
||||
return self.can_complete_large_animal_collection() & self.can_complete_snake_collection() & \
|
||||
self.can_complete_frog_collection() & self.can_complete_bat_collection()
|
||||
self.can_complete_frog_collection() & self.can_complete_bat_collection()
|
||||
|
||||
Reference in New Issue
Block a user