2021-09-29 07:12:23 +00:00
|
|
|
import typing
|
2021-11-07 14:38:02 +00: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 ''
|
|
|
|
|
|
|
|
|
|
|
|
class OffOnChaosChoice(Choice):
|
|
|
|
option_off = 0
|
|
|
|
option_on = 1
|
|
|
|
option_chaos = 2
|
|
|
|
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 15:39:47 +00:00
|
|
|
option_mystery = 3 # 'random' is reserved
|
|
|
|
alias_chaos = 3
|
2021-11-07 14:38:02 +00: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'
|
|
|
|
|
|
|
|
|
|
|
|
class ShorterDialogs(EvermizerFlag, Toggle):
|
|
|
|
"""Cuts some dialogs"""
|
|
|
|
displayname = "Shorter Dialogs"
|
|
|
|
flag = '9'
|
|
|
|
|
|
|
|
|
|
|
|
class ShortBossRush(EvermizerFlag, Toggle):
|
|
|
|
"""Start boss rush at Magmar, cut HP in half"""
|
|
|
|
displayname = "Short Boss Rush"
|
|
|
|
flag = 'f'
|
|
|
|
|
|
|
|
|
|
|
|
class Ingredienizer(EvermizerFlags, OffOnChaosChoice):
|
|
|
|
"""Shuffles or randomizes spell ingredients"""
|
|
|
|
displayname = "Ingredienizer"
|
|
|
|
default = 1
|
|
|
|
flags = ['i', '', 'I']
|
|
|
|
|
|
|
|
|
|
|
|
class Sniffamizer(EvermizerFlags, OffOnChaosChoice):
|
|
|
|
"""Shuffles or randomizes drops in sniff locations"""
|
|
|
|
displayname = "Sniffamizer"
|
|
|
|
default = 1
|
|
|
|
flags = ['s', '', 'S']
|
|
|
|
|
|
|
|
|
|
|
|
class Callbeadamizer(EvermizerFlags, OffOnChaosChoice):
|
|
|
|
"""Shuffles call bead characters or spells"""
|
|
|
|
displayname = "Callbeadamizer"
|
|
|
|
default = 1
|
|
|
|
flags = ['c', '', 'C']
|
|
|
|
|
|
|
|
|
|
|
|
class Musicmizer(EvermizerFlag, Toggle):
|
|
|
|
"""Randomize music for some rooms"""
|
|
|
|
displayname = "Musicmizer"
|
|
|
|
flag = 'm'
|
|
|
|
|
|
|
|
|
|
|
|
class Doggomizer(EvermizerFlags, OffOnChaosChoice):
|
|
|
|
"""On shuffles dog per act, Chaos randomizes dog per screen, Pupdunk gives you Everpupper everywhere"""
|
|
|
|
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 07:12:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
soe_options: typing.Dict[str, type(Option)] = {
|
2021-11-07 14:38:02 +00: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 07:12:23 +00:00
|
|
|
}
|