| 
									
										
										
										
											2024-01-19 15:31:45 -05:00
										 |  |  | from Options import Choice, DeathLink, DefaultOnToggle, Range, StartInventoryPool, PerGameCommonOptions | 
					
						
							|  |  |  | from dataclasses import dataclass | 
					
						
							| 
									
										
										
										
											2023-04-19 20:21:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PathOption(Choice): | 
					
						
							|  |  |  |     """Choose where you would like Hidden Chest and Pedestal checks to be placed.
 | 
					
						
							|  |  |  |     Main Path includes the main 7 biomes you typically go through to get to the final boss. | 
					
						
							|  |  |  |     Side Path includes the Lukki Lair and Fungal Caverns. 9 biomes total. | 
					
						
							| 
									
										
										
										
											2024-04-18 12:54:03 -04:00
										 |  |  |     Main World includes the full world (excluding parallel worlds). 15 biomes total. | 
					
						
							| 
									
										
										
										
											2023-04-19 20:21:56 -07:00
										 |  |  |     Note: The Collapsed Mines have been combined into the Mines as the biome is tiny."""
 | 
					
						
							|  |  |  |     display_name = "Path Option" | 
					
						
							|  |  |  |     option_main_path = 1 | 
					
						
							|  |  |  |     option_side_path = 2 | 
					
						
							|  |  |  |     option_main_world = 3 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HiddenChests(Range): | 
					
						
							|  |  |  |     """Number of hidden chest checks added to the applicable biomes.""" | 
					
						
							|  |  |  |     display_name = "Hidden Chests per Biome" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 20 | 
					
						
							|  |  |  |     default = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PedestalChecks(Range): | 
					
						
							|  |  |  |     """Number of checks that will spawn on pedestals in the applicable biomes.""" | 
					
						
							|  |  |  |     display_name = "Pedestal Checks per Biome" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 20 | 
					
						
							|  |  |  |     default = 6 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Traps(DefaultOnToggle): | 
					
						
							|  |  |  |     """Whether negative effects on the Noita world are added to the item pool.""" | 
					
						
							|  |  |  |     display_name = "Traps" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class OrbsAsChecks(Choice): | 
					
						
							|  |  |  |     """Decides whether finding the orbs that naturally spawn in the world count as checks.
 | 
					
						
							|  |  |  |     The Main Path option includes only the Floating Island and Abyss Orb Room orbs. | 
					
						
							|  |  |  |     The Side Path option includes the Main Path, Magical Temple, Lukki Lair, and Lava Lake orbs. | 
					
						
							|  |  |  |     The Main World option includes all 11 orbs."""
 | 
					
						
							|  |  |  |     display_name = "Orbs as Location Checks" | 
					
						
							|  |  |  |     option_no_orbs = 0 | 
					
						
							|  |  |  |     option_main_path = 1 | 
					
						
							|  |  |  |     option_side_path = 2 | 
					
						
							|  |  |  |     option_main_world = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BossesAsChecks(Choice): | 
					
						
							|  |  |  |     """Makes bosses count as location checks. The boss only needs to die, you do not need the kill credit.
 | 
					
						
							|  |  |  |     The Main Path option includes Gate Guardian, Suomuhauki, and Kolmisilmä. | 
					
						
							|  |  |  |     The Side Path option includes the Main Path bosses, Sauvojen Tuntija, and Ylialkemisti. | 
					
						
							| 
									
										
										
										
											2024-04-18 12:34:57 -04:00
										 |  |  |     The All Bosses option includes all 15 bosses."""
 | 
					
						
							| 
									
										
										
										
											2023-04-19 20:21:56 -07:00
										 |  |  |     display_name = "Bosses as Location Checks" | 
					
						
							|  |  |  |     option_no_bosses = 0 | 
					
						
							|  |  |  |     option_main_path = 1 | 
					
						
							|  |  |  |     option_side_path = 2 | 
					
						
							|  |  |  |     option_all_bosses = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Note: the Sampo is an item that is picked up to trigger the boss fight at the normal ending location. | 
					
						
							|  |  |  | # The sampo is required for every ending (having orbs and bringing the sampo to a different spot changes the ending). | 
					
						
							|  |  |  | class VictoryCondition(Choice): | 
					
						
							|  |  |  |     """Greed is to get to the bottom, beat the boss, and win the game.
 | 
					
						
							| 
									
										
										
										
											2023-07-18 22:51:01 -04:00
										 |  |  |     Pure is to get 11 orbs, grab the sampo, and bring it to the mountain altar. | 
					
						
							|  |  |  |     Peaceful is to get all 33 orbs, grab the sampo, and bring it to the mountain altar. | 
					
						
							|  |  |  |     Orbs will be added to the randomizer pool based on which victory condition you chose. | 
					
						
							| 
									
										
										
										
											2023-04-19 20:21:56 -07:00
										 |  |  |     The base game orbs will not count towards these victory conditions."""
 | 
					
						
							|  |  |  |     display_name = "Victory Condition" | 
					
						
							|  |  |  |     option_greed_ending = 0 | 
					
						
							|  |  |  |     option_pure_ending = 1 | 
					
						
							|  |  |  |     option_peaceful_ending = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-18 22:51:01 -04:00
										 |  |  | class ExtraOrbs(Range): | 
					
						
							| 
									
										
										
										
											2024-03-20 08:46:31 -04:00
										 |  |  |     """Add extra orbs to your item pool, to prevent you from needing to wait as long for the last orb you need for your victory condition.
 | 
					
						
							| 
									
										
										
										
											2023-07-18 22:51:01 -04:00
										 |  |  |     Extra orbs received past your victory condition's amount will be received as hearts instead. | 
					
						
							|  |  |  |     Can be turned on for the Greed Ending goal, but will only really make it harder."""
 | 
					
						
							|  |  |  |     display_name = "Extra Orbs" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 10 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ShopPrice(Choice): | 
					
						
							|  |  |  |     """Reduce the costs of Archipelago items in shops.
 | 
					
						
							|  |  |  |     By default, the price of Archipelago items matches the price of wands at that shop."""
 | 
					
						
							|  |  |  |     display_name = "Shop Price Reduction" | 
					
						
							|  |  |  |     option_full_price = 100 | 
					
						
							|  |  |  |     option_25_percent_off = 75 | 
					
						
							|  |  |  |     option_50_percent_off = 50 | 
					
						
							|  |  |  |     option_75_percent_off = 25 | 
					
						
							|  |  |  |     default = 100 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-19 15:31:45 -05:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class NoitaOptions(PerGameCommonOptions): | 
					
						
							|  |  |  |     start_inventory_from_pool: StartInventoryPool | 
					
						
							|  |  |  |     death_link: DeathLink | 
					
						
							|  |  |  |     bad_effects: Traps | 
					
						
							|  |  |  |     victory_condition: VictoryCondition | 
					
						
							|  |  |  |     path_option: PathOption | 
					
						
							|  |  |  |     hidden_chests: HiddenChests | 
					
						
							|  |  |  |     pedestal_checks: PedestalChecks | 
					
						
							|  |  |  |     orbs_as_checks: OrbsAsChecks | 
					
						
							|  |  |  |     bosses_as_checks: BossesAsChecks | 
					
						
							|  |  |  |     extra_orbs: ExtraOrbs | 
					
						
							|  |  |  |     shop_price: ShopPrice |