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
 | 
