| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  | from dataclasses import dataclass | 
					
						
							| 
									
										
										
										
											2024-03-10 17:12:55 -04:00
										 |  |  | import datetime | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-25 00:10:52 +01:00
										 |  |  | from Options import Choice, DeathLink, NamedRange, PerGameCommonOptions | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-24 20:13:33 -04:00
										 |  |  | class DoubleJumpGlitch(Choice): | 
					
						
							|  |  |  |     """Whether to include the double jump glitches in logic. Separated between the simple ones and the very difficult ones""" | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  |     internal_name = "double_jump_glitch" | 
					
						
							|  |  |  |     display_name = "Double Jump glitch" | 
					
						
							|  |  |  |     option_none = 0 | 
					
						
							|  |  |  |     option_simple = 1 | 
					
						
							|  |  |  |     option_all = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TimeIsMoney(Choice): | 
					
						
							| 
									
										
										
										
											2023-06-24 20:13:33 -04:00
										 |  |  |     """Whether the Time is Money pack is considered required to complete the grindstone.
 | 
					
						
							|  |  |  |     If optional, you may be expected to grind 10 000 times by hand"""
 | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  |     internal_name = "time_is_money" | 
					
						
							|  |  |  |     display_name = "Time Is Money" | 
					
						
							|  |  |  |     option_required = 0 | 
					
						
							|  |  |  |     option_optional = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CoinSanity(Choice): | 
					
						
							| 
									
										
										
										
											2023-06-24 20:13:33 -04:00
										 |  |  |     """Whether collecting coins are checks
 | 
					
						
							|  |  |  |     If none, you will collect your own coins"""
 | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  |     internal_name = "coinsanity" | 
					
						
							|  |  |  |     display_name = "CoinSanity" | 
					
						
							|  |  |  |     option_none = 0 | 
					
						
							|  |  |  |     option_coin = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-25 00:10:52 +01:00
										 |  |  | class CoinSanityRange(NamedRange): | 
					
						
							| 
									
										
										
										
											2023-06-24 20:13:33 -04:00
										 |  |  |     """This is the amount of coins in a coin bundle
 | 
					
						
							|  |  |  |     You need to collect that number of coins to get a location check, and when receiving coin items, you will get bundles of this size | 
					
						
							|  |  |  |     It is highly recommended to not set this value below 10, as it generates a very large number of boring locations and items. | 
					
						
							|  |  |  |     In the worst case, it is 1500+ checks for a single coin"""
 | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  |     internal_name = "coinbundlequantity" | 
					
						
							|  |  |  |     display_name = "Coin Bundle Quantity" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 20 | 
					
						
							| 
									
										
										
										
											2023-04-15 23:04:47 -04:00
										 |  |  |     special_range_names = { | 
					
						
							|  |  |  |         "low": 5, | 
					
						
							|  |  |  |         "normal": 20, | 
					
						
							|  |  |  |         "high": 50, | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-03-10 17:12:55 -04:00
										 |  |  |     if datetime.datetime.today().month == 4: | 
					
						
							|  |  |  |         if datetime.datetime.today().day == 1: | 
					
						
							|  |  |  |             special_range_names["surprise"] = -1 | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             special_range_names["coin piece"] = -1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PermanentCoins(Choice): | 
					
						
							|  |  |  |     """If purchasing a pack decreases your current coins amounts.""" | 
					
						
							|  |  |  |     internal_name = "permanent_coins" | 
					
						
							|  |  |  |     display_name = "Permanent Coins" | 
					
						
							|  |  |  |     option_false = 0 | 
					
						
							|  |  |  |     option_true = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EndingChoice(Choice): | 
					
						
							| 
									
										
										
										
											2023-06-24 20:13:33 -04:00
										 |  |  |     """Which ending is considered completion for the DLC Quest campaign, either any ending or the true ending""" | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  |     internal_name = "ending_choice" | 
					
						
							|  |  |  |     display_name = "Ending Choice" | 
					
						
							|  |  |  |     option_any = 0 | 
					
						
							|  |  |  |     option_true = 1 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Campaign(Choice): | 
					
						
							| 
									
										
										
										
											2023-04-15 23:04:47 -04:00
										 |  |  |     """Which campaign you want to play""" | 
					
						
							| 
									
										
										
										
											2023-04-09 15:06:59 -04:00
										 |  |  |     internal_name = "campaign" | 
					
						
							|  |  |  |     display_name = "Campaign" | 
					
						
							|  |  |  |     option_basic = 0 | 
					
						
							|  |  |  |     option_live_freemium_or_die = 1 | 
					
						
							|  |  |  |     option_both = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ItemShuffle(Choice): | 
					
						
							|  |  |  |     """Should Inventory Items be separate from their DLCs and shuffled in the item pool""" | 
					
						
							|  |  |  |     internal_name = "item_shuffle" | 
					
						
							|  |  |  |     display_name = "Item Shuffle" | 
					
						
							|  |  |  |     option_disabled = 0 | 
					
						
							|  |  |  |     option_shuffled = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class DLCQuestOptions(PerGameCommonOptions): | 
					
						
							|  |  |  |     double_jump_glitch: DoubleJumpGlitch | 
					
						
							|  |  |  |     coinsanity: CoinSanity | 
					
						
							|  |  |  |     coinbundlequantity: CoinSanityRange | 
					
						
							| 
									
										
										
										
											2024-03-10 17:12:55 -04:00
										 |  |  |     permanent_coins: PermanentCoins | 
					
						
							| 
									
										
										
										
											2023-10-10 15:30:20 -05:00
										 |  |  |     time_is_money: TimeIsMoney | 
					
						
							|  |  |  |     ending_choice: EndingChoice | 
					
						
							|  |  |  |     campaign: Campaign | 
					
						
							|  |  |  |     item_shuffle: ItemShuffle | 
					
						
							|  |  |  |     death_link: DeathLink |