254 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			254 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from Options import Choice, Option, Range, Toggle, OptionSet
							 | 
						||
| 
								 | 
							
								import typing
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SoraEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Sora Level Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Sora Level EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FinalEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Final Form Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Final Form EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MasterEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Master Form Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Master Form EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LimitEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Limit Form Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Limit Form EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class WisdomEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Wisdom Form Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Wisdom Form EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ValorEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Valor Form Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Valor Form EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SummonEXP(Range):
							 | 
						||
| 
								 | 
							
								    """Summon Exp Multiplier"""
							 | 
						||
| 
								 | 
							
								    display_name = "Summon level EXP"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 10
							 | 
						||
| 
								 | 
							
								    default = 5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Schmovement(Choice):
							 | 
						||
| 
								 | 
							
								    """Level of Growth You Start With"""
							 | 
						||
| 
								 | 
							
								    display_name = "Schmovement"
							 | 
						||
| 
								 | 
							
								    option_level_0 = 0
							 | 
						||
| 
								 | 
							
								    option_level_1 = 1
							 | 
						||
| 
								 | 
							
								    option_level_2 = 2
							 | 
						||
| 
								 | 
							
								    option_level_3 = 3
							 | 
						||
| 
								 | 
							
								    option_level_4 = 4
							 | 
						||
| 
								 | 
							
								    default = 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomGrowth(Range):
							 | 
						||
| 
								 | 
							
								    """Amount of Random Growth Abilities You Start With"""
							 | 
						||
| 
								 | 
							
								    display_name = "Random Starting Growth"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 20
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KeybladeMin(Range):
							 | 
						||
| 
								 | 
							
								    """Minimum Stats for the Keyblade"""
							 | 
						||
| 
								 | 
							
								    display_name = "Keyblade Minimum Stats"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 20
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KeybladeMax(Range):
							 | 
						||
| 
								 | 
							
								    """Maximum Stats for the Keyblade"""
							 | 
						||
| 
								 | 
							
								    display_name = "Keyblade Max Stats"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 20
							 | 
						||
| 
								 | 
							
								    default = 7
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Visitlocking(Choice):
							 | 
						||
| 
								 | 
							
								    """Determines the level of visit locking
							 | 
						||
| 
								 | 
							
								    No Visit Locking:No visit locks(everything is sphere 1.Not Recommended)# BK is making a lot of money
							 | 
						||
| 
								 | 
							
								    Second Visit Locking:Start with 13 visit locking items for every first visit.
							 | 
						||
| 
								 | 
							
								    First and Second Visit Locking:One item for First Visit Two For Second Visit"""
							 | 
						||
| 
								 | 
							
								    display_name = "Visit locking"
							 | 
						||
| 
								 | 
							
								    option_no_visit_locking = 0  # starts with 27 visit locking
							 | 
						||
| 
								 | 
							
								    option_second_visit_locking = 1  # starts with 13 (no icecream/picture)
							 | 
						||
| 
								 | 
							
								    option_first_and_second_visit_locking = 2  # starts with nothing
							 | 
						||
| 
								 | 
							
								    default = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomVisitLockingItem(Range):
							 | 
						||
| 
								 | 
							
								    display_name = "Random Visit Locking Item"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 27
							 | 
						||
| 
								 | 
							
								    default = 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SuperBosses(Toggle):
							 | 
						||
| 
								 | 
							
								    """Terra, Sephiroth and Data Fights Toggle."""
							 | 
						||
| 
								 | 
							
								    display_name = "Super Bosses"
							 | 
						||
| 
								 | 
							
								    default = False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Cups(Choice):
							 | 
						||
| 
								 | 
							
								    """Olympus Cups Toggles
							 | 
						||
| 
								 | 
							
								        No Cups: No Cups.
							 | 
						||
| 
								 | 
							
								        Cups: Has every cup except Paradox.
							 | 
						||
| 
								 | 
							
								        Cups and Hades Paradox: Has Every Cup On."""
							 | 
						||
| 
								 | 
							
								    display_name = "Olympus Cups"
							 | 
						||
