95 lines
4.2 KiB
Python
95 lines
4.2 KiB
Python
from dataclasses import dataclass
|
|
from Options import Range, Toggle, DefaultOnToggle, Choice, DeathLink, PerGameCommonOptions
|
|
|
|
class MinimumResourcePackAmount(Range):
|
|
"""The minimum amount of resources available in a resource pack"""
|
|
display_name = "Minimum resource pack amount"
|
|
range_start = 1
|
|
range_end = 15
|
|
default = 1
|
|
|
|
class MaximumResourcePackAmount(Range):
|
|
"""The maximum amount of resources available in a resource pack"""
|
|
display_name = "Maximum resource pack amount"
|
|
range_start = 1
|
|
range_end = 15
|
|
default = 5
|
|
|
|
class DuplicateItems(Choice):
|
|
"""Adds duplicates of items to the item pool (if configured in Filler items). These will be selected alongside
|
|
Resource Packs (if configured). Note that there are not many progression items, and selecting Progression may
|
|
produce many of the same duplicate item."""
|
|
display_name = "Duplicate items"
|
|
option_progression = 0
|
|
option_non_progression = 1
|
|
option_any = 2
|
|
default = 2
|
|
|
|
class FillerItemTypes(Choice):
|
|
"""Determines whether to use Resource Packs, Duplicate Items (as configured), or both."""
|
|
display_name = "Filler items"
|
|
option_resource_packs = 0
|
|
option_duplicates = 1
|
|
option_both = 2
|
|
|
|
class IslandFrequencyLocations(Choice):
|
|
"""Sets where frequencies for story islands are located.
|
|
Vanilla will keep frequencies in their vanilla, non-randomized locations.
|
|
Random On Island will randomize each frequency within its vanilla island, but will preserve island order.
|
|
Random Island Order will change the order you visit islands, but will preserve the vanilla location of each frequency unlock.
|
|
Random On Island Random Order will randomize the location containing the frequency on each island and randomize the order.
|
|
Progressive will randomize the frequencies to anywhere, but will always unlock the frequencies in vanilla order as the frequency items are received.
|
|
Anywhere will randomize the frequencies to anywhere, and frequencies will be received in any order."""
|
|
display_name = "Frequency locations"
|
|
option_vanilla = 0
|
|
option_random_on_island = 1
|
|
option_random_island_order = 2
|
|
option_random_on_island_random_order = 3
|
|
option_progressive = 4
|
|
option_anywhere = 5
|
|
default = 2
|
|
def is_filling_frequencies_in_world(self):
|
|
return self.value <= self.option_random_on_island_random_order
|
|
|
|
class IslandGenerationDistance(Choice):
|
|
"""Sets how far away islands spawn from you when you input their coordinates into the Receiver."""
|
|
display_name = "Island distance"
|
|
option_quarter = 2
|
|
option_half = 4
|
|
option_vanilla = 8
|
|
option_double = 16
|
|
option_quadrouple = 32
|
|
default = 8
|
|
|
|
class ExpensiveResearch(Toggle):
|
|
"""If No is selected, researching items and unlocking items in the Crafting Table works the same as vanilla Raft.
|
|
If Yes is selected, each unlock in the Crafting Table will require its own set of researched items in order to unlock it."""
|
|
display_name = "Expensive research"
|
|
|
|
class ProgressiveItems(DefaultOnToggle):
|
|
"""Makes some items, like the Bow and Arrow, progressive rather than raw unlocks."""
|
|
display_name = "Progressive items"
|
|
|
|
class BigIslandEarlyCrafting(Toggle):
|
|
"""Allows recipes that require items from big islands (eg leather) to lock earlygame items like the Receiver, Bolt,
|
|
or Smelter. Big islands are available from the start of the game, however it can take a long time to find them."""
|
|
display_name = "Early recipes behind big islands"
|
|
|
|
class PaddleboardMode(Toggle):
|
|
"""Sets later story islands to be in logic without an Engine or Steering Wheel. May require lots of paddling."""
|
|
display_name = "Paddleboard Mode"
|
|
|
|
@dataclass
|
|
class RaftOptions(PerGameCommonOptions):
|
|
minimum_resource_pack_amount: MinimumResourcePackAmount
|
|
maximum_resource_pack_amount: MaximumResourcePackAmount
|
|
duplicate_items: DuplicateItems
|
|
filler_item_types: FillerItemTypes
|
|
island_frequency_locations: IslandFrequencyLocations
|
|
island_generation_distance: IslandGenerationDistance
|
|
expensive_research: ExpensiveResearch
|
|
progressive_items: ProgressiveItems
|
|
big_island_early_crafting: BigIslandEarlyCrafting
|
|
paddleboard_mode: PaddleboardMode
|
|
death_link: DeathLink
|