Aquaria: Adding Aquaria to README and some other minors changes (#3313)

This commit is contained in:
Louis M 2024-05-20 02:58:44 -04:00 committed by GitHub
parent bfe215d5a7
commit c792ae76ca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 106 additions and 143 deletions

View File

@ -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/).

View File

@ -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
} }

View File

@ -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,
} }

View File

@ -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

View File

@ -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()

View File

@ -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:

View File

@ -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.

View File

@ -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

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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)

View File

@ -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)

View File

@ -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",

View File

@ -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",

View File

@ -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",