| 
								 | 
							
								    option_no_cups = 0
							 | 
						||
| 
								 | 
							
								    option_cups = 1
							 | 
						||
| 
								 | 
							
								    option_cups_and_hades_paradox = 2
							 | 
						||
| 
								 | 
							
								    default = 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LevelDepth(Choice):
							 | 
						||
| 
								 | 
							
								    """Determines How many locations you want on levels
							 | 
						||
| 
								 | 
							
								    Level 50:23 checks spread through 50 levels
							 | 
						||
| 
								 | 
							
								    Level 99:23 checks spread through 99 levels
							 | 
						||
| 
								 | 
							
								    Level 50 sanity:check per level for 50 levels
							 | 
						||
| 
								 | 
							
								    Level 99 sanity:check per level for 99 levels
							 | 
						||
| 
								 | 
							
								    Level 1: no checks on levels(checks are replaced with stats)"""
							 | 
						||
| 
								 | 
							
								    display_name = "Level Depth"
							 | 
						||
| 
								 | 
							
								    option_level_50 = 0
							 | 
						||
| 
								 | 
							
								    option_level_99 = 1
							 | 
						||
| 
								 | 
							
								    option_level_50_sanity = 2
							 | 
						||
| 
								 | 
							
								    option_level_99_sanity = 3
							 | 
						||
| 
								 | 
							
								    option_level_1 = 4
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class PromiseCharm(Toggle):
							 | 
						||
| 
								 | 
							
								    """Add Promise Charm to the Pool"""
							 | 
						||
| 
								 | 
							
								    display_name = "Promise Charm"
							 | 
						||
| 
								 | 
							
								    default = False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KeybladeAbilities(Choice):
							 | 
						||
| 
								 | 
							
								    """Action:Has Action Abilities on Keyblades
							 | 
						||
| 
								 | 
							
								    Support:Has Support Abilities on Keyblades"""
							 | 
						||
| 
								 | 
							
								    display_name = "Keyblade Abilities"
							 | 
						||
| 
								 | 
							
								    option_support = 0
							 | 
						||
| 
								 | 
							
								    option_action = 1
							 | 
						||
| 
								 | 
							
								    option_both = 2
							 | 
						||
| 
								 | 
							
								    default = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BlacklistKeyblade(OptionSet):
							 | 
						||
| 
								 | 
							
								    """Black List these Abilities on Keyblades"""
							 | 
						||
| 
								 | 
							
								    display_name = "Blacklist Keyblade Abilities"
							 | 
						||
| 
								 | 
							
								    verify_item_name = True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Goal(Choice):
							 | 
						||
| 
								 | 
							
								    """Win Condition
							 | 
						||
| 
								 | 
							
								    Three Proofs: Obtain the Three Proofs and Have a Gold Crown on Sora's Head.
							 | 
						||
| 
								 | 
							
								    Lucky Emblem Hunt: Acquire The Amount of Lucky Emblems you have set.
							 | 
						||
| 
								 | 
							
								    Hitlist: Kill the Superbosses on the "Hitlist" then synth ultima weapon."""
							 | 
						||
| 
								 | 
							
								    display_name = "Goal"
							 | 
						||
| 
								 | 
							
								    option_three_proofs = 0
							 | 
						||
| 
								 | 
							
								    option_lucky_emblem_hunt = 1
							 | 
						||
| 
								 | 
							
								    option_hitlist = 2
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FinalXemnas(Toggle):
							 | 
						||
| 
								 | 
							
								    """Kill Final Xemnas to Beat the Game.
							 | 
						||
| 
								 | 
							
								    This is in addition to your Goal. I.E. get three proofs+kill final Xemnas"""
							 | 
						||
| 
								 | 
							
								    display_name = "Final Xemnas"
							 | 
						||
| 
								 | 
							
								    default = True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LuckyEmblemsRequired(Range):
							 | 
						||
| 
								 | 
							
								    """Number of Lucky Emblems to collect to Open The Final Door bosses.
							 | 
						||
| 
								 | 
							
								    If Goal is not Lucky Emblem Hunt this does nothing."""
							 | 
						||
