146 lines
5.0 KiB
Python
146 lines
5.0 KiB
Python
|
"""
|
||
|
Author: Louis M
|
||
|
Date: Fri, 15 Mar 2024 18:41:40 +0000
|
||
|
Description: Manage options in the Aquaria game multiworld randomizer
|
||
|
"""
|
||
|
|
||
|
from dataclasses import dataclass
|
||
|
from Options import Toggle, Choice, Range, DeathLink, PerGameCommonOptions, DefaultOnToggle, StartInventoryPool
|
||
|
|
||
|
|
||
|
class IngredientRandomizer(Choice):
|
||
|
"""
|
||
|
Randomize Ingredients. Select if the simple ingredients (that does not have
|
||
|
a recipe) should be randomized. If 'common_ingredients' is selected, the
|
||
|
randomization will exclude the "Red Bulb", "Special Bulb" and "Rukh Egg".
|
||
|
"""
|
||
|
display_name = "Randomize Ingredients"
|
||
|
option_off = 0
|
||
|
option_common_ingredients = 1
|
||
|
option_all_ingredients = 2
|
||
|
default = 0
|
||
|
|
||
|
|
||
|
class DishRandomizer(Toggle):
|
||
|
"""Randomize the drop of Dishes (Ingredients with recipe)."""
|
||
|
display_name = "Dish Randomizer"
|
||
|
|
||
|
|
||
|
class TurtleRandomizer(Choice):
|
||
|
"""Randomize the transportation turtle."""
|
||
|
display_name = "Turtle Randomizer"
|
||
|
option_no_turtle_randomization = 0
|
||
|
option_randomize_all_turtle = 1
|
||
|
option_randomize_turtle_other_than_the_final_one = 2
|
||
|
default = 2
|
||
|
|
||
|
|
||
|
class EarlyEnergyForm(DefaultOnToggle):
|
||
|
"""
|
||
|
Force the Energy Form to be in a location before leaving the areas around the Home Water.
|
||
|
"""
|
||
|
display_name = "Early Energy Form"
|
||
|
|
||
|
|
||
|
class AquarianTranslation(Toggle):
|
||
|
"""Translate to English the Aquarian scripture in the game."""
|
||
|
display_name = "Translate Aquarian"
|
||
|
|
||
|
|
||
|
class BigBossesToBeat(Range):
|
||
|
"""
|
||
|
A number of big bosses to beat before having access to the creator (the final boss). The big bosses are
|
||
|
"Fallen God", "Mithalan God", "Drunian God", "Sun God" and "The Golem".
|
||
|
"""
|
||
|
display_name = "Big bosses to beat"
|
||
|
range_start = 0
|
||
|
range_end = 5
|
||
|
default = 0
|
||
|
|
||
|
|
||
|
class MiniBossesToBeat(Range):
|
||
|
"""
|
||
|
A number of Minibosses to beat before having access to the creator (the final boss). Mini bosses are
|
||
|
"Nautilus Prime", "Blaster Peg Prime", "Mergog", "Mithalan priests", "Octopus Prime", "Crabbius Maximus",
|
||
|
"Mantis Shrimp Prime" and "King Jellyfish God Prime". Note that the Energy statue and Simon says are not
|
||
|
mini bosses.
|
||
|
"""
|
||
|
display_name = "Mini bosses to beat"
|
||
|
range_start = 0
|
||
|
range_end = 8
|
||
|
default = 0
|
||
|
|
||
|
|
||
|
class Objective(Choice):
|
||
|
"""
|
||
|
The game objective can be only to kill the creator or to kill the creator
|
||
|
and having obtained the three every secret memories
|
||
|
"""
|
||
|
display_name = "Objective"
|
||
|
option_kill_the_creator = 0
|
||
|
option_obtain_secrets_and_kill_the_creator = 1
|
||
|
default = 0
|
||
|
|
||
|
class SkipFirstVision(Toggle):
|
||
|
"""
|
||
|
The first vision in the game; where Naija transform to Energy Form and get fload by enemy; is quite cool but
|
||
|
can be quite long when you already know what is going on. This option can be used to skip this vision.
|
||
|
"""
|
||
|
display_name = "Skip first Naija's vision"
|
||
|
|
||
|
class NoProgressionHardOrHiddenLocation(Toggle):
|
||
|
"""
|
||
|
Make sure that there is no progression items at hard to get or hard to find locations.
|
||
|
Those locations that will be very High location (that need beast form, soup and skill to get), every
|
||
|
location in the bubble cave, locations that need you to cross a false wall without any indication, Arnassi
|
||
|
race, bosses and mini-bosses. Usefull for those that want a casual run.
|
||
|
"""
|
||
|
display_name = "No progression in hard or hidden locations"
|
||
|
|
||
|
class LightNeededToGetToDarkPlaces(DefaultOnToggle):
|
||
|
"""
|
||
|
Make sure that the sun form or the dumbo pet can be aquired before getting to dark places. Be aware that navigating
|
||
|
in dark place without light is extremely difficult.
|
||
|
"""
|
||
|
display_name = "Light needed to get to dark places"
|
||
|
|
||
|
class BindSongNeededToGetUnderRockBulb(Toggle):
|
||
|
"""
|
||
|
Make sure that the bind song can be aquired before having to obtain sing bulb under rocks.
|
||
|
"""
|
||
|
display_name = "Bind song needed to get sing bulbs under rocks"
|
||
|
|
||
|
|
||
|
class UnconfineHomeWater(Choice):
|
||
|
"""
|
||
|
Open the way out of Home water area so that Naija can go to open water and beyond without the bind song.
|
||
|
"""
|
||
|
display_name = "Unconfine Home Water Area"
|
||
|
option_off = 0
|
||
|
option_via_energy_door = 1
|
||
|
option_via_transturtle = 2
|
||
|
option_via_both = 3
|
||
|
default = 0
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class AquariaOptions(PerGameCommonOptions):
|
||
|
"""
|
||
|
Every option in the Aquaria randomizer
|
||
|
"""
|
||
|
start_inventory_from_pool: StartInventoryPool
|
||
|
objective: Objective
|
||
|
mini_bosses_to_beat: MiniBossesToBeat
|
||
|
big_bosses_to_beat: BigBossesToBeat
|
||
|
turtle_randomizer: TurtleRandomizer
|
||
|
early_energy_form: EarlyEnergyForm
|
||
|
light_needed_to_get_to_dark_places: LightNeededToGetToDarkPlaces
|
||
|
bind_song_needed_to_get_under_rock_bulb: BindSongNeededToGetUnderRockBulb
|
||
|
unconfine_home_water: UnconfineHomeWater
|
||
|
no_progression_hard_or_hidden_locations: NoProgressionHardOrHiddenLocation
|
||
|
ingredient_randomizer: IngredientRandomizer
|
||
|
dish_randomizer: DishRandomizer
|
||
|
aquarian_translation: AquarianTranslation
|
||
|
skip_first_vision: SkipFirstVision
|
||
|
death_link: DeathLink
|