Stardew Valley: Add Options presets (#2470)
This commit is contained in:
parent
790f192ded
commit
e916b0d6b0
|
@ -11,6 +11,7 @@ from .locations import location_table, create_locations, LocationData
|
|||
from .logic import StardewLogic, StardewRule, True_, MAX_MONTHS
|
||||
from .options import StardewValleyOptions, SeasonRandomization, Goal, BundleRandomization, BundlePrice, NumberOfLuckBuffs, NumberOfMovementBuffs, \
|
||||
BackpackProgression, BuildingProgression, ExcludeGingerIsland
|
||||
from .presets import sv_options_presets
|
||||
from .regions import create_regions
|
||||
from .rules import set_rules
|
||||
from worlds.generic.Rules import set_rule
|
||||
|
@ -34,6 +35,7 @@ class StardewItem(Item):
|
|||
class StardewWebWorld(WebWorld):
|
||||
theme = "dirt"
|
||||
bug_report_page = "https://github.com/agilbert1412/StardewArchipelago/issues/new?labels=bug&title=%5BBug%5D%3A+Brief+Description+of+bug+here"
|
||||
options_presets = sv_options_presets
|
||||
|
||||
tutorials = [
|
||||
Tutorial(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
id,name,classification,groups,mod_name
|
||||
0,Joja Cola,filler,TRASH,
|
||||
15,Rusty Key,progression,MUSEUM,
|
||||
16,Dwarvish Translation Guide,progression,MUSEUM,
|
||||
15,Rusty Key,progression,,
|
||||
16,Dwarvish Translation Guide,progression,,
|
||||
17,Bridge Repair,progression,COMMUNITY_REWARD,
|
||||
18,Greenhouse,progression,COMMUNITY_REWARD,
|
||||
19,Glittering Boulder Removed,progression,COMMUNITY_REWARD,
|
||||
|
|
|
|
@ -300,15 +300,15 @@ def create_stardrops(item_factory: StardewItemFactory, options: StardewValleyOpt
|
|||
|
||||
|
||||
def create_museum_items(item_factory: StardewItemFactory, options: StardewValleyOptions, items: List[Item]):
|
||||
if options.museumsanity == Museumsanity.option_none:
|
||||
return
|
||||
items.extend(item_factory(item) for item in ["Magic Rock Candy"] * 5)
|
||||
items.extend(item_factory(item) for item in ["Ancient Seeds"] * 5)
|
||||
items.extend(item_factory(item) for item in ["Traveling Merchant Metal Detector"] * 4)
|
||||
items.append(item_factory("Ancient Seeds Recipe"))
|
||||
items.append(item_factory("Stardrop"))
|
||||
items.append(item_factory("Rusty Key"))
|
||||
items.append(item_factory("Dwarvish Translation Guide"))
|
||||
items.append(item_factory("Ancient Seeds Recipe"))
|
||||
if options.museumsanity == Museumsanity.option_none:
|
||||
return
|
||||
items.extend(item_factory(item) for item in ["Magic Rock Candy"] * 10)
|
||||
items.extend(item_factory(item) for item in ["Ancient Seeds"] * 5)
|
||||
items.extend(item_factory(item) for item in ["Traveling Merchant Metal Detector"] * 4)
|
||||
items.append(item_factory("Stardrop"))
|
||||
|
||||
|
||||
def create_friendsanity_items(item_factory: StardewItemFactory, options: StardewValleyOptions, items: List[Item]):
|
||||
|
|
|
@ -8,7 +8,7 @@ from .data import all_fish, FishItem, all_purchasable_seeds, SeedItem, all_crops
|
|||
from .data.bundle_data import BundleItem
|
||||
from .data.crops_data import crops_by_name
|
||||
from .data.fish_data import island_fish
|
||||
from .data.museum_data import all_museum_items, MuseumItem, all_museum_artifacts, dwarf_scrolls, all_museum_minerals
|
||||
from .data.museum_data import all_museum_items, MuseumItem, all_museum_artifacts, all_museum_minerals
|
||||
from .data.recipe_data import all_cooking_recipes, CookingRecipe, RecipeSource, FriendshipSource, QueenOfSauceSource, \
|
||||
StarterSource, ShopSource, SkillSource
|
||||
from .data.villagers_data import all_villagers_by_name, Villager
|
||||
|
@ -1283,8 +1283,6 @@ class StardewLogic:
|
|||
return self.has_lived_months(8)
|
||||
|
||||
def can_speak_dwarf(self) -> StardewRule:
|
||||
if self.options.museumsanity == Museumsanity.option_none:
|
||||
return And([self.can_donate_museum_item(item) for item in dwarf_scrolls])
|
||||
return self.received("Dwarvish Translation Guide")
|
||||
|
||||
def can_donate_museum_item(self, item: MuseumItem) -> StardewRule:
|
||||
|
@ -1370,9 +1368,6 @@ class StardewLogic:
|
|||
return self.received("Month End", number)
|
||||
|
||||
def has_rusty_key(self) -> StardewRule:
|
||||
if self.options.museumsanity == Museumsanity.option_none:
|
||||
required_donations = 80 # It's 60, but without a metal detector I'd rather overshoot so players don't get screwed by RNG
|
||||
return self.has([item.name for item in all_museum_items], required_donations) & self.can_reach_region(Region.museum)
|
||||
return self.received(Wallet.rusty_key)
|
||||
|
||||
def can_win_egg_hunt(self) -> StardewRule:
|
||||
|
|
|
@ -7,15 +7,15 @@ from .mods.mod_data import ModNames
|
|||
|
||||
class Goal(Choice):
|
||||
"""What's your goal with this play-through?
|
||||
Community Center: The world will be completed once you complete the Community Center.
|
||||
Grandpa's Evaluation: The world will be completed once 4 candles are lit at Grandpa's Shrine.
|
||||
Bottom of the Mines: The world will be completed once you reach level 120 in the mineshaft.
|
||||
Cryptic Note: The world will be completed once you complete the quest "Cryptic Note" where Mr Qi asks you to reach floor 100 in the Skull Cavern.
|
||||
Master Angler: The world will be completed once you have caught every fish in the game. Pairs well with Fishsanity.
|
||||
Complete Collection: The world will be completed once you have completed the museum by donating every possible item. Pairs well with Museumsanity.
|
||||
Full House: The world will be completed once you get married and have two kids. Pairs well with Friendsanity.
|
||||
Greatest Walnut Hunter: The world will be completed once you find all 130 Golden Walnuts
|
||||
Perfection: The world will be completed once you attain Perfection, based on the vanilla definition.
|
||||
Community Center: Complete the Community Center.
|
||||
Grandpa's Evaluation: Succeed grandpa's evaluation with 4 lit candles.
|
||||
Bottom of the Mines: Reach level 120 in the mineshaft.
|
||||
Cryptic Note: Complete the quest "Cryptic Note" where Mr Qi asks you to reach floor 100 in the Skull Cavern.
|
||||
Master Angler: Catch every fish in the game. Pairs well with Fishsanity.
|
||||
Complete Collection: Complete the museum by donating every possible item. Pairs well with Museumsanity.
|
||||
Full House: Get married and have two children. Pairs well with Friendsanity.
|
||||
Greatest Walnut Hunter: Find all 130 Golden Walnuts
|
||||
Perfection: Attain Perfection, based on the vanilla definition.
|
||||
"""
|
||||
internal_name = "goal"
|
||||
display_name = "Goal"
|
||||
|
@ -50,7 +50,7 @@ class Goal(Choice):
|
|||
|
||||
class StartingMoney(SpecialRange):
|
||||
"""Amount of gold when arriving at the farm.
|
||||
Set to -1 or unlimited for infinite money in this playthrough"""
|
||||
Set to -1 or unlimited for infinite money"""
|
||||
internal_name = "starting_money"
|
||||
display_name = "Starting Gold"
|
||||
range_start = -1
|
||||
|
@ -117,10 +117,10 @@ class BundlePrice(Choice):
|
|||
class EntranceRandomization(Choice):
|
||||
"""Should area entrances be randomized?
|
||||
Disabled: No entrance randomization is done
|
||||
Pelican Town: Only buildings in the main town area are randomized among each other
|
||||
Non Progression: Only buildings that are always available are randomized with each other
|
||||
Buildings: All Entrances that Allow you to enter a building using a door are randomized with each other
|
||||
Chaos: Same as above, but the entrances get reshuffled every single day!
|
||||
Pelican Town: Only doors in the main town area are randomized with each other
|
||||
Non Progression: Only entrances that are always available are randomized with each other
|
||||
Buildings: All Entrances that Allow you to enter a building are randomized with each other
|
||||
Chaos: Same as "Buildings", but the entrances get reshuffled every single day!
|
||||
"""
|
||||
# Everything: All buildings and areas are randomized with each other
|
||||
# Chaos, same as everything: but the buildings are shuffled again every in-game day. You can't learn it!
|
||||
|
@ -144,11 +144,10 @@ class EntranceRandomization(Choice):
|
|||
|
||||
class SeasonRandomization(Choice):
|
||||
"""Should seasons be randomized?
|
||||
All settings allow you to choose which season you want to play next (from those unlocked) at the end of a season.
|
||||
Disabled: You will start in Spring with all seasons unlocked.
|
||||
Randomized: The seasons will be unlocked randomly as Archipelago items.
|
||||
Randomized Not Winter: The seasons are randomized, but you're guaranteed not to start with winter.
|
||||
Progressive: You will start in Spring and unlock the seasons in their original order.
|
||||
Disabled: Start in Spring with all seasons unlocked.
|
||||
Randomized: Start in a random season and the other 3 must be unlocked randomly.
|
||||
Randomized Not Winter: Same as randomized, but the start season is guaranteed not to be winter.
|
||||
Progressive: Start in Spring and unlock the seasons in their original order.
|
||||
"""
|
||||
internal_name = "season_randomization"
|
||||
display_name = "Season Randomization"
|
||||
|
@ -163,20 +162,21 @@ class Cropsanity(Choice):
|
|||
"""Formerly named "Seed Shuffle"
|
||||
Pierre now sells a random amount of seasonal seeds and Joja sells them without season requirements, but only in huge packs.
|
||||
Disabled: All the seeds are unlocked from the start, there are no location checks for growing and harvesting crops
|
||||
Shuffled: Seeds are unlocked as archipelago item, for each seed there is a location check for growing and harvesting that crop
|
||||
Shuffled: Seeds are unlocked as archipelago items, for each seed there is a location check for growing and harvesting that crop
|
||||
"""
|
||||
internal_name = "cropsanity"
|
||||
display_name = "Cropsanity"
|
||||
default = 1
|
||||
option_disabled = 0
|
||||
option_shuffled = 1
|
||||
option_enabled = 1
|
||||
alias_shuffled = option_enabled
|
||||
|
||||
|
||||
class BackpackProgression(Choice):
|
||||
"""How is the backpack progression handled?
|
||||
Vanilla: You can buy them at Pierre's General Store.
|
||||
"""Shuffle the backpack?
|
||||
Vanilla: You can buy backpacks at Pierre's General Store.
|
||||
Progressive: You will randomly find Progressive Backpack upgrades.
|
||||
Early Progressive: You can expect your first Backpack in sphere 1.
|
||||
Early Progressive: Same as progressive, but one backpack will be placed early in the multiworld.
|
||||
"""
|
||||
internal_name = "backpack_progression"
|
||||
display_name = "Backpack Progression"
|
||||
|
@ -187,8 +187,8 @@ class BackpackProgression(Choice):
|
|||
|
||||
|
||||
class ToolProgression(Choice):
|
||||
"""How is the tool progression handled?
|
||||
Vanilla: Clint will upgrade your tools with ore.
|
||||
"""Shuffle the tool upgrades?
|
||||
Vanilla: Clint will upgrade your tools with metal bars.
|
||||
Progressive: You will randomly find Progressive Tool upgrades."""
|
||||
internal_name = "tool_progression"
|
||||
display_name = "Tool Progression"
|
||||
|
@ -198,12 +198,11 @@ class ToolProgression(Choice):
|
|||
|
||||
|
||||
class ElevatorProgression(Choice):
|
||||
"""How is Elevator progression handled?
|
||||
Vanilla: You will unlock new elevator floors for yourself.
|
||||
Progressive: You will randomly find Progressive Mine Elevators to go deeper. Locations are sent for reaching
|
||||
every elevator level.
|
||||
Progressive from previous floor: Same as progressive, but you must reach elevator floors on your own,
|
||||
you cannot use the elevator to check elevator locations"""
|
||||
"""Shuffle the elevator?
|
||||
Vanilla: Reaching a mineshaft floor unlocks the elevator for it
|
||||
Progressive: You will randomly find Progressive Mine Elevators to go deeper.
|
||||
Progressive from previous floor: Same as progressive, but you cannot use the elevator to check elevator locations.
|
||||
You must reach elevator floors on your own."""
|
||||
internal_name = "elevator_progression"
|
||||
display_name = "Elevator Progression"
|
||||
default = 2
|
||||
|
@ -213,10 +212,9 @@ class ElevatorProgression(Choice):
|
|||
|
||||
|
||||
class SkillProgression(Choice):
|
||||
"""How is the skill progression handled?
|
||||
Vanilla: You will level up and get the normal reward at each level.
|
||||
Progressive: The xp will be earned internally, locations will be sent when you earn a level. Your real
|
||||
levels will be scattered around the multiworld."""
|
||||
"""Shuffle skill levels?
|
||||
Vanilla: Leveling up skills is normal
|
||||
Progressive: Skill levels are unlocked randomly, and earning xp sends checks"""
|
||||
internal_name = "skill_progression"
|
||||
display_name = "Skill Progression"
|
||||
default = 1
|
||||
|
@ -225,11 +223,11 @@ class SkillProgression(Choice):
|
|||
|
||||
|
||||
class BuildingProgression(Choice):
|
||||
"""How is the building progression handled?
|
||||
Vanilla: You will buy each building normally.
|
||||
"""Shuffle Carpenter Buildings?
|
||||
Vanilla: You can buy each building normally.
|
||||
Progressive: You will receive the buildings and will be able to build the first one of each type for free,
|
||||
once it is received. If you want more of the same building, it will cost the vanilla price.
|
||||
Progressive early shipping bin: You can expect your shipping bin in sphere 1.
|
||||
Progressive early shipping bin: Same as Progressive, but the shipping bin will be placed early in the multiworld.
|
||||
"""
|
||||
internal_name = "building_progression"
|
||||
display_name = "Building Progression"
|
||||
|
@ -240,10 +238,10 @@ class BuildingProgression(Choice):
|
|||
|
||||
|
||||
class FestivalLocations(Choice):
|
||||
"""Locations for attending and participating in festivals
|
||||
With Disabled, you do not need to attend festivals
|
||||
With Easy, there are checks for participating in festivals
|
||||
With Hard, the festival checks are only granted when the player performs well in the festival
|
||||
"""Shuffle Festival Activities?
|
||||
Disabled: You do not need to attend festivals
|
||||
Easy: Every festival has checks, but they are easy and usually only require attendance
|
||||
Hard: Festivals have more checks, and many require performing well, not just attending
|
||||
"""
|
||||
internal_name = "festival_locations"
|
||||
display_name = "Festival Locations"
|
||||
|
@ -254,11 +252,10 @@ class FestivalLocations(Choice):
|
|||
|
||||
|
||||
class ArcadeMachineLocations(Choice):
|
||||
"""How are the Arcade Machines handled?
|
||||
Disabled: The arcade machines are not included in the Archipelago shuffling.
|
||||
"""Shuffle the arcade machines?
|
||||
Disabled: The arcade machines are not included.
|
||||
Victories: Each Arcade Machine will contain one check on victory
|
||||
Victories Easy: The arcade machines are both made considerably easier to be more accessible for the average
|
||||
player.
|
||||
Victories Easy: Same as Victories, but both games are made considerably easier.
|
||||
Full Shuffling: The arcade machines will contain multiple checks each, and different buffs that make the game
|
||||
easier are in the item pool. Junimo Kart has one check at the end of each level.
|
||||
Journey of the Prairie King has one check after each boss, plus one check for each vendor equipment.
|
||||
|
@ -273,10 +270,10 @@ class ArcadeMachineLocations(Choice):
|
|||
|
||||
|
||||
class SpecialOrderLocations(Choice):
|
||||
"""How are the Special Orders handled?
|
||||
"""Shuffle Special Orders?
|
||||
Disabled: The special orders are not included in the Archipelago shuffling.
|
||||
Board Only: The Special Orders on the board in town are location checks
|
||||
Board and Qi: The Special Orders from Qi's walnut room are checks, as well as the board in town
|
||||
Board and Qi: The Special Orders from Mr Qi's walnut room are checks, in addition to the board in town
|
||||
"""
|
||||
internal_name = "special_order_locations"
|
||||
display_name = "Special Order Locations"
|
||||
|
@ -287,7 +284,7 @@ class SpecialOrderLocations(Choice):
|
|||
|
||||
|
||||
class HelpWantedLocations(SpecialRange):
|
||||
"""How many "Help Wanted" quests need to be completed as Archipelago Locations
|
||||
"""Include location checks for Help Wanted quests
|
||||
Out of every 7 quests, 4 will be item deliveries, and then 1 of each for: Fishing, Gathering and Slaying Monsters.
|
||||
Choosing a multiple of 7 is recommended."""
|
||||
internal_name = "help_wanted_locations"
|
||||
|
@ -307,7 +304,7 @@ class HelpWantedLocations(SpecialRange):
|
|||
|
||||
|
||||
class Fishsanity(Choice):
|
||||
"""Locations for catching fish?
|
||||
"""Locations for catching a fish the first time?
|
||||
None: There are no locations for catching fish
|
||||
Legendaries: Each of the 5 legendary fish are checks
|
||||
Special: A curated selection of strong fish are checks
|
||||
|
@ -336,7 +333,7 @@ class Museumsanity(Choice):
|
|||
None: There are no locations for donating artifacts and minerals to the museum
|
||||
Milestones: The donation milestones from the vanilla game are checks
|
||||
Randomized: A random selection of minerals and artifacts are checks
|
||||
All: Every single donation will be a check
|
||||
All: Every single donation is a check
|
||||
"""
|
||||
internal_name = "museumsanity"
|
||||
display_name = "Museumsanity"
|
||||
|
@ -348,12 +345,12 @@ class Museumsanity(Choice):
|
|||
|
||||
|
||||
class Friendsanity(Choice):
|
||||
"""Locations for friendships?
|
||||
None: There are no checks for befriending villagers
|
||||
Bachelors: Each heart of a bachelor is a check
|
||||
Starting NPCs: Each heart for npcs that are immediately available is a check
|
||||
All: Every heart with every NPC is a check, including Leo, Kent, Sandy, etc
|
||||
All With Marriage: Marriage candidates must also be dated, married, and befriended up to 14 hearts.
|
||||
"""Shuffle Friendships?
|
||||
None: Friendship hearts are earned normally
|
||||
Bachelors: Hearts with bachelors are shuffled
|
||||
Starting NPCs: Hearts for NPCs available immediately are checks
|
||||
All: Hearts for all npcs are checks, including Leo, Kent, Sandy, etc
|
||||
All With Marriage: Hearts for all npcs are checks, including romance hearts up to 14 when applicable
|
||||
"""
|
||||
internal_name = "friendsanity"
|
||||
display_name = "Friendsanity"
|
||||
|
@ -368,7 +365,7 @@ class Friendsanity(Choice):
|
|||
|
||||
# Conditional Setting - Friendsanity not None
|
||||
class FriendsanityHeartSize(Range):
|
||||
"""If using friendsanity, how many hearts are received per item, and how many hearts must be earned to send a check
|
||||
"""If using friendsanity, how many hearts are received per heart item, and how many hearts must be earned to send a check
|
||||
A higher value will lead to fewer heart items in the item pool, reducing bloat"""
|
||||
internal_name = "friendsanity_heart_size"
|
||||
display_name = "Friendsanity Heart Size"
|
||||
|
@ -411,6 +408,7 @@ class ExcludeGingerIsland(Toggle):
|
|||
|
||||
class TrapItems(Choice):
|
||||
"""When rolling filler items, including resource packs, the game can also roll trap items.
|
||||
Trap items are negative items that cause problems or annoyances for the player
|
||||
This setting is for choosing if traps will be in the item pool, and if so, how punishing they will be.
|
||||
"""
|
||||
internal_name = "trap_items"
|
||||
|
@ -441,14 +439,16 @@ class MultipleDaySleepCost(SpecialRange):
|
|||
|
||||
special_range_names = {
|
||||
"free": 0,
|
||||
"cheap": 25,
|
||||
"medium": 50,
|
||||
"expensive": 100,
|
||||
"cheap": 10,
|
||||
"medium": 25,
|
||||
"expensive": 50,
|
||||
"very expensive": 100,
|
||||
}
|
||||
|
||||
|
||||
class ExperienceMultiplier(SpecialRange):
|
||||
"""How fast you want to earn skill experience. A lower setting mean less experience.
|
||||
"""How fast you want to earn skill experience.
|
||||
A lower setting mean less experience.
|
||||
A higher setting means more experience."""
|
||||
internal_name = "experience_multiplier"
|
||||
display_name = "Experience Multiplier"
|
||||
|
@ -513,14 +513,15 @@ class QuickStart(Toggle):
|
|||
|
||||
|
||||
class Gifting(Toggle):
|
||||
"""Do you want to enable gifting items to and from other Stardew Valley worlds?"""
|
||||
"""Do you want to enable gifting items to and from other Archipelago slots?
|
||||
Items can only be sent to games that also support gifting"""
|
||||
internal_name = "gifting"
|
||||
display_name = "Gifting"
|
||||
default = 1
|
||||
|
||||
|
||||
class Mods(OptionSet):
|
||||
"""List of mods that will be considered for shuffling."""
|
||||
"""List of mods that will be included in the shuffling."""
|
||||
internal_name = "mods"
|
||||
display_name = "Mods"
|
||||
valid_keys = {
|
||||
|
|
|
@ -0,0 +1,323 @@
|
|||
from typing import Any, Dict
|
||||
|
||||
from Options import Accessibility, ProgressionBalancing, DeathLink
|
||||
from .options import Goal, StartingMoney, ProfitMargin, BundleRandomization, BundlePrice, EntranceRandomization, SeasonRandomization, Cropsanity, \
|
||||
BackpackProgression, ToolProgression, ElevatorProgression, SkillProgression, BuildingProgression, FestivalLocations, ArcadeMachineLocations, \
|
||||
SpecialOrderLocations, HelpWantedLocations, Fishsanity, Museumsanity, Friendsanity, FriendsanityHeartSize, NumberOfMovementBuffs, NumberOfLuckBuffs, \
|
||||
ExcludeGingerIsland, TrapItems, MultipleDaySleepEnabled, MultipleDaySleepCost, ExperienceMultiplier, FriendshipMultiplier, DebrisMultiplier, QuickStart, \
|
||||
Gifting
|
||||
|
||||
all_random_settings = {
|
||||
"progression_balancing": "random",
|
||||
"accessibility": "random",
|
||||
Goal.internal_name: "random",
|
||||
StartingMoney.internal_name: "random",
|
||||
ProfitMargin.internal_name: "random",
|
||||
BundleRandomization.internal_name: "random",
|
||||
BundlePrice.internal_name: "random",
|
||||
EntranceRandomization.internal_name: "random",
|
||||
SeasonRandomization.internal_name: "random",
|
||||
Cropsanity.internal_name: "random",
|
||||
BackpackProgression.internal_name: "random",
|
||||
ToolProgression.internal_name: "random",
|
||||
ElevatorProgression.internal_name: "random",
|
||||
SkillProgression.internal_name: "random",
|
||||
BuildingProgression.internal_name: "random",
|
||||
FestivalLocations.internal_name: "random",
|
||||
ArcadeMachineLocations.internal_name: "random",
|
||||
SpecialOrderLocations.internal_name: "random",
|
||||
HelpWantedLocations.internal_name: "random",
|
||||
Fishsanity.internal_name: "random",
|
||||
Museumsanity.internal_name: "random",
|
||||
Friendsanity.internal_name: "random",
|
||||
FriendsanityHeartSize.internal_name: "random",
|
||||
NumberOfMovementBuffs.internal_name: "random",
|
||||
NumberOfLuckBuffs.internal_name: "random",
|
||||
ExcludeGingerIsland.internal_name: "random",
|
||||
TrapItems.internal_name: "random",
|
||||
MultipleDaySleepEnabled.internal_name: "random",
|
||||
MultipleDaySleepCost.internal_name: "random",
|
||||
ExperienceMultiplier.internal_name: "random",
|
||||
FriendshipMultiplier.internal_name: "random",
|
||||
DebrisMultiplier.internal_name: "random",
|
||||
QuickStart.internal_name: "random",
|
||||
Gifting.internal_name: "random",
|
||||
"death_link": "random",
|
||||
}
|
||||
|
||||
easy_settings = {
|
||||
"progression_balancing": ProgressionBalancing.default,
|
||||
"accessibility": Accessibility.option_items,
|
||||
Goal.internal_name: Goal.option_community_center,
|
||||
StartingMoney.internal_name: "very rich",
|
||||
ProfitMargin.internal_name: "double",
|
||||
BundleRandomization.internal_name: BundleRandomization.option_thematic,
|
||||
BundlePrice.internal_name: BundlePrice.option_cheap,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.option_disabled,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized_not_winter,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_early_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_progressive,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_progressive_early_shipping_bin,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_easy,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_disabled,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_disabled,
|
||||
HelpWantedLocations.internal_name: "minimum",
|
||||
Fishsanity.internal_name: Fishsanity.option_only_easy_fish,
|
||||
Museumsanity.internal_name: Museumsanity.option_milestones,
|
||||
Friendsanity.internal_name: Friendsanity.option_none,
|
||||
FriendsanityHeartSize.internal_name: 4,
|
||||
NumberOfMovementBuffs.internal_name: 8,
|
||||
NumberOfLuckBuffs.internal_name: 8,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true,
|
||||
TrapItems.internal_name: TrapItems.option_easy,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.option_true,
|
||||
MultipleDaySleepCost.internal_name: "free",
|
||||
ExperienceMultiplier.internal_name: "triple",
|
||||
FriendshipMultiplier.internal_name: "quadruple",
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.option_quarter,
|
||||
QuickStart.internal_name: QuickStart.option_true,
|
||||
Gifting.internal_name: Gifting.option_true,
|
||||
"death_link": "false",
|
||||
}
|
||||
|
||||
medium_settings = {
|
||||
"progression_balancing": 25,
|
||||
"accessibility": Accessibility.option_locations,
|
||||
Goal.internal_name: Goal.option_community_center,
|
||||
StartingMoney.internal_name: "rich",
|
||||
ProfitMargin.internal_name: 150,
|
||||
BundleRandomization.internal_name: BundleRandomization.option_thematic,
|
||||
BundlePrice.internal_name: BundlePrice.option_normal,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.option_non_progression,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_early_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_progressive_from_previous_floor,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_progressive_early_shipping_bin,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_hard,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_victories_easy,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_only,
|
||||
HelpWantedLocations.internal_name: "normal",
|
||||
Fishsanity.internal_name: Fishsanity.option_exclude_legendaries,
|
||||
Museumsanity.internal_name: Museumsanity.option_milestones,
|
||||
Friendsanity.internal_name: Friendsanity.option_starting_npcs,
|
||||
FriendsanityHeartSize.internal_name: 4,
|
||||
NumberOfMovementBuffs.internal_name: 6,
|
||||
NumberOfLuckBuffs.internal_name: 6,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true,
|
||||
TrapItems.internal_name: TrapItems.option_medium,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.option_true,
|
||||
MultipleDaySleepCost.internal_name: "free",
|
||||
ExperienceMultiplier.internal_name: "double",
|
||||
FriendshipMultiplier.internal_name: "triple",
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.option_half,
|
||||
QuickStart.internal_name: QuickStart.option_true,
|
||||
Gifting.internal_name: Gifting.option_true,
|
||||
"death_link": "false",
|
||||
}
|
||||
|
||||
hard_settings = {
|
||||
"progression_balancing": 0,
|
||||
"accessibility": Accessibility.option_locations,
|
||||
Goal.internal_name: Goal.option_grandpa_evaluation,
|
||||
StartingMoney.internal_name: "extra",
|
||||
ProfitMargin.internal_name: "normal",
|
||||
BundleRandomization.internal_name: BundleRandomization.option_thematic,
|
||||
BundlePrice.internal_name: BundlePrice.option_expensive,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.option_buildings,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_progressive_from_previous_floor,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_progressive,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_hard,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_full_shuffling,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_qi,
|
||||
HelpWantedLocations.internal_name: "lots",
|
||||
Fishsanity.internal_name: Fishsanity.option_all,
|
||||
Museumsanity.internal_name: Museumsanity.option_all,
|
||||
Friendsanity.internal_name: Friendsanity.option_all,
|
||||
FriendsanityHeartSize.internal_name: 4,
|
||||
NumberOfMovementBuffs.internal_name: 4,
|
||||
NumberOfLuckBuffs.internal_name: 4,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false,
|
||||
TrapItems.internal_name: TrapItems.option_hard,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.option_true,
|
||||
MultipleDaySleepCost.internal_name: "cheap",
|
||||
ExperienceMultiplier.internal_name: "vanilla",
|
||||
FriendshipMultiplier.internal_name: "double",
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.option_vanilla,
|
||||
QuickStart.internal_name: QuickStart.option_true,
|
||||
Gifting.internal_name: Gifting.option_true,
|
||||
"death_link": "true",
|
||||
}
|
||||
|
||||
nightmare_settings = {
|
||||
"progression_balancing": 0,
|
||||
"accessibility": Accessibility.option_locations,
|
||||
Goal.internal_name: Goal.option_community_center,
|
||||
StartingMoney.internal_name: "vanilla",
|
||||
ProfitMargin.internal_name: "half",
|
||||
BundleRandomization.internal_name: BundleRandomization.option_shuffled,
|
||||
BundlePrice.internal_name: BundlePrice.option_expensive,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.option_buildings,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_progressive_from_previous_floor,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_progressive,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_hard,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_full_shuffling,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_qi,
|
||||
HelpWantedLocations.internal_name: "maximum",
|
||||
Fishsanity.internal_name: Fishsanity.option_special,
|
||||
Museumsanity.internal_name: Museumsanity.option_all,
|
||||
Friendsanity.internal_name: Friendsanity.option_all_with_marriage,
|
||||
FriendsanityHeartSize.internal_name: 4,
|
||||
NumberOfMovementBuffs.internal_name: 2,
|
||||
NumberOfLuckBuffs.internal_name: 2,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false,
|
||||
TrapItems.internal_name: TrapItems.option_hell,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.option_true,
|
||||
MultipleDaySleepCost.internal_name: "expensive",
|
||||
ExperienceMultiplier.internal_name: "half",
|
||||
FriendshipMultiplier.internal_name: "vanilla",
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.option_vanilla,
|
||||
QuickStart.internal_name: QuickStart.option_false,
|
||||
Gifting.internal_name: Gifting.option_true,
|
||||
"death_link": "true",
|
||||
}
|
||||
|
||||
short_settings = {
|
||||
"progression_balancing": ProgressionBalancing.default,
|
||||
"accessibility": Accessibility.option_items,
|
||||
Goal.internal_name: Goal.option_bottom_of_the_mines,
|
||||
StartingMoney.internal_name: "filthy rich",
|
||||
ProfitMargin.internal_name: "quadruple",
|
||||
BundleRandomization.internal_name: BundleRandomization.option_thematic,
|
||||
BundlePrice.internal_name: BundlePrice.option_very_cheap,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.option_disabled,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized_not_winter,
|
||||
Cropsanity.internal_name: Cropsanity.option_disabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_early_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_progressive_from_previous_floor,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_progressive_early_shipping_bin,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_disabled,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_disabled,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_disabled,
|
||||
HelpWantedLocations.internal_name: "none",
|
||||
Fishsanity.internal_name: Fishsanity.option_none,
|
||||
Museumsanity.internal_name: Museumsanity.option_none,
|
||||
Friendsanity.internal_name: Friendsanity.option_none,
|
||||
FriendsanityHeartSize.internal_name: 4,
|
||||
NumberOfMovementBuffs.internal_name: 10,
|
||||
NumberOfLuckBuffs.internal_name: 10,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true,
|
||||
TrapItems.internal_name: TrapItems.option_easy,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.option_true,
|
||||
MultipleDaySleepCost.internal_name: "free",
|
||||
ExperienceMultiplier.internal_name: "quadruple",
|
||||
FriendshipMultiplier.internal_name: 800,
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.option_none,
|
||||
QuickStart.internal_name: QuickStart.option_true,
|
||||
Gifting.internal_name: Gifting.option_true,
|
||||
"death_link": "false",
|
||||
}
|
||||
|
||||
lowsanity_settings = {
|
||||
"progression_balancing": ProgressionBalancing.default,
|
||||
"accessibility": Accessibility.option_minimal,
|
||||
Goal.internal_name: Goal.default,
|
||||
StartingMoney.internal_name: StartingMoney.default,
|
||||
ProfitMargin.internal_name: ProfitMargin.default,
|
||||
BundleRandomization.internal_name: BundleRandomization.default,
|
||||
BundlePrice.internal_name: BundlePrice.default,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.default,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_disabled,
|
||||
Cropsanity.internal_name: Cropsanity.option_disabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_vanilla,
|
||||
ToolProgression.internal_name: ToolProgression.option_vanilla,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_vanilla,
|
||||
SkillProgression.internal_name: SkillProgression.option_vanilla,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_vanilla,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_disabled,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_disabled,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_disabled,
|
||||
HelpWantedLocations.internal_name: "none",
|
||||
Fishsanity.internal_name: Fishsanity.option_none,
|
||||
Museumsanity.internal_name: Museumsanity.option_none,
|
||||
Friendsanity.internal_name: Friendsanity.option_none,
|
||||
FriendsanityHeartSize.internal_name: FriendsanityHeartSize.default,
|
||||
NumberOfMovementBuffs.internal_name: NumberOfMovementBuffs.default,
|
||||
NumberOfLuckBuffs.internal_name: NumberOfLuckBuffs.default,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true,
|
||||
TrapItems.internal_name: TrapItems.default,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.default,
|
||||
MultipleDaySleepCost.internal_name: MultipleDaySleepCost.default,
|
||||
ExperienceMultiplier.internal_name: ExperienceMultiplier.default,
|
||||
FriendshipMultiplier.internal_name: FriendshipMultiplier.default,
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.default,
|
||||
QuickStart.internal_name: QuickStart.default,
|
||||
Gifting.internal_name: Gifting.default,
|
||||
"death_link": DeathLink.default,
|
||||
}
|
||||
|
||||
allsanity_settings = {
|
||||
"progression_balancing": ProgressionBalancing.default,
|
||||
"accessibility": Accessibility.option_locations,
|
||||
Goal.internal_name: Goal.default,
|
||||
StartingMoney.internal_name: StartingMoney.default,
|
||||
ProfitMargin.internal_name: ProfitMargin.default,
|
||||
BundleRandomization.internal_name: BundleRandomization.default,
|
||||
BundlePrice.internal_name: BundlePrice.default,
|
||||
EntranceRandomization.internal_name: EntranceRandomization.option_buildings,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_early_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
ElevatorProgression.internal_name: ElevatorProgression.option_progressive,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
BuildingProgression.internal_name: BuildingProgression.option_progressive_early_shipping_bin,
|
||||
FestivalLocations.internal_name: FestivalLocations.option_hard,
|
||||
ArcadeMachineLocations.internal_name: ArcadeMachineLocations.option_full_shuffling,
|
||||
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_qi,
|
||||
HelpWantedLocations.internal_name: "maximum",
|
||||
Fishsanity.internal_name: Fishsanity.option_all,
|
||||
Museumsanity.internal_name: Museumsanity.option_all,
|
||||
Friendsanity.internal_name: Friendsanity.option_all,
|
||||
FriendsanityHeartSize.internal_name: 1,
|
||||
NumberOfMovementBuffs.internal_name: 12,
|
||||
NumberOfLuckBuffs.internal_name: 12,
|
||||
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false,
|
||||
TrapItems.internal_name: TrapItems.default,
|
||||
MultipleDaySleepEnabled.internal_name: MultipleDaySleepEnabled.default,
|
||||
MultipleDaySleepCost.internal_name: MultipleDaySleepCost.default,
|
||||
ExperienceMultiplier.internal_name: ExperienceMultiplier.default,
|
||||
FriendshipMultiplier.internal_name: FriendshipMultiplier.default,
|
||||
DebrisMultiplier.internal_name: DebrisMultiplier.default,
|
||||
QuickStart.internal_name: QuickStart.default,
|
||||
Gifting.internal_name: Gifting.default,
|
||||
"death_link": DeathLink.default,
|
||||
}
|
||||
|
||||
sv_options_presets: Dict[str, Dict[str, Any]] = {
|
||||
"All random": all_random_settings,
|
||||
"Easy": easy_settings,
|
||||
"Medium": medium_settings,
|
||||
"Hard": hard_settings,
|
||||
"Nightmare": nightmare_settings,
|
||||
"Short": short_settings,
|
||||
"Lowsanity": lowsanity_settings,
|
||||
"Allsanity": allsanity_settings,
|
||||
}
|
|
@ -329,7 +329,7 @@ class TestRecipeLogic(SVTestBase):
|
|||
options = {
|
||||
options.BuildingProgression.internal_name: options.BuildingProgression.option_progressive,
|
||||
options.SkillProgression.internal_name: options.SkillProgression.option_progressive,
|
||||
options.Cropsanity.internal_name: options.Cropsanity.option_shuffled,
|
||||
options.Cropsanity.internal_name: options.Cropsanity.option_enabled,
|
||||
}
|
||||
|
||||
# I wanted to make a test for different ways to obtain a pizza, but I'm stuck not knowing how to block the immediate purchase from Gus
|
||||
|
|
|
@ -47,7 +47,7 @@ class SVTestBase(WorldTestBase, SVTestCase):
|
|||
def minimal_locations_maximal_items():
|
||||
min_max_options = {
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized,
|
||||
Cropsanity.internal_name: Cropsanity.option_shuffled,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_vanilla,
|
||||
ToolProgression.internal_name: ToolProgression.option_vanilla,
|
||||
SkillProgression.internal_name: SkillProgression.option_vanilla,
|
||||
|
@ -72,7 +72,7 @@ def allsanity_options_without_mods():
|
|||
BundleRandomization.internal_name: BundleRandomization.option_shuffled,
|
||||
BundlePrice.internal_name: BundlePrice.option_expensive,
|
||||
SeasonRandomization.internal_name: SeasonRandomization.option_randomized,
|
||||
Cropsanity.internal_name: Cropsanity.option_shuffled,
|
||||
Cropsanity.internal_name: Cropsanity.option_enabled,
|
||||
BackpackProgression.internal_name: BackpackProgression.option_progressive,
|
||||
ToolProgression.internal_name: ToolProgression.option_progressive,
|
||||
SkillProgression.internal_name: SkillProgression.option_progressive,
|
||||
|
|
|
@ -40,7 +40,7 @@ def assert_can_reach_island_if_should(tester: SVTestBase, multiworld: MultiWorld
|
|||
|
||||
|
||||
def assert_cropsanity_same_number_items_and_locations(tester: SVTestBase, multiworld: MultiWorld):
|
||||
is_cropsanity = get_stardew_options(multiworld).cropsanity.value == options.Cropsanity.option_shuffled
|
||||
is_cropsanity = get_stardew_options(multiworld).cropsanity.value == options.Cropsanity.option_enabled
|
||||
if not is_cropsanity:
|
||||
return
|
||||
|
||||
|
|
Loading…
Reference in New Issue