| 
								 | 
							
								    display_name = "Lucky Emblems Required"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 60
							 | 
						||
| 
								 | 
							
								    default = 25
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LuckyEmblemsAmount(Range):
							 | 
						||
| 
								 | 
							
								    """Number of Lucky Emblems that are in the pool.
							 | 
						||
| 
								 | 
							
								    If Goal is not Lucky Emblem Hunt this does nothing."""
							 | 
						||
| 
								 | 
							
								    display_name = "Lucky Emblems Available"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 60
							 | 
						||
| 
								 | 
							
								    default = 40
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BountyRequired(Range):
							 | 
						||
| 
								 | 
							
								    """Number of Bounties that are Required.
							 | 
						||
| 
								 | 
							
								        If Goal is not Hitlist this does nothing."""
							 | 
						||
| 
								 | 
							
								    display_name = "Bounties Required"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 24
							 | 
						||
| 
								 | 
							
								    default = 7
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BountyAmount(Range):
							 | 
						||
| 
								 | 
							
								    """Number of Bounties that are in the pool.
							 | 
						||
| 
								 | 
							
								        If Goal is not Hitlist this does nothing."""
							 | 
						||
| 
								 | 
							
								    display_name = "Bounties Available"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 24
							 | 
						||
| 
								 | 
							
								    default = 13
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								KH2_Options: typing.Dict[str, type(Option)] = {
							 | 
						||
| 
								 | 
							
								    "Sora_Level_EXP":         SoraEXP,
							 | 
						||
| 
								 | 
							
								    "Final_Form_EXP":         FinalEXP,
							 | 
						||
| 
								 | 
							
								    "Master_Form_EXP":        MasterEXP,
							 | 
						||
| 
								 | 
							
								    "Limit_Form_EXP":         LimitEXP,
							 | 
						||
| 
								 | 
							
								    "Wisdom_Form_EXP":        WisdomEXP,
							 | 
						||
| 
								 | 
							
								    "Valor_Form_EXP":         ValorEXP,
							 | 
						||
| 
								 | 
							
								    "Summon_EXP":             SummonEXP,
							 | 
						||
| 
								 | 
							
								    "Schmovement":            Schmovement,
							 | 
						||
| 
								 | 
							
								    "Keyblade_Minimum":       KeybladeMin,
							 | 
						||
| 
								 | 
							
								    "Keyblade_Maximum":       KeybladeMax,
							 | 
						||
| 
								 | 
							
								    "Visitlocking":           Visitlocking,
							 | 
						||
| 
								 | 
							
								    "RandomVisitLockingItem": RandomVisitLockingItem,
							 | 
						||
| 
								 | 
							
								    "SuperBosses":            SuperBosses,
							 | 
						||
| 
								 | 
							
								    "LevelDepth":             LevelDepth,
							 | 
						||
| 
								 | 
							
								    "Promise_Charm":          PromiseCharm,
							 | 
						||
| 
								 | 
							
								    "KeybladeAbilities":      KeybladeAbilities,
							 | 
						||
| 
								 | 
							
								    "BlacklistKeyblade":      BlacklistKeyblade,
							 | 
						||
| 
								 | 
							
								    "RandomGrowth":           RandomGrowth,
							 | 
						||
| 
								 | 
							
								    "Goal":                   Goal,
							 | 
						||
| 
								 | 
							
								    "FinalXemnas":            FinalXemnas,
							 | 
						||
| 
								 | 
							
								    "LuckyEmblemsAmount":     LuckyEmblemsAmount,
							 | 
						||
| 
								 | 
							
								    "LuckyEmblemsRequired":   LuckyEmblemsRequired,
							 | 
						||
| 
								 | 
							
								    "BountyAmount":           BountyAmount,
							 | 
						||
| 
								 | 
							
								    "BountyRequired":         BountyRequired,
							 | 
						||
| 
								 | 
							
								    "Cups":                   Cups,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |