171 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
from dataclasses import dataclass
 | 
						|
from Options import Choice, OptionGroup, PerGameCommonOptions, Range, StartInventoryPool, Toggle, DefaultOnToggle
 | 
						|
 | 
						|
class Goal(Choice):
 | 
						|
    """Choose the end goal.
 | 
						|
    Nap: Complete the climb to the top of Hawk Peak and take a nap
 | 
						|
    Photo: Get your picture taken at the top of Hawk Peak
 | 
						|
    Races: Complete all three races with Avery
 | 
						|
    Help Everyone: Travel around Hawk Peak and help every character with their troubles
 | 
						|
    Fishmonger: Catch one of every fish from around Hawk Peak"""
 | 
						|
    display_name = "Goal"
 | 
						|
    option_nap = 0
 | 
						|
    option_photo = 1
 | 
						|
    option_races = 2
 | 
						|
    option_help_everyone = 3
 | 
						|
    option_fishmonger = 4
 | 
						|
    default = 3
 | 
						|
 | 
						|
class CoinsInShops(Toggle):
 | 
						|
    """When enabled, the randomizer can place coins into locations that are purchased, such as shops."""
 | 
						|
    display_name = "Coins in Purchaseable Locations"
 | 
						|
    default = False
 | 
						|
 | 
						|
class GoldenFeathers(Range):
 | 
						|
    """
 | 
						|
    Number of Golden Feathers in the item pool.
 | 
						|
    (Note that for the Photo and Help Everyone goals, a minimum of 12 Golden Feathers is enforced)
 | 
						|
    """
 | 
						|
    display_name = "Golden Feathers"
 | 
						|
    range_start = 0
 | 
						|
    range_end = 20
 | 
						|
    default = 20
 | 
						|
 | 
						|
class SilverFeathers(Range):
 | 
						|
    """Number of Silver Feathers in the item pool."""
 | 
						|
    display_name = "Silver Feathers"
 | 
						|
    range_start = 0
 | 
						|
    range_end = 20
 | 
						|
    default = 2
 | 
						|
 | 
						|
class Buckets(Range):
 | 
						|
    """Number of Buckets in the item pool."""
 | 
						|
    display_name = "Buckets"
 | 
						|
    range_start = 0
 | 
						|
    range_end = 2
 | 
						|
    default = 2
 | 
						|
 | 
						|
class Sticks(Range):
 | 
						|
    """Number of Sticks in the item pool."""
 | 
						|
    display_name = "Sticks"
 | 
						|
    range_start = 1
 | 
						|
    range_end = 8
 | 
						|
    default = 8
 | 
						|
 | 
						|
class ToyShovels(Range):
 | 
						|
    """Number of Toy Shovels in the item pool."""
 | 
						|
    display_name = "Toy Shovels"
 | 
						|
    range_start = 1
 | 
						|
    range_end = 5
 | 
						|
    default = 5
 | 
						|
 | 
						|
class GoldenFeatherProgression(Choice):
 | 
						|
    """Determines which locations are considered in logic based on the required amount of golden feathers to reach them.
 | 
						|
    Easy: Locations will be considered inaccessible until the player has enough golden feathers to easily reach them. A minimum of 10 golden feathers is recommended for this setting.
 | 
						|
    Normal: Locations will be considered inaccessible until the player has the minimum possible number of golden feathers to reach them. A minimum of 7 golden feathers is recommended for this setting.
 | 
						|
    Hard: Removes the requirement of golden feathers for progression entirely and glitches may need to be used to progress"""
 | 
						|
    display_name = "Golden Feather Progression"
 | 
						|
    option_easy = 0
 | 
						|
    option_normal = 1
 | 
						|
    option_hard = 2
 | 
						|
    default = 1
 | 
						|
 | 
						|
class CostMultiplier(Range):
 | 
						|
    """The percentage that all item shop costs will be of the vanilla values."""
 | 
						|
    display_name = "Shop Cost Multiplier"
 | 
						|
    range_start = 25
 | 
						|
    range_end = 200
 | 
						|
    default = 100
 | 
						|
 | 
						|
