Stardew Valley: Replace current naive entrance rando with GER (#4624)

This commit is contained in:
Jérémie Bolduc
2025-05-24 01:15:41 -04:00
committed by GitHub
parent e82d50a3c5
commit c64791e3a8
21 changed files with 1351 additions and 1224 deletions

View File

@@ -1,9 +1,10 @@
import logging
import typing
from random import Random
from typing import Dict, Any, Iterable, Optional, List, TextIO
from typing import Dict, Any, Optional, List, TextIO
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState
import entrance_rando
from BaseClasses import Region, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState
from Options import PerGameCommonOptions
from worlds.AutoWorld import World, WebWorld
from .bundles.bundle_room import BundleRoom
@@ -21,7 +22,7 @@ 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 .options.worlds_group import apply_most_restrictive_options
from .regions import create_regions
from .regions import create_regions, prepare_mod_data
from .rules import set_rules
from .stardew_rule import True_, StardewRule, HasProgressionPercent
from .strings.ap_names.event_names import Event
@@ -124,18 +125,13 @@ class StardewValleyWorld(World):
self.content = create_content(self.options)
def create_regions(self):
def create_region(name: str, exits: Iterable[str]) -> Region:
region = Region(name, self.player, self.multiworld)
region.exits = [Entrance(self.player, exit_name, region) for exit_name in exits]
return region
def create_region(name: str) -> Region:
return Region(name, self.player, self.multiworld)
world_regions, world_entrances, self.randomized_entrances = create_regions(create_region, self.random, self.options, self.content)
world_regions = create_regions(create_region, self.options, self.content)
self.logic = StardewLogic(self.player, self.options, self.content, world_regions.keys())
self.modified_bundles = get_all_bundles(self.random,
self.logic,
self.content,
self.options)
self.modified_bundles = get_all_bundles(self.random, self.logic, self.content, self.options)
def add_location(name: str, code: Optional[int], region: str):
region: Region = world_regions[region]
@@ -308,6 +304,11 @@ class StardewValleyWorld(World):
def set_rules(self):
set_rules(self)
def connect_entrances(self) -> None:
no_target_groups = {0: [0]}
placement = entrance_rando.randomize_entrances(self, coupled=True, target_group_lookup=no_target_groups)
self.randomized_entrances = prepare_mod_data(placement)
def generate_basic(self):
pass