Skip to content

Commit

Permalink
Aquaria: Adding Aquaria to README and some other minors changes (Arch…
Browse files Browse the repository at this point in the history
  • Loading branch information
tioui authored and qwint committed Jun 24, 2024
1 parent e48b1c9 commit c067311
Show file tree
Hide file tree
Showing 16 changed files with 106 additions and 143 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ Currently, the following games are supported:
* Yoshi's Island
* Mario & Luigi: Superstar Saga
* Bomb Rush Cyberfunk
* Aquaria
* Yu-Gi-Oh! Ultimate Masters: World Championship Tournament 2006

For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/).
Expand Down
20 changes: 12 additions & 8 deletions worlds/aquaria/Items.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@
from enum import Enum
from BaseClasses import Item, ItemClassification


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
PROGRESSION = 1
JUNK = 2


class ItemGroup(Enum):
"""
Used to group items
Expand All @@ -28,6 +30,7 @@ class ItemGroup(Enum):
SONG = 5
TURTLE = 6


class AquariaItem(Item):
"""
A single item in the Aquaria game.
Expand All @@ -40,22 +43,23 @@ def __init__(self, name: str, classification: ItemClassification,
"""
Initialisation 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 player: The ID of the player in the multiworld
"""
super().__init__(name, classification, code, player)


class ItemData:
"""
Data of an item.
"""
id:int
count:int
type:ItemType
group:ItemGroup
id: int
count: int
type: ItemType
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
@param id: The item ID
Expand All @@ -68,6 +72,7 @@ def __init__(self, id:int, count:int, type:ItemType, group:ItemGroup):
self.type = type
self.group = group


"""Information data for every (not event) item."""
item_table = {
# name: ID, Nb, Item Type, Item Group
Expand Down Expand Up @@ -207,4 +212,3 @@ def __init__(self, id:int, count:int, type:ItemType, group:ItemGroup):
"Transturtle Simon says": ItemData(698132, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_forest05
"Transturtle Arnassi ruins": ItemData(698133, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_seahorse
}

8 changes: 4 additions & 4 deletions worlds/aquaria/Locations.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class AquariaLocations:

locations_home_water = {
"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 end of the left path from the verse cave": 698061,
"Home water, bulb in the top left path": 698062,
Expand Down Expand Up @@ -129,7 +129,7 @@ class AquariaLocations:

locations_openwater_bl = {
"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 = {
Expand Down Expand Up @@ -226,7 +226,7 @@ class AquariaLocations:
"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, 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 = {
Expand Down Expand Up @@ -457,7 +457,7 @@ class AquariaLocations:
locations_body_l = {
"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, 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 bottom face room": 698070,
}
Expand Down
54 changes: 27 additions & 27 deletions worlds/aquaria/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@

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".
Select if the simple ingredients (that do 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
Expand All @@ -29,27 +28,25 @@ class DishRandomizer(Toggle):
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
option_none = 0
option_all = 1
option_all_except_final = 2
default = 2


class EarlyEnergyForm(DefaultOnToggle):
"""
Force the Energy Form to be in a location before leaving the areas around the Home Water.
"""
""" Force the Energy Form to be in a location early in the game """
display_name = "Early Energy Form"


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"


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".
"""
display_name = "Big bosses to beat"
Expand All @@ -60,60 +57,63 @@ class BigBossesToBeat(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",
"Mantis Shrimp Prime" and "King Jellyfish God Prime". Note that the Energy statue and Simon says are not
mini bosses.
"Mantis Shrimp Prime" and "King Jellyfish God Prime".
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_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
The game objective can be to kill the creator or to kill the creator after obtaining all three 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
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.
"""
display_name = "Skip first Naija's vision"
display_name = "Skip Naija's first 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.
Make sure that there are no progression items at hard-to-reach or hard-to-find locations.
Those locations are very High locations (that need beast form, soup and skill to get),
every location in the bubble cave, locations where need you to cross a false wall without any indication,
the Arnassi race, bosses and minibosses. Useful for those that want a more 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.
Make sure that the sun form or the dumbo pet can be acquired before getting to dark places.
Be aware that navigating in dark places 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.
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"


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"
option_off = 0
Expand Down
21 changes: 5 additions & 16 deletions worlds/aquaria/Regions.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"""

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 .Locations import AquariaLocations, AquariaLocation
from .Options import AquariaOptions
Expand Down Expand Up @@ -223,8 +223,6 @@ def __add_region(self, hint: str,
region.add_locations(locations, AquariaLocation)
return region



def __create_home_water_area(self) -> None:
"""
Create the `verse_cave`, `home_water` and `song_cave*` regions
Expand Down Expand Up @@ -941,7 +939,7 @@ def __add_event_secrets(self) -> None:
"""
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 obtained")
self.__add_event_location(self.mithalas_city,
Expand Down Expand Up @@ -1095,12 +1093,10 @@ def __adjusting_light_in_dark_place_rules(self) -> None:
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))



def __adjusting_manual_rules(self) -> None:
add_rule(self.multiworld.get_location("Mithalas cathedral, Mithalan Dress", 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))
add_rule(self.multiworld.get_location("Kelp forest bottom left area, Walker baby", self.player),
lambda state: _has_spirit_form(state, self.player))
Expand All @@ -1122,7 +1118,7 @@ def __adjusting_manual_rules(self) -> None:
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),
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))
add_rule(self.multiworld.get_location("Naija's home, bulb after the energy door", self.player),
lambda state: _has_energy_form(state, self.player))
Expand All @@ -1133,9 +1129,6 @@ def __adjusting_manual_rules(self) -> None:
lambda state: _has_fish_form(state, self.player) and
_has_spirit_form(state, self.player))




def __no_progression_hard_or_hidden_location(self) -> None:
self.multiworld.get_location("Energy temple boss area, Fallen god tooth",
self.player).item_rule =\
Expand Down Expand Up @@ -1242,11 +1235,7 @@ def adjusting_rules(self, options: AquariaOptions) -> None:
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))
if options.early_energy_form:
add_rule(self.multiworld.get_entrance("Home Water to Home water transturtle room", self.player),
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))
self.multiworld.early_items[self.player]["Energy form"] = 1

if options.no_progression_hard_or_hidden_locations:
self.__no_progression_hard_or_hidden_location()
Expand Down
4 changes: 2 additions & 2 deletions worlds/aquaria/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"""

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 .Items import item_table, AquariaItem, ItemType, ItemGroup
from .Locations import location_table
Expand Down Expand Up @@ -114,7 +114,7 @@ def create_regions(self) -> None:

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
try:
Expand Down
Loading

0 comments on commit c067311

Please sign in to comment.