Major Game Update: Stardew Valley v3.x.x - The BK Update (#1686)

This is a major update for Stardew Valley, for version 3.x.x.
Changes include a large number of new features, including Seasons Randomizer, SeedShuffle, Museumsanity, Friendsanity, Complete Collection Goal, Full House Goal, friendship multiplier

Co-authored-by: Jouramie <jouramie@hotmail.com>
This commit is contained in:
agilbert1412
2023-04-10 19:44:59 -04:00
committed by GitHub
parent 0c1e3097c3
commit 5eadbc9840
38 changed files with 4055 additions and 1759 deletions

View File

@@ -5,6 +5,7 @@ from typing import Iterable, Dict, Protocol, Optional, List, Tuple
from BaseClasses import Region, Entrance
from . import options
from .data.region_data import SVRegion
from .options import StardewOptions
@@ -42,219 +43,237 @@ class ConnectionData:
stardew_valley_regions = [
RegionData("Menu", ["To Stardew Valley"]),
RegionData("Stardew Valley", ["To Farmhouse"]),
RegionData("Farmhouse", ["Outside to Farm", "Downstairs to Cellar"]),
RegionData("Cellar"),
RegionData("Farm", ["Farm to Backwoods", "Farm to Bus Stop", "Farm to Forest", "Farm to Farmcave", "Enter Greenhouse",
"Use Desert Obelisk", "Use Island Obelisk"]),
RegionData("Backwoods", ["Backwoods to Mountain"]),
RegionData("Bus Stop", ["Bus Stop to Town", "Take Bus to Desert", "Bus Stop to Tunnel Entrance"]),
RegionData("Forest", ["Forest to Town", "Enter Secret Woods", "Forest to Wizard Tower", "Forest to Marnie's Ranch",
"Forest to Leah's Cottage", "Forest to Sewers"]),
RegionData("Farmcave"),
RegionData("Greenhouse"),
RegionData("Mountain", ["Mountain to Railroad", "Mountain to Tent", "Mountain to Carpenter Shop", "Mountain to The Mines",
"Enter Quarry", "Mountain to Adventurer's Guild", "Mountain to Town"]),
RegionData("Tunnel Entrance", ["Enter Tunnel"]),
RegionData("Tunnel"),
RegionData("Town", ["Town to Community Center", "Town to Beach", "Town to Hospital",
"Town to Pierre's General Store", "Town to Saloon", "Town to Alex's House", "Town to Trailer", "Town to Mayor's Manor",
"Town to Sam's House", "Town to Haley's House", "Town to Sewers", "Town to Clint's Blacksmith", "Town to Museum",
RegionData(SVRegion.menu, ["To Stardew Valley"]),
RegionData(SVRegion.stardew_valley, ["To Farmhouse"]),
RegionData(SVRegion.farm_house, ["Outside to Farm", "Downstairs to Cellar"]),
RegionData(SVRegion.cellar),
RegionData(SVRegion.farm,
["Farm to Backwoods", "Farm to Bus Stop", "Farm to Forest", "Farm to Farmcave", "Enter Greenhouse",
"Use Desert Obelisk", "Use Island Obelisk"]),
RegionData(SVRegion.backwoods, ["Backwoods to Mountain"]),
RegionData(SVRegion.bus_stop, ["Bus Stop to Town", "Take Bus to Desert", "Bus Stop to Tunnel Entrance"]),
RegionData(SVRegion.forest, ["Forest to Town", "Enter Secret Woods", "Forest to Wizard Tower", "Forest to Marnie's Ranch",
"Forest to Leah's Cottage", "Forest to Sewers", "Talk to Traveling Merchant"]),
RegionData(SVRegion.traveling_cart),
RegionData(SVRegion.farm_cave),
RegionData(SVRegion.greenhouse),
RegionData(SVRegion.mountain,
["Mountain to Railroad", "Mountain to Tent", "Mountain to Carpenter Shop", "Mountain to The Mines",
"Enter Quarry", "Mountain to Adventurer's Guild", "Mountain to Town"]),
RegionData(SVRegion.tunnel_entrance, ["Enter Tunnel"]),
RegionData(SVRegion.tunnel),
RegionData(SVRegion.town, ["Town to Community Center", "Town to Beach", "Town to Hospital",
"Town to Pierre's General Store", "Town to Saloon", "Town to Alex's House", "Town to Trailer",
"Town to Mayor's Manor",
"Town to Sam's House", "Town to Haley's House", "Town to Sewers", "Town to Clint's Blacksmith",
"Town to Museum",
"Town to JojaMart"]),
RegionData("Beach", ["Beach to Willy's Fish Shop", "Enter Elliott's House", "Enter Tide Pools"]),
RegionData("Railroad", ["Enter Bathhouse Entrance", "Enter Witch Warp Cave"]), # "Enter Perfection Cutscene Area"
RegionData("Marnie's Ranch"),
RegionData("Leah's Cottage"),
RegionData("Sewers", ["Enter Mutant Bug Lair"]),
RegionData("Mutant Bug Lair"),
RegionData("Wizard Tower", ["Enter Wizard Basement"]),
RegionData("Wizard Basement"),
RegionData("Tent"),
RegionData("Carpenter Shop", ["Enter Sebastian's Room"]),
RegionData("Sebastian's Room"),
RegionData("Adventurer's Guild"),
RegionData("Community Center",
["Access Crafts Room", "Access Pantry", "Access Fish Tank", "Access Boiler Room", "Access Bulletin Board",
RegionData(SVRegion.beach, ["Beach to Willy's Fish Shop", "Enter Elliott's House", "Enter Tide Pools"]),
RegionData(SVRegion.railroad, ["Enter Bathhouse Entrance", "Enter Witch Warp Cave"]), # "Enter Perfection Cutscene Area"
RegionData(SVRegion.ranch),
RegionData(SVRegion.leah_house),
RegionData(SVRegion.sewers, ["Enter Mutant Bug Lair"]),
RegionData(SVRegion.mutant_bug_lair),
RegionData(SVRegion.wizard_tower, ["Enter Wizard Basement"]),
RegionData(SVRegion.wizard_basement),
RegionData(SVRegion.tent),
RegionData(SVRegion.carpenter, ["Enter Sebastian's Room"]),
RegionData(SVRegion.sebastian_room),
RegionData(SVRegion.adventurer_guild),
RegionData(SVRegion.community_center,
["Access Crafts Room", "Access Pantry", "Access Fish Tank", "Access Boiler Room",
"Access Bulletin Board",
"Access Vault"]),
RegionData("Crafts Room"),
RegionData("Pantry"),
RegionData("Fish Tank"),
RegionData("Boiler Room"),
RegionData("Bulletin Board"),
RegionData("Vault"),
RegionData("Hospital", ["Enter Harvey's Room"]),
RegionData("Harvey's Room"),
RegionData("Pierre's General Store", ["Enter Sunroom"]),
RegionData("Sunroom"),
RegionData("Saloon", ["Play Journey of the Prairie King", "Play Junimo Kart"]),
RegionData("Alex's House"),
RegionData("Trailer"),
RegionData("Mayor's Manor"),
RegionData("Sam's House"),
RegionData("Haley's House"),
RegionData("Clint's Blacksmith"),
RegionData("Museum"),
RegionData("JojaMart"),
RegionData("Willy's Fish Shop"),
RegionData("Elliott's House"),
RegionData("Tide Pools"),
RegionData("Bathhouse Entrance", ["Enter Locker Room"]),
RegionData("Locker Room", ["Enter Public Bath"]),
RegionData("Public Bath"),
RegionData("Witch Warp Cave", ["Enter Witch's Swamp"]),
RegionData("Witch's Swamp"),
RegionData("Quarry", ["Enter Quarry Mine Entrance"]),
RegionData("Quarry Mine Entrance", ["Enter Quarry Mine"]),
RegionData("Quarry Mine"),
RegionData("Secret Woods"),
RegionData("The Desert", ["Enter Skull Cavern Entrance"]),
RegionData("Skull Cavern Entrance", ["Enter Skull Cavern"]),
RegionData("Skull Cavern"),
RegionData("Ginger Island"),
RegionData("JotPK World 1", ["Reach JotPK World 2"]),
RegionData("JotPK World 2", ["Reach JotPK World 3"]),
RegionData("JotPK World 3"),
RegionData("Junimo Kart 1", ["Reach Junimo Kart 2"]),
RegionData("Junimo Kart 2", ["Reach Junimo Kart 3"]),
RegionData("Junimo Kart 3"),
RegionData("The Mines", ["Dig to The Mines - Floor 5", "Dig to The Mines - Floor 10", "Dig to The Mines - Floor 15",
"Dig to The Mines - Floor 20", "Dig to The Mines - Floor 25", "Dig to The Mines - Floor 30",
"Dig to The Mines - Floor 35", "Dig to The Mines - Floor 40", "Dig to The Mines - Floor 45",
"Dig to The Mines - Floor 50", "Dig to The Mines - Floor 55", "Dig to The Mines - Floor 60",
"Dig to The Mines - Floor 65", "Dig to The Mines - Floor 70", "Dig to The Mines - Floor 75",
"Dig to The Mines - Floor 80", "Dig to The Mines - Floor 85", "Dig to The Mines - Floor 90",
"Dig to The Mines - Floor 95", "Dig to The Mines - Floor 100", "Dig to The Mines - Floor 105",
"Dig to The Mines - Floor 110", "Dig to The Mines - Floor 115", "Dig to The Mines - Floor 120"]),
RegionData("The Mines - Floor 5"),
RegionData("The Mines - Floor 10"),
RegionData("The Mines - Floor 15"),
RegionData("The Mines - Floor 20"),
RegionData("The Mines - Floor 25"),
RegionData("The Mines - Floor 30"),
RegionData("The Mines - Floor 35"),
RegionData("The Mines - Floor 40"),
RegionData("The Mines - Floor 45"),
RegionData("The Mines - Floor 50"),
RegionData("The Mines - Floor 55"),
RegionData("The Mines - Floor 60"),
RegionData("The Mines - Floor 65"),
RegionData("The Mines - Floor 70"),
RegionData("The Mines - Floor 75"),
RegionData("The Mines - Floor 80"),
RegionData("The Mines - Floor 85"),
RegionData("The Mines - Floor 90"),
RegionData("The Mines - Floor 95"),
RegionData("The Mines - Floor 100"),
RegionData("The Mines - Floor 105"),
RegionData("The Mines - Floor 110"),
RegionData("The Mines - Floor 115"),
RegionData("The Mines - Floor 120"),
RegionData(SVRegion.crafts_room),
RegionData(SVRegion.pantry),
RegionData(SVRegion.fish_tank),
RegionData(SVRegion.boiler_room),
RegionData(SVRegion.bulletin_board),
RegionData(SVRegion.vault),
RegionData(SVRegion.hospital, ["Enter Harvey's Room"]),
RegionData(SVRegion.harvey_room),
RegionData(SVRegion.pierre_store, ["Enter Sunroom"]),
RegionData(SVRegion.sunroom),
RegionData(SVRegion.saloon, ["Play Journey of the Prairie King", "Play Junimo Kart"]),
RegionData(SVRegion.alex_house),
RegionData(SVRegion.trailer),
RegionData(SVRegion.mayor_house),
RegionData(SVRegion.sam_house),
RegionData(SVRegion.haley_house),
RegionData(SVRegion.blacksmith),
RegionData(SVRegion.museum),
RegionData(SVRegion.jojamart),
RegionData(SVRegion.fish_shop),
RegionData(SVRegion.elliott_house),
RegionData(SVRegion.tide_pools),
RegionData(SVRegion.bathhouse_entrance, ["Enter Locker Room"]),
RegionData(SVRegion.locker_room, ["Enter Public Bath"]),
RegionData(SVRegion.public_bath),
RegionData(SVRegion.witch_warp_cave, ["Enter Witch's Swamp"]),
RegionData(SVRegion.witch_swamp),
RegionData(SVRegion.quarry, ["Enter Quarry Mine Entrance"]),
RegionData(SVRegion.quarry_mine_entrance, ["Enter Quarry Mine"]),
RegionData(SVRegion.quarry_mine),
RegionData(SVRegion.secret_woods),
RegionData(SVRegion.desert, ["Enter Skull Cavern Entrance"]),
RegionData(SVRegion.skull_cavern_entrance, ["Enter Skull Cavern"]),
RegionData(SVRegion.skull_cavern, ["Mine to Skull Cavern Floor 100"]),
RegionData(SVRegion.perfect_skull_cavern),
RegionData(SVRegion.ginger_island),
RegionData(SVRegion.jotpk_world_1, ["Reach JotPK World 2"]),
RegionData(SVRegion.jotpk_world_2, ["Reach JotPK World 3"]),
RegionData(SVRegion.jotpk_world_3),
RegionData(SVRegion.junimo_kart_1, ["Reach Junimo Kart 2"]),
RegionData(SVRegion.junimo_kart_2, ["Reach Junimo Kart 3"]),
RegionData(SVRegion.junimo_kart_3),
RegionData(SVRegion.mines, ["Dig to The Mines - Floor 5", "Dig to The Mines - Floor 10", "Dig to The Mines - Floor 15",
"Dig to The Mines - Floor 20", "Dig to The Mines - Floor 25",
"Dig to The Mines - Floor 30",
"Dig to The Mines - Floor 35", "Dig to The Mines - Floor 40",
"Dig to The Mines - Floor 45",
"Dig to The Mines - Floor 50", "Dig to The Mines - Floor 55",
"Dig to The Mines - Floor 60",
"Dig to The Mines - Floor 65", "Dig to The Mines - Floor 70",
"Dig to The Mines - Floor 75",
"Dig to The Mines - Floor 80", "Dig to The Mines - Floor 85",
"Dig to The Mines - Floor 90",
"Dig to The Mines - Floor 95", "Dig to The Mines - Floor 100",
"Dig to The Mines - Floor 105",
"Dig to The Mines - Floor 110", "Dig to The Mines - Floor 115",
"Dig to The Mines - Floor 120"]),
RegionData(SVRegion.mines_floor_5),
RegionData(SVRegion.mines_floor_10),
RegionData(SVRegion.mines_floor_15),
RegionData(SVRegion.mines_floor_20),
RegionData(SVRegion.mines_floor_25),
RegionData(SVRegion.mines_floor_30),
RegionData(SVRegion.mines_floor_35),
RegionData(SVRegion.mines_floor_40),
RegionData(SVRegion.mines_floor_45),
RegionData(SVRegion.mines_floor_50),
RegionData(SVRegion.mines_floor_55),
RegionData(SVRegion.mines_floor_60),
RegionData(SVRegion.mines_floor_65),
RegionData(SVRegion.mines_floor_70),
RegionData(SVRegion.mines_floor_75),
RegionData(SVRegion.mines_floor_80),
RegionData(SVRegion.mines_floor_85),
RegionData(SVRegion.mines_floor_90),
RegionData(SVRegion.mines_floor_95),
RegionData(SVRegion.mines_floor_100),
RegionData(SVRegion.mines_floor_105),
RegionData(SVRegion.mines_floor_110),
RegionData(SVRegion.mines_floor_115),
RegionData(SVRegion.mines_floor_120),
]
# Exists and where they lead
mandatory_connections = [
ConnectionData("To Stardew Valley", "Stardew Valley"),
ConnectionData("To Farmhouse", "Farmhouse"),
ConnectionData("Outside to Farm", "Farm"),
ConnectionData("Downstairs to Cellar", "Cellar"),
ConnectionData("Farm to Backwoods", "Backwoods"),
ConnectionData("Farm to Bus Stop", "Bus Stop"),
ConnectionData("Farm to Forest", "Forest"),
ConnectionData("Farm to Farmcave", "Farmcave", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Greenhouse", "Greenhouse"),
ConnectionData("Use Desert Obelisk", "The Desert"),
ConnectionData("Use Island Obelisk", "Ginger Island"),
ConnectionData("Backwoods to Mountain", "Mountain"),
ConnectionData("Bus Stop to Town", "Town"),
ConnectionData("Bus Stop to Tunnel Entrance", "Tunnel Entrance"),
ConnectionData("Take Bus to Desert", "The Desert"),
ConnectionData("Enter Tunnel", "Tunnel"),
ConnectionData("Forest to Town", "Town"),
ConnectionData("Forest to Wizard Tower", "Wizard Tower", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Wizard Basement", "Wizard Basement"),
ConnectionData("Forest to Marnie's Ranch", "Marnie's Ranch", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Forest to Leah's Cottage", "Leah's Cottage"),
ConnectionData("Enter Secret Woods", "Secret Woods"),
ConnectionData("Forest to Sewers", "Sewers"),
ConnectionData("Town to Sewers", "Sewers"),
ConnectionData("Enter Mutant Bug Lair", "Mutant Bug Lair"),
ConnectionData("Mountain to Railroad", "Railroad"),
ConnectionData("Mountain to Tent", "Tent", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Mountain to Carpenter Shop", "Carpenter Shop", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Sebastian's Room", "Sebastian's Room"),
ConnectionData("Mountain to Adventurer's Guild", "Adventurer's Guild"),
ConnectionData("Enter Quarry", "Quarry"),
ConnectionData("Enter Quarry Mine Entrance", "Quarry Mine Entrance"),
ConnectionData("Enter Quarry Mine", "Quarry Mine"),
ConnectionData("Mountain to Town", "Town"),
ConnectionData("Town to Community Center", "Community Center", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Access Crafts Room", "Crafts Room"),
ConnectionData("Access Pantry", "Pantry"),
ConnectionData("Access Fish Tank", "Fish Tank"),
ConnectionData("Access Boiler Room", "Boiler Room"),
ConnectionData("Access Bulletin Board", "Bulletin Board"),
ConnectionData("Access Vault", "Vault"),
ConnectionData("Town to Hospital", "Hospital", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Enter Harvey's Room", "Harvey's Room"),
ConnectionData("Town to Pierre's General Store", "Pierre's General Store", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Enter Sunroom", "Sunroom"),
ConnectionData("Town to Clint's Blacksmith", "Clint's Blacksmith", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Saloon", "Saloon", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Play Journey of the Prairie King", "JotPK World 1"),
ConnectionData("Reach JotPK World 2", "JotPK World 2"),
ConnectionData("Reach JotPK World 3", "JotPK World 3"),
ConnectionData("Play Junimo Kart", "Junimo Kart 1"),
ConnectionData("Reach Junimo Kart 2", "Junimo Kart 2"),
ConnectionData("Reach Junimo Kart 3", "Junimo Kart 3"),
ConnectionData("Town to Sam's House", "Sam's House", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Haley's House", "Haley's House", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Mayor's Manor", "Mayor's Manor", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Alex's House", "Alex's House", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Trailer", "Trailer", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Museum", "Museum", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to JojaMart", "JojaMart", flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Beach", "Beach"),
ConnectionData("Enter Elliott's House", "Elliott's House"),
ConnectionData("Beach to Willy's Fish Shop", "Willy's Fish Shop", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Tide Pools", "Tide Pools"),
ConnectionData("Mountain to The Mines", "The Mines", flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Dig to The Mines - Floor 5", "The Mines - Floor 5"),
ConnectionData("Dig to The Mines - Floor 10", "The Mines - Floor 10"),
ConnectionData("Dig to The Mines - Floor 15", "The Mines - Floor 15"),
ConnectionData("Dig to The Mines - Floor 20", "The Mines - Floor 20"),
ConnectionData("Dig to The Mines - Floor 25", "The Mines - Floor 25"),
ConnectionData("Dig to The Mines - Floor 30", "The Mines - Floor 30"),
ConnectionData("Dig to The Mines - Floor 35", "The Mines - Floor 35"),
ConnectionData("Dig to The Mines - Floor 40", "The Mines - Floor 40"),
ConnectionData("Dig to The Mines - Floor 45", "The Mines - Floor 45"),
ConnectionData("Dig to The Mines - Floor 50", "The Mines - Floor 50"),
ConnectionData("Dig to The Mines - Floor 55", "The Mines - Floor 55"),
ConnectionData("Dig to The Mines - Floor 60", "The Mines - Floor 60"),
ConnectionData("Dig to The Mines - Floor 65", "The Mines - Floor 65"),
ConnectionData("Dig to The Mines - Floor 70", "The Mines - Floor 70"),
ConnectionData("Dig to The Mines - Floor 75", "The Mines - Floor 75"),
ConnectionData("Dig to The Mines - Floor 80", "The Mines - Floor 80"),
ConnectionData("Dig to The Mines - Floor 85", "The Mines - Floor 85"),
ConnectionData("Dig to The Mines - Floor 90", "The Mines - Floor 90"),
ConnectionData("Dig to The Mines - Floor 95", "The Mines - Floor 95"),
ConnectionData("Dig to The Mines - Floor 100", "The Mines - Floor 100"),
ConnectionData("Dig to The Mines - Floor 105", "The Mines - Floor 105"),
ConnectionData("Dig to The Mines - Floor 110", "The Mines - Floor 110"),
ConnectionData("Dig to The Mines - Floor 115", "The Mines - Floor 115"),
ConnectionData("Dig to The Mines - Floor 120", "The Mines - Floor 120"),
ConnectionData("Enter Skull Cavern Entrance", "Skull Cavern Entrance"),
ConnectionData("Enter Skull Cavern", "Skull Cavern"),
ConnectionData("Enter Witch Warp Cave", "Witch Warp Cave"),
ConnectionData("Enter Witch's Swamp", "Witch's Swamp"),
ConnectionData("Enter Bathhouse Entrance", "Bathhouse Entrance"),
ConnectionData("Enter Locker Room", "Locker Room"),
ConnectionData("Enter Public Bath", "Public Bath"),
ConnectionData("To Stardew Valley", SVRegion.stardew_valley),
ConnectionData("To Farmhouse", SVRegion.farm_house),
ConnectionData("Outside to Farm", SVRegion.farm),
ConnectionData("Downstairs to Cellar", SVRegion.cellar),
ConnectionData("Farm to Backwoods", SVRegion.backwoods),
ConnectionData("Farm to Bus Stop", SVRegion.bus_stop),
ConnectionData("Farm to Forest", SVRegion.forest),
ConnectionData("Farm to Farmcave", SVRegion.farm_cave, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Greenhouse", SVRegion.greenhouse),
ConnectionData("Use Desert Obelisk", SVRegion.desert),
ConnectionData("Use Island Obelisk", SVRegion.ginger_island),
ConnectionData("Backwoods to Mountain", SVRegion.mountain),
ConnectionData("Bus Stop to Town", SVRegion.town),
ConnectionData("Bus Stop to Tunnel Entrance", SVRegion.tunnel_entrance),
ConnectionData("Take Bus to Desert", SVRegion.desert),
ConnectionData("Enter Tunnel", SVRegion.tunnel),
ConnectionData("Forest to Town", SVRegion.town),
ConnectionData("Forest to Wizard Tower", SVRegion.wizard_tower, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Wizard Basement", SVRegion.wizard_basement),
ConnectionData("Forest to Marnie's Ranch", SVRegion.ranch, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Forest to Leah's Cottage", SVRegion.leah_house),
ConnectionData("Enter Secret Woods", SVRegion.secret_woods),
ConnectionData("Forest to Sewers", SVRegion.sewers),
ConnectionData("Talk to Traveling Merchant", SVRegion.traveling_cart),
ConnectionData("Town to Sewers", SVRegion.sewers),
ConnectionData("Enter Mutant Bug Lair", SVRegion.mutant_bug_lair),
ConnectionData("Mountain to Railroad", SVRegion.railroad),
ConnectionData("Mountain to Tent", SVRegion.tent, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Mountain to Carpenter Shop", SVRegion.carpenter, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Sebastian's Room", SVRegion.sebastian_room),
ConnectionData("Mountain to Adventurer's Guild", SVRegion.adventurer_guild),
ConnectionData("Enter Quarry", SVRegion.quarry),
ConnectionData("Enter Quarry Mine Entrance", SVRegion.quarry_mine_entrance),
ConnectionData("Enter Quarry Mine", SVRegion.quarry_mine),
ConnectionData("Mountain to Town", SVRegion.town),
ConnectionData("Town to Community Center", SVRegion.community_center, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Access Crafts Room", SVRegion.crafts_room),
ConnectionData("Access Pantry", SVRegion.pantry),
ConnectionData("Access Fish Tank", SVRegion.fish_tank),
ConnectionData("Access Boiler Room", SVRegion.boiler_room),
ConnectionData("Access Bulletin Board", SVRegion.bulletin_board),
ConnectionData("Access Vault", SVRegion.vault),
ConnectionData("Town to Hospital", SVRegion.hospital, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Enter Harvey's Room", SVRegion.harvey_room),
ConnectionData("Town to Pierre's General Store", SVRegion.pierre_store, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Enter Sunroom", SVRegion.sunroom),
ConnectionData("Town to Clint's Blacksmith", SVRegion.blacksmith, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Saloon", SVRegion.saloon, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Play Journey of the Prairie King", SVRegion.jotpk_world_1),
ConnectionData("Reach JotPK World 2", SVRegion.jotpk_world_2),
ConnectionData("Reach JotPK World 3", SVRegion.jotpk_world_3),
ConnectionData("Play Junimo Kart", SVRegion.junimo_kart_1),
ConnectionData("Reach Junimo Kart 2", SVRegion.junimo_kart_2),
ConnectionData("Reach Junimo Kart 3", SVRegion.junimo_kart_3),
ConnectionData("Town to Sam's House", SVRegion.sam_house, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Haley's House", SVRegion.haley_house, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Mayor's Manor", SVRegion.mayor_house, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Alex's House", SVRegion.alex_house, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Trailer", SVRegion.trailer, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Museum", SVRegion.museum, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to JojaMart", SVRegion.jojamart, flag=RandomizationFlag.PELICAN_TOWN),
ConnectionData("Town to Beach", SVRegion.beach),
ConnectionData("Enter Elliott's House", SVRegion.elliott_house),
ConnectionData("Beach to Willy's Fish Shop", SVRegion.fish_shop, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Enter Tide Pools", SVRegion.tide_pools),
ConnectionData("Mountain to The Mines", SVRegion.mines, flag=RandomizationFlag.NON_PROGRESSION),
ConnectionData("Dig to The Mines - Floor 5", SVRegion.mines_floor_5),
ConnectionData("Dig to The Mines - Floor 10", SVRegion.mines_floor_10),
ConnectionData("Dig to The Mines - Floor 15", SVRegion.mines_floor_15),
ConnectionData("Dig to The Mines - Floor 20", SVRegion.mines_floor_20),
ConnectionData("Dig to The Mines - Floor 25", SVRegion.mines_floor_25),
ConnectionData("Dig to The Mines - Floor 30", SVRegion.mines_floor_30),
ConnectionData("Dig to The Mines - Floor 35", SVRegion.mines_floor_35),
ConnectionData("Dig to The Mines - Floor 40", SVRegion.mines_floor_40),
ConnectionData("Dig to The Mines - Floor 45", SVRegion.mines_floor_45),
ConnectionData("Dig to The Mines - Floor 50", SVRegion.mines_floor_50),
ConnectionData("Dig to The Mines - Floor 55", SVRegion.mines_floor_55),
ConnectionData("Dig to The Mines - Floor 60", SVRegion.mines_floor_60),
ConnectionData("Dig to The Mines - Floor 65", SVRegion.mines_floor_65),
ConnectionData("Dig to The Mines - Floor 70", SVRegion.mines_floor_70),
ConnectionData("Dig to The Mines - Floor 75", SVRegion.mines_floor_75),
ConnectionData("Dig to The Mines - Floor 80", SVRegion.mines_floor_80),
ConnectionData("Dig to The Mines - Floor 85", SVRegion.mines_floor_85),
ConnectionData("Dig to The Mines - Floor 90", SVRegion.mines_floor_90),
ConnectionData("Dig to The Mines - Floor 95", SVRegion.mines_floor_95),
ConnectionData("Dig to The Mines - Floor 100", SVRegion.mines_floor_100),
ConnectionData("Dig to The Mines - Floor 105", SVRegion.mines_floor_105),
ConnectionData("Dig to The Mines - Floor 110", SVRegion.mines_floor_110),
ConnectionData("Dig to The Mines - Floor 115", SVRegion.mines_floor_115),
ConnectionData("Dig to The Mines - Floor 120", SVRegion.mines_floor_120),
ConnectionData("Enter Skull Cavern Entrance", SVRegion.skull_cavern_entrance),
ConnectionData("Enter Skull Cavern", SVRegion.skull_cavern),
ConnectionData("Mine to Skull Cavern Floor 100", SVRegion.perfect_skull_cavern),
ConnectionData("Enter Witch Warp Cave", SVRegion.witch_warp_cave),
ConnectionData("Enter Witch's Swamp", SVRegion.witch_swamp),
ConnectionData("Enter Bathhouse Entrance", SVRegion.bathhouse_entrance),
ConnectionData("Enter Locker Room", SVRegion.locker_room),
ConnectionData("Enter Public Bath", SVRegion.public_bath),
]
def create_regions(region_factory: RegionFactory, random: Random, world_options: StardewOptions) -> Tuple[Iterable[Region], Dict[str, str]]:
regions: Dict[str: Region] = {region.name: region_factory(region.name, region.exits) for region in stardew_valley_regions}
def create_regions(region_factory: RegionFactory, random: Random, world_options: StardewOptions) -> Tuple[
Iterable[Region], Dict[str, str]]:
regions: Dict[str: Region] = {region.name: region_factory(region.name, region.exits) for region in
stardew_valley_regions}
entrances: Dict[str: Entrance] = {entrance.name: entrance
for region in regions.values()
for entrance in region.exits}
@@ -272,9 +291,11 @@ def create_regions(region_factory: RegionFactory, random: Random, world_options:
def randomize_connections(random: Random, world_options: StardewOptions) -> Tuple[List[ConnectionData], Dict[str, str]]:
connections_to_randomize = []
if world_options[options.EntranceRandomization] == options.EntranceRandomization.option_pelican_town:
connections_to_randomize = [connection for connection in mandatory_connections if RandomizationFlag.PELICAN_TOWN in connection.flag]
connections_to_randomize = [connection for connection in mandatory_connections if
RandomizationFlag.PELICAN_TOWN in connection.flag]
elif world_options[options.EntranceRandomization] == options.EntranceRandomization.option_non_progression:
connections_to_randomize = [connection for connection in mandatory_connections if RandomizationFlag.NON_PROGRESSION in connection.flag]
connections_to_randomize = [connection for connection in mandatory_connections if
RandomizationFlag.NON_PROGRESSION in connection.flag]
random.shuffle(connections_to_randomize)
destination_pool = list(connections_to_randomize)