107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from dataclasses import dataclass
 | |
| import datetime
 | |
| 
 | |
| from Options import Choice, DeathLink, NamedRange, PerGameCommonOptions
 | |
| 
 | |
| 
 | |
| class DoubleJumpGlitch(Choice):
 | |
|     """Whether to include the double jump glitches in logic. Separated between the simple ones and the very difficult ones"""
 | |
|     internal_name = "double_jump_glitch"
 | |
|     display_name = "Double Jump glitch"
 | |
|     option_none = 0
 | |
|     option_simple = 1
 | |
|     option_all = 2
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class TimeIsMoney(Choice):
 | |
|     """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"""
 | |
|     internal_name = "time_is_money"
 | |
|     display_name = "Time Is Money"
 | |
|     option_required = 0
 | |
|     option_optional = 1
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class CoinSanity(Choice):
 | |
|     """Whether collecting coins are checks
 | |
|     If none, you will collect your own coins"""
 | |
|     internal_name = "coinsanity"
 | |
|     display_name = "CoinSanity"
 | |
|     option_none = 0
 | |
|     option_coin = 1
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class CoinSanityRange(NamedRange):
 | |
|     """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"""
 | |
|     internal_name = "coinbundlequantity"
 | |
|     display_name = "Coin Bundle Quantity"
 | |
|     range_start = 1
 | |
|     range_end = 100
 | |
|     default = 20
 | |
|     special_range_names = {
 | |
|         "low": 5,
 | |
|         "normal": 20,
 | |
|         "high": 50,
 | |
|     }
 | |
|     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
 | |
| 
 | |
| 
 | |
| class EndingChoice(Choice):
 | |
|     """Which ending is considered completion for the DLC Quest campaign, either any ending or the true ending"""
 | |
|     internal_name = "ending_choice"
 | |
|     display_name = "Ending Choice"
 | |
|     option_any = 0
 | |
|     option_true = 1
 | |
|     default = 1
 | |
| 
 | |
| 
 | |
| class Campaign(Choice):
 | |
|     """Which campaign you want to play"""
 | |
|     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
 | |
| 
 | |
| 
 | |
| @dataclass
 | |
| class DLCQuestOptions(PerGameCommonOptions):
 | |
|     double_jump_glitch: DoubleJumpGlitch
 | |
|     coinsanity: CoinSanity
 | |
|     coinbundlequantity: CoinSanityRange
 | |
|     permanent_coins: PermanentCoins
 | |
|     time_is_money: TimeIsMoney
 | |
|     ending_choice: EndingChoice
 | |
|     campaign: Campaign
 | |
|     item_shuffle: ItemShuffle
 | |
|     death_link: DeathLink
 | 
