Aquaria: Adding Aquaria to README and some other minors changes (#3313)
This commit is contained in:
parent
bfe215d5a7
commit
c792ae76ca
|
@ -67,6 +67,7 @@ Currently, the following games are supported:
|
||||||
* Yoshi's Island
|
* Yoshi's Island
|
||||||
* Mario & Luigi: Superstar Saga
|
* Mario & Luigi: Superstar Saga
|
||||||
* Bomb Rush Cyberfunk
|
* Bomb Rush Cyberfunk
|
||||||
|
* Aquaria
|
||||||
* Yu-Gi-Oh! Ultimate Masters: World Championship Tournament 2006
|
* Yu-Gi-Oh! Ultimate Masters: World Championship Tournament 2006
|
||||||
|
|
||||||
For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/).
|
For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/).
|
||||||
|
|
|
@ -8,14 +8,16 @@ from typing import Optional
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from BaseClasses import Item, ItemClassification
|
from BaseClasses import Item, ItemClassification
|
||||||
|
|
||||||
|
|
||||||
class ItemType(Enum):
|
class ItemType(Enum):
|
||||||
"""
|
"""
|
||||||
Used to indicate to the multi-world if an item is usefull or not
|
Used to indicate to the multi-world if an item is useful or not
|
||||||
"""
|
"""
|
||||||
NORMAL = 0
|
NORMAL = 0
|
||||||
PROGRESSION = 1
|
PROGRESSION = 1
|
||||||
JUNK = 2
|
JUNK = 2
|
||||||
|
|
||||||
|
|
||||||
class ItemGroup(Enum):
|
class ItemGroup(Enum):
|
||||||
"""
|
"""
|
||||||
Used to group items
|
Used to group items
|
||||||
|
@ -28,6 +30,7 @@ class ItemGroup(Enum):
|
||||||
SONG = 5
|
SONG = 5
|
||||||
TURTLE = 6
|
TURTLE = 6
|
||||||
|
|
||||||
|
|
||||||
class AquariaItem(Item):
|
class AquariaItem(Item):
|
||||||
"""
|
"""
|
||||||
A single item in the Aquaria game.
|
A single item in the Aquaria game.
|
||||||
|
@ -40,22 +43,23 @@ class AquariaItem(Item):
|
||||||
"""
|
"""
|
||||||
Initialisation of the Item
|
Initialisation of the Item
|
||||||
:param name: The name of the item
|
:param name: The name of the item
|
||||||
:param classification: If the item is usefull or not
|
:param classification: If the item is useful or not
|
||||||
:param code: The ID of the item (if None, it is an event)
|
:param code: The ID of the item (if None, it is an event)
|
||||||
:param player: The ID of the player in the multiworld
|
:param player: The ID of the player in the multiworld
|
||||||
"""
|
"""
|
||||||
super().__init__(name, classification, code, player)
|
super().__init__(name, classification, code, player)
|
||||||
|
|
||||||
|
|
||||||
class ItemData:
|
class ItemData:
|
||||||
"""
|
"""
|
||||||
Data of an item.
|
Data of an item.
|
||||||
"""
|
"""
|
||||||
id:int
|
id: int
|
||||||
count:int
|
count: int
|
||||||
type:ItemType
|
type: ItemType
|
||||||
group:ItemGroup
|
group: ItemGroup
|
||||||
|
|
||||||
def __init__(self, id:int, count:int, type:ItemType, group:ItemGroup):
|
def __init__(self, id: int, count: int, type: ItemType, group: ItemGroup):
|
||||||
"""
|
"""
|
||||||
Initialisation of the item data
|
Initialisation of the item data
|
||||||
@param id: The item ID
|
@param id: The item ID
|
||||||
|
@ -68,6 +72,7 @@ class ItemData:
|
||||||
self.type = type
|
self.type = type
|
||||||
self.group = group
|
self.group = group
|
||||||
|
|
||||||
|
|
||||||
"""Information data for every (not event) item."""
|
"""Information data for every (not event) item."""
|
||||||
item_table = {
|
item_table = {
|
||||||
# name: ID, Nb, Item Type, Item Group
|
# name: ID, Nb, Item Type, Item Group
|
||||||
|
@ -207,4 +212,3 @@ item_table = {
|
||||||
"Transturtle Simon says": ItemData(698132, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_forest05
|
"Transturtle Simon says": ItemData(698132, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_forest05
|
||||||
"Transturtle Arnassi ruins": ItemData(698133, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_seahorse
|
"Transturtle Arnassi ruins": ItemData(698133, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_seahorse
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ class AquariaLocations:
|
||||||
|
|
||||||
locations_home_water = {
|
locations_home_water = {
|
||||||
"Home water, bulb below the grouper fish": 698058,
|
"Home water, bulb below the grouper fish": 698058,
|
||||||
"Home water, bulb in the path bellow Nautilus Prime": 698059,
|
"Home water, bulb in the path below Nautilus Prime": 698059,
|
||||||
"Home water, bulb in the little room above the grouper fish": 698060,
|
"Home water, bulb in the little room above the grouper fish": 698060,
|
||||||
"Home water, bulb in the end of the left path from the verse cave": 698061,
|
"Home water, bulb in the end of the left path from the verse cave": 698061,
|
||||||
"Home water, bulb in the top left path": 698062,
|
"Home water, bulb in the top left path": 698062,
|
||||||
|
@ -129,7 +129,7 @@ class AquariaLocations:
|
||||||
|
|
||||||
locations_openwater_bl = {
|
locations_openwater_bl = {
|
||||||
"Open water bottom left area, bulb behind the chomper fish": 698011,
|
"Open water bottom left area, bulb behind the chomper fish": 698011,
|
||||||
"Open water bottom left area, bulb inside the downest fish pass": 698010,
|
"Open water bottom left area, bulb inside the lowest fish pass": 698010,
|
||||||
}
|
}
|
||||||
|
|
||||||
locations_skeleton_path = {
|
locations_skeleton_path = {
|
||||||
|
@ -226,7 +226,7 @@ class AquariaLocations:
|
||||||
"Mithalas cathedral, third urn in the path behind the flesh vein": 698146,
|
"Mithalas cathedral, third urn in the path behind the flesh vein": 698146,
|
||||||
"Mithalas cathedral, one of the urns in the top right room": 698147,
|
"Mithalas cathedral, one of the urns in the top right room": 698147,
|
||||||
"Mithalas cathedral, Mithalan Dress": 698189,
|
"Mithalas cathedral, Mithalan Dress": 698189,
|
||||||
"Mithalas cathedral right area, urn bellow the left entrance": 698198,
|
"Mithalas cathedral right area, urn below the left entrance": 698198,
|
||||||
}
|
}
|
||||||
|
|
||||||
locations_cathedral_underground = {
|
locations_cathedral_underground = {
|
||||||
|
@ -457,7 +457,7 @@ class AquariaLocations:
|
||||||
locations_body_l = {
|
locations_body_l = {
|
||||||
"The body left area, first bulb in the top face room": 698066,
|
"The body left area, first bulb in the top face room": 698066,
|
||||||
"The body left area, second bulb in the top face room": 698069,
|
"The body left area, second bulb in the top face room": 698069,
|
||||||
"The body left area, bulb bellow the water stream": 698067,
|
"The body left area, bulb below the water stream": 698067,
|
||||||
"The body left area, bulb in the top path to the top face room": 698068,
|
"The body left area, bulb in the top path to the top face room": 698068,
|
||||||
"The body left area, bulb in the bottom face room": 698070,
|
"The body left area, bulb in the bottom face room": 698070,
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,8 @@ from Options import Toggle, Choice, Range, DeathLink, PerGameCommonOptions, Defa
|
||||||
|
|
||||||
class IngredientRandomizer(Choice):
|
class IngredientRandomizer(Choice):
|
||||||
"""
|
"""
|
||||||
Randomize Ingredients. Select if the simple ingredients (that does not have
|
Select if the simple ingredients (that do not have a recipe) should be randomized.
|
||||||
a recipe) should be randomized. If 'common_ingredients' is selected, the
|
If "Common Ingredients" is selected, the randomization will exclude the "Red Bulb", "Special Bulb" and "Rukh Egg".
|
||||||
randomization will exclude the "Red Bulb", "Special Bulb" and "Rukh Egg".
|
|
||||||
"""
|
"""
|
||||||
display_name = "Randomize Ingredients"
|
display_name = "Randomize Ingredients"
|
||||||
option_off = 0
|
option_off = 0
|
||||||
|
@ -29,27 +28,25 @@ class DishRandomizer(Toggle):
|
||||||
class TurtleRandomizer(Choice):
|
class TurtleRandomizer(Choice):
|
||||||
"""Randomize the transportation turtle."""
|
"""Randomize the transportation turtle."""
|
||||||
display_name = "Turtle Randomizer"
|
display_name = "Turtle Randomizer"
|
||||||
option_no_turtle_randomization = 0
|
option_none = 0
|
||||||
option_randomize_all_turtle = 1
|
option_all = 1
|
||||||
option_randomize_turtle_other_than_the_final_one = 2
|
option_all_except_final = 2
|
||||||
default = 2
|
default = 2
|
||||||
|
|
||||||
|
|
||||||
class EarlyEnergyForm(DefaultOnToggle):
|
class EarlyEnergyForm(DefaultOnToggle):
|
||||||
"""
|
""" Force the Energy Form to be in a location early in the game """
|
||||||
Force the Energy Form to be in a location before leaving the areas around the Home Water.
|
|
||||||
"""
|
|
||||||
display_name = "Early Energy Form"
|
display_name = "Early Energy Form"
|
||||||
|
|
||||||
|
|
||||||
class AquarianTranslation(Toggle):
|
class AquarianTranslation(Toggle):
|
||||||
"""Translate to English the Aquarian scripture in the game."""
|
"""Translate the Aquarian scripture in the game into English."""
|
||||||
display_name = "Translate Aquarian"
|
display_name = "Translate Aquarian"
|
||||||
|
|
||||||
|
|
||||||
class BigBossesToBeat(Range):
|
class BigBossesToBeat(Range):
|
||||||
"""
|
"""
|
||||||
A number of big bosses to beat before having access to the creator (the final boss). The big bosses are
|
The 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".
|
"Fallen God", "Mithalan God", "Drunian God", "Sun God" and "The Golem".
|
||||||
"""
|
"""
|
||||||
display_name = "Big bosses to beat"
|
display_name = "Big bosses to beat"
|
||||||
|
@ -60,12 +57,12 @@ class BigBossesToBeat(Range):
|
||||||
|
|
||||||
class MiniBossesToBeat(Range):
|
class MiniBossesToBeat(Range):
|
||||||
"""
|
"""
|
||||||
A number of Minibosses to beat before having access to the creator (the final boss). Mini bosses are
|
The number of minibosses to beat before having access to the creator (the final boss). The minibosses are
|
||||||
"Nautilus Prime", "Blaster Peg Prime", "Mergog", "Mithalan priests", "Octopus Prime", "Crabbius Maximus",
|
"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
|
"Mantis Shrimp Prime" and "King Jellyfish God Prime".
|
||||||
mini bosses.
|
Note that the Energy Statue and Simon Says are not minibosses.
|
||||||
"""
|
"""
|
||||||
display_name = "Mini bosses to beat"
|
display_name = "Minibosses to beat"
|
||||||
range_start = 0
|
range_start = 0
|
||||||
range_end = 8
|
range_end = 8
|
||||||
default = 0
|
default = 0
|
||||||
|
@ -73,47 +70,50 @@ class MiniBossesToBeat(Range):
|
||||||
|
|
||||||
class Objective(Choice):
|
class Objective(Choice):
|
||||||
"""
|
"""
|
||||||
The game objective can be only to kill the creator or to kill the creator
|
The game objective can be to kill the creator or to kill the creator after obtaining all three secret memories.
|
||||||
and having obtained the three every secret memories
|
|
||||||
"""
|
"""
|
||||||
display_name = "Objective"
|
display_name = "Objective"
|
||||||
option_kill_the_creator = 0
|
option_kill_the_creator = 0
|
||||||
option_obtain_secrets_and_kill_the_creator = 1
|
option_obtain_secrets_and_kill_the_creator = 1
|
||||||
default = 0
|
default = 0
|
||||||
|
|
||||||
|
|
||||||
class SkipFirstVision(Toggle):
|
class SkipFirstVision(Toggle):
|
||||||
"""
|
"""
|
||||||
The first vision in the game; where Naija transform to Energy Form and get fload by enemy; is quite cool but
|
The first vision in the game, where Naija transforms into Energy Form and gets flooded by enemies, 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.
|
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"
|
display_name = "Skip Naija's first vision"
|
||||||
|
|
||||||
|
|
||||||
class NoProgressionHardOrHiddenLocation(Toggle):
|
class NoProgressionHardOrHiddenLocation(Toggle):
|
||||||
"""
|
"""
|
||||||
Make sure that there is no progression items at hard to get or hard to find locations.
|
Make sure that there are no progression items at hard-to-reach or hard-to-find locations.
|
||||||
Those locations that will be very High location (that need beast form, soup and skill to get), every
|
Those locations are very High locations (that need beast form, soup and skill to get),
|
||||||
location in the bubble cave, locations that need you to cross a false wall without any indication, Arnassi
|
every location in the bubble cave, locations where need you to cross a false wall without any indication,
|
||||||
race, bosses and mini-bosses. Usefull for those that want a casual run.
|
the Arnassi race, bosses and minibosses. Useful for those that want a more casual run.
|
||||||
"""
|
"""
|
||||||
display_name = "No progression in hard or hidden locations"
|
display_name = "No progression in hard or hidden locations"
|
||||||
|
|
||||||
|
|
||||||
class LightNeededToGetToDarkPlaces(DefaultOnToggle):
|
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
|
Make sure that the sun form or the dumbo pet can be acquired before getting to dark places.
|
||||||
in dark place without light is extremely difficult.
|
Be aware that navigating in dark places without light is extremely difficult.
|
||||||
"""
|
"""
|
||||||
display_name = "Light needed to get to dark places"
|
display_name = "Light needed to get to dark places"
|
||||||
|
|
||||||
|
|
||||||
class BindSongNeededToGetUnderRockBulb(Toggle):
|
class BindSongNeededToGetUnderRockBulb(Toggle):
|
||||||
"""
|
"""
|
||||||
Make sure that the bind song can be aquired before having to obtain sing bulb under rocks.
|
Make sure that the bind song can be acquired before having to obtain sing bulbs under rocks.
|
||||||
"""
|
"""
|
||||||
display_name = "Bind song needed to get sing bulbs under rocks"
|
display_name = "Bind song needed to get sing bulbs under rocks"
|
||||||
|
|
||||||
|
|
||||||
class UnconfineHomeWater(Choice):
|
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.
|
Open the way out of the Home water area so that Naija can go to open water and beyond without the bind song.
|
||||||
"""
|
"""
|
||||||
display_name = "Unconfine Home Water Area"
|
display_name = "Unconfine Home Water Area"
|
||||||
option_off = 0
|
option_off = 0
|
||||||
|
|
|
@ -5,7 +5,7 @@ Description: Used to manage Regions in the Aquaria game multiworld randomizer
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Dict, Optional
|
from typing import Dict, Optional
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, ItemClassification, LocationProgressType, CollectionState
|
from BaseClasses import MultiWorld, Region, Entrance, ItemClassification, CollectionState
|
||||||
from .Items import AquariaItem
|
from .Items import AquariaItem
|
||||||
from .Locations import AquariaLocations, AquariaLocation
|
from .Locations import AquariaLocations, AquariaLocation
|
||||||
from .Options import AquariaOptions
|
from .Options import AquariaOptions
|
||||||
|
@ -223,8 +223,6 @@ class AquariaRegions:
|
||||||
region.add_locations(locations, AquariaLocation)
|
region.add_locations(locations, AquariaLocation)
|
||||||
return region
|
return region
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __create_home_water_area(self) -> None:
|
def __create_home_water_area(self) -> None:
|
||||||
"""
|
"""
|
||||||
Create the `verse_cave`, `home_water` and `song_cave*` regions
|
Create the `verse_cave`, `home_water` and `song_cave*` regions
|
||||||
|
@ -941,7 +939,7 @@ class AquariaRegions:
|
||||||
"""
|
"""
|
||||||
Add secrets events to the `world`
|
Add secrets events to the `world`
|
||||||
"""
|
"""
|
||||||
self.__add_event_location(self.first_secret, # Doit ajouter une région pour le "first secret"
|
self.__add_event_location(self.first_secret, # Doit ajouter une région pour le "first secret"
|
||||||
"First secret",
|
"First secret",
|
||||||
"First secret obtained")
|
"First secret obtained")
|
||||||
self.__add_event_location(self.mithalas_city,
|
self.__add_event_location(self.mithalas_city,
|
||||||
|
@ -1095,12 +1093,10 @@ class AquariaRegions:
|
||||||
add_rule(self.multiworld.get_entrance("Veil left of sun temple to Sun temple left area", self.player),
|
add_rule(self.multiworld.get_entrance("Veil left of sun temple to Sun temple left area", self.player),
|
||||||
lambda state: _has_light(state, self.player) or _has_sun_crystal(state, self.player))
|
lambda state: _has_light(state, self.player) or _has_sun_crystal(state, self.player))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __adjusting_manual_rules(self) -> None:
|
def __adjusting_manual_rules(self) -> None:
|
||||||
add_rule(self.multiworld.get_location("Mithalas cathedral, Mithalan Dress", self.player),
|
add_rule(self.multiworld.get_location("Mithalas cathedral, Mithalan Dress", self.player),
|
||||||
lambda state: _has_beast_form(state, self.player))
|
lambda state: _has_beast_form(state, self.player))
|
||||||
add_rule(self.multiworld.get_location("Open water bottom left area, bulb inside the downest fish pass", self.player),
|
add_rule(self.multiworld.get_location("Open water bottom left area, bulb inside the lowest fish pass", self.player),
|
||||||
lambda state: _has_fish_form(state, self.player))
|
lambda state: _has_fish_form(state, self.player))
|
||||||
add_rule(self.multiworld.get_location("Kelp forest bottom left area, Walker baby", self.player),
|
add_rule(self.multiworld.get_location("Kelp forest bottom left area, Walker baby", self.player),
|
||||||
lambda state: _has_spirit_form(state, self.player))
|
lambda state: _has_spirit_form(state, self.player))
|
||||||
|
@ -1122,7 +1118,7 @@ class AquariaRegions:
|
||||||
self.player), lambda state: _has_energy_form(state, self.player))
|
self.player), lambda state: _has_energy_form(state, self.player))
|
||||||
add_rule(self.multiworld.get_location("Home water, bulb in the bottom left room", self.player),
|
add_rule(self.multiworld.get_location("Home water, bulb in the bottom left room", self.player),
|
||||||
lambda state: _has_bind_song(state, self.player))
|
lambda state: _has_bind_song(state, self.player))
|
||||||
add_rule(self.multiworld.get_location("Home water, bulb in the path bellow Nautilus Prime", self.player),
|
add_rule(self.multiworld.get_location("Home water, bulb in the path below Nautilus Prime", self.player),
|
||||||
lambda state: _has_bind_song(state, self.player))
|
lambda state: _has_bind_song(state, self.player))
|
||||||
add_rule(self.multiworld.get_location("Naija's home, bulb after the energy door", self.player),
|
add_rule(self.multiworld.get_location("Naija's home, bulb after the energy door", self.player),
|
||||||
lambda state: _has_energy_form(state, self.player))
|
lambda state: _has_energy_form(state, self.player))
|
||||||
|
@ -1133,9 +1129,6 @@ class AquariaRegions:
|
||||||
lambda state: _has_fish_form(state, self.player) and
|
lambda state: _has_fish_form(state, self.player) and
|
||||||
_has_spirit_form(state, self.player))
|
_has_spirit_form(state, self.player))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __no_progression_hard_or_hidden_location(self) -> None:
|
def __no_progression_hard_or_hidden_location(self) -> None:
|
||||||
self.multiworld.get_location("Energy temple boss area, Fallen god tooth",
|
self.multiworld.get_location("Energy temple boss area, Fallen god tooth",
|
||||||
self.player).item_rule =\
|
self.player).item_rule =\
|
||||||
|
@ -1242,11 +1235,7 @@ class AquariaRegions:
|
||||||
add_rule(self.multiworld.get_entrance("Home Water to Open water top left area", self.player),
|
add_rule(self.multiworld.get_entrance("Home Water to Open water top left area", self.player),
|
||||||
lambda state: _has_bind_song(state, self.player) and _has_energy_form(state, self.player))
|
lambda state: _has_bind_song(state, self.player) and _has_energy_form(state, self.player))
|
||||||
if options.early_energy_form:
|
if options.early_energy_form:
|
||||||
add_rule(self.multiworld.get_entrance("Home Water to Home water transturtle room", self.player),
|
self.multiworld.early_items[self.player]["Energy form"] = 1
|
||||||
lambda state: _has_energy_form(state, self.player))
|
|
||||||
if options.early_energy_form:
|
|
||||||
add_rule(self.multiworld.get_entrance("Home Water to Open water top left area", self.player),
|
|
||||||
lambda state: _has_energy_form(state, self.player))
|
|
||||||
|
|
||||||
if options.no_progression_hard_or_hidden_locations:
|
if options.no_progression_hard_or_hidden_locations:
|
||||||
self.__no_progression_hard_or_hidden_location()
|
self.__no_progression_hard_or_hidden_location()
|
||||||
|
|
|
@ -5,7 +5,7 @@ Description: Main module for Aquaria game multiworld randomizer
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import List, Dict, ClassVar, Any
|
from typing import List, Dict, ClassVar, Any
|
||||||
from ..AutoWorld import World, WebWorld
|
from worlds.AutoWorld import World, WebWorld
|
||||||
from BaseClasses import Tutorial, MultiWorld, ItemClassification
|
from BaseClasses import Tutorial, MultiWorld, ItemClassification
|
||||||
from .Items import item_table, AquariaItem, ItemType, ItemGroup
|
from .Items import item_table, AquariaItem, ItemType, ItemGroup
|
||||||
from .Locations import location_table
|
from .Locations import location_table
|
||||||
|
@ -114,7 +114,7 @@ class AquariaWorld(World):
|
||||||
|
|
||||||
def create_item(self, name: str) -> AquariaItem:
|
def create_item(self, name: str) -> AquariaItem:
|
||||||
"""
|
"""
|
||||||
Create an AquariaItem using `name' as item name.
|
Create an AquariaItem using 'name' as item name.
|
||||||
"""
|
"""
|
||||||
result: AquariaItem
|
result: AquariaItem
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -11,39 +11,39 @@ options page link: [Aquaria Player Options Page](../player-options).
|
||||||
## What does randomization do to this game?
|
## What does randomization do to this game?
|
||||||
The locations in the randomizer are:
|
The locations in the randomizer are:
|
||||||
|
|
||||||
- All sing bulbs;
|
- All sing bulbs
|
||||||
- All Mithalas Urns;
|
- All Mithalas Urns
|
||||||
- All Sunken City crates;
|
- All Sunken City crates
|
||||||
- Collectible treasure locations (including pet eggs and costumes);
|
- Collectible treasure locations (including pet eggs and costumes)
|
||||||
- Beating Simon says;
|
- Beating Simon says
|
||||||
- Li cave;
|
- Li cave
|
||||||
- Every Transportation Turtle (also called transturtle);
|
- Every Transportation Turtle (also called transturtle)
|
||||||
- Locations where you get songs,
|
- Locations where you get songs:
|
||||||
* Erulian spirit cristal,
|
* Erulian spirit cristal
|
||||||
* Energy status mini-boss,
|
* Energy status mini-boss
|
||||||
* Beating Mithalan God boss,
|
* Beating Mithalan God boss
|
||||||
* Fish cave puzzle,
|
* Fish cave puzzle
|
||||||
* Beating Drunian God boss,
|
* Beating Drunian God boss
|
||||||
* Beating Sun God boss,
|
* Beating Sun God boss
|
||||||
* Breaking Li cage in the body
|
* Breaking Li cage in the body
|
||||||
|
|
||||||
Note that, unlike the vanilla game, when opening sing bulbs, Mithalas urns and Sunken City crates,
|
Note that, unlike the vanilla game, when opening sing bulbs, Mithalas urns and Sunken City crates,
|
||||||
nothing will come out of them. The moment those bulbs, urns and crates are opened, the location is considered received.
|
nothing will come out of them. The moment those bulbs, urns and crates are opened, the location is considered checked.
|
||||||
|
|
||||||
The items in the randomizer are:
|
The items in the randomizer are:
|
||||||
- Dishes (used to learn recipes*);
|
- Dishes (used to learn recipes)<sup>*</sup>
|
||||||
- Some ingredients;
|
- Some ingredients
|
||||||
- The Wok (third plate used to cook 3 ingredients recipes everywhere);
|
- The Wok (third plate used to cook 3-ingredient recipes everywhere)
|
||||||
- All collectible treasure (including pet eggs and costumes);
|
- All collectible treasure (including pet eggs and costumes)
|
||||||
- Li and Li song;
|
- Li and Li's song
|
||||||
- All songs (other than Li's song since it is learned when Li is obtained);
|
- All songs (other than Li's song since it is learned when Li is obtained)
|
||||||
- Transportation to transturtles.
|
- Transportation to transturtles
|
||||||
|
|
||||||
Also, there is the option to randomize every ingredient drops (from fishes, monsters
|
Also, there is the option to randomize every ingredient drops (from fishes, monsters
|
||||||
or plants).
|
or plants).
|
||||||
|
|
||||||
*Note that, unlike in the vanilla game, the recipes for dishes (other than the Sea Loaf)
|
<sup>*</sup> Note that, unlike in the vanilla game, the recipes for dishes (other than the Sea Loaf)
|
||||||
cannot be cooked (and learn) before being obtained as randomized items. Also, enemies and plants
|
cannot be cooked (or learned) before being obtained as randomized items. Also, enemies and plants
|
||||||
that drop dishes that have not been learned before will drop ingredients of this dish instead.
|
that drop dishes that have not been learned before will drop ingredients of this dish instead.
|
||||||
|
|
||||||
## What is the goal of the game?
|
## What is the goal of the game?
|
||||||
|
@ -57,8 +57,8 @@ Any items specified above can be in another player's world.
|
||||||
No visuals are shown when finding locations other than collectible treasure.
|
No visuals are shown when finding locations other than collectible treasure.
|
||||||
For those treasures, the visual of the treasure is visually unchanged.
|
For those treasures, the visual of the treasure is visually unchanged.
|
||||||
After collecting a location check, a message will be shown to inform the player
|
After collecting a location check, a message will be shown to inform the player
|
||||||
what has been collected, and who will receive it.
|
what has been collected and who will receive it.
|
||||||
|
|
||||||
## When the player receives an item, what happens?
|
## When the player receives an item, what happens?
|
||||||
When you receive an item, a message will pop up to inform you where you received
|
When you receive an item, a message will pop up to inform you where you received
|
||||||
the item from, and which one it is.
|
the item from and which one it was.
|
|
@ -2,9 +2,12 @@
|
||||||
|
|
||||||
## Required Software
|
## Required Software
|
||||||
|
|
||||||
- The original Aquaria Game (buyable from a lot of online game seller);
|
- The original Aquaria Game (purchasable from most online game stores)
|
||||||
- The [Aquaria randomizer](https://github.com/tioui/Aquaria_Randomizer/releases)
|
- The [Aquaria randomizer](https://github.com/tioui/Aquaria_Randomizer/releases)
|
||||||
- Optional, for sending [commands](/tutorial/Archipelago/commands/en) like `!hint`: the TextClient from [the most recent Archipelago release](https://github.com/ArchipelagoMW/Archipelago/releases)
|
|
||||||
|
## Optional Software
|
||||||
|
|
||||||
|
- For sending [commands](/tutorial/Archipelago/commands/en) like `!hint`: the TextClient from [the most recent Archipelago release](https://github.com/ArchipelagoMW/Archipelago/releases)
|
||||||
|
|
||||||
## Installation and execution Procedures
|
## Installation and execution Procedures
|
||||||
|
|
||||||
|
@ -13,10 +16,9 @@
|
||||||
First, you should copy the original Aquaria folder game. The randomizer will possibly modify the game so that
|
First, you should copy the original Aquaria folder game. The randomizer will possibly modify the game so that
|
||||||
the original game will stop working. Copying the folder will guarantee that the original game keeps on working.
|
the original game will stop working. Copying the folder will guarantee that the original game keeps on working.
|
||||||
Also, in Windows, the save files are stored in the Aquaria folder. So copying the Aquaria folder for every Multiworld
|
Also, in Windows, the save files are stored in the Aquaria folder. So copying the Aquaria folder for every Multiworld
|
||||||
game you play will make sure that every game has their own save game.
|
game you play will make sure that every game has its own save game.
|
||||||
|
|
||||||
Unzip the Aquaria randomizer release and copy all unzipped files in the Aquaria game folder. The unzipped files
|
Unzip the Aquaria randomizer release and copy all unzipped files in the Aquaria game folder. The unzipped files are:
|
||||||
are those:
|
|
||||||
- aquaria_randomizer.exe
|
- aquaria_randomizer.exe
|
||||||
- OpenAL32.dll
|
- OpenAL32.dll
|
||||||
- override (directory)
|
- override (directory)
|
||||||
|
@ -25,11 +27,11 @@ are those:
|
||||||
- wrap_oal.dll
|
- wrap_oal.dll
|
||||||
- cacert.pem
|
- cacert.pem
|
||||||
|
|
||||||
If there is a conflict between file in the original game folder and the unzipped files, you should override
|
If there is a conflict between files in the original game folder and the unzipped files, you should overwrite
|
||||||
the original files with the one of the unzipped randomizer.
|
the original files with the ones from the unzipped randomizer.
|
||||||
|
|
||||||
Finally, to launch the randomizer, you must use the command line interface (you can open the command line interface
|
Finally, to launch the randomizer, you must use the command line interface (you can open the command line interface
|
||||||
by writing `cmd` in the address bar of the Windows file explorer). Here is the command line to use to start the
|
by typing `cmd` in the address bar of the Windows File Explorer). Here is the command line used to start the
|
||||||
randomizer:
|
randomizer:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -44,8 +46,8 @@ aquaria_randomizer.exe --name YourName --server theServer:thePort --password th
|
||||||
|
|
||||||
### Linux when using the AppImage
|
### Linux when using the AppImage
|
||||||
|
|
||||||
If you use the AppImage, just copy it in the Aquaria game folder. You then have to make it executable. You
|
If you use the AppImage, just copy it into the Aquaria game folder. You then have to make it executable. You
|
||||||
can do that from command line by using
|
can do that from command line by using:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x Aquaria_Randomizer-*.AppImage
|
chmod +x Aquaria_Randomizer-*.AppImage
|
||||||
|
@ -65,7 +67,7 @@ or, if the room has a password:
|
||||||
./Aquaria_Randomizer-*.AppImage --name YourName --server theServer:thePort --password thePassword
|
./Aquaria_Randomizer-*.AppImage --name YourName --server theServer:thePort --password thePassword
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that you should not have multiple Aquaria_Randomizer AppImage file in the same folder. If this situation occurred,
|
Note that you should not have multiple Aquaria_Randomizer AppImage file in the same folder. If this situation occurs,
|
||||||
the preceding commands will launch the game multiple times.
|
the preceding commands will launch the game multiple times.
|
||||||
|
|
||||||
### Linux when using the tar file
|
### Linux when using the tar file
|
||||||
|
@ -73,24 +75,23 @@ the preceding commands will launch the game multiple times.
|
||||||
First, you should copy the original Aquaria folder game. The randomizer will possibly modify the game so that
|
First, you should copy the original Aquaria folder game. The randomizer will possibly modify the game so that
|
||||||
the original game will stop working. Copying the folder will guarantee that the original game keeps on working.
|
the original game will stop working. Copying the folder will guarantee that the original game keeps on working.
|
||||||
|
|
||||||
Untar the Aquaria randomizer release and copy all extracted files in the Aquaria game folder. The extracted
|
Untar the Aquaria randomizer release and copy all extracted files in the Aquaria game folder. The extracted files are:
|
||||||
files are those:
|
|
||||||
- aquaria_randomizer
|
- aquaria_randomizer
|
||||||
- override (directory)
|
- override (directory)
|
||||||
- usersettings.xml
|
- usersettings.xml
|
||||||
- cacert.pem
|
- cacert.pem
|
||||||
|
|
||||||
If there is a conflict between file in the original game folder and the extracted files, you should override
|
If there is a conflict between files in the original game folder and the extracted files, you should overwrite
|
||||||
the original files with the one of the extracted randomizer files.
|
the original files with the ones from the extracted randomizer files.
|
||||||
|
|
||||||
Then, you should use your system package manager to install liblua5, libogg, libvorbis, libopenal and libsdl2.
|
Then, you should use your system package manager to install `liblua5`, `libogg`, `libvorbis`, `libopenal` and `libsdl2`.
|
||||||
On Debian base system (like Ubuntu), you can use the following command:
|
On Debian base system (like Ubuntu), you can use the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install liblua5.1-0-dev libogg-dev libvorbis-dev libopenal-dev libsdl2-dev
|
sudo apt install liblua5.1-0-dev libogg-dev libvorbis-dev libopenal-dev libsdl2-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Also, if there is some `.so` files in the Aquaria original game folder (`libgcc_s.so.1`, `libopenal.so.1`,
|
Also, if there are certain `.so` files in the original Aquaria game folder (`libgcc_s.so.1`, `libopenal.so.1`,
|
||||||
`libSDL-1.2.so.0` and `libstdc++.so.6`), you should remove them from the Aquaria Randomizer game folder. Those are
|
`libSDL-1.2.so.0` and `libstdc++.so.6`), you should remove them from the Aquaria Randomizer game folder. Those are
|
||||||
old libraries that will not work on the recent build of the randomizer.
|
old libraries that will not work on the recent build of the randomizer.
|
||||||
|
|
||||||
|
@ -106,7 +107,7 @@ or, if the room has a password:
|
||||||
./aquaria_randomizer --name YourName --server theServer:thePort --password thePassword
|
./aquaria_randomizer --name YourName --server theServer:thePort --password thePassword
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: If you have a permission denied error when using the command line, you can use this command line to be
|
Note: If you get a permission denied error when using the command line, you can use this command to be
|
||||||
sure that your executable has executable permission:
|
sure that your executable has executable permission:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
@ -25,7 +25,7 @@ after_home_water_locations = [
|
||||||
"Open water top right area, bulb in the turtle room",
|
"Open water top right area, bulb in the turtle room",
|
||||||
"Open water top right area, Transturtle",
|
"Open water top right area, Transturtle",
|
||||||
"Open water bottom left area, bulb behind the chomper fish",
|
"Open water bottom left area, bulb behind the chomper fish",
|
||||||
"Open water bottom left area, bulb inside the downest fish pass",
|
"Open water bottom left area, bulb inside the lowest fish pass",
|
||||||
"Open water skeleton path, bulb close to the right exit",
|
"Open water skeleton path, bulb close to the right exit",
|
||||||
"Open water skeleton path, bulb behind the chomper fish",
|
"Open water skeleton path, bulb behind the chomper fish",
|
||||||
"Open water skeleton path, King skull",
|
"Open water skeleton path, King skull",
|
||||||
|
@ -82,7 +82,7 @@ after_home_water_locations = [
|
||||||
"Mithalas cathedral, third urn in the path behind the flesh vein",
|
"Mithalas cathedral, third urn in the path behind the flesh vein",
|
||||||
"Mithalas cathedral, one of the urns in the top right room",
|
"Mithalas cathedral, one of the urns in the top right room",
|
||||||
"Mithalas cathedral, Mithalan Dress",
|
"Mithalas cathedral, Mithalan Dress",
|
||||||
"Mithalas cathedral right area, urn bellow the left entrance",
|
"Mithalas cathedral right area, urn below the left entrance",
|
||||||
"Cathedral underground, bulb in the center part",
|
"Cathedral underground, bulb in the center part",
|
||||||
"Cathedral underground, first bulb in the top left part",
|
"Cathedral underground, first bulb in the top left part",
|
||||||
"Cathedral underground, second bulb in the top left part",
|
"Cathedral underground, second bulb in the top left part",
|
||||||
|
@ -178,7 +178,7 @@ after_home_water_locations = [
|
||||||
"The body main area, bulb on the main path blocking tube",
|
"The body main area, bulb on the main path blocking tube",
|
||||||
"The body left area, first bulb in the top face room",
|
"The body left area, first bulb in the top face room",
|
||||||
"The body left area, second bulb in the top face room",
|
"The body left area, second bulb in the top face room",
|
||||||
"The body left area, bulb bellow the water stream",
|
"The body left area, bulb below the water stream",
|
||||||
"The body left area, bulb in the top path to the top face room",
|
"The body left area, bulb in the top path to the top face room",
|
||||||
"The body left area, bulb in the bottom face room",
|
"The body left area, bulb in the bottom face room",
|
||||||
"The body right area, bulb in the top face room",
|
"The body right area, bulb in the top face room",
|
||||||
|
|
|
@ -18,7 +18,7 @@ class BindSongAccessTest(AquariaTestBase):
|
||||||
"""Test locations that require Bind song"""
|
"""Test locations that require Bind song"""
|
||||||
locations = [
|
locations = [
|
||||||
"Verse cave right area, Big Seed",
|
"Verse cave right area, Big Seed",
|
||||||
"Home water, bulb in the path bellow Nautilus Prime",
|
"Home water, bulb in the path below Nautilus Prime",
|
||||||
"Home water, bulb in the bottom left room",
|
"Home water, bulb in the bottom left room",
|
||||||
"Home water, Nautilus Egg",
|
"Home water, Nautilus Egg",
|
||||||
"Song cave, Verse egg",
|
"Song cave, Verse egg",
|
||||||
|
|
|
@ -24,7 +24,7 @@ class BindSongOptionAccessTest(AquariaTestBase):
|
||||||
"Song cave, bulb under the rock close to the song door",
|
"Song cave, bulb under the rock close to the song door",
|
||||||
"Song cave, bulb under the rock in the path to the singing statues",
|
"Song cave, bulb under the rock in the path to the singing statues",
|
||||||
"Naija's home, bulb under the rock at the right of the main path",
|
"Naija's home, bulb under the rock at the right of the main path",
|
||||||
"Home water, bulb in the path bellow Nautilus Prime",
|
"Home water, bulb in the path below Nautilus Prime",
|
||||||
"Home water, bulb in the bottom left room",
|
"Home water, bulb in the bottom left room",
|
||||||
"Home water, Nautilus Egg",
|
"Home water, Nautilus Egg",
|
||||||
"Song cave, Verse egg",
|
"Song cave, Verse egg",
|
||||||
|
|
|
@ -39,7 +39,7 @@ class EnergyFormAccessTest(AquariaTestBase):
|
||||||
"Mithalas cathedral, third urn in the path behind the flesh vein",
|
"Mithalas cathedral, third urn in the path behind the flesh vein",
|
||||||
"Mithalas cathedral, one of the urns in the top right room",
|
"Mithalas cathedral, one of the urns in the top right room",
|
||||||
"Mithalas cathedral, Mithalan Dress",
|
"Mithalas cathedral, Mithalan Dress",
|
||||||
"Mithalas cathedral right area, urn bellow the left entrance",
|
"Mithalas cathedral right area, urn below the left entrance",
|
||||||
"Cathedral boss area, beating Mithalan God",
|
"Cathedral boss area, beating Mithalan God",
|
||||||
"Kelp Forest top left area, bulb close to the Verse egg",
|
"Kelp Forest top left area, bulb close to the Verse egg",
|
||||||
"Kelp forest top left area, Verse egg",
|
"Kelp forest top left area, Verse egg",
|
||||||
|
@ -67,7 +67,6 @@ class EnergyFormAccessTest(AquariaTestBase):
|
||||||
"First secret",
|
"First secret",
|
||||||
"Sunken City cleared",
|
"Sunken City cleared",
|
||||||
"Objective complete",
|
"Objective complete",
|
||||||
|
|
||||||
]
|
]
|
||||||
items = [["Energy form"]]
|
items = [["Energy form"]]
|
||||||
self.assertAccessDependency(locations, items)
|
self.assertAccessDependency(locations, items)
|
|
@ -1,31 +0,0 @@
|
||||||
"""
|
|
||||||
Author: Louis M
|
|
||||||
Date: Thu, 18 Apr 2024 18:45:56 +0000
|
|
||||||
Description: Unit test used to test accessibility of locations with and without the bind song (with the early
|
|
||||||
energy form option)
|
|
||||||
"""
|
|
||||||
|
|
||||||
from worlds.aquaria.test import AquariaTestBase, after_home_water_locations
|
|
||||||
|
|
||||||
|
|
||||||
class EnergyFormAccessTest(AquariaTestBase):
|
|
||||||
"""Unit test used to test accessibility of locations with and without the energy form"""
|
|
||||||
options = {
|
|
||||||
"early_energy_form": True,
|
|
||||||
}
|
|
||||||
|
|
||||||
def test_energy_form_location(self) -> None:
|
|
||||||
"""Test locations that require Energy form with early energy song enable"""
|
|
||||||
locations = [
|
|
||||||
"Home water, Nautilus Egg",
|
|
||||||
"Naija's home, bulb after the energy door",
|
|
||||||
"Energy temple first area, bulb in the bottom room blocked by a rock",
|
|
||||||
"Energy temple second area, bulb under the rock",
|
|
||||||
"Energy temple bottom entrance, Krotite armor",
|
|
||||||
"Energy temple third area, bulb in the bottom path",
|
|
||||||
"Energy temple boss area, Fallen god tooth",
|
|
||||||
"Energy temple blaster room, Blaster egg",
|
|
||||||
*after_home_water_locations
|
|
||||||
]
|
|
||||||
items = [["Energy form"]]
|
|
||||||
self.assertAccessDependency(locations, items)
|
|
|
@ -21,7 +21,7 @@ class FishFormAccessTest(AquariaTestBase):
|
||||||
"Mithalas city, urn inside a home fish pass",
|
"Mithalas city, urn inside a home fish pass",
|
||||||
"Kelp Forest top right area, bulb in the top fish pass",
|
"Kelp Forest top right area, bulb in the top fish pass",
|
||||||
"The veil bottom area, Verse egg",
|
"The veil bottom area, Verse egg",
|
||||||
"Open water bottom left area, bulb inside the downest fish pass",
|
"Open water bottom left area, bulb inside the lowest fish pass",
|
||||||
"Kelp Forest top left area, bulb close to the Verse egg",
|
"Kelp Forest top left area, bulb close to the Verse egg",
|
||||||
"Kelp forest top left area, Verse egg",
|
"Kelp forest top left area, Verse egg",
|
||||||
"Mermog cave, bulb in the left part of the cave",
|
"Mermog cave, bulb in the left part of the cave",
|
||||||
|
|
|
@ -27,7 +27,7 @@ class LiAccessTest(AquariaTestBase):
|
||||||
"The body main area, bulb on the main path blocking tube",
|
"The body main area, bulb on the main path blocking tube",
|
||||||
"The body left area, first bulb in the top face room",
|
"The body left area, first bulb in the top face room",
|
||||||
"The body left area, second bulb in the top face room",
|
"The body left area, second bulb in the top face room",
|
||||||
"The body left area, bulb bellow the water stream",
|
"The body left area, bulb below the water stream",
|
||||||
"The body left area, bulb in the top path to the top face room",
|
"The body left area, bulb in the top path to the top face room",
|
||||||
"The body left area, bulb in the bottom face room",
|
"The body left area, bulb in the bottom face room",
|
||||||
"The body right area, bulb in the top face room",
|
"The body right area, bulb in the top face room",
|
||||||
|
|
|
@ -41,7 +41,7 @@ class NatureFormAccessTest(AquariaTestBase):
|
||||||
"The body main area, bulb on the main path blocking tube",
|
"The body main area, bulb on the main path blocking tube",
|
||||||
"The body left area, first bulb in the top face room",
|
"The body left area, first bulb in the top face room",
|
||||||
"The body left area, second bulb in the top face room",
|
"The body left area, second bulb in the top face room",
|
||||||
"The body left area, bulb bellow the water stream",
|
"The body left area, bulb below the water stream",
|
||||||
"The body left area, bulb in the top path to the top face room",
|
"The body left area, bulb in the top path to the top face room",
|
||||||
"The body left area, bulb in the bottom face room",
|
"The body left area, bulb in the bottom face room",
|
||||||
"The body right area, bulb in the top face room",
|
"The body right area, bulb in the top face room",
|
||||||
|
|
Loading…
Reference in New Issue