| 
									
										
										
										
											2021-09-29 09:12:23 +02:00
										 |  |  | import typing | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  | from Options import Option, Range, Choice, Toggle, DefaultOnToggle | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EvermizerFlags: | 
					
						
							|  |  |  |     flags: typing.List[str] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def to_flag(self) -> str: | 
					
						
							|  |  |  |         return self.flags[self.value] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EvermizerFlag: | 
					
						
							|  |  |  |     flag: str | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def to_flag(self) -> str: | 
					
						
							|  |  |  |         return self.flag if self.value != self.default else '' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  | class OffOnFullChoice(Choice): | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     option_off = 0 | 
					
						
							|  |  |  |     option_on = 1 | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  |     option_full = 2 | 
					
						
							|  |  |  |     alias_chaos = 2 | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     alias_false = 0 | 
					
						
							|  |  |  |     alias_true = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Difficulty(EvermizerFlags, Choice): | 
					
						
							|  |  |  |     """Changes relative spell cost and stuff""" | 
					
						
							|  |  |  |     displayname = "Difficulty" | 
					
						
							|  |  |  |     option_easy = 0 | 
					
						
							|  |  |  |     option_normal = 1 | 
					
						
							|  |  |  |     option_hard = 2 | 
					
						
							| 
									
										
										
										
											2021-12-18 16:39:47 +01:00
										 |  |  |     option_mystery = 3  # 'random' is reserved | 
					
						
							|  |  |  |     alias_chaos = 3 | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     default = 1 | 
					
						
							|  |  |  |     flags = ['e', 'n', 'h', 'x'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MoneyModifier(Range): | 
					
						
							|  |  |  |     """Money multiplier in %""" | 
					
						
							|  |  |  |     displayname = "Money Modifier" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 2500 | 
					
						
							|  |  |  |     default = 200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ExpModifier(Range): | 
					
						
							|  |  |  |     """EXP multiplier for Weapons, Characters and Spells in %""" | 
					
						
							|  |  |  |     displayname = "Exp Modifier" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 2500 | 
					
						
							|  |  |  |     default = 200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FixSequence(EvermizerFlag, DefaultOnToggle): | 
					
						
							|  |  |  |     """Fix some sequence breaks""" | 
					
						
							|  |  |  |     displayname = "Fix Sequence" | 
					
						
							|  |  |  |     flag = '1' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FixCheats(EvermizerFlag, DefaultOnToggle): | 
					
						
							|  |  |  |     """Fix cheats left in by the devs (not desert skip)""" | 
					
						
							|  |  |  |     displayname = "Fix Cheats" | 
					
						
							|  |  |  |     flag = '2' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FixInfiniteAmmo(EvermizerFlag, Toggle): | 
					
						
							|  |  |  |     """Fix infinite ammo glitch""" | 
					
						
							|  |  |  |     displayname = "Fix Infinite Ammo" | 
					
						
							|  |  |  |     flag = '5' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FixAtlasGlitch(EvermizerFlag, Toggle): | 
					
						
							|  |  |  |     """Fix atlas underflowing stats""" | 
					
						
							|  |  |  |     displayname = "Fix Atlas Glitch" | 
					
						
							|  |  |  |     flag = '6' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FixWingsGlitch(EvermizerFlag, Toggle): | 
					
						
							|  |  |  |     """Fix wings making you invincible in some areas""" | 
					
						
							|  |  |  |     displayname = "Fix Wings Glitch" | 
					
						
							|  |  |  |     flag = '7' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 00:02:06 +01:00
										 |  |  | class ShorterDialogs(EvermizerFlag, DefaultOnToggle): | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     """Cuts some dialogs""" | 
					
						
							|  |  |  |     displayname = "Shorter Dialogs" | 
					
						
							|  |  |  |     flag = '9' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 00:02:06 +01:00
										 |  |  | class ShortBossRush(EvermizerFlag, DefaultOnToggle): | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  |     """Start boss rush at Metal Magmar, cut enemy HP in half""" | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     displayname = "Short Boss Rush" | 
					
						
							|  |  |  |     flag = 'f' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  | class Ingredienizer(EvermizerFlags, OffOnFullChoice): | 
					
						
							|  |  |  |     """On Shuffles, Full randomizes spell ingredients""" | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     displayname = "Ingredienizer" | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  |     flags = ['i', '', 'I'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  | class Sniffamizer(EvermizerFlags, OffOnFullChoice): | 
					
						
							|  |  |  |     """On Shuffles, Full randomizes drops in sniff locations""" | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     displayname = "Sniffamizer" | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  |     flags = ['s', '', 'S'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  | class Callbeadamizer(EvermizerFlags, OffOnFullChoice): | 
					
						
							|  |  |  |     """On Shuffles call bead characters, Full shuffles individual spells""" | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     displayname = "Callbeadamizer" | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  |     flags = ['c', '', 'C'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Musicmizer(EvermizerFlag, Toggle): | 
					
						
							|  |  |  |     """Randomize music for some rooms""" | 
					
						
							|  |  |  |     displayname = "Musicmizer" | 
					
						
							|  |  |  |     flag = 'm' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 05:34:41 +01:00
										 |  |  | class Doggomizer(EvermizerFlags, OffOnFullChoice): | 
					
						
							|  |  |  |     """On shuffles dog per act, Full randomizes dog per screen, Pupdunk gives you Everpupper everywhere""" | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     displayname = "Doggomizer" | 
					
						
							|  |  |  |     option_pupdunk = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     flags = ['', 'd', 'D', 'p'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TurdoMode(EvermizerFlag, Toggle): | 
					
						
							|  |  |  |     """Replace offensive spells by Turd Balls with varying strength and make weapons weak""" | 
					
						
							|  |  |  |     displayname = "Turdo Mode" | 
					
						
							|  |  |  |     flag = 't' | 
					
						
							| 
									
										
										
										
											2021-09-29 09:12:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | soe_options: typing.Dict[str, type(Option)] = { | 
					
						
							| 
									
										
										
										
											2021-11-07 15:38:02 +01:00
										 |  |  |     "difficulty":           Difficulty, | 
					
						
							|  |  |  |     "money_modifier":       MoneyModifier, | 
					
						
							|  |  |  |     "exp_modifier":         ExpModifier, | 
					
						
							|  |  |  |     "fix_sequence":         FixSequence, | 
					
						
							|  |  |  |     "fix_cheats":           FixCheats, | 
					
						
							|  |  |  |     "fix_infinite_ammo":    FixInfiniteAmmo, | 
					
						
							|  |  |  |     "fix_atlas_glitch":     FixAtlasGlitch, | 
					
						
							|  |  |  |     "fix_wings_glitch":     FixWingsGlitch, | 
					
						
							|  |  |  |     "shorter_dialogs":      ShorterDialogs, | 
					
						
							|  |  |  |     "short_boss_rush":      ShortBossRush, | 
					
						
							|  |  |  |     "ingredienizer":        Ingredienizer, | 
					
						
							|  |  |  |     "sniffamizer":          Sniffamizer, | 
					
						
							|  |  |  |     "callbeadamizer":       Callbeadamizer, | 
					
						
							|  |  |  |     "musicmizer":           Musicmizer, | 
					
						
							|  |  |  |     "doggomizer":           Doggomizer, | 
					
						
							|  |  |  |     "turdo_mode":           TurdoMode, | 
					
						
							| 
									
										
										
										
											2021-09-29 09:12:23 +02:00
										 |  |  | } |