Stardew Valley: Remove seasonal farming event, use regions instead (#4379)
This commit is contained in:
parent
4edca0ce54
commit
0fc722cb28
|
@ -5,29 +5,23 @@ from typing import Dict, Any, Iterable, Optional, Union, List, TextIO
|
|||
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState
|
||||
from Options import PerGameCommonOptions
|
||||
from worlds.AutoWorld import World, WebWorld
|
||||
from . import rules
|
||||
from .bundles.bundle_room import BundleRoom
|
||||
from .bundles.bundles import get_all_bundles
|
||||
from .content import content_packs, StardewContent, unpack_content, create_content
|
||||
from .content import StardewContent, create_content
|
||||
from .early_items import setup_early_items
|
||||
from .items import item_table, create_items, ItemData, Group, items_by_group, get_all_filler_items, remove_limited_amount_packs
|
||||
from .locations import location_table, create_locations, LocationData, locations_by_tag
|
||||
from .logic.bundle_logic import BundleLogic
|
||||
from .logic.logic import StardewLogic
|
||||
from .logic.time_logic import MAX_MONTHS
|
||||
from .options import StardewValleyOptions, SeasonRandomization, Goal, BundleRandomization, EnabledFillerBuffs, NumberOfMovementBuffs, \
|
||||
BuildingProgression, ExcludeGingerIsland, TrapItems, EntranceRandomization, FarmType, Walnutsanity
|
||||
BuildingProgression, ExcludeGingerIsland, TrapItems, EntranceRandomization, FarmType
|
||||
from .options.forced_options import force_change_options_if_incompatible
|
||||
from .options.option_groups import sv_option_groups
|
||||
from .options.presets import sv_options_presets
|
||||
from .regions import create_regions
|
||||
from .rules import set_rules
|
||||
from .stardew_rule import True_, StardewRule, HasProgressionPercent, true_
|
||||
from .stardew_rule import True_, StardewRule, HasProgressionPercent
|
||||
from .strings.ap_names.event_names import Event
|
||||
from .strings.entrance_names import Entrance as EntranceName
|
||||
from .strings.goal_names import Goal as GoalName
|
||||
from .strings.metal_names import Ore
|
||||
from .strings.region_names import Region as RegionName, LogicRegion
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -159,7 +153,7 @@ class StardewValleyWorld(World):
|
|||
self.multiworld.itempool += created_items
|
||||
|
||||
setup_early_items(self.multiworld, self.options, self.content, self.player, self.random)
|
||||
self.setup_player_events()
|
||||
self.setup_logic_events()
|
||||
self.setup_victory()
|
||||
|
||||
# This is really a best-effort to get the total progression items count. It is mostly used to spread grinds across spheres are push back locations that
|
||||
|
@ -199,20 +193,6 @@ class StardewValleyWorld(World):
|
|||
if self.options.farm_type == FarmType.option_meadowlands and self.options.building_progression & BuildingProgression.option_progressive:
|
||||
self.multiworld.push_precollected(self.create_starting_item("Progressive Coop"))
|
||||
|
||||
def setup_player_events(self):
|
||||
self.setup_action_events()
|
||||
self.setup_logic_events()
|
||||
|
||||
def setup_action_events(self):
|
||||
spring_farming = LocationData(None, LogicRegion.spring_farming, Event.spring_farming)
|
||||
self.create_event_location(spring_farming, true_, Event.spring_farming)
|
||||
summer_farming = LocationData(None, LogicRegion.summer_farming, Event.summer_farming)
|
||||
self.create_event_location(summer_farming, true_, Event.summer_farming)
|
||||
fall_farming = LocationData(None, LogicRegion.fall_farming, Event.fall_farming)
|
||||
self.create_event_location(fall_farming, true_, Event.fall_farming)
|
||||
winter_farming = LocationData(None, LogicRegion.winter_farming, Event.winter_farming)
|
||||
self.create_event_location(winter_farming, true_, Event.winter_farming)
|
||||
|
||||
def setup_logic_events(self):
|
||||
def register_event(name: str, region: str, rule: StardewRule):
|
||||
event_location = LocationData(None, region, name)
|
||||
|
|
|
@ -10,17 +10,16 @@ from .season_logic import SeasonLogicMixin
|
|||
from .tool_logic import ToolLogicMixin
|
||||
from .. import options
|
||||
from ..stardew_rule import StardewRule, True_, false_
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..strings.fertilizer_names import Fertilizer
|
||||
from ..strings.region_names import Region
|
||||
from ..strings.region_names import Region, LogicRegion
|
||||
from ..strings.season_names import Season
|
||||
from ..strings.tool_names import Tool
|
||||
|
||||
farming_event_by_season = {
|
||||
Season.spring: Event.spring_farming,
|
||||
Season.summer: Event.summer_farming,
|
||||
Season.fall: Event.fall_farming,
|
||||
Season.winter: Event.winter_farming,
|
||||
farming_region_by_season = {
|
||||
Season.spring: LogicRegion.spring_farming,
|
||||
Season.summer: LogicRegion.summer_farming,
|
||||
Season.fall: LogicRegion.fall_farming,
|
||||
Season.winter: LogicRegion.winter_farming,
|
||||
}
|
||||
|
||||
|
||||
|
@ -54,7 +53,7 @@ class FarmingLogic(BaseLogic[Union[HasLogicMixin, ReceivedLogicMixin, RegionLogi
|
|||
if isinstance(seasons, str):
|
||||
seasons = (seasons,)
|
||||
|
||||
return self.logic.or_(*(self.logic.received(farming_event_by_season[season]) for season in seasons))
|
||||
return self.logic.or_(*(self.logic.region.can_reach(farming_region_by_season[season]) for season in seasons))
|
||||
|
||||
def has_island_farm(self) -> StardewRule:
|
||||
if self.options.exclude_ginger_island == options.ExcludeGingerIsland.option_false:
|
||||
|
|
|
@ -8,9 +8,5 @@ def event(name: str):
|
|||
|
||||
class Event:
|
||||
victory = event("Victory")
|
||||
spring_farming = event("Spring Farming")
|
||||
summer_farming = event("Summer Farming")
|
||||
fall_farming = event("Fall Farming")
|
||||
winter_farming = event("Winter Farming")
|
||||
|
||||
received_walnuts = event("Received Walnuts")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from collections import Counter
|
||||
|
||||
from .. import SVTestBase
|
||||
from ... import Event, options
|
||||
from ... import options
|
||||
from ...options import ToolProgression, SeasonRandomization
|
||||
from ...strings.entrance_names import Entrance
|
||||
from ...strings.region_names import Region
|
||||
|
@ -74,12 +74,10 @@ class TestProgressiveToolsLogic(SVTestBase):
|
|||
self.assert_rule_true(rule, self.multiworld.state)
|
||||
|
||||
self.remove(fall)
|
||||
self.remove(self.create_item(Event.fall_farming))
|
||||
self.assert_rule_false(rule, self.multiworld.state)
|
||||
self.remove(tuesday)
|
||||
|
||||
green_house = self.create_item("Greenhouse")
|
||||
self.collect(self.create_item(Event.fall_farming))
|
||||
self.multiworld.state.collect(green_house)
|
||||
self.assert_rule_false(rule, self.multiworld.state)
|
||||
|
||||
|
@ -88,7 +86,6 @@ class TestProgressiveToolsLogic(SVTestBase):
|
|||
self.assertTrue(self.multiworld.get_location("Old Master Cannoli", 1).access_rule(self.multiworld.state))
|
||||
|
||||
self.remove(green_house)
|
||||
self.remove(self.create_item(Event.fall_farming))
|
||||
self.assert_rule_false(rule, self.multiworld.state)
|
||||
self.remove(friday)
|
||||
|
||||
|
|
Loading…
Reference in New Issue