class FillerCoinAmount(Choice):
 | 
						|
    """The number of coins that will be in each filler coin item."""
 | 
						|
    display_name = "Coins per Filler Item"
 | 
						|
    option_7_coins = 0
 | 
						|
    option_13_coins = 1
 | 
						|
    option_15_coins = 2
 | 
						|
    option_18_coins = 3
 | 
						|
    option_21_coins = 4
 | 
						|
    option_25_coins = 5
 | 
						|
    option_27_coins = 6
 | 
						|
    option_32_coins = 7
 | 
						|
    option_33_coins = 8
 | 
						|
    option_50_coins = 9
 | 
						|
    default = 1
 | 
						|
 | 
						|
class RandomWalkieTalkie(DefaultOnToggle):
 | 
						|
    """
 | 
						|
    When enabled, the Walkie Talkie item will be placed into the item pool. Otherwise, it will be placed in its vanilla location.
 | 
						|
    This item usually allows the player to locate Avery around the map or restart a race.
 | 
						|
    """
 | 
						|
    display_name = "Randomize Walkie Talkie"
 | 
						|
 | 
						|
class EasierRaces(Toggle):
 | 
						|
    """When enabled, the Running Shoes will be added as a logical requirement for beating any of the races."""
 | 
						|
    display_name = "Easier Races"
 | 
						|
 | 
						|
class ShopCheckLogic(Choice):
 | 
						|
    """Determines which items will be added as logical requirements to making certain purchases in shops."""
 | 
						|
    display_name = "Shop Check Logic"
 | 
						|
    option_nothing = 0
 | 
						|
    option_fishing_rod = 1
 | 
						|
    option_shovel = 2
 | 
						|
    option_fishing_rod_and_shovel = 3
 | 
						|
    option_golden_fishing_rod = 4
 | 
						|
    option_golden_fishing_rod_and_shovel = 5
 | 
						|
    default = 1
 | 
						|
 | 
						|
class MinShopCheckLogic(Choice):
 | 
						|
    """
 | 
						|
    Determines the minimum cost of a shop item that will have the shop check logic applied to it.
 | 
						|
    If the cost of a shop item is less than this value, no items will be required to access it.
 | 
						|
    This is based on the vanilla prices of the shop item. The set cost multiplier will not affect this value.
 | 
						|
    """
 | 
						|
    display_name = "Minimum Shop Check Logic Application"
 | 
						|
    option_40_coins = 0
 | 
						|
    option_100_coins = 1
 | 
						|
    option_400_coins = 2
 | 
						|
    default = 1
 | 
						|
 | 
						|
@dataclass
 | 
						|
class ShortHikeOptions(PerGameCommonOptions):
 | 
						|
    start_inventory_from_pool: StartInventoryPool
 | 
						|
    goal: Goal
 | 
						|
    coins_in_shops: CoinsInShops
 | 
						|
    golden_feathers: GoldenFeathers
 | 
						|
    silver_feathers: SilverFeathers
 | 
						|
    buckets: Buckets
 | 
						|
    sticks: Sticks
 | 
						|
    toy_shovels: ToyShovels
 | 
						|
    golden_feather_progression: GoldenFeatherProgression
 | 
						|
    cost_multiplier: CostMultiplier
 | 
						|
    filler_coin_amount: FillerCoinAmount
 | 
						|
    random_walkie_talkie: RandomWalkieTalkie
 | 
						|
    easier_races: EasierRaces
 | 
						|
    shop_check_logic: ShopCheckLogic
 | 
						|
    min_shop_check_logic: MinShopCheckLogic
 | 
						|
 | 
						|
shorthike_option_groups = [
 | 
						|
    OptionGroup("General Options", [
 | 
						|
        Goal,
 | 
						|
        FillerCoinAmount,
 | 
						|
        RandomWalkieTalkie
 | 
						|
    ]),
 | 
						|
    OptionGroup("Logic Options", [
 | 
						|
        GoldenFeatherProgression,
 | 
						|
        EasierRaces
 | 
						|
    ]),
 | 
						|
    OptionGroup("Item Pool Options", [
 | 
						|
        GoldenFeathers,
 | 
						|
        SilverFeathers,
 | 
						|
        Buckets,
 | 
						|
        Sticks,
 | 
						|
        ToyShovels
 | 
						|
    ]),
 | 
						|
    OptionGroup("Shop Options", [
 | 
						|
        CoinsInShops,
 | 
						|
        CostMultiplier,
 | 
						|
        ShopCheckLogic,
 | 
						|
        MinShopCheckLogic
 | 
						|
    ])
 | 
						|
]
 |