diff --git a/worlds/aquaria/Items.py b/worlds/aquaria/Items.py index f822d675..88ac7c76 100644 --- a/worlds/aquaria/Items.py +++ b/worlds/aquaria/Items.py @@ -59,156 +59,316 @@ class ItemData: type: ItemType group: ItemGroup - def __init__(self, id: int, count: int, type: ItemType, group: ItemGroup): + def __init__(self, aId: int, count: int, aType: ItemType, group: ItemGroup): """ Initialisation of the item data - @param id: The item ID + @param aId: The item ID @param count: the number of items in the pool - @param type: the importance type of the item + @param aType: the importance type of the item @param group: the usage of the item in the game """ - self.id = id + self.id = aId self.count = count - self.type = type + self.type = aType self.group = group +class ItemNames: + """ + Constants used to represent the mane of every items. + """ + # Normal items + ANEMONE = "Anemone" + ARNASSI_STATUE = "Arnassi Statue" + BIG_SEED = "Big Seed" + GLOWING_SEED = "Glowing Seed" + BLACK_PEARL = "Black Pearl" + BABY_BLASTER = "Baby Blaster" + CRAB_ARMOR = "Crab Armor" + BABY_DUMBO = "Baby Dumbo" + TOOTH = "Tooth" + ENERGY_STATUE = "Energy Statue" + KROTITE_ARMOR = "Krotite Armor" + GOLDEN_STARFISH = "Golden Starfish" + GOLDEN_GEAR = "Golden Gear" + JELLY_BEACON = "Jelly Beacon" + JELLY_COSTUME = "Jelly Costume" + JELLY_PLANT = "Jelly Plant" + MITHALAS_DOLL = "Mithalas Doll" + MITHALAN_DRESS = "Mithalan Dress" + MITHALAS_BANNER = "Mithalas Banner" + MITHALAS_POT = "Mithalas Pot" + MUTANT_COSTUME = "Mutant Costume" + BABY_NAUTILUS = "Baby Nautilus" + BABY_PIRANHA = "Baby Piranha" + ARNASSI_ARMOR = "Arnassi Armor" + SEED_BAG = "Seed Bag" + KING_S_SKULL = "King's Skull" + SONG_PLANT_SPORE = "Song Plant Spore" + STONE_HEAD = "Stone Head" + SUN_KEY = "Sun Key" + GIRL_COSTUME = "Girl Costume" + ODD_CONTAINER = "Odd Container" + TRIDENT = "Trident" + TURTLE_EGG = "Turtle Egg" + JELLY_EGG = "Jelly Egg" + URCHIN_COSTUME = "Urchin Costume" + BABY_WALKER = "Baby Walker" + VEDHA_S_CURE_ALL = "Vedha's Cure-All" + ZUUNA_S_PEROGI = "Zuuna's Perogi" + ARCANE_POULTICE = "Arcane Poultice" + BERRY_ICE_CREAM = "Berry Ice Cream" + BUTTERY_SEA_LOAF = "Buttery Sea Loaf" + COLD_BORSCHT = "Cold Borscht" + COLD_SOUP = "Cold Soup" + CRAB_CAKE = "Crab Cake" + DIVINE_SOUP = "Divine Soup" + DUMBO_ICE_CREAM = "Dumbo Ice Cream" + FISH_OIL = "Fish Oil" + GLOWING_EGG = "Glowing Egg" + HAND_ROLL = "Hand Roll" + HEALING_POULTICE = "Healing Poultice" + HEARTY_SOUP = "Hearty Soup" + HOT_BORSCHT = "Hot Borscht" + HOT_SOUP = "Hot Soup" + ICE_CREAM = "Ice Cream" + LEADERSHIP_ROLL = "Leadership Roll" + LEAF_POULTICE = "Leaf Poultice" + LEECHING_POULTICE = "Leeching Poultice" + LEGENDARY_CAKE = "Legendary Cake" + LOAF_OF_LIFE = "Loaf of Life" + LONG_LIFE_SOUP = "Long Life Soup" + MAGIC_SOUP = "Magic Soup" + MUSHROOM_X_2 = "Mushroom x 2" + PEROGI = "Perogi" + PLANT_LEAF = "Plant Leaf" + PLUMP_PEROGI = "Plump Perogi" + POISON_LOAF = "Poison Loaf" + POISON_SOUP = "Poison Soup" + RAINBOW_MUSHROOM = "Rainbow Mushroom" + RAINBOW_SOUP = "Rainbow Soup" + RED_BERRY = "Red Berry" + RED_BULB_X_2 = "Red Bulb x 2" + ROTTEN_CAKE = "Rotten Cake" + ROTTEN_LOAF_X_8 = "Rotten Loaf x 8" + ROTTEN_MEAT = "Rotten Meat" + ROYAL_SOUP = "Royal Soup" + SEA_CAKE = "Sea Cake" + SEA_LOAF = "Sea Loaf" + SHARK_FIN_SOUP = "Shark Fin Soup" + SIGHT_POULTICE = "Sight Poultice" + SMALL_BONE_X_2 = "Small Bone x 2" + SMALL_EGG = "Small Egg" + SMALL_TENTACLE_X_2 = "Small Tentacle x 2" + SPECIAL_BULB = "Special Bulb" + SPECIAL_CAKE = "Special Cake" + SPICY_MEAT_X_2 = "Spicy Meat x 2" + SPICY_ROLL = "Spicy Roll" + SPICY_SOUP = "Spicy Soup" + SPIDER_ROLL = "Spider Roll" + SWAMP_CAKE = "Swamp Cake" + TASTY_CAKE = "Tasty Cake" + TASTY_ROLL = "Tasty Roll" + TOUGH_CAKE = "Tough Cake" + TURTLE_SOUP = "Turtle Soup" + VEDHA_SEA_CRISP = "Vedha Sea Crisp" + VEGGIE_CAKE = "Veggie Cake" + VEGGIE_ICE_CREAM = "Veggie Ice Cream" + VEGGIE_SOUP = "Veggie Soup" + VOLCANO_ROLL = "Volcano Roll" + HEALTH_UPGRADE = "Health Upgrade" + WOK = "Wok" + EEL_OIL_X_2 = "Eel Oil x 2" + FISH_MEAT_X_2 = "Fish Meat x 2" + FISH_OIL_X_3 = "Fish Oil x 3" + GLOWING_EGG_X_2 = "Glowing Egg x 2" + HEALING_POULTICE_X_2 = "Healing Poultice x 2" + HOT_SOUP_X_2 = "Hot Soup x 2" + LEADERSHIP_ROLL_X_2 = "Leadership Roll x 2" + LEAF_POULTICE_X_3 = "Leaf Poultice x 3" + PLANT_LEAF_X_2 = "Plant Leaf x 2" + PLANT_LEAF_X_3 = "Plant Leaf x 3" + ROTTEN_MEAT_X_2 = "Rotten Meat x 2" + ROTTEN_MEAT_X_8 = "Rotten Meat x 8" + SEA_LOAF_X_2 = "Sea Loaf x 2" + SMALL_BONE_X_3 = "Small Bone x 3" + SMALL_EGG_X_2 = "Small Egg x 2" + LI_AND_LI_SONG = "Li and Li Song" + SHIELD_SONG = "Shield Song" + BEAST_FORM = "Beast Form" + SUN_FORM = "Sun Form" + NATURE_FORM = "Nature Form" + ENERGY_FORM = "Energy Form" + BIND_SONG = "Bind Song" + FISH_FORM = "Fish Form" + SPIRIT_FORM = "Spirit Form" + DUAL_FORM = "Dual Form" + TRANSTURTLE_VEIL_TOP_LEFT = "Transturtle Veil top left" + TRANSTURTLE_VEIL_TOP_RIGHT = "Transturtle Veil top right" + TRANSTURTLE_OPEN_WATERS = "Transturtle Open Waters top right" + TRANSTURTLE_KELP_FOREST = "Transturtle Kelp Forest bottom left" + TRANSTURTLE_HOME_WATERS = "Transturtle Home Waters" + TRANSTURTLE_ABYSS = "Transturtle Abyss right" + TRANSTURTLE_BODY = "Transturtle Final Boss" + TRANSTURTLE_SIMON_SAYS = "Transturtle Simon Says" + TRANSTURTLE_ARNASSI_RUINS = "Transturtle Arnassi Ruins" + # Events name + BODY_TONGUE_CLEARED = "Body Tongue cleared" + HAS_SUN_CRYSTAL = "Has Sun Crystal" + FALLEN_GOD_BEATED = "Fallen God beated" + MITHALAN_GOD_BEATED = "Mithalan God beated" + DRUNIAN_GOD_BEATED = "Drunian God beated" + LUMEREAN_GOD_BEATED = "Lumerean God beated" + THE_GOLEM_BEATED = "The Golem beated" + NAUTILUS_PRIME_BEATED = "Nautilus Prime beated" + BLASTER_PEG_PRIME_BEATED = "Blaster Peg Prime beated" + MERGOG_BEATED = "Mergog beated" + MITHALAN_PRIESTS_BEATED = "Mithalan priests beated" + OCTOPUS_PRIME_BEATED = "Octopus Prime beated" + CRABBIUS_MAXIMUS_BEATED = "Crabbius Maximus beated" + MANTIS_SHRIMP_PRIME_BEATED = "Mantis Shrimp Prime beated" + KING_JELLYFISH_GOD_PRIME_BEATED = "King Jellyfish God Prime beated" + VICTORY = "Victory" + FIRST_SECRET_OBTAINED = "First Secret obtained" + SECOND_SECRET_OBTAINED = "Second Secret obtained" + THIRD_SECRET_OBTAINED = "Third Secret obtained" """Information data for every (not event) item.""" item_table = { # name: ID, Nb, Item Type, Item Group - "Anemone": ItemData(698000, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_anemone - "Arnassi Statue": ItemData(698001, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_arnassi_statue - "Big Seed": ItemData(698002, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_big_seed - "Glowing Seed": ItemData(698003, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_bio_seed - "Black Pearl": ItemData(698004, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_blackpearl - "Baby Blaster": ItemData(698005, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_blaster - "Crab Armor": ItemData(698006, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_crab_costume - "Baby Dumbo": ItemData(698007, 1, ItemType.PROGRESSION, ItemGroup.UTILITY), # collectible_dumbo - "Tooth": ItemData(698008, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_energy_boss - "Energy Statue": ItemData(698009, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_energy_statue - "Krotite Armor": ItemData(698010, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_energy_temple - "Golden Starfish": ItemData(698011, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_gold_star - "Golden Gear": ItemData(698012, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_golden_gear - "Jelly Beacon": ItemData(698013, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_jelly_beacon - "Jelly Costume": ItemData(698014, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_jelly_costume - "Jelly Plant": ItemData(698015, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_jelly_plant - "Mithalas Doll": ItemData(698016, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithala_doll - "Mithalan Dress": ItemData(698017, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithalan_costume - "Mithalas Banner": ItemData(698018, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithalas_banner - "Mithalas Pot": ItemData(698019, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithalas_pot - "Mutant Costume": ItemData(698020, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mutant_costume - "Baby Nautilus": ItemData(698021, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_nautilus - "Baby Piranha": ItemData(698022, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_piranha - "Arnassi Armor": ItemData(698023, 1, ItemType.PROGRESSION, ItemGroup.UTILITY), # collectible_seahorse_costume - "Seed Bag": ItemData(698024, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_seed_bag - "King's Skull": ItemData(698025, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_skull - "Song Plant Spore": ItemData(698026, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_spore_seed - "Stone Head": ItemData(698027, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_stone_head - "Sun Key": ItemData(698028, 1, ItemType.NORMAL, ItemGroup.COLLECTIBLE), # collectible_sun_key - "Girl Costume": ItemData(698029, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_teen_costume - "Odd Container": ItemData(698030, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_treasure_chest - "Trident": ItemData(698031, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_trident_head - "Turtle Egg": ItemData(698032, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_turtle_egg - "Jelly Egg": ItemData(698033, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_upsidedown_seed - "Urchin Costume": ItemData(698034, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_urchin_costume - "Baby Walker": ItemData(698035, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_walker - "Vedha's Cure-All-All": ItemData(698036, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_Vedha'sCure-All - "Zuuna's perogi": ItemData(698037, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_Zuuna'sperogi - "Arcane poultice": ItemData(698038, 7, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_arcanepoultice - "Berry ice cream": ItemData(698039, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_berryicecream - "Buttery sea loaf": ItemData(698040, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_butterysealoaf - "Cold borscht": ItemData(698041, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_coldborscht - "Cold soup": ItemData(698042, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_coldsoup - "Crab cake": ItemData(698043, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_crabcake - "Divine soup": ItemData(698044, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_divinesoup - "Dumbo ice cream": ItemData(698045, 3, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_dumboicecream - "Fish oil": ItemData(698046, 2, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_fishoil - "Glowing egg": ItemData(698047, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_glowingegg - "Hand roll": ItemData(698048, 5, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_handroll - "Healing poultice": ItemData(698049, 4, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_healingpoultice - "Hearty soup": ItemData(698050, 5, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_heartysoup - "Hot borscht": ItemData(698051, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_hotborscht - "Hot soup": ItemData(698052, 3, ItemType.PROGRESSION, ItemGroup.RECIPE), # ingredient_hotsoup - "Ice cream": ItemData(698053, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_icecream - "Leadership roll": ItemData(698054, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leadershiproll - "Leaf poultice": ItemData(698055, 5, ItemType.PROGRESSION, ItemGroup.RECIPE), # ingredient_leafpoultice - "Leeching poultice": ItemData(698056, 4, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leechingpoultice - "Legendary cake": ItemData(698057, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_legendarycake - "Loaf of life": ItemData(698058, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_loafoflife - "Long life soup": ItemData(698059, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_longlifesoup - "Magic soup": ItemData(698060, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_magicsoup - "Mushroom x 2": ItemData(698061, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_mushroom - "Perogi": ItemData(698062, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_perogi - "Plant leaf": ItemData(698063, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_plantleaf - "Plump perogi": ItemData(698064, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_plumpperogi - "Poison loaf": ItemData(698065, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_poisonloaf - "Poison soup": ItemData(698066, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_poisonsoup - "Rainbow mushroom": ItemData(698067, 4, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_rainbowmushroom - "Rainbow soup": ItemData(698068, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_rainbowsoup - "Red berry": ItemData(698069, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_redberry - "Red bulb x 2": ItemData(698070, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_redbulb - "Rotten cake": ItemData(698071, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_rottencake - "Rotten loaf x 8": ItemData(698072, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_rottenloaf - "Rotten meat": ItemData(698073, 5, ItemType.JUNK, ItemGroup.INGREDIENT), # ingredient_rottenmeat - "Royal soup": ItemData(698074, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_royalsoup - "Sea cake": ItemData(698075, 4, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_seacake - "Sea loaf": ItemData(698076, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_sealoaf - "Shark fin soup": ItemData(698077, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_sharkfinsoup - "Sight poultice": ItemData(698078, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_sightpoultice - "Small bone x 2": ItemData(698079, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallbone - "Small egg": ItemData(698080, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallegg - "Small tentacle x 2": ItemData(698081, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smalltentacle - "Special bulb": ItemData(698082, 5, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_specialbulb - "Special cake": ItemData(698083, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_specialcake - "Spicy meat x 2": ItemData(698084, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_spicymeat - "Spicy roll": ItemData(698085, 11, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_spicyroll - "Spicy soup": ItemData(698086, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_spicysoup - "Spider roll": ItemData(698087, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_spiderroll - "Swamp cake": ItemData(698088, 3, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_swampcake - "Tasty cake": ItemData(698089, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_tastycake - "Tasty roll": ItemData(698090, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_tastyroll - "Tough cake": ItemData(698091, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_toughcake - "Turtle soup": ItemData(698092, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_turtlesoup - "Vedha sea crisp": ItemData(698093, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_vedhaseacrisp - "Veggie cake": ItemData(698094, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_veggiecake - "Veggie ice cream": ItemData(698095, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_veggieicecream - "Veggie soup": ItemData(698096, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_veggiesoup - "Volcano roll": ItemData(698097, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_volcanoroll - "Health upgrade": ItemData(698098, 5, ItemType.NORMAL, ItemGroup.HEALTH), # upgrade_health_? - "Wok": ItemData(698099, 1, ItemType.NORMAL, ItemGroup.UTILITY), # upgrade_wok - "Eel oil x 2": ItemData(698100, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_eeloil - "Fish meat x 2": ItemData(698101, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_fishmeat - "Fish oil x 3": ItemData(698102, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_fishoil - "Glowing egg x 2": ItemData(698103, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_glowingegg - "Healing poultice x 2": ItemData(698104, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_healingpoultice - "Hot soup x 2": ItemData(698105, 1, ItemType.PROGRESSION, ItemGroup.RECIPE), # ingredient_hotsoup - "Leadership roll x 2": ItemData(698106, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leadershiproll - "Leaf poultice x 3": ItemData(698107, 2, ItemType.PROGRESSION, ItemGroup.RECIPE), # ingredient_leafpoultice - "Plant leaf x 2": ItemData(698108, 2, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_plantleaf - "Plant leaf x 3": ItemData(698109, 4, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_plantleaf - "Rotten meat x 2": ItemData(698110, 1, ItemType.JUNK, ItemGroup.INGREDIENT), # ingredient_rottenmeat - "Rotten meat x 8": ItemData(698111, 1, ItemType.JUNK, ItemGroup.INGREDIENT), # ingredient_rottenmeat - "Sea loaf x 2": ItemData(698112, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_sealoaf - "Small bone x 3": ItemData(698113, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallbone - "Small egg x 2": ItemData(698114, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallegg - "Li and Li song": ItemData(698115, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_li - "Shield song": ItemData(698116, 1, ItemType.NORMAL, ItemGroup.SONG), # song_shield - "Beast form": ItemData(698117, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_beast - "Sun form": ItemData(698118, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_sun - "Nature form": ItemData(698119, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_nature - "Energy form": ItemData(698120, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_energy - "Bind song": ItemData(698121, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_bind - "Fish form": ItemData(698122, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_fish - "Spirit form": ItemData(698123, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_spirit - "Dual form": ItemData(698124, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_dual - "Transturtle Veil top left": ItemData(698125, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_veil01 - "Transturtle Veil top right": ItemData(698126, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_veil02 - "Transturtle Open Water top right": ItemData(698127, 1, ItemType.PROGRESSION, - ItemGroup.TURTLE), # transport_openwater03 - "Transturtle Forest bottom left": ItemData(698128, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_forest04 - "Transturtle Home Water": ItemData(698129, 1, ItemType.NORMAL, ItemGroup.TURTLE), # transport_mainarea - "Transturtle Abyss right": ItemData(698130, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_abyss03 - "Transturtle Final Boss": ItemData(698131, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_finalboss - "Transturtle Simon Says": ItemData(698132, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_forest05 - "Transturtle Arnassi Ruins": ItemData(698133, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_seahorse + ItemNames.ANEMONE: ItemData(698000, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_anemone + ItemNames.ARNASSI_STATUE: ItemData(698001, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_arnassi_statue + ItemNames.BIG_SEED: ItemData(698002, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_big_seed + ItemNames.GLOWING_SEED: ItemData(698003, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_bio_seed + ItemNames.BLACK_PEARL: ItemData(698004, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_blackpearl + ItemNames.BABY_BLASTER: ItemData(698005, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_blaster + ItemNames.CRAB_ARMOR: ItemData(698006, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_crab_costume + ItemNames.BABY_DUMBO: ItemData(698007, 1, ItemType.PROGRESSION, ItemGroup.UTILITY), # collectible_dumbo + ItemNames.TOOTH: ItemData(698008, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_energy_boss + ItemNames.ENERGY_STATUE: ItemData(698009, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_energy_statue + ItemNames.KROTITE_ARMOR: ItemData(698010, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_energy_temple + ItemNames.GOLDEN_STARFISH: ItemData(698011, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_gold_star + ItemNames.GOLDEN_GEAR: ItemData(698012, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_golden_gear + ItemNames.JELLY_BEACON: ItemData(698013, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_jelly_beacon + ItemNames.JELLY_COSTUME: ItemData(698014, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_jelly_costume + ItemNames.JELLY_PLANT: ItemData(698015, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_jelly_plant + ItemNames.MITHALAS_DOLL: ItemData(698016, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithala_doll + ItemNames.MITHALAN_DRESS: ItemData(698017, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithalan_costume + ItemNames.MITHALAS_BANNER: ItemData(698018, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithalas_banner + ItemNames.MITHALAS_POT: ItemData(698019, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mithalas_pot + ItemNames.MUTANT_COSTUME: ItemData(698020, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_mutant_costume + ItemNames.BABY_NAUTILUS: ItemData(698021, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_nautilus + ItemNames.BABY_PIRANHA: ItemData(698022, 1, ItemType.NORMAL, ItemGroup.UTILITY), # collectible_piranha + ItemNames.ARNASSI_ARMOR: ItemData(698023, 1, ItemType.PROGRESSION, ItemGroup.UTILITY), # collectible_seahorse_costume + ItemNames.SEED_BAG: ItemData(698024, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_seed_bag + ItemNames.KING_S_SKULL: ItemData(698025, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_skull + ItemNames.SONG_PLANT_SPORE: ItemData(698026, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_spore_seed + ItemNames.STONE_HEAD: ItemData(698027, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_stone_head + ItemNames.SUN_KEY: ItemData(698028, 1, ItemType.NORMAL, ItemGroup.COLLECTIBLE), # collectible_sun_key + ItemNames.GIRL_COSTUME: ItemData(698029, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_teen_costume + ItemNames.ODD_CONTAINER: ItemData(698030, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_treasure_chest + ItemNames.TRIDENT: ItemData(698031, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_trident_head + ItemNames.TURTLE_EGG: ItemData(698032, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_turtle_egg + ItemNames.JELLY_EGG: ItemData(698033, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_upsidedown_seed + ItemNames.URCHIN_COSTUME: ItemData(698034, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_urchin_costume + ItemNames.BABY_WALKER: ItemData(698035, 1, ItemType.JUNK, ItemGroup.COLLECTIBLE), # collectible_walker + ItemNames.VEDHA_S_CURE_ALL: ItemData(698036, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_Vedha'sCure-All + ItemNames.ZUUNA_S_PEROGI: ItemData(698037, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_Zuuna'sperogi + ItemNames.ARCANE_POULTICE: ItemData(698038, 7, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_arcanepoultice + ItemNames.BERRY_ICE_CREAM: ItemData(698039, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_berryicecream + ItemNames.BUTTERY_SEA_LOAF: ItemData(698040, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_butterysealoaf + ItemNames.COLD_BORSCHT: ItemData(698041, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_coldborscht + ItemNames.COLD_SOUP: ItemData(698042, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_coldsoup + ItemNames.CRAB_CAKE: ItemData(698043, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_crabcake + ItemNames.DIVINE_SOUP: ItemData(698044, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_divinesoup + ItemNames.DUMBO_ICE_CREAM: ItemData(698045, 3, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_dumboicecream + ItemNames.FISH_OIL: ItemData(698046, 2, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_fishoil + ItemNames.GLOWING_EGG: ItemData(698047, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_glowingegg + ItemNames.HAND_ROLL: ItemData(698048, 5, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_handroll + ItemNames.HEALING_POULTICE: ItemData(698049, 4, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_healingpoultice + ItemNames.HEARTY_SOUP: ItemData(698050, 5, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_heartysoup + ItemNames.HOT_BORSCHT: ItemData(698051, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_hotborscht + ItemNames.HOT_SOUP: ItemData(698052, 3, ItemType.PROGRESSION, ItemGroup.RECIPE), # ingredient_hotsoup + ItemNames.ICE_CREAM: ItemData(698053, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_icecream + ItemNames.LEADERSHIP_ROLL: ItemData(698054, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leadershiproll + ItemNames.LEAF_POULTICE: ItemData(698055, 5, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leafpoultice + ItemNames.LEECHING_POULTICE: ItemData(698056, 4, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leechingpoultice + ItemNames.LEGENDARY_CAKE: ItemData(698057, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_legendarycake + ItemNames.LOAF_OF_LIFE: ItemData(698058, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_loafoflife + ItemNames.LONG_LIFE_SOUP: ItemData(698059, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_longlifesoup + ItemNames.MAGIC_SOUP: ItemData(698060, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_magicsoup + ItemNames.MUSHROOM_X_2: ItemData(698061, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_mushroom + ItemNames.PEROGI: ItemData(698062, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_perogi + ItemNames.PLANT_LEAF: ItemData(698063, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_plantleaf + ItemNames.PLUMP_PEROGI: ItemData(698064, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_plumpperogi + ItemNames.POISON_LOAF: ItemData(698065, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_poisonloaf + ItemNames.POISON_SOUP: ItemData(698066, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_poisonsoup + ItemNames.RAINBOW_MUSHROOM: ItemData(698067, 4, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_rainbowmushroom + ItemNames.RAINBOW_SOUP: ItemData(698068, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_rainbowsoup + ItemNames.RED_BERRY: ItemData(698069, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_redberry + ItemNames.RED_BULB_X_2: ItemData(698070, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_redbulb + ItemNames.ROTTEN_CAKE: ItemData(698071, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_rottencake + ItemNames.ROTTEN_LOAF_X_8: ItemData(698072, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_rottenloaf + ItemNames.ROTTEN_MEAT: ItemData(698073, 5, ItemType.JUNK, ItemGroup.INGREDIENT), # ingredient_rottenmeat + ItemNames.ROYAL_SOUP: ItemData(698074, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_royalsoup + ItemNames.SEA_CAKE: ItemData(698075, 4, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_seacake + ItemNames.SEA_LOAF: ItemData(698076, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_sealoaf + ItemNames.SHARK_FIN_SOUP: ItemData(698077, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_sharkfinsoup + ItemNames.SIGHT_POULTICE: ItemData(698078, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_sightpoultice + ItemNames.SMALL_BONE_X_2: ItemData(698079, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallbone + ItemNames.SMALL_EGG: ItemData(698080, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallegg + ItemNames.SMALL_TENTACLE_X_2: ItemData(698081, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smalltentacle + ItemNames.SPECIAL_BULB: ItemData(698082, 5, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_specialbulb + ItemNames.SPECIAL_CAKE: ItemData(698083, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_specialcake + ItemNames.SPICY_MEAT_X_2: ItemData(698084, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_spicymeat + ItemNames.SPICY_ROLL: ItemData(698085, 11, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_spicyroll + ItemNames.SPICY_SOUP: ItemData(698086, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_spicysoup + ItemNames.SPIDER_ROLL: ItemData(698087, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_spiderroll + ItemNames.SWAMP_CAKE: ItemData(698088, 3, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_swampcake + ItemNames.TASTY_CAKE: ItemData(698089, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_tastycake + ItemNames.TASTY_ROLL: ItemData(698090, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_tastyroll + ItemNames.TOUGH_CAKE: ItemData(698091, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_toughcake + ItemNames.TURTLE_SOUP: ItemData(698092, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_turtlesoup + ItemNames.VEDHA_SEA_CRISP: ItemData(698093, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_vedhaseacrisp + ItemNames.VEGGIE_CAKE: ItemData(698094, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_veggiecake + ItemNames.VEGGIE_ICE_CREAM: ItemData(698095, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_veggieicecream + ItemNames.VEGGIE_SOUP: ItemData(698096, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_veggiesoup + ItemNames.VOLCANO_ROLL: ItemData(698097, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_volcanoroll + ItemNames.HEALTH_UPGRADE: ItemData(698098, 5, ItemType.NORMAL, ItemGroup.HEALTH), # upgrade_health_? + ItemNames.WOK: ItemData(698099, 1, ItemType.NORMAL, ItemGroup.UTILITY), # upgrade_wok + ItemNames.EEL_OIL_X_2: ItemData(698100, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_eeloil + ItemNames.FISH_MEAT_X_2: ItemData(698101, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_fishmeat + ItemNames.FISH_OIL_X_3: ItemData(698102, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_fishoil + ItemNames.GLOWING_EGG_X_2: ItemData(698103, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_glowingegg + ItemNames.HEALING_POULTICE_X_2: ItemData(698104, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_healingpoultice + ItemNames.HOT_SOUP_X_2: ItemData(698105, 1, ItemType.PROGRESSION, ItemGroup.RECIPE), # ingredient_hotsoup + ItemNames.LEADERSHIP_ROLL_X_2: ItemData(698106, 1, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leadershiproll + ItemNames.LEAF_POULTICE_X_3: ItemData(698107, 2, ItemType.NORMAL, ItemGroup.RECIPE), # ingredient_leafpoultice + ItemNames.PLANT_LEAF_X_2: ItemData(698108, 2, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_plantleaf + ItemNames.PLANT_LEAF_X_3: ItemData(698109, 4, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_plantleaf + ItemNames.ROTTEN_MEAT_X_2: ItemData(698110, 1, ItemType.JUNK, ItemGroup.INGREDIENT), # ingredient_rottenmeat + ItemNames.ROTTEN_MEAT_X_8: ItemData(698111, 1, ItemType.JUNK, ItemGroup.INGREDIENT), # ingredient_rottenmeat + ItemNames.SEA_LOAF_X_2: ItemData(698112, 1, ItemType.JUNK, ItemGroup.RECIPE), # ingredient_sealoaf + ItemNames.SMALL_BONE_X_3: ItemData(698113, 3, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallbone + ItemNames.SMALL_EGG_X_2: ItemData(698114, 1, ItemType.NORMAL, ItemGroup.INGREDIENT), # ingredient_smallegg + ItemNames.LI_AND_LI_SONG: ItemData(698115, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_li + ItemNames.SHIELD_SONG: ItemData(698116, 1, ItemType.NORMAL, ItemGroup.SONG), # song_shield + ItemNames.BEAST_FORM: ItemData(698117, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_beast + ItemNames.SUN_FORM: ItemData(698118, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_sun + ItemNames.NATURE_FORM: ItemData(698119, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_nature + ItemNames.ENERGY_FORM: ItemData(698120, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_energy + ItemNames.BIND_SONG: ItemData(698121, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_bind + ItemNames.FISH_FORM: ItemData(698122, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_fish + ItemNames.SPIRIT_FORM: ItemData(698123, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_spirit + ItemNames.DUAL_FORM: ItemData(698124, 1, ItemType.PROGRESSION, ItemGroup.SONG), # song_dual + ItemNames.TRANSTURTLE_VEIL_TOP_LEFT: ItemData(698125, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_veil01 + ItemNames.TRANSTURTLE_VEIL_TOP_RIGHT: ItemData(698126, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_veil02 + ItemNames.TRANSTURTLE_OPEN_WATERS: ItemData(698127, 1, ItemType.PROGRESSION, + ItemGroup.TURTLE), # transport_openwater03 + ItemNames.TRANSTURTLE_KELP_FOREST: ItemData(698128, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), + # transport_forest04 + ItemNames.TRANSTURTLE_HOME_WATERS: ItemData(698129, 1, ItemType.NORMAL, ItemGroup.TURTLE), # transport_mainarea + ItemNames.TRANSTURTLE_ABYSS: ItemData(698130, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_abyss03 + ItemNames.TRANSTURTLE_BODY: ItemData(698131, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_finalboss + ItemNames.TRANSTURTLE_SIMON_SAYS: ItemData(698132, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_forest05 + ItemNames.TRANSTURTLE_ARNASSI_RUINS: ItemData(698133, 1, ItemType.PROGRESSION, ItemGroup.TURTLE), # transport_seahorse } diff --git a/worlds/aquaria/Locations.py b/worlds/aquaria/Locations.py index f6e09810..832d22f4 100644 --- a/worlds/aquaria/Locations.py +++ b/worlds/aquaria/Locations.py @@ -26,476 +26,785 @@ class AquariaLocation(Location): self.event = code is None -class AquariaLocations: +class AquariaLocationNames: + """ + Constants used to represent every name of every locations. + """ + VERSE_CAVE_RIGHT_AREA_BULB_IN_THE_SKELETON_ROOM = "Verse Cave right area, bulb in the skeleton room" + VERSE_CAVE_RIGHT_AREA_BULB_IN_THE_PATH_RIGHT_OF_THE_SKELETON_ROOM = \ + "Verse Cave right area, bulb in the path right of the skeleton room" + VERSE_CAVE_RIGHT_AREA_BIG_SEED = "Verse Cave right area, Big Seed" + VERSE_CAVE_LEFT_AREA_THE_NAIJA_HINT_ABOUT_THE_SHIELD_ABILITY = \ + "Verse Cave left area, the Naija hint about the shield ability" + VERSE_CAVE_LEFT_AREA_BULB_IN_THE_CENTER_PART = "Verse Cave left area, bulb in the center part" + VERSE_CAVE_LEFT_AREA_BULB_IN_THE_RIGHT_PART = "Verse Cave left area, bulb in the right part" + VERSE_CAVE_LEFT_AREA_BULB_UNDER_THE_ROCK_AT_THE_END_OF_THE_PATH = \ + "Verse Cave left area, bulb under the rock at the end of the path" + HOME_WATERS_BULB_BELOW_THE_GROUPER_FISH = "Home Waters, bulb below the grouper fish" + HOME_WATERS_BULB_IN_THE_LITTLE_ROOM_ABOVE_THE_GROUPER_FISH = \ + "Home Waters, bulb in the little room above the grouper fish" + HOME_WATERS_BULB_IN_THE_END_OF_THE_PATH_CLOSE_TO_THE_VERSE_CAVE = \ + "Home Waters, bulb in the end of the path close to the Verse Cave" + HOME_WATERS_BULB_IN_THE_TOP_LEFT_PATH = "Home Waters, bulb in the top left path" + HOME_WATERS_BULB_CLOSE_TO_NAIJA_S_HOME = "Home Waters, bulb close to Naija's Home" + HOME_WATERS_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH_FROM_THE_VERSE_CAVE = \ + "Home Waters, bulb under the rock in the left path from the Verse Cave" + HOME_WATERS_BULB_IN_THE_PATH_BELOW_NAUTILUS_PRIME = "Home Waters, bulb in the path below Nautilus Prime" + HOME_WATERS_BULB_IN_THE_BOTTOM_LEFT_ROOM = "Home Waters, bulb in the bottom left room" + HOME_WATERS_NAUTILUS_EGG = "Home Waters, Nautilus Egg" + HOME_WATERS_TRANSTURTLE = "Home Waters, Transturtle" + NAIJA_S_HOME_BULB_AFTER_THE_ENERGY_DOOR = "Naija's Home, bulb after the energy door" + 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" + SONG_CAVE_ERULIAN_SPIRIT = "Song Cave, Erulian spirit" + SONG_CAVE_BULB_IN_THE_TOP_RIGHT_PART = "Song Cave, bulb in the top right part" + SONG_CAVE_BULB_IN_THE_BIG_ANEMONE_ROOM = "Song Cave, bulb in the big anemone room" + SONG_CAVE_BULB_IN_THE_PATH_TO_THE_SINGING_STATUES = "Song Cave, bulb in the path to the singing statues" + 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" + SONG_CAVE_BULB_UNDER_THE_ROCK_CLOSE_TO_THE_SONG_DOOR = "Song Cave, bulb under the rock close to the song door" + SONG_CAVE_VERSE_EGG = "Song Cave, Verse Egg" + SONG_CAVE_JELLY_BEACON = "Song Cave, Jelly Beacon" + SONG_CAVE_ANEMONE_SEED = "Song Cave, Anemone Seed" + ENERGY_TEMPLE_FIRST_AREA_BEATING_THE_ENERGY_STATUE = "Energy Temple first area, beating the Energy Statue" + ENERGY_TEMPLE_FIRST_AREA_BULB_IN_THE_BOTTOM_ROOM_BLOCKED_BY_A_ROCK =\ + "Energy Temple first area, bulb in the bottom room blocked by a rock" + ENERGY_TEMPLE_ENERGY_IDOL = "Energy Temple, Energy Idol" + ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK = "Energy Temple second area, bulb under the rock" + ENERGY_TEMPLE_BOTTOM_ENTRANCE_KROTITE_ARMOR = "Energy Temple bottom entrance, Krotite Armor" + ENERGY_TEMPLE_THIRD_AREA_BULB_IN_THE_BOTTOM_PATH = "Energy Temple third area, bulb in the bottom path" + ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH = "Energy Temple boss area, Fallen God Tooth" + ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG = "Energy Temple blaster room, Blaster Egg" + OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH = \ + "Open Waters top left area, bulb under the rock in the right path" + OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH = \ + "Open Waters top left area, bulb under the rock in the left path" + OPEN_WATERS_TOP_LEFT_AREA_BULB_TO_THE_RIGHT_OF_THE_SAVE_CRYSTAL = \ + "Open Waters top left area, bulb to the right of the save crystal" + OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_SMALL_PATH_BEFORE_MITHALAS = \ + "Open Waters top right area, bulb in the small path before Mithalas" + OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_PATH_FROM_THE_LEFT_ENTRANCE = \ + "Open Waters top right area, bulb in the path from the left entrance" + OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_CLEARING_CLOSE_TO_THE_BOTTOM_EXIT = \ + "Open Waters top right area, bulb in the clearing close to the bottom exit" + OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_BIG_CLEARING_CLOSE_TO_THE_SAVE_CRYSTAL = \ + "Open Waters top right area, bulb in the big clearing close to the save crystal" + OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_BIG_CLEARING_TO_THE_TOP_EXIT = \ + "Open Waters top right area, bulb in the big clearing to the top exit" + OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_TURTLE_ROOM = "Open Waters top right area, bulb in the turtle room" + OPEN_WATERS_TOP_RIGHT_AREA_TRANSTURTLE = "Open Waters top right area, Transturtle" + OPEN_WATERS_TOP_RIGHT_AREA_FIRST_URN_IN_THE_MITHALAS_EXIT = \ + "Open Waters top right area, first urn in the Mithalas exit" + OPEN_WATERS_TOP_RIGHT_AREA_SECOND_URN_IN_THE_MITHALAS_EXIT = \ + "Open Waters top right area, second urn in the Mithalas exit" + OPEN_WATERS_TOP_RIGHT_AREA_THIRD_URN_IN_THE_MITHALAS_EXIT = \ + "Open Waters top right area, third urn in the Mithalas exit" + OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_BEHIND_THE_CHOMPER_FISH = \ + "Open Waters bottom left area, bulb behind the chomper fish" + OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_INSIDE_THE_LOWEST_FISH_PASS = \ + "Open Waters bottom left area, bulb inside the lowest fish pass" + OPEN_WATERS_SKELETON_PATH_BULB_CLOSE_TO_THE_RIGHT_EXIT = "Open Waters skeleton path, bulb close to the right exit" + OPEN_WATERS_SKELETON_PATH_BULB_BEHIND_THE_CHOMPER_FISH = "Open Waters skeleton path, bulb behind the chomper fish" + OPEN_WATERS_SKELETON_PATH_KING_SKULL = "Open Waters skeleton path, King Skull" + ARNASSI_RUINS_BULB_IN_THE_RIGHT_PART = "Arnassi Ruins, bulb in the right part" + ARNASSI_RUINS_BULB_IN_THE_LEFT_PART = "Arnassi Ruins, bulb in the left part" + ARNASSI_RUINS_BULB_IN_THE_CENTER_PART = "Arnassi Ruins, bulb in the center part" + ARNASSI_RUINS_SONG_PLANT_SPORE = "Arnassi Ruins, Song Plant Spore" + ARNASSI_RUINS_ARNASSI_ARMOR = "Arnassi Ruins, Arnassi Armor" + ARNASSI_RUINS_ARNASSI_STATUE = "Arnassi Ruins, Arnassi Statue" + ARNASSI_RUINS_TRANSTURTLE = "Arnassi Ruins, Transturtle" + ARNASSI_RUINS_CRAB_ARMOR = "Arnassi Ruins, Crab Armor" + SIMON_SAYS_AREA_BEATING_SIMON_SAYS = "Simon Says area, beating Simon Says" + SIMON_SAYS_AREA_TRANSTURTLE = "Simon Says area, Transturtle" + MITHALAS_CITY_FIRST_BULB_IN_THE_LEFT_CITY_PART = "Mithalas City, first bulb in the left city part" + MITHALAS_CITY_SECOND_BULB_IN_THE_LEFT_CITY_PART = "Mithalas City, second bulb in the left city part" + MITHALAS_CITY_BULB_IN_THE_RIGHT_PART = "Mithalas City, bulb in the right part" + MITHALAS_CITY_BULB_AT_THE_TOP_OF_THE_CITY = "Mithalas City, bulb at the top of the city" + MITHALAS_CITY_FIRST_BULB_IN_A_BROKEN_HOME = "Mithalas City, first bulb in a broken home" + MITHALAS_CITY_SECOND_BULB_IN_A_BROKEN_HOME = "Mithalas City, second bulb in a broken home" + MITHALAS_CITY_BULB_IN_THE_BOTTOM_LEFT_PART = "Mithalas City, bulb in the bottom left part" + MITHALAS_CITY_FIRST_BULB_IN_ONE_OF_THE_HOMES = "Mithalas City, first bulb in one of the homes" + MITHALAS_CITY_SECOND_BULB_IN_ONE_OF_THE_HOMES = "Mithalas City, second bulb in one of the homes" + MITHALAS_CITY_FIRST_URN_IN_ONE_OF_THE_HOMES = "Mithalas City, first urn in one of the homes" + MITHALAS_CITY_SECOND_URN_IN_ONE_OF_THE_HOMES = "Mithalas City, second urn in one of the homes" + MITHALAS_CITY_FIRST_URN_IN_THE_CITY_RESERVE = "Mithalas City, first urn in the city reserve" + MITHALAS_CITY_SECOND_URN_IN_THE_CITY_RESERVE = "Mithalas City, second urn in the city reserve" + MITHALAS_CITY_THIRD_URN_IN_THE_CITY_RESERVE = "Mithalas City, third urn in the city reserve" + MITHALAS_CITY_FIRST_BULB_AT_THE_END_OF_THE_TOP_PATH = "Mithalas City, first bulb at the end of the top path" + MITHALAS_CITY_SECOND_BULB_AT_THE_END_OF_THE_TOP_PATH = "Mithalas City, second bulb at the end of the top path" + MITHALAS_CITY_BULB_IN_THE_TOP_PATH = "Mithalas City, bulb in the top path" + MITHALAS_CITY_MITHALAS_POT = "Mithalas City, Mithalas Pot" + MITHALAS_CITY_URN_IN_THE_CASTLE_FLOWER_TUBE_ENTRANCE = "Mithalas City, urn in the Castle flower tube entrance" + MITHALAS_CITY_DOLL = "Mithalas City, Doll" + MITHALAS_CITY_URN_INSIDE_A_HOME_FISH_PASS = "Mithalas City, urn inside a home fish pass" + MITHALAS_CITY_CASTLE_BULB_IN_THE_FLESH_HOLE = "Mithalas City Castle, bulb in the flesh hole" + MITHALAS_CITY_CASTLE_BLUE_BANNER = "Mithalas City Castle, Blue Banner" + MITHALAS_CITY_CASTLE_URN_IN_THE_BEDROOM = "Mithalas City Castle, urn in the bedroom" + MITHALAS_CITY_CASTLE_FIRST_URN_OF_THE_SINGLE_LAMP_PATH = "Mithalas City Castle, first urn of the single lamp path" + MITHALAS_CITY_CASTLE_SECOND_URN_OF_THE_SINGLE_LAMP_PATH = "Mithalas City Castle, second urn of the single lamp path" + MITHALAS_CITY_CASTLE_URN_IN_THE_BOTTOM_ROOM = "Mithalas City Castle, urn in the bottom room" + MITHALAS_CITY_CASTLE_FIRST_URN_ON_THE_ENTRANCE_PATH = "Mithalas City Castle, first urn on the entrance path" + MITHALAS_CITY_CASTLE_SECOND_URN_ON_THE_ENTRANCE_PATH = "Mithalas City Castle, second urn on the entrance path" + MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS = "Mithalas City Castle, beating the Priests" + MITHALAS_CITY_CASTLE_TRIDENT_HEAD = "Mithalas City Castle, Trident Head" + MITHALAS_CATHEDRAL_BULB_IN_THE_FLESH_ROOM_WITH_FLEAS = "Mithalas Cathedral, bulb in the flesh room with fleas" + MITHALAS_CATHEDRAL_MITHALAN_DRESS = "Mithalas Cathedral, Mithalan Dress" + MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_TOP_RIGHT_ROOM = "Mithalas Cathedral, first urn in the top right room" + MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_TOP_RIGHT_ROOM = "Mithalas Cathedral, second urn in the top right room" + MITHALAS_CATHEDRAL_THIRD_URN_IN_THE_TOP_RIGHT_ROOM = "Mithalas Cathedral, third urn in the top right room" + MITHALAS_CATHEDRAL_URN_BEHIND_THE_FLESH_VEIN = "Mithalas Cathedral, urn behind the flesh vein" + MITHALAS_CATHEDRAL_URN_IN_THE_TOP_LEFT_EYES_BOSS_ROOM = "Mithalas Cathedral, urn in the top left eyes boss room" + MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN =\ + "Mithalas Cathedral, first urn in the path behind the flesh vein" + MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN =\ + "Mithalas Cathedral, second urn in the path behind the flesh vein" + MITHALAS_CATHEDRAL_THIRD_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN =\ + "Mithalas Cathedral, third urn in the path behind the flesh vein" + MITHALAS_CATHEDRAL_FOURTH_URN_IN_THE_TOP_RIGHT_ROOM = "Mithalas Cathedral, fourth urn in the top right room" + MITHALAS_CATHEDRAL_URN_BELOW_THE_LEFT_ENTRANCE = "Mithalas Cathedral, urn below the left entrance" + MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_BOTTOM_RIGHT_PATH = "Mithalas Cathedral, first urn in the bottom right path" + MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_BOTTOM_RIGHT_PATH = "Mithalas Cathedral, second urn in the bottom right path" + 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" + CATHEDRAL_UNDERGROUND_THIRD_BULB_IN_THE_TOP_LEFT_PART = "Cathedral Underground, third bulb in the top left part" + CATHEDRAL_UNDERGROUND_BULB_CLOSE_TO_THE_SAVE_CRYSTAL = "Cathedral Underground, bulb close to the save crystal" + CATHEDRAL_UNDERGROUND_BULB_IN_THE_BOTTOM_RIGHT_PATH = "Cathedral Underground, bulb in the bottom right path" + MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD = "Mithalas boss area, beating Mithalan God" + KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_BOTTOM_LEFT_CLEARING =\ + "Kelp Forest top left area, bulb in the bottom left clearing" + KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_PATH_DOWN_FROM_THE_TOP_LEFT_CLEARING =\ + "Kelp Forest top left area, bulb in the path down from the top left clearing" + KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_TOP_LEFT_CLEARING = "Kelp Forest top left area, bulb in the top left clearing" + KELP_FOREST_TOP_LEFT_AREA_JELLY_EGG = "Kelp Forest top left area, Jelly Egg" + 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" + KELP_FOREST_TOP_RIGHT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH =\ + "Kelp Forest top right area, bulb under the rock in the right path" + KELP_FOREST_TOP_RIGHT_AREA_BULB_AT_THE_LEFT_OF_THE_CENTER_CLEARING =\ + "Kelp Forest top right area, bulb at the left of the center clearing" + KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_LEFT_PATH_S_BIG_ROOM =\ + "Kelp Forest top right area, bulb in the left path's big room" + KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_LEFT_PATH_S_SMALL_ROOM =\ + "Kelp Forest top right area, bulb in the left path's small room" + KELP_FOREST_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_CENTER_CLEARING =\ + "Kelp Forest top right area, bulb at the top of the center clearing" + KELP_FOREST_TOP_RIGHT_AREA_BLACK_PEARL = "Kelp Forest top right area, Black Pearl" + KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_TOP_FISH_PASS = "Kelp Forest top right area, bulb in the top fish pass" + KELP_FOREST_BOTTOM_LEFT_AREA_TRANSTURTLE = "Kelp Forest bottom left area, Transturtle" + KELP_FOREST_BOTTOM_LEFT_AREA_BULB_CLOSE_TO_THE_SPIRIT_CRYSTALS =\ + "Kelp Forest bottom left area, bulb close to the spirit crystals" + KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY = "Kelp Forest bottom left area, Walker Baby" + KELP_FOREST_BOTTOM_LEFT_AREA_FISH_CAVE_PUZZLE = "Kelp Forest bottom left area, Fish Cave puzzle" + KELP_FOREST_BOTTOM_RIGHT_AREA_ODD_CONTAINER = "Kelp Forest bottom right area, Odd Container" + KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD = "Kelp Forest boss area, beating Drunian God" + KELP_FOREST_BOSS_ROOM_BULB_AT_THE_BOTTOM_OF_THE_AREA = "Kelp Forest boss room, bulb at the bottom of the area" + KELP_FOREST_SPRITE_CAVE_BULB_INSIDE_THE_FISH_PASS = "Kelp Forest sprite cave, bulb inside the fish pass" + KELP_FOREST_SPRITE_CAVE_BULB_IN_THE_SECOND_ROOM = "Kelp Forest sprite cave, bulb in the second room" + KELP_FOREST_SPRITE_CAVE_SEED_BAG = "Kelp Forest sprite cave, Seed Bag" + MERMOG_CAVE_BULB_IN_THE_LEFT_PART_OF_THE_CAVE = "Mermog cave, bulb in the left part of the cave" + MERMOG_CAVE_PIRANHA_EGG = "Mermog cave, Piranha Egg" + THE_VEIL_TOP_LEFT_AREA_IN_LI_S_CAVE = "The Veil top left area, In Li's cave" + THE_VEIL_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_TOP_RIGHT_PATH =\ + "The Veil top left area, bulb under the rock in the top right path" + THE_VEIL_TOP_LEFT_AREA_BULB_HIDDEN_BEHIND_THE_BLOCKING_ROCK =\ + "The Veil top left area, bulb hidden behind the blocking rock" + THE_VEIL_TOP_LEFT_AREA_TRANSTURTLE = "The Veil top left area, Transturtle" + THE_VEIL_TOP_LEFT_AREA_BULB_INSIDE_THE_FISH_PASS = "The Veil top left area, bulb inside the fish pass" + TURTLE_CAVE_TURTLE_EGG = "Turtle cave, Turtle Egg" + TURTLE_CAVE_BULB_IN_BUBBLE_CLIFF = "Turtle cave, bulb in Bubble Cliff" + TURTLE_CAVE_URCHIN_COSTUME = "Turtle cave, Urchin Costume" + THE_VEIL_TOP_RIGHT_AREA_BULB_IN_THE_MIDDLE_OF_THE_WALL_JUMP_CLIFF = \ + "The Veil top right area, bulb in the middle of the wall jump cliff" + THE_VEIL_TOP_RIGHT_AREA_GOLDEN_STARFISH = "The Veil top right area, Golden Starfish" + THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL = \ + "The Veil top right area, bulb at the top of the waterfall" + THE_VEIL_TOP_RIGHT_AREA_TRANSTURTLE = "The Veil top right area, Transturtle" + THE_VEIL_BOTTOM_AREA_BULB_IN_THE_LEFT_PATH = "The Veil bottom area, bulb in the left path" + THE_VEIL_BOTTOM_AREA_BULB_IN_THE_SPIRIT_PATH = "The Veil bottom area, bulb in the spirit path" + THE_VEIL_BOTTOM_AREA_VERSE_EGG = "The Veil bottom area, Verse Egg" + THE_VEIL_BOTTOM_AREA_STONE_HEAD = "The Veil bottom area, Stone Head" + OCTOPUS_CAVE_DUMBO_EGG = "Octopus Cave, Dumbo Egg" + OCTOPUS_CAVE_BULB_IN_THE_PATH_BELOW_THE_OCTOPUS_CAVE_PATH =\ + "Octopus Cave, bulb in the path below the Octopus Cave path" + SUN_TEMPLE_BULB_IN_THE_TOP_LEFT_PART = "Sun Temple, bulb in the top left part" + SUN_TEMPLE_BULB_IN_THE_TOP_RIGHT_PART = "Sun Temple, bulb in the top right part" + SUN_TEMPLE_BULB_AT_THE_TOP_OF_THE_HIGH_DARK_ROOM = "Sun Temple, bulb at the top of the high dark room" + SUN_TEMPLE_GOLDEN_GEAR = "Sun Temple, Golden Gear" + SUN_TEMPLE_FIRST_BULB_OF_THE_TEMPLE = "Sun Temple, first bulb of the temple" + SUN_TEMPLE_BULB_ON_THE_RIGHT_PART = "Sun Temple, bulb on the right part" + SUN_TEMPLE_BULB_IN_THE_HIDDEN_ROOM_OF_THE_RIGHT_PART = "Sun Temple, bulb in the hidden room of the right part" + SUN_TEMPLE_SUN_KEY = "Sun Temple, Sun Key" + SUN_TEMPLE_BOSS_PATH_FIRST_PATH_BULB = "Sun Temple boss path, first path bulb" + SUN_TEMPLE_BOSS_PATH_SECOND_PATH_BULB = "Sun Temple boss path, second path bulb" + SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB = "Sun Temple boss path, first cliff bulb" + SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB = "Sun Temple boss path, second cliff bulb" + SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD = "Sun Temple boss area, beating Lumerean God" + ABYSS_LEFT_AREA_BULB_IN_HIDDEN_PATH_ROOM = "Abyss left area, bulb in hidden path room" + ABYSS_LEFT_AREA_BULB_IN_THE_RIGHT_PART = "Abyss left area, bulb in the right part" + ABYSS_LEFT_AREA_GLOWING_SEED = "Abyss left area, Glowing Seed" + ABYSS_LEFT_AREA_GLOWING_PLANT = "Abyss left area, Glowing Plant" + ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS = "Abyss left area, bulb in the bottom fish pass" + ABYSS_RIGHT_AREA_BULB_IN_THE_MIDDLE_PATH = "Abyss right area, bulb in the middle path" + ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_MIDDLE_PATH =\ + "Abyss right area, bulb behind the rock in the middle path" + ABYSS_RIGHT_AREA_BULB_IN_THE_LEFT_GREEN_ROOM = "Abyss right area, bulb in the left green room" + ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM = "Abyss right area, bulb behind the rock in the whale room" + ABYSS_RIGHT_AREA_TRANSTURTLE = "Abyss right area, Transturtle" + ICE_CAVERN_BULB_IN_THE_ROOM_TO_THE_RIGHT = "Ice Cavern, bulb in the room to the right" + ICE_CAVERN_FIRST_BULB_IN_THE_TOP_EXIT_ROOM = "Ice Cavern, first bulb in the top exit room" + ICE_CAVERN_SECOND_BULB_IN_THE_TOP_EXIT_ROOM = "Ice Cavern, second bulb in the top exit room" + ICE_CAVERN_THIRD_BULB_IN_THE_TOP_EXIT_ROOM = "Ice Cavern, third bulb in the top exit room" + ICE_CAVERN_BULB_IN_THE_LEFT_ROOM = "Ice Cavern, bulb in the left room" + BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL = "Bubble Cave, bulb in the left cave wall" + BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL =\ + "Bubble Cave, bulb in the right cave wall (behind the ice crystal)" + BUBBLE_CAVE_VERSE_EGG = "Bubble Cave, Verse Egg" + KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY =\ + "King Jellyfish Cave, bulb in the right path from King Jelly" + KING_JELLYFISH_CAVE_JELLYFISH_COSTUME = "King Jellyfish Cave, Jellyfish Costume" + THE_WHALE_VERSE_EGG = "The Whale, Verse Egg" + SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL = "Sunken City right area, crate close to the save crystal" + SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM = "Sunken City right area, crate in the left bottom room" + SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM = "Sunken City left area, crate in the little pipe room" + SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL = "Sunken City left area, crate close to the save crystal" + SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM = "Sunken City left area, crate before the bedroom" + SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME = "Sunken City left area, Girl Costume" + SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA = "Sunken City, bulb on top of the boss area" + THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE = "The Body center area, breaking Li's cage" + THE_BODY_CENTER_AREA_BULB_ON_THE_MAIN_PATH_BLOCKING_TUBE = \ + "The Body center 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_BELOW_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" + THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM = \ + "The Body right area, bulb in the top path to the bottom face room" + THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM = "The Body right area, bulb in the bottom face room" + THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM = "The Body bottom area, bulb in the Jelly Zap room" + THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM = "The Body bottom area, bulb in the nautilus room" + THE_BODY_BOTTOM_AREA_MUTANT_COSTUME = "The Body bottom area, Mutant Costume" + FINAL_BOSS_AREA_FIRST_BULB_IN_THE_TURTLE_ROOM = "Final Boss area, first bulb in the turtle room" + FINAL_BOSS_AREA_SECOND_BULB_IN_THE_TURTLE_ROOM = "Final Boss area, second bulb in the turtle room" + FINAL_BOSS_AREA_THIRD_BULB_IN_THE_TURTLE_ROOM = "Final Boss area, third bulb in the turtle room" + FINAL_BOSS_AREA_TRANSTURTLE = "Final Boss area, Transturtle" + FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM = "Final Boss area, bulb in the boss third form room" + BEATING_FALLEN_GOD = "Beating Fallen God" + BEATING_MITHALAN_GOD = "Beating Mithalan God" + BEATING_DRUNIAN_GOD = "Beating Drunian God" + BEATING_LUMEREAN_GOD = "Beating Lumerean God" + BEATING_THE_GOLEM = "Beating the Golem" + BEATING_NAUTILUS_PRIME = "Beating Nautilus Prime" + BEATING_BLASTER_PEG_PRIME = "Beating Blaster Peg Prime" + BEATING_MERGOG = "Beating Mergog" + BEATING_MITHALAN_PRIESTS = "Beating Mithalan priests" + BEATING_OCTOPUS_PRIME = "Beating Octopus Prime" + BEATING_CRABBIUS_MAXIMUS = "Beating Crabbius Maximus" + BEATING_MANTIS_SHRIMP_PRIME = "Beating Mantis Shrimp Prime" + BEATING_KING_JELLYFISH_GOD_PRIME = "Beating King Jellyfish God Prime" + FIRST_SECRET = "First Secret" + SECOND_SECRET = "Second Secret" + THIRD_SECRET = "Third Secret" + SUNKEN_CITY_CLEARED = "Sunken City cleared" + SUN_CRYSTAL = "Sun Crystal" + OBJECTIVE_COMPLETE = "Objective complete" + + +class AquariaLocations: locations_verse_cave_r = { - "Verse Cave, bulb in the skeleton room": 698107, - "Verse Cave, bulb in the path right of the skeleton room": 698108, - "Verse Cave right area, Big Seed": 698175, + AquariaLocationNames.VERSE_CAVE_RIGHT_AREA_BULB_IN_THE_SKELETON_ROOM: 698107, + AquariaLocationNames.VERSE_CAVE_RIGHT_AREA_BULB_IN_THE_PATH_RIGHT_OF_THE_SKELETON_ROOM: 698108, + AquariaLocationNames.VERSE_CAVE_RIGHT_AREA_BIG_SEED: 698175, } locations_verse_cave_l = { - "Verse Cave, the Naija hint about the shield ability": 698200, - "Verse Cave left area, bulb in the center part": 698021, - "Verse Cave left area, bulb in the right part": 698022, - "Verse Cave left area, bulb under the rock at the end of the path": 698023, + AquariaLocationNames.VERSE_CAVE_LEFT_AREA_THE_NAIJA_HINT_ABOUT_THE_SHIELD_ABILITY: 698200, + AquariaLocationNames.VERSE_CAVE_LEFT_AREA_BULB_IN_THE_CENTER_PART: 698021, + AquariaLocationNames.VERSE_CAVE_LEFT_AREA_BULB_IN_THE_RIGHT_PART: 698022, + AquariaLocationNames.VERSE_CAVE_LEFT_AREA_BULB_UNDER_THE_ROCK_AT_THE_END_OF_THE_PATH: 698023, } locations_home_water = { - "Home Water, bulb below the grouper fish": 698058, - "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 path close to the Verse Cave": 698061, - "Home Water, bulb in the top left path": 698062, - "Home Water, bulb in the bottom left room": 698063, - "Home Water, bulb close to Naija's Home": 698064, - "Home Water, bulb under the rock in the left path from the Verse Cave": 698065, + AquariaLocationNames.HOME_WATERS_BULB_BELOW_THE_GROUPER_FISH: 698058, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_LITTLE_ROOM_ABOVE_THE_GROUPER_FISH: 698060, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_END_OF_THE_PATH_CLOSE_TO_THE_VERSE_CAVE: 698061, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_TOP_LEFT_PATH: 698062, + AquariaLocationNames.HOME_WATERS_BULB_CLOSE_TO_NAIJA_S_HOME: 698064, + AquariaLocationNames.HOME_WATERS_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH_FROM_THE_VERSE_CAVE: 698065, + } + + locations_home_water_behind_rocks = { + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_PATH_BELOW_NAUTILUS_PRIME: 698059, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_BOTTOM_LEFT_ROOM: 698063, } locations_home_water_nautilus = { - "Home Water, Nautilus Egg": 698194, + AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG: 698194, } locations_home_water_transturtle = { - "Home Water, Transturtle": 698213, + AquariaLocationNames.HOME_WATERS_TRANSTURTLE: 698213, } locations_naija_home = { - "Naija's Home, bulb after the energy door": 698119, - "Naija's Home, bulb under the rock at the right of the main path": 698120, + AquariaLocationNames.NAIJA_S_HOME_BULB_AFTER_THE_ENERGY_DOOR: 698119, + AquariaLocationNames.NAIJA_S_HOME_BULB_UNDER_THE_ROCK_AT_THE_RIGHT_OF_THE_MAIN_PATH: 698120, } locations_song_cave = { - "Song Cave, Erulian spirit": 698206, - "Song Cave, bulb in the top right part": 698071, - "Song Cave, bulb in the big anemone room": 698072, - "Song Cave, bulb in the path to the singing statues": 698073, - "Song Cave, bulb under the rock in the path to the singing statues": 698074, - "Song Cave, bulb under the rock close to the song door": 698075, - "Song Cave, Verse Egg": 698160, - "Song Cave, Jelly Beacon": 698178, - "Song Cave, Anemone Seed": 698162, + AquariaLocationNames.SONG_CAVE_ERULIAN_SPIRIT: 698206, + AquariaLocationNames.SONG_CAVE_BULB_IN_THE_TOP_RIGHT_PART: 698071, + AquariaLocationNames.SONG_CAVE_BULB_IN_THE_BIG_ANEMONE_ROOM: 698072, + AquariaLocationNames.SONG_CAVE_BULB_IN_THE_PATH_TO_THE_SINGING_STATUES: 698073, + AquariaLocationNames.SONG_CAVE_BULB_UNDER_THE_ROCK_IN_THE_PATH_TO_THE_SINGING_STATUES: 698074, + AquariaLocationNames.SONG_CAVE_BULB_UNDER_THE_ROCK_CLOSE_TO_THE_SONG_DOOR: 698075, + AquariaLocationNames.SONG_CAVE_VERSE_EGG: 698160, + AquariaLocationNames.SONG_CAVE_JELLY_BEACON: 698178, + AquariaLocationNames.SONG_CAVE_ANEMONE_SEED: 698162, } locations_energy_temple_1 = { - "Energy Temple first area, beating the Energy Statue": 698205, - "Energy Temple first area, bulb in the bottom room blocked by a rock": 698027, + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BEATING_THE_ENERGY_STATUE: 698205, + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BULB_IN_THE_BOTTOM_ROOM_BLOCKED_BY_A_ROCK: 698027, } locations_energy_temple_idol = { - "Energy Temple first area, Energy Idol": 698170, + AquariaLocationNames.ENERGY_TEMPLE_ENERGY_IDOL: 698170, } locations_energy_temple_2 = { - "Energy Temple second area, bulb under the rock": 698028, + AquariaLocationNames.ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK: 698028, + # This can be accessible via locations_energy_temple_altar too } locations_energy_temple_altar = { - "Energy Temple bottom entrance, Krotite Armor": 698163, + AquariaLocationNames.ENERGY_TEMPLE_BOTTOM_ENTRANCE_KROTITE_ARMOR: 698163, } locations_energy_temple_3 = { - "Energy Temple third area, bulb in the bottom path": 698029, + AquariaLocationNames.ENERGY_TEMPLE_THIRD_AREA_BULB_IN_THE_BOTTOM_PATH: 698029, } locations_energy_temple_boss = { - "Energy Temple boss area, Fallen God Tooth": 698169, + AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH: 698169, } locations_energy_temple_blaster_room = { - "Energy Temple blaster room, Blaster Egg": 698195, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG: 698195, } locations_openwater_tl = { - "Open Water top left area, bulb under the rock in the right path": 698001, - "Open Water top left area, bulb under the rock in the left path": 698002, - "Open Water top left area, bulb to the right of the save crystal": 698003, + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH: 698001, + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH: 698002, + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_TO_THE_RIGHT_OF_THE_SAVE_CRYSTAL: 698003, } locations_openwater_tr = { - "Open Water top right area, bulb in the small path before Mithalas": 698004, - "Open Water top right area, bulb in the path from the left entrance": 698005, - "Open Water top right area, bulb in the clearing close to the bottom exit": 698006, - "Open Water top right area, bulb in the big clearing close to the save crystal": 698007, - "Open Water top right area, bulb in the big clearing to the top exit": 698008, - "Open Water top right area, first urn in the Mithalas exit": 698148, - "Open Water top right area, second urn in the Mithalas exit": 698149, - "Open Water top right area, third urn in the Mithalas exit": 698150, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_SMALL_PATH_BEFORE_MITHALAS: 698004, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_PATH_FROM_THE_LEFT_ENTRANCE: 698005, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_CLEARING_CLOSE_TO_THE_BOTTOM_EXIT: 698006, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_BIG_CLEARING_CLOSE_TO_THE_SAVE_CRYSTAL: 698007, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_BIG_CLEARING_TO_THE_TOP_EXIT: 698008, } locations_openwater_tr_turtle = { - "Open Water top right area, bulb in the turtle room": 698009, - "Open Water top right area, Transturtle": 698211, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_TURTLE_ROOM: 698009, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_TRANSTURTLE: 698211, + } + + locations_openwater_tr_urns = { + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_FIRST_URN_IN_THE_MITHALAS_EXIT: 698148, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_SECOND_URN_IN_THE_MITHALAS_EXIT: 698149, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_THIRD_URN_IN_THE_MITHALAS_EXIT: 698150, } locations_openwater_bl = { - "Open Water bottom left area, bulb behind the chomper fish": 698011, - "Open Water bottom left area, bulb inside the lowest fish pass": 698010, + AquariaLocationNames.OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_BEHIND_THE_CHOMPER_FISH: 698011, + AquariaLocationNames.OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_INSIDE_THE_LOWEST_FISH_PASS: 698010, } locations_skeleton_path = { - "Open Water skeleton path, bulb close to the right exit": 698012, - "Open Water skeleton path, bulb behind the chomper fish": 698013, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_BULB_CLOSE_TO_THE_RIGHT_EXIT: 698012, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_BULB_BEHIND_THE_CHOMPER_FISH: 698013, } locations_skeleton_path_sc = { - "Open Water skeleton path, King Skull": 698177, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_KING_SKULL: 698177, } locations_arnassi = { - "Arnassi Ruins, bulb in the right part": 698014, - "Arnassi Ruins, bulb in the left part": 698015, - "Arnassi Ruins, bulb in the center part": 698016, - "Arnassi Ruins, Song Plant Spore": 698179, - "Arnassi Ruins, Arnassi Armor": 698191, + AquariaLocationNames.ARNASSI_RUINS_BULB_IN_THE_RIGHT_PART: 698014, + AquariaLocationNames.ARNASSI_RUINS_BULB_IN_THE_LEFT_PART: 698015, + AquariaLocationNames.ARNASSI_RUINS_BULB_IN_THE_CENTER_PART: 698016, + AquariaLocationNames.ARNASSI_RUINS_SONG_PLANT_SPORE: 698179, + AquariaLocationNames.ARNASSI_RUINS_ARNASSI_ARMOR: 698191, } - locations_arnassi_path = { - "Arnassi Ruins, Arnassi Statue": 698164, + locations_arnassi_cave = { + AquariaLocationNames.ARNASSI_RUINS_ARNASSI_STATUE: 698164, } locations_arnassi_cave_transturtle = { - "Arnassi Ruins, Transturtle": 698217, + AquariaLocationNames.ARNASSI_RUINS_TRANSTURTLE: 698217, } locations_arnassi_crab_boss = { - "Arnassi Ruins, Crab Armor": 698187, + AquariaLocationNames.ARNASSI_RUINS_CRAB_ARMOR: 698187, } locations_simon = { - "Simon Says area, beating Simon Says": 698156, - "Simon Says area, Transturtle": 698216, + AquariaLocationNames.SIMON_SAYS_AREA_BEATING_SIMON_SAYS: 698156, + AquariaLocationNames.SIMON_SAYS_AREA_TRANSTURTLE: 698216, } locations_mithalas_city = { - "Mithalas City, first bulb in the left city part": 698030, - "Mithalas City, second bulb in the left city part": 698035, - "Mithalas City, bulb in the right part": 698031, - "Mithalas City, bulb at the top of the city": 698033, - "Mithalas City, first bulb in a broken home": 698034, - "Mithalas City, second bulb in a broken home": 698041, - "Mithalas City, bulb in the bottom left part": 698037, - "Mithalas City, first bulb in one of the homes": 698038, - "Mithalas City, second bulb in one of the homes": 698039, - "Mithalas City, first urn in one of the homes": 698123, - "Mithalas City, second urn in one of the homes": 698124, - "Mithalas City, first urn in the city reserve": 698125, - "Mithalas City, second urn in the city reserve": 698126, - "Mithalas City, third urn in the city reserve": 698127, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_IN_THE_LEFT_CITY_PART: 698030, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_IN_THE_LEFT_CITY_PART: 698035, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_RIGHT_PART: 698031, + AquariaLocationNames.MITHALAS_CITY_BULB_AT_THE_TOP_OF_THE_CITY: 698033, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_IN_A_BROKEN_HOME: 698034, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_IN_A_BROKEN_HOME: 698041, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_BOTTOM_LEFT_PART: 698037, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_IN_ONE_OF_THE_HOMES: 698038, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_IN_ONE_OF_THE_HOMES: 698039, + } + + locations_mithalas_city_urns = { + AquariaLocationNames.MITHALAS_CITY_FIRST_URN_IN_ONE_OF_THE_HOMES: 698123, + AquariaLocationNames.MITHALAS_CITY_SECOND_URN_IN_ONE_OF_THE_HOMES: 698124, + AquariaLocationNames.MITHALAS_CITY_FIRST_URN_IN_THE_CITY_RESERVE: 698125, + AquariaLocationNames.MITHALAS_CITY_SECOND_URN_IN_THE_CITY_RESERVE: 698126, + AquariaLocationNames.MITHALAS_CITY_THIRD_URN_IN_THE_CITY_RESERVE: 698127, } locations_mithalas_city_top_path = { - "Mithalas City, first bulb at the end of the top path": 698032, - "Mithalas City, second bulb at the end of the top path": 698040, - "Mithalas City, bulb in the top path": 698036, - "Mithalas City, Mithalas Pot": 698174, - "Mithalas City, urn in the Castle flower tube entrance": 698128, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_AT_THE_END_OF_THE_TOP_PATH: 698032, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_AT_THE_END_OF_THE_TOP_PATH: 698040, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_TOP_PATH: 698036, + AquariaLocationNames.MITHALAS_CITY_MITHALAS_POT: 698174, + AquariaLocationNames.MITHALAS_CITY_URN_IN_THE_CASTLE_FLOWER_TUBE_ENTRANCE: 698128, } locations_mithalas_city_fishpass = { - "Mithalas City, Doll": 698173, - "Mithalas City, urn inside a home fish pass": 698129, + AquariaLocationNames.MITHALAS_CITY_DOLL: 698173, + AquariaLocationNames.MITHALAS_CITY_URN_INSIDE_A_HOME_FISH_PASS: 698129, } - locations_cathedral_l = { - "Mithalas City Castle, bulb in the flesh hole": 698042, - "Mithalas City Castle, Blue Banner": 698165, - "Mithalas City Castle, urn in the bedroom": 698130, - "Mithalas City Castle, first urn of the single lamp path": 698131, - "Mithalas City Castle, second urn of the single lamp path": 698132, - "Mithalas City Castle, urn in the bottom room": 698133, - "Mithalas City Castle, first urn on the entrance path": 698134, - "Mithalas City Castle, second urn on the entrance path": 698135, + locations_mithalas_castle = { + AquariaLocationNames.MITHALAS_CITY_CASTLE_BULB_IN_THE_FLESH_HOLE: 698042, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BLUE_BANNER: 698165, } - locations_cathedral_l_tube = { - "Mithalas City Castle, beating the Priests": 698208, + locations_mithalas_castle_urns = { + AquariaLocationNames.MITHALAS_CITY_CASTLE_URN_IN_THE_BEDROOM: 698130, + AquariaLocationNames.MITHALAS_CITY_CASTLE_FIRST_URN_OF_THE_SINGLE_LAMP_PATH: 698131, + AquariaLocationNames.MITHALAS_CITY_CASTLE_SECOND_URN_OF_THE_SINGLE_LAMP_PATH: 698132, + AquariaLocationNames.MITHALAS_CITY_CASTLE_URN_IN_THE_BOTTOM_ROOM: 698133, + AquariaLocationNames.MITHALAS_CITY_CASTLE_FIRST_URN_ON_THE_ENTRANCE_PATH: 698134, + AquariaLocationNames.MITHALAS_CITY_CASTLE_SECOND_URN_ON_THE_ENTRANCE_PATH: 698135, } - locations_cathedral_l_sc = { - "Mithalas City Castle, Trident Head": 698183, + locations_mithalas_castle_tube = { + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS: 698208, } - locations_cathedral_r = { - "Mithalas Cathedral, first urn in the top right room": 698136, - "Mithalas Cathedral, second urn in the top right room": 698137, - "Mithalas Cathedral, third urn in the top right room": 698138, - "Mithalas Cathedral, urn in the flesh room with fleas": 698139, - "Mithalas Cathedral, first urn in the bottom right path": 698140, - "Mithalas Cathedral, second urn in the bottom right path": 698141, - "Mithalas Cathedral, urn behind the flesh vein": 698142, - "Mithalas Cathedral, urn in the top left eyes boss room": 698143, - "Mithalas Cathedral, first urn in the path behind the flesh vein": 698144, - "Mithalas Cathedral, second urn in the path behind the flesh vein": 698145, - "Mithalas Cathedral, third urn in the path behind the flesh vein": 698146, - "Mithalas Cathedral, fourth urn in the top right room": 698147, - "Mithalas Cathedral, Mithalan Dress": 698189, - "Mithalas Cathedral, urn below the left entrance": 698198, + locations_mithalas_castle_sc = { + AquariaLocationNames.MITHALAS_CITY_CASTLE_TRIDENT_HEAD: 698183, + } + + locations_cathedral_top_start = { + AquariaLocationNames.MITHALAS_CATHEDRAL_BULB_IN_THE_FLESH_ROOM_WITH_FLEAS: 698139, + AquariaLocationNames.MITHALAS_CATHEDRAL_MITHALAN_DRESS: 698189, + } + + locations_cathedral_top_start_urns = { + AquariaLocationNames.MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_TOP_RIGHT_ROOM: 698136, + AquariaLocationNames.MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_TOP_RIGHT_ROOM: 698137, + AquariaLocationNames.MITHALAS_CATHEDRAL_THIRD_URN_IN_THE_TOP_RIGHT_ROOM: 698138, + AquariaLocationNames.MITHALAS_CATHEDRAL_URN_BEHIND_THE_FLESH_VEIN: 698142, + AquariaLocationNames.MITHALAS_CATHEDRAL_URN_IN_THE_TOP_LEFT_EYES_BOSS_ROOM: 698143, + AquariaLocationNames.MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN: 698144, + AquariaLocationNames.MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN: 698145, + AquariaLocationNames.MITHALAS_CATHEDRAL_THIRD_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN: 698146, + AquariaLocationNames.MITHALAS_CATHEDRAL_FOURTH_URN_IN_THE_TOP_RIGHT_ROOM: 698147, + AquariaLocationNames.MITHALAS_CATHEDRAL_URN_BELOW_THE_LEFT_ENTRANCE: 698198, + } + + locations_cathedral_top_end = { + AquariaLocationNames.MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_BOTTOM_RIGHT_PATH: 698140, + AquariaLocationNames.MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_BOTTOM_RIGHT_PATH: 698141, } locations_cathedral_underground = { - "Cathedral Underground, bulb in the center part": 698113, - "Cathedral Underground, first bulb in the top left part": 698114, - "Cathedral Underground, second bulb in the top left part": 698115, - "Cathedral Underground, third bulb in the top left part": 698116, - "Cathedral Underground, bulb close to the save crystal": 698117, - "Cathedral Underground, bulb in the bottom right path": 698118, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_BULB_IN_THE_CENTER_PART: 698113, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_FIRST_BULB_IN_THE_TOP_LEFT_PART: 698114, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_SECOND_BULB_IN_THE_TOP_LEFT_PART: 698115, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_THIRD_BULB_IN_THE_TOP_LEFT_PART: 698116, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_BULB_CLOSE_TO_THE_SAVE_CRYSTAL: 698117, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_BULB_IN_THE_BOTTOM_RIGHT_PATH: 698118, } locations_cathedral_boss = { - "Mithalas boss area, beating Mithalan God": 698202, + AquariaLocationNames.MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD: 698202, } locations_forest_tl = { - "Kelp Forest top left area, bulb in the bottom left clearing": 698044, - "Kelp Forest top left area, bulb in the path down from the top left clearing": 698045, - "Kelp Forest top left area, bulb in the top left clearing": 698046, - "Kelp Forest top left area, Jelly Egg": 698185, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_BOTTOM_LEFT_CLEARING: 698044, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_PATH_DOWN_FROM_THE_TOP_LEFT_CLEARING: 698045, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_TOP_LEFT_CLEARING: 698046, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_JELLY_EGG: 698185, } - locations_forest_tl_fp = { - "Kelp Forest top left area, bulb close to the Verse Egg": 698047, - "Kelp Forest top left area, Verse Egg": 698158, + locations_forest_tl_verse_egg_room = { + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_CLOSE_TO_THE_VERSE_EGG: 698047, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_VERSE_EGG: 698158, } locations_forest_tr = { - "Kelp Forest top right area, bulb under the rock in the right path": 698048, - "Kelp Forest top right area, bulb at the left of the center clearing": 698049, - "Kelp Forest top right area, bulb in the left path's big room": 698051, - "Kelp Forest top right area, bulb in the left path's small room": 698052, - "Kelp Forest top right area, bulb at the top of the center clearing": 698053, - "Kelp Forest top right area, Black Pearl": 698167, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH: 698048, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_AT_THE_LEFT_OF_THE_CENTER_CLEARING: 698049, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_LEFT_PATH_S_BIG_ROOM: 698051, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_LEFT_PATH_S_SMALL_ROOM: 698052, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_CENTER_CLEARING: 698053, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BLACK_PEARL: 698167, } locations_forest_tr_fp = { - "Kelp Forest top right area, bulb in the top fish pass": 698050, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_TOP_FISH_PASS: 698050, } locations_forest_bl = { - "Kelp Forest bottom left area, Transturtle": 698212, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_TRANSTURTLE: 698212, } locations_forest_bl_sc = { - "Kelp Forest bottom left area, bulb close to the spirit crystals": 698054, - "Kelp Forest bottom left area, Walker Baby": 698186, - } - - locations_forest_br = { - "Kelp Forest bottom right area, Odd Container": 698168, - } - - locations_forest_boss = { - "Kelp Forest boss area, beating Drunian God": 698204, - } - - locations_forest_boss_entrance = { - "Kelp Forest boss room, bulb at the bottom of the area": 698055, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_BULB_CLOSE_TO_THE_SPIRIT_CRYSTALS: 698054, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY: 698186, } locations_forest_fish_cave = { - "Kelp Forest bottom left area, Fish Cave puzzle": 698207, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_FISH_CAVE_PUZZLE: 698207, } - locations_forest_sprite_cave = { - "Kelp Forest sprite cave, bulb inside the fish pass": 698056, + locations_forest_br = { + AquariaLocationNames.KELP_FOREST_BOTTOM_RIGHT_AREA_ODD_CONTAINER: 698168, } - locations_forest_sprite_cave_tube = { - "Kelp Forest sprite cave, bulb in the second room": 698057, - "Kelp Forest sprite cave, Seed Bag": 698176, + locations_forest_boss = { + AquariaLocationNames.KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD: 698204, + } + + locations_forest_boss_entrance = { + AquariaLocationNames.KELP_FOREST_BOSS_ROOM_BULB_AT_THE_BOTTOM_OF_THE_AREA: 698055, + } + + locations_sprite_cave = { + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_BULB_INSIDE_THE_FISH_PASS: 698056, + } + + locations_sprite_cave_tube = { + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_BULB_IN_THE_SECOND_ROOM: 698057, + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_SEED_BAG: 698176, } locations_mermog_cave = { - "Mermog cave, bulb in the left part of the cave": 698121, + AquariaLocationNames.MERMOG_CAVE_BULB_IN_THE_LEFT_PART_OF_THE_CAVE: 698121, } locations_mermog_boss = { - "Mermog cave, Piranha Egg": 698197, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG: 698197, } locations_veil_tl = { - "The Veil top left area, In Li's cave": 698199, - "The Veil top left area, bulb under the rock in the top right path": 698078, - "The Veil top left area, bulb hidden behind the blocking rock": 698076, - "The Veil top left area, Transturtle": 698209, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_IN_LI_S_CAVE: 698199, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_TOP_RIGHT_PATH: 698078, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_HIDDEN_BEHIND_THE_BLOCKING_ROCK: 698076, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_TRANSTURTLE: 698209, } locations_veil_tl_fp = { - "The Veil top left area, bulb inside the fish pass": 698077, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_INSIDE_THE_FISH_PASS: 698077, } locations_turtle_cave = { - "Turtle cave, Turtle Egg": 698184, + AquariaLocationNames.TURTLE_CAVE_TURTLE_EGG: 698184, } locations_turtle_cave_bubble = { - "Turtle cave, bulb in Bubble Cliff": 698000, - "Turtle cave, Urchin Costume": 698193, + AquariaLocationNames.TURTLE_CAVE_BULB_IN_BUBBLE_CLIFF: 698000, + AquariaLocationNames.TURTLE_CAVE_URCHIN_COSTUME: 698193, } locations_veil_tr_r = { - "The Veil top right area, bulb in the middle of the wall jump cliff": 698079, - "The Veil top right area, Golden Starfish": 698180, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_IN_THE_MIDDLE_OF_THE_WALL_JUMP_CLIFF: 698079, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_GOLDEN_STARFISH: 698180, } locations_veil_tr_l = { - "The Veil top right area, bulb at the top of the waterfall": 698080, - "The Veil top right area, Transturtle": 698210, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL: 698080, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_TRANSTURTLE: 698210, } - locations_veil_bl = { - "The Veil bottom area, bulb in the left path": 698082, + locations_veil_b = { + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_BULB_IN_THE_LEFT_PATH: 698082, } locations_veil_b_sc = { - "The Veil bottom area, bulb in the spirit path": 698081, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_BULB_IN_THE_SPIRIT_PATH: 698081, } - locations_veil_bl_fp = { - "The Veil bottom area, Verse Egg": 698157, + locations_veil_b_fp = { + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_VERSE_EGG: 698157, } locations_veil_br = { - "The Veil bottom area, Stone Head": 698181, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_STONE_HEAD: 698181, } locations_octo_cave_t = { - "Octopus Cave, Dumbo Egg": 698196, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG: 698196, } locations_octo_cave_b = { - "Octopus Cave, bulb in the path below the Octopus Cave path": 698122, + AquariaLocationNames.OCTOPUS_CAVE_BULB_IN_THE_PATH_BELOW_THE_OCTOPUS_CAVE_PATH: 698122, } locations_sun_temple_l = { - "Sun Temple, bulb in the top left part": 698094, - "Sun Temple, bulb in the top right part": 698095, - "Sun Temple, bulb at the top of the high dark room": 698096, - "Sun Temple, Golden Gear": 698171, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_TOP_LEFT_PART: 698094, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_TOP_RIGHT_PART: 698095, + AquariaLocationNames.SUN_TEMPLE_BULB_AT_THE_TOP_OF_THE_HIGH_DARK_ROOM: 698096, + AquariaLocationNames.SUN_TEMPLE_GOLDEN_GEAR: 698171, } locations_sun_temple_r = { - "Sun Temple, first bulb of the temple": 698091, - "Sun Temple, bulb on the right part": 698092, - "Sun Temple, bulb in the hidden room of the right part": 698093, - "Sun Temple, Sun Key": 698182, + AquariaLocationNames.SUN_TEMPLE_FIRST_BULB_OF_THE_TEMPLE: 698091, + AquariaLocationNames.SUN_TEMPLE_BULB_ON_THE_RIGHT_PART: 698092, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_HIDDEN_ROOM_OF_THE_RIGHT_PART: 698093, + AquariaLocationNames.SUN_TEMPLE_SUN_KEY: 698182, } locations_sun_temple_boss_path = { - "Sun Worm path, first path bulb": 698017, - "Sun Worm path, second path bulb": 698018, - "Sun Worm path, first cliff bulb": 698019, - "Sun Worm path, second cliff bulb": 698020, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_PATH_BULB: 698017, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_PATH_BULB: 698018, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB: 698019, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB: 698020, } locations_sun_temple_boss = { - "Sun Temple boss area, beating Sun God": 698203, + AquariaLocationNames.SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD: 698203, } locations_abyss_l = { - "Abyss left area, bulb in hidden path room": 698024, - "Abyss left area, bulb in the right part": 698025, - "Abyss left area, Glowing Seed": 698166, - "Abyss left area, Glowing Plant": 698172, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_HIDDEN_PATH_ROOM: 698024, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_RIGHT_PART: 698025, + AquariaLocationNames.ABYSS_LEFT_AREA_GLOWING_SEED: 698166, + AquariaLocationNames.ABYSS_LEFT_AREA_GLOWING_PLANT: 698172, } locations_abyss_lb = { - "Abyss left area, bulb in the bottom fish pass": 698026, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS: 698026, } locations_abyss_r = { - "Abyss right area, bulb behind the rock in the whale room": 698109, - "Abyss right area, bulb in the middle path": 698110, - "Abyss right area, bulb behind the rock in the middle path": 698111, - "Abyss right area, bulb in the left green room": 698112, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_MIDDLE_PATH: 698110, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_MIDDLE_PATH: 698111, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_LEFT_GREEN_ROOM: 698112, + } + + locations_abyss_r_whale = { + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM: 698109, } locations_abyss_r_transturtle = { - "Abyss right area, Transturtle": 698214, + AquariaLocationNames.ABYSS_RIGHT_AREA_TRANSTURTLE: 698214, } locations_ice_cave = { - "Ice Cave, bulb in the room to the right": 698083, - "Ice Cave, first bulb in the top exit room": 698084, - "Ice Cave, second bulb in the top exit room": 698085, - "Ice Cave, third bulb in the top exit room": 698086, - "Ice Cave, bulb in the left room": 698087, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_ROOM_TO_THE_RIGHT: 698083, + AquariaLocationNames.ICE_CAVERN_FIRST_BULB_IN_THE_TOP_EXIT_ROOM: 698084, + AquariaLocationNames.ICE_CAVERN_SECOND_BULB_IN_THE_TOP_EXIT_ROOM: 698085, + AquariaLocationNames.ICE_CAVERN_THIRD_BULB_IN_THE_TOP_EXIT_ROOM: 698086, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_LEFT_ROOM: 698087, } locations_bubble_cave = { - "Bubble Cave, bulb in the left cave wall": 698089, - "Bubble Cave, bulb in the right cave wall (behind the ice crystal)": 698090, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL: 698089, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL: 698090, } locations_bubble_cave_boss = { - "Bubble Cave, Verse Egg": 698161, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG: 698161, } locations_king_jellyfish_cave = { - "King Jellyfish Cave, bulb in the right path from King Jelly": 698088, - "King Jellyfish Cave, Jellyfish Costume": 698188, + AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY: 698088, + AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME: 698188, } locations_whale = { - "The Whale, Verse Egg": 698159, + AquariaLocationNames.THE_WHALE_VERSE_EGG: 698159, } locations_sunken_city_r = { - "Sunken City right area, crate close to the save crystal": 698154, - "Sunken City right area, crate in the left bottom room": 698155, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL: 698154, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM: 698155, } locations_sunken_city_l = { - "Sunken City left area, crate in the little pipe room": 698151, - "Sunken City left area, crate close to the save crystal": 698152, - "Sunken City left area, crate before the bedroom": 698153, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM: 698151, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL: 698152, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM: 698153, } locations_sunken_city_l_bedroom = { - "Sunken City left area, Girl Costume": 698192, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME: 698192, } locations_sunken_city_boss = { - "Sunken City, bulb on top of the boss area": 698043, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA: 698043, } locations_body_c = { - "The Body center area, breaking Li's cage": 698201, - "The Body center area, bulb on the main path blocking tube": 698097, + AquariaLocationNames.THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE: 698201, + AquariaLocationNames.THE_BODY_CENTER_AREA_BULB_ON_THE_MAIN_PATH_BLOCKING_TUBE: 698097, } 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 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, + AquariaLocationNames.THE_BODY_LEFT_AREA_FIRST_BULB_IN_THE_TOP_FACE_ROOM: 698066, + AquariaLocationNames.THE_BODY_LEFT_AREA_SECOND_BULB_IN_THE_TOP_FACE_ROOM: 698069, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_BELOW_THE_WATER_STREAM: 698067, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_TOP_FACE_ROOM: 698068, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM: 698070, } locations_body_rt = { - "The Body right area, bulb in the top face room": 698100, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_FACE_ROOM: 698100, } locations_body_rb = { - "The Body right area, bulb in the top path to the bottom face room": 698098, - "The Body right area, bulb in the bottom face room": 698099, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM: 698098, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM: 698099, } locations_body_b = { - "The Body bottom area, bulb in the Jelly Zap room": 698101, - "The Body bottom area, bulb in the nautilus room": 698102, - "The Body bottom area, Mutant Costume": 698190, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM: 698101, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM: 698102, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME: 698190, } locations_final_boss_tube = { - "Final Boss area, first bulb in the turtle room": 698103, - "Final Boss area, second bulb in the turtle room": 698104, - "Final Boss area, third bulb in the turtle room": 698105, - "Final Boss area, Transturtle": 698215, + AquariaLocationNames.FINAL_BOSS_AREA_FIRST_BULB_IN_THE_TURTLE_ROOM: 698103, + AquariaLocationNames.FINAL_BOSS_AREA_SECOND_BULB_IN_THE_TURTLE_ROOM: 698104, + AquariaLocationNames.FINAL_BOSS_AREA_THIRD_BULB_IN_THE_TURTLE_ROOM: 698105, + AquariaLocationNames.FINAL_BOSS_AREA_TRANSTURTLE: 698215, } locations_final_boss = { - "Final Boss area, bulb in the boss third form room": 698106, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM: 698106, } @@ -503,11 +812,12 @@ location_table = { **AquariaLocations.locations_openwater_tl, **AquariaLocations.locations_openwater_tr, **AquariaLocations.locations_openwater_tr_turtle, + **AquariaLocations.locations_openwater_tr_urns, **AquariaLocations.locations_openwater_bl, **AquariaLocations.locations_skeleton_path, **AquariaLocations.locations_skeleton_path_sc, **AquariaLocations.locations_arnassi, - **AquariaLocations.locations_arnassi_path, + **AquariaLocations.locations_arnassi_cave, **AquariaLocations.locations_arnassi_cave_transturtle, **AquariaLocations.locations_arnassi_crab_boss, **AquariaLocations.locations_sun_temple_l, @@ -519,6 +829,7 @@ location_table = { **AquariaLocations.locations_abyss_l, **AquariaLocations.locations_abyss_lb, **AquariaLocations.locations_abyss_r, + **AquariaLocations.locations_abyss_r_whale, **AquariaLocations.locations_abyss_r_transturtle, **AquariaLocations.locations_energy_temple_1, **AquariaLocations.locations_energy_temple_2, @@ -528,16 +839,20 @@ location_table = { **AquariaLocations.locations_energy_temple_altar, **AquariaLocations.locations_energy_temple_idol, **AquariaLocations.locations_mithalas_city, + **AquariaLocations.locations_mithalas_city_urns, **AquariaLocations.locations_mithalas_city_top_path, **AquariaLocations.locations_mithalas_city_fishpass, - **AquariaLocations.locations_cathedral_l, - **AquariaLocations.locations_cathedral_l_tube, - **AquariaLocations.locations_cathedral_l_sc, - **AquariaLocations.locations_cathedral_r, + **AquariaLocations.locations_mithalas_castle, + **AquariaLocations.locations_mithalas_castle_urns, + **AquariaLocations.locations_mithalas_castle_tube, + **AquariaLocations.locations_mithalas_castle_sc, + **AquariaLocations.locations_cathedral_top_start, + **AquariaLocations.locations_cathedral_top_start_urns, + **AquariaLocations.locations_cathedral_top_end, **AquariaLocations.locations_cathedral_underground, **AquariaLocations.locations_cathedral_boss, **AquariaLocations.locations_forest_tl, - **AquariaLocations.locations_forest_tl_fp, + **AquariaLocations.locations_forest_tl_verse_egg_room, **AquariaLocations.locations_forest_tr, **AquariaLocations.locations_forest_tr_fp, **AquariaLocations.locations_forest_bl, @@ -545,10 +860,11 @@ location_table = { **AquariaLocations.locations_forest_br, **AquariaLocations.locations_forest_boss, **AquariaLocations.locations_forest_boss_entrance, - **AquariaLocations.locations_forest_sprite_cave, - **AquariaLocations.locations_forest_sprite_cave_tube, + **AquariaLocations.locations_sprite_cave, + **AquariaLocations.locations_sprite_cave_tube, **AquariaLocations.locations_forest_fish_cave, **AquariaLocations.locations_home_water, + **AquariaLocations.locations_home_water_behind_rocks, **AquariaLocations.locations_home_water_transturtle, **AquariaLocations.locations_home_water_nautilus, **AquariaLocations.locations_body_l, @@ -565,9 +881,9 @@ location_table = { **AquariaLocations.locations_turtle_cave_bubble, **AquariaLocations.locations_veil_tr_r, **AquariaLocations.locations_veil_tr_l, - **AquariaLocations.locations_veil_bl, + **AquariaLocations.locations_veil_b, **AquariaLocations.locations_veil_b_sc, - **AquariaLocations.locations_veil_bl_fp, + **AquariaLocations.locations_veil_b_fp, **AquariaLocations.locations_veil_br, **AquariaLocations.locations_ice_cave, **AquariaLocations.locations_king_jellyfish_cave, diff --git a/worlds/aquaria/Options.py b/worlds/aquaria/Options.py index 8c0142de..c73c108a 100644 --- a/worlds/aquaria/Options.py +++ b/worlds/aquaria/Options.py @@ -15,7 +15,10 @@ class IngredientRandomizer(Choice): """ display_name = "Randomize Ingredients" option_off = 0 + alias_false = 0 option_common_ingredients = 1 + alias_on = 1 + alias_true = 1 option_all_ingredients = 2 default = 0 @@ -29,14 +32,43 @@ class TurtleRandomizer(Choice): """Randomize the transportation turtle.""" display_name = "Turtle Randomizer" option_none = 0 + alias_off = 0 + alias_false = 0 option_all = 1 option_all_except_final = 2 + alias_on = 2 + alias_true = 2 default = 2 -class EarlyEnergyForm(DefaultOnToggle): - """ Force the Energy Form to be in a location early in the game """ - display_name = "Early Energy Form" +class EarlyBindSong(Choice): + """ + Force the Bind song to be in a location early in the multiworld (or directly in your world if Early and Local is + selected). + """ + display_name = "Early Bind song" + option_off = 0 + alias_false = 0 + option_early = 1 + alias_on = 1 + alias_true = 1 + option_early_and_local = 2 + default = 1 + + +class EarlyEnergyForm(Choice): + """ + Force the Energy form to be in a location early in the multiworld (or directly in your world if Early and Local is + selected). + """ + display_name = "Early Energy form" + option_off = 0 + alias_false = 0 + option_early = 1 + alias_on = 1 + alias_true = 1 + option_early_and_local = 2 + default = 1 class AquarianTranslation(Toggle): @@ -47,7 +79,7 @@ class AquarianTranslation(Toggle): class BigBossesToBeat(Range): """ 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", "Lumerean God" and "The Golem". """ display_name = "Big bosses to beat" range_start = 0 @@ -104,7 +136,7 @@ class LightNeededToGetToDarkPlaces(DefaultOnToggle): display_name = "Light needed to get to dark places" -class BindSongNeededToGetUnderRockBulb(Toggle): +class BindSongNeededToGetUnderRockBulb(DefaultOnToggle): """ Make sure that the bind song can be acquired before having to obtain sing bulbs under rocks. """ @@ -121,13 +153,18 @@ class BlindGoal(Toggle): class UnconfineHomeWater(Choice): """ - Open the way out of the Home Water area so that Naija can go to open water and beyond without the bind song. + Open the way out of the Home Waters area so that Naija can go to open water and beyond without the bind song. + Note that if you turn this option off, it is recommended to turn on the Early Energy form and Early Bind Song + options. """ - display_name = "Unconfine Home Water Area" + display_name = "Unconfine Home Waters Area" option_off = 0 + alias_false = 0 option_via_energy_door = 1 option_via_transturtle = 2 option_via_both = 3 + alias_on = 3 + alias_true = 3 default = 0 @@ -142,6 +179,7 @@ class AquariaOptions(PerGameCommonOptions): big_bosses_to_beat: BigBossesToBeat turtle_randomizer: TurtleRandomizer early_energy_form: EarlyEnergyForm + early_bind_song: EarlyBindSong light_needed_to_get_to_dark_places: LightNeededToGetToDarkPlaces bind_song_needed_to_get_under_rock_bulb: BindSongNeededToGetUnderRockBulb unconfine_home_water: UnconfineHomeWater diff --git a/worlds/aquaria/Regions.py b/worlds/aquaria/Regions.py index 7a41e0d0..40170e0c 100755 --- a/worlds/aquaria/Regions.py +++ b/worlds/aquaria/Regions.py @@ -5,10 +5,10 @@ Description: Used to manage Regions in the Aquaria game multiworld randomizer """ from typing import Dict, Optional -from BaseClasses import MultiWorld, Region, Entrance, ItemClassification, CollectionState -from .Items import AquariaItem -from .Locations import AquariaLocations, AquariaLocation -from .Options import AquariaOptions +from BaseClasses import MultiWorld, Region, Entrance, Item, ItemClassification, CollectionState +from .Items import AquariaItem, ItemNames +from .Locations import AquariaLocations, AquariaLocation, AquariaLocationNames +from .Options import AquariaOptions, UnconfineHomeWater from worlds.generic.Rules import add_rule, set_rule @@ -16,28 +16,28 @@ from worlds.generic.Rules import add_rule, set_rule def _has_hot_soup(state: CollectionState, player: int) -> bool: """`player` in `state` has the hotsoup item""" - return state.has_any({"Hot soup", "Hot soup x 2"}, player) + return state.has_any({ItemNames.HOT_SOUP, ItemNames.HOT_SOUP_X_2}, player) def _has_tongue_cleared(state: CollectionState, player: int) -> bool: """`player` in `state` has the Body tongue cleared item""" - return state.has("Body tongue cleared", player) + return state.has(ItemNames.BODY_TONGUE_CLEARED, player) def _has_sun_crystal(state: CollectionState, player: int) -> bool: """`player` in `state` has the Sun crystal item""" - return state.has("Has sun crystal", player) and _has_bind_song(state, player) + return state.has(ItemNames.HAS_SUN_CRYSTAL, player) and _has_bind_song(state, player) def _has_li(state: CollectionState, player: int) -> bool: """`player` in `state` has Li in its team""" - return state.has("Li and Li song", player) + return state.has(ItemNames.LI_AND_LI_SONG, player) def _has_damaging_item(state: CollectionState, player: int) -> bool: """`player` in `state` has the shield song item""" - return state.has_any({"Energy form", "Nature form", "Beast form", "Li and Li song", "Baby Nautilus", - "Baby Piranha", "Baby Blaster"}, player) + return state.has_any({ItemNames.ENERGY_FORM, ItemNames.NATURE_FORM, ItemNames.BEAST_FORM, ItemNames.LI_AND_LI_SONG, + ItemNames.BABY_NAUTILUS, ItemNames.BABY_PIRANHA, ItemNames.BABY_BLASTER}, player) def _has_energy_attack_item(state: CollectionState, player: int) -> bool: @@ -47,22 +47,22 @@ def _has_energy_attack_item(state: CollectionState, player: int) -> bool: def _has_shield_song(state: CollectionState, player: int) -> bool: """`player` in `state` has the shield song item""" - return state.has("Shield song", player) + return state.has(ItemNames.SHIELD_SONG, player) def _has_bind_song(state: CollectionState, player: int) -> bool: """`player` in `state` has the bind song item""" - return state.has("Bind song", player) + return state.has(ItemNames.BIND_SONG, player) def _has_energy_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the energy form item""" - return state.has("Energy form", player) + return state.has(ItemNames.ENERGY_FORM, player) def _has_beast_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the beast form item""" - return state.has("Beast form", player) + return state.has(ItemNames.BEAST_FORM, player) def _has_beast_and_soup_form(state: CollectionState, player: int) -> bool: @@ -72,55 +72,61 @@ def _has_beast_and_soup_form(state: CollectionState, player: int) -> bool: def _has_beast_form_or_arnassi_armor(state: CollectionState, player: int) -> bool: """`player` in `state` has the beast form item""" - return _has_beast_form(state, player) or state.has("Arnassi Armor", player) + return _has_beast_form(state, player) or state.has(ItemNames.ARNASSI_ARMOR, player) def _has_nature_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the nature form item""" - return state.has("Nature form", player) + return state.has(ItemNames.NATURE_FORM, player) def _has_sun_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the sun form item""" - return state.has("Sun form", player) + return state.has(ItemNames.SUN_FORM, player) def _has_light(state: CollectionState, player: int) -> bool: """`player` in `state` has the light item""" - return state.has("Baby Dumbo", player) or _has_sun_form(state, player) + return state.has(ItemNames.BABY_DUMBO, player) or _has_sun_form(state, player) def _has_dual_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the dual form item""" - return _has_li(state, player) and state.has("Dual form", player) + return _has_li(state, player) and state.has(ItemNames.DUAL_FORM, player) def _has_fish_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the fish form item""" - return state.has("Fish form", player) + return state.has(ItemNames.FISH_FORM, player) def _has_spirit_form(state: CollectionState, player: int) -> bool: """`player` in `state` has the spirit form item""" - return state.has("Spirit form", player) + return state.has(ItemNames.SPIRIT_FORM, player) def _has_big_bosses(state: CollectionState, player: int) -> bool: """`player` in `state` has beated every big bosses""" - return state.has_all({"Fallen God beated", "Mithalan God beated", "Drunian God beated", - "Sun God beated", "The Golem beated"}, player) + return state.has_all({ItemNames.FALLEN_GOD_BEATED, ItemNames.MITHALAN_GOD_BEATED, ItemNames.DRUNIAN_GOD_BEATED, + ItemNames.LUMEREAN_GOD_BEATED, ItemNames.THE_GOLEM_BEATED}, player) def _has_mini_bosses(state: CollectionState, player: int) -> bool: """`player` in `state` has beated every big bosses""" - return state.has_all({"Nautilus Prime beated", "Blaster Peg Prime beated", "Mergog beated", - "Mithalan priests beated", "Octopus Prime beated", "Crabbius Maximus beated", - "Mantis Shrimp Prime beated", "King Jellyfish God Prime beated"}, player) + return state.has_all({ItemNames.NAUTILUS_PRIME_BEATED, ItemNames.BLASTER_PEG_PRIME_BEATED, ItemNames.MERGOG_BEATED, + ItemNames.MITHALAN_PRIESTS_BEATED, ItemNames.OCTOPUS_PRIME_BEATED, + ItemNames.CRABBIUS_MAXIMUS_BEATED, ItemNames.MANTIS_SHRIMP_PRIME_BEATED, + ItemNames.KING_JELLYFISH_GOD_PRIME_BEATED}, player) def _has_secrets(state: CollectionState, player: int) -> bool: - return state.has_all({"First secret obtained", "Second secret obtained", "Third secret obtained"}, player) + """The secrets have been acquired in the `state` of the `player`""" + return state.has_all({ItemNames.FIRST_SECRET_OBTAINED, ItemNames.SECOND_SECRET_OBTAINED, + ItemNames.THIRD_SECRET_OBTAINED}, player) +def _item_not_advancement(item: Item): + """The `item` is not an advancement item""" + return not item.advancement class AquariaRegions: """ @@ -130,6 +136,7 @@ class AquariaRegions: verse_cave_r: Region verse_cave_l: Region home_water: Region + home_water_behind_rocks: Region home_water_nautilus: Region home_water_transturtle: Region naija_home: Region @@ -138,33 +145,40 @@ class AquariaRegions: energy_temple_2: Region energy_temple_3: Region energy_temple_boss: Region + energy_temple_4: Region energy_temple_idol: Region energy_temple_blaster_room: Region energy_temple_altar: Region openwater_tl: Region openwater_tr: Region openwater_tr_turtle: Region + openwater_tr_urns: Region openwater_bl: Region openwater_br: Region skeleton_path: Region skeleton_path_sc: Region arnassi: Region arnassi_cave_transturtle: Region - arnassi_path: Region + arnassi_cave: Region arnassi_crab_boss: Region simon: Region mithalas_city: Region + mithalas_city_urns: Region mithalas_city_top_path: Region mithalas_city_fishpass: Region - cathedral_l: Region - cathedral_l_tube: Region - cathedral_l_sc: Region - cathedral_r: Region + mithalas_castle: Region + mithalas_castle_urns: Region + mithalas_castle_tube: Region + mithalas_castle_sc: Region + cathedral_top: Region + cathedral_top_start: Region + cathedral_top_start_urns: Region + cathedral_top_end: Region cathedral_underground: Region cathedral_boss_l: Region cathedral_boss_r: Region forest_tl: Region - forest_tl_fp: Region + forest_tl_verse_egg_room: Region forest_tr: Region forest_tr_fp: Region forest_bl: Region @@ -172,24 +186,26 @@ class AquariaRegions: forest_br: Region forest_boss: Region forest_boss_entrance: Region - forest_sprite_cave: Region - forest_sprite_cave_tube: Region + sprite_cave: Region + sprite_cave_tube: Region mermog_cave: Region mermog_boss: Region forest_fish_cave: Region veil_tl: Region veil_tl_fp: Region veil_tr_l: Region + veil_tr_l_fp: Region veil_tr_r: Region - veil_bl: Region + veil_b: Region veil_b_sc: Region - veil_bl_fp: Region + veil_b_fp: Region veil_br: Region octo_cave_t: Region octo_cave_b: Region turtle_cave: Region turtle_cave_bubble: Region sun_temple_l: Region + sun_temple_l_entrance: Region sun_temple_r: Region sun_temple_boss_path: Region sun_temple_boss: Region @@ -198,13 +214,16 @@ class AquariaRegions: abyss_r: Region abyss_r_transturtle: Region ice_cave: Region + frozen_feil: Region bubble_cave: Region bubble_cave_boss: Region king_jellyfish_cave: Region + abyss_r_whale: Region whale: Region first_secret: Region sunken_city_l: Region - sunken_city_r: Region + sunken_city_l_crates: Region + sunken_city_r_crates: Region sunken_city_boss: Region sunken_city_l_bedroom: Region body_c: Region @@ -250,11 +269,13 @@ class AquariaRegions: AquariaLocations.locations_verse_cave_r) self.verse_cave_l = self.__add_region("Verse Cave left area", AquariaLocations.locations_verse_cave_l) - self.home_water = self.__add_region("Home Water", AquariaLocations.locations_home_water) - self.home_water_nautilus = self.__add_region("Home Water, Nautilus nest", + self.home_water = self.__add_region("Home Waters", AquariaLocations.locations_home_water) + self.home_water_nautilus = self.__add_region("Home Waters, Nautilus nest", AquariaLocations.locations_home_water_nautilus) - self.home_water_transturtle = self.__add_region("Home Water, turtle room", + self.home_water_transturtle = self.__add_region("Home Waters, turtle room", AquariaLocations.locations_home_water_transturtle) + self.home_water_behind_rocks = self.__add_region("Home Waters, behind rock", + AquariaLocations.locations_home_water_behind_rocks) self.naija_home = self.__add_region("Naija's Home", AquariaLocations.locations_naija_home) self.song_cave = self.__add_region("Song Cave", AquariaLocations.locations_song_cave) @@ -276,29 +297,32 @@ class AquariaRegions: AquariaLocations.locations_energy_temple_idol) self.energy_temple_blaster_room = self.__add_region("Energy Temple blaster room", AquariaLocations.locations_energy_temple_blaster_room) + self.energy_temple_4 = self.__add_region("Energy Temple after boss path", None) def __create_openwater(self) -> None: """ Create the `openwater_*`, `skeleton_path`, `arnassi*` and `simon` regions """ - self.openwater_tl = self.__add_region("Open Water top left area", + self.openwater_tl = self.__add_region("Open Waters top left area", AquariaLocations.locations_openwater_tl) - self.openwater_tr = self.__add_region("Open Water top right area", + self.openwater_tr = self.__add_region("Open Waters top right area", AquariaLocations.locations_openwater_tr) - self.openwater_tr_turtle = self.__add_region("Open Water top right area, turtle room", + self.openwater_tr_turtle = self.__add_region("Open Waters top right area, turtle room", AquariaLocations.locations_openwater_tr_turtle) - self.openwater_bl = self.__add_region("Open Water bottom left area", + self.openwater_tr_urns = self.__add_region("Open Waters top right area, Mithalas entrance", + AquariaLocations.locations_openwater_tr_urns) + self.openwater_bl = self.__add_region("Open Waters bottom left area", AquariaLocations.locations_openwater_bl) - self.openwater_br = self.__add_region("Open Water bottom right area", None) - self.skeleton_path = self.__add_region("Open Water skeleton path", + self.openwater_br = self.__add_region("Open Waters bottom right area", None) + self.skeleton_path = self.__add_region("Open Waters skeleton path", AquariaLocations.locations_skeleton_path) - self.skeleton_path_sc = self.__add_region("Open Water skeleton path spirit crystal", + self.skeleton_path_sc = self.__add_region("Open Waters skeleton path spirit crystal", AquariaLocations.locations_skeleton_path_sc) self.arnassi = self.__add_region("Arnassi Ruins", AquariaLocations.locations_arnassi) - self.arnassi_path = self.__add_region("Arnassi Ruins, back entrance path", - AquariaLocations.locations_arnassi_path) - self.arnassi_cave_transturtle = self.__add_region("Arnassi Ruins, transturtle area", + self.arnassi_cave = self.__add_region("Arnassi Ruins cave", + AquariaLocations.locations_arnassi_cave) + self.arnassi_cave_transturtle = self.__add_region("Arnassi Ruins cave, transturtle area", AquariaLocations.locations_arnassi_cave_transturtle) self.arnassi_crab_boss = self.__add_region("Arnassi Ruins, Crabbius Maximus lair", AquariaLocations.locations_arnassi_crab_boss) @@ -309,22 +333,29 @@ class AquariaRegions: """ self.mithalas_city = self.__add_region("Mithalas City", AquariaLocations.locations_mithalas_city) + self.mithalas_city_urns = self.__add_region("Mithalas City urns", AquariaLocations.locations_mithalas_city_urns) self.mithalas_city_fishpass = self.__add_region("Mithalas City fish pass", AquariaLocations.locations_mithalas_city_fishpass) self.mithalas_city_top_path = self.__add_region("Mithalas City top path", AquariaLocations.locations_mithalas_city_top_path) - self.cathedral_l = self.__add_region("Mithalas castle", AquariaLocations.locations_cathedral_l) - self.cathedral_l_tube = self.__add_region("Mithalas castle, plant tube entrance", - AquariaLocations.locations_cathedral_l_tube) - self.cathedral_l_sc = self.__add_region("Mithalas castle spirit crystal", - AquariaLocations.locations_cathedral_l_sc) - self.cathedral_r = self.__add_region("Mithalas Cathedral", - AquariaLocations.locations_cathedral_r) + self.mithalas_castle = self.__add_region("Mithalas castle", AquariaLocations.locations_mithalas_castle) + self.mithalas_castle_urns = self.__add_region("Mithalas castle urns", + AquariaLocations.locations_mithalas_castle_urns) + self.mithalas_castle_tube = self.__add_region("Mithalas castle, plant tube entrance", + AquariaLocations.locations_mithalas_castle_tube) + self.mithalas_castle_sc = self.__add_region("Mithalas castle spirit crystal", + AquariaLocations.locations_mithalas_castle_sc) + self.cathedral_top_start = self.__add_region("Mithalas Cathedral start", + AquariaLocations.locations_cathedral_top_start) + self.cathedral_top_start_urns = self.__add_region("Mithalas Cathedral start urns", + AquariaLocations.locations_cathedral_top_start_urns) + self.cathedral_top_end = self.__add_region("Mithalas Cathedral end", + AquariaLocations.locations_cathedral_top_end) self.cathedral_underground = self.__add_region("Mithalas Cathedral underground", AquariaLocations.locations_cathedral_underground) - self.cathedral_boss_r = self.__add_region("Mithalas Cathedral, Mithalan God room", None) - self.cathedral_boss_l = self.__add_region("Mithalas Cathedral, after Mithalan God room", + self.cathedral_boss_l = self.__add_region("Mithalas Cathedral, after Mithalan God", AquariaLocations.locations_cathedral_boss) + self.cathedral_boss_r = self.__add_region("Mithalas Cathedral, before Mithalan God", None) def __create_forest(self) -> None: """ @@ -332,8 +363,8 @@ class AquariaRegions: """ self.forest_tl = self.__add_region("Kelp Forest top left area", AquariaLocations.locations_forest_tl) - self.forest_tl_fp = self.__add_region("Kelp Forest top left area fish pass", - AquariaLocations.locations_forest_tl_fp) + self.forest_tl_verse_egg_room = self.__add_region("Kelp Forest top left area fish pass", + AquariaLocations.locations_forest_tl_verse_egg_room) self.forest_tr = self.__add_region("Kelp Forest top right area", AquariaLocations.locations_forest_tr) self.forest_tr_fp = self.__add_region("Kelp Forest top right area fish pass", @@ -344,21 +375,21 @@ class AquariaRegions: AquariaLocations.locations_forest_bl_sc) self.forest_br = self.__add_region("Kelp Forest bottom right area", AquariaLocations.locations_forest_br) - self.forest_sprite_cave = self.__add_region("Kelp Forest spirit cave", - AquariaLocations.locations_forest_sprite_cave) - self.forest_sprite_cave_tube = self.__add_region("Kelp Forest spirit cave after the plant tube", - AquariaLocations.locations_forest_sprite_cave_tube) + self.sprite_cave = self.__add_region("Sprite cave", + AquariaLocations.locations_sprite_cave) + self.sprite_cave_tube = self.__add_region("Sprite cave after the plant tube", + AquariaLocations.locations_sprite_cave_tube) self.forest_boss = self.__add_region("Kelp Forest Drunian God room", AquariaLocations.locations_forest_boss) self.forest_boss_entrance = self.__add_region("Kelp Forest Drunian God room entrance", AquariaLocations.locations_forest_boss_entrance) - self.mermog_cave = self.__add_region("Kelp Forest Mermog cave", + self.mermog_cave = self.__add_region("Mermog cave", AquariaLocations.locations_mermog_cave) - self.mermog_boss = self.__add_region("Kelp Forest Mermog cave boss", + self.mermog_boss = self.__add_region("Mermog cave boss", AquariaLocations.locations_mermog_boss) self.forest_fish_cave = self.__add_region("Kelp Forest fish cave", AquariaLocations.locations_forest_fish_cave) - self.simon = self.__add_region("Kelp Forest, Simon's room", AquariaLocations.locations_simon) + self.simon = self.__add_region("Simon Says area", AquariaLocations.locations_simon) def __create_veil(self) -> None: """ @@ -373,18 +404,19 @@ class AquariaRegions: AquariaLocations.locations_turtle_cave_bubble) self.veil_tr_l = self.__add_region("The Veil top right area, left of temple", AquariaLocations.locations_veil_tr_l) + self.veil_tr_l_fp = self.__add_region("The Veil top right area, fish pass left of temple", None) self.veil_tr_r = self.__add_region("The Veil top right area, right of temple", AquariaLocations.locations_veil_tr_r) self.octo_cave_t = self.__add_region("Octopus Cave top entrance", AquariaLocations.locations_octo_cave_t) self.octo_cave_b = self.__add_region("Octopus Cave bottom entrance", AquariaLocations.locations_octo_cave_b) - self.veil_bl = self.__add_region("The Veil bottom left area", - AquariaLocations.locations_veil_bl) + self.veil_b = self.__add_region("The Veil bottom left area", + AquariaLocations.locations_veil_b) self.veil_b_sc = self.__add_region("The Veil bottom spirit crystal area", AquariaLocations.locations_veil_b_sc) - self.veil_bl_fp = self.__add_region("The Veil bottom left area, in the sunken ship", - AquariaLocations.locations_veil_bl_fp) + self.veil_b_fp = self.__add_region("The Veil bottom left area, in the sunken ship", + AquariaLocations.locations_veil_b_fp) self.veil_br = self.__add_region("The Veil bottom right area", AquariaLocations.locations_veil_br) @@ -394,6 +426,7 @@ class AquariaRegions: """ self.sun_temple_l = self.__add_region("Sun Temple left area", AquariaLocations.locations_sun_temple_l) + self.sun_temple_l_entrance = self.__add_region("Sun Temple left area entrance", None) self.sun_temple_r = self.__add_region("Sun Temple right area", AquariaLocations.locations_sun_temple_r) self.sun_temple_boss_path = self.__add_region("Sun Temple before boss area", @@ -412,24 +445,29 @@ class AquariaRegions: self.abyss_r = self.__add_region("Abyss right area", AquariaLocations.locations_abyss_r) self.abyss_r_transturtle = self.__add_region("Abyss right area, transturtle", AquariaLocations.locations_abyss_r_transturtle) - self.ice_cave = self.__add_region("Ice Cave", AquariaLocations.locations_ice_cave) + self.abyss_r_whale = self.__add_region("Abyss right area, outside the whale", + AquariaLocations.locations_abyss_r_whale) + self.ice_cave = self.__add_region("Ice Cavern", AquariaLocations.locations_ice_cave) + self.frozen_feil = self.__add_region("Frozen Veil", None) self.bubble_cave = self.__add_region("Bubble Cave", AquariaLocations.locations_bubble_cave) self.bubble_cave_boss = self.__add_region("Bubble Cave boss area", AquariaLocations.locations_bubble_cave_boss) self.king_jellyfish_cave = self.__add_region("Abyss left area, King jellyfish cave", AquariaLocations.locations_king_jellyfish_cave) self.whale = self.__add_region("Inside the whale", AquariaLocations.locations_whale) - self.first_secret = self.__add_region("First secret area", None) + self.first_secret = self.__add_region("First Secret area", None) def __create_sunken_city(self) -> None: """ Create the `sunken_city_*` regions """ - self.sunken_city_l = self.__add_region("Sunken City left area", - AquariaLocations.locations_sunken_city_l) + self.sunken_city_l = self.__add_region("Sunken City left area", None) + self.sunken_city_l_crates = self.__add_region("Sunken City left area", + AquariaLocations.locations_sunken_city_l) self.sunken_city_l_bedroom = self.__add_region("Sunken City left area, bedroom", AquariaLocations.locations_sunken_city_l_bedroom) - self.sunken_city_r = self.__add_region("Sunken City right area", - AquariaLocations.locations_sunken_city_r) + self.sunken_city_r = self.__add_region("Sunken City right area", None) + self.sunken_city_r_crates = self.__add_region("Sunken City right area crates", + AquariaLocations.locations_sunken_city_r) self.sunken_city_boss = self.__add_region("Sunken City boss area", AquariaLocations.locations_sunken_city_boss) @@ -454,249 +492,194 @@ class AquariaRegions: AquariaLocations.locations_final_boss) self.final_boss_end = self.__add_region("The Body, final boss area", None) - def __connect_one_way_regions(self, source_name: str, destination_name: str, - source_region: Region, - destination_region: Region, rule=None) -> None: + def get_entrance_name(self, from_region: Region, to_region: Region): + """ + Return the name of an entrance between `from_region` and `to_region` + """ + return from_region.name + " to " + to_region.name + + def __connect_one_way_regions(self, source_region: Region, destination_region: Region, rule=None) -> None: """ Connect from the `source_region` to the `destination_region` """ - entrance = Entrance(source_region.player, source_name + " to " + destination_name, source_region) + entrance = Entrance(self.player, self.get_entrance_name(source_region, destination_region), source_region) source_region.exits.append(entrance) entrance.connect(destination_region) if rule is not None: set_rule(entrance, rule) - def __connect_regions(self, source_name: str, destination_name: str, - source_region: Region, + def __connect_regions(self, source_region: Region, destination_region: Region, rule=None) -> None: """ Connect the `source_region` and the `destination_region` (two-way) """ - self.__connect_one_way_regions(source_name, destination_name, source_region, destination_region, rule) - self.__connect_one_way_regions(destination_name, source_name, destination_region, source_region, rule) + self.__connect_one_way_regions(source_region, destination_region, rule) + self.__connect_one_way_regions(destination_region, source_region, rule) def __connect_home_water_regions(self) -> None: """ Connect entrances of the different regions around `home_water` """ - self.__connect_one_way_regions("Menu", "Verse Cave right area", - self.menu, self.verse_cave_r) - self.__connect_regions("Verse Cave left area", "Verse Cave right area", - self.verse_cave_l, self.verse_cave_r) - self.__connect_regions("Verse Cave", "Home Water", self.verse_cave_l, self.home_water) - self.__connect_regions("Home Water", "Haija's home", self.home_water, self.naija_home) - self.__connect_regions("Home Water", "Song Cave", self.home_water, self.song_cave) - self.__connect_regions("Home Water", "Home Water, nautilus nest", - self.home_water, self.home_water_nautilus, - lambda state: _has_energy_attack_item(state, self.player) and - _has_bind_song(state, self.player)) - self.__connect_regions("Home Water", "Home Water transturtle room", - self.home_water, self.home_water_transturtle) - self.__connect_regions("Home Water", "Energy Temple first area", - self.home_water, self.energy_temple_1, + self.__connect_one_way_regions(self.menu, self.verse_cave_r) + self.__connect_regions(self.verse_cave_l, self.verse_cave_r) + self.__connect_regions(self.verse_cave_l, self.home_water) + self.__connect_regions(self.home_water, self.naija_home) + self.__connect_regions(self.home_water, self.song_cave) + self.__connect_regions(self.home_water, self.home_water_behind_rocks, lambda state: _has_bind_song(state, self.player)) - self.__connect_regions("Home Water", "Energy Temple_altar", - self.home_water, self.energy_temple_altar, + self.__connect_regions(self.home_water_behind_rocks, self.home_water_nautilus, + lambda state: _has_energy_attack_item(state, self.player)) + self.__connect_regions(self.home_water, self.home_water_transturtle) + self.__connect_regions(self.home_water_behind_rocks, self.energy_temple_1) + self.__connect_regions(self.home_water_behind_rocks, self.energy_temple_altar, lambda state: _has_energy_attack_item(state, self.player) and _has_bind_song(state, self.player)) - self.__connect_regions("Energy Temple first area", "Energy Temple second area", - self.energy_temple_1, self.energy_temple_2, + self.__connect_regions(self.energy_temple_1, self.energy_temple_2, lambda state: _has_energy_form(state, self.player)) - self.__connect_regions("Energy Temple first area", "Energy Temple idol room", - self.energy_temple_1, self.energy_temple_idol, + self.__connect_regions(self.energy_temple_1, self.energy_temple_idol, lambda state: _has_fish_form(state, self.player)) - self.__connect_regions("Energy Temple idol room", "Energy Temple boss area", - self.energy_temple_idol, self.energy_temple_boss, + self.__connect_regions(self.energy_temple_idol, self.energy_temple_boss, lambda state: _has_energy_attack_item(state, self.player) and _has_fish_form(state, self.player)) - self.__connect_one_way_regions("Energy Temple first area", "Energy Temple boss area", - self.energy_temple_1, self.energy_temple_boss, - lambda state: _has_beast_form(state, self.player) and + self.__connect_one_way_regions(self.energy_temple_1, self.energy_temple_4, + lambda state: _has_beast_form(state, self.player)) + self.__connect_one_way_regions(self.energy_temple_4, self.energy_temple_1) + self.__connect_regions(self.energy_temple_4, self.energy_temple_boss, + lambda state: _has_energy_attack_item(state, self.player)) + self.__connect_regions(self.energy_temple_2, self.energy_temple_3) + self.__connect_one_way_regions(self.energy_temple_3, self.energy_temple_boss, + lambda state: _has_bind_song(state, self.player) and _has_energy_attack_item(state, self.player)) - self.__connect_one_way_regions("Energy Temple boss area", "Energy Temple first area", - self.energy_temple_boss, self.energy_temple_1, - lambda state: _has_energy_attack_item(state, self.player)) - self.__connect_regions("Energy Temple second area", "Energy Temple third area", - self.energy_temple_2, self.energy_temple_3, - lambda state: _has_energy_form(state, self.player)) - self.__connect_regions("Energy Temple boss area", "Energy Temple blaster room", - self.energy_temple_boss, self.energy_temple_blaster_room, - lambda state: _has_nature_form(state, self.player) and - _has_bind_song(state, self.player) and - _has_energy_attack_item(state, self.player)) - self.__connect_regions("Energy Temple first area", "Energy Temple blaster room", - self.energy_temple_1, self.energy_temple_blaster_room, - lambda state: _has_nature_form(state, self.player) and - _has_bind_song(state, self.player) and - _has_energy_attack_item(state, self.player) and - _has_beast_form(state, self.player)) - self.__connect_regions("Home Water", "Open Water top left area", - self.home_water, self.openwater_tl) + self.__connect_one_way_regions(self.energy_temple_4, self.energy_temple_blaster_room, + lambda state: _has_nature_form(state, self.player) and + _has_bind_song(state, self.player) and + _has_energy_attack_item(state, self.player)) + self.__connect_regions(self.home_water, self.openwater_tl) def __connect_open_water_regions(self) -> None: """ Connect entrances of the different regions around open water """ - self.__connect_regions("Open Water top left area", "Open Water top right area", - self.openwater_tl, self.openwater_tr) - self.__connect_regions("Open Water top left area", "Open Water bottom left area", - self.openwater_tl, self.openwater_bl) - self.__connect_regions("Open Water top left area", "forest bottom right area", - self.openwater_tl, self.forest_br) - self.__connect_regions("Open Water top right area", "Open Water top right area, turtle room", - self.openwater_tr, self.openwater_tr_turtle, - lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) - self.__connect_regions("Open Water top right area", "Open Water bottom right area", - self.openwater_tr, self.openwater_br) - self.__connect_regions("Open Water top right area", "Mithalas City", - self.openwater_tr, self.mithalas_city) - self.__connect_regions("Open Water top right area", "Veil bottom left area", - self.openwater_tr, self.veil_bl) - self.__connect_one_way_regions("Open Water top right area", "Veil bottom right", - self.openwater_tr, self.veil_br, + self.__connect_regions(self.openwater_tl, self.openwater_tr) + self.__connect_regions(self.openwater_tl, self.openwater_bl) + self.__connect_regions(self.openwater_tl, self.forest_br) + self.__connect_one_way_regions(self.openwater_tr, self.openwater_tr_turtle, lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) - self.__connect_one_way_regions("Veil bottom right", "Open Water top right area", - self.veil_br, self.openwater_tr) - self.__connect_regions("Open Water bottom left area", "Open Water bottom right area", - self.openwater_bl, self.openwater_br) - self.__connect_regions("Open Water bottom left area", "Skeleton path", - self.openwater_bl, self.skeleton_path) - self.__connect_regions("Abyss left area", "Open Water bottom left area", - self.abyss_l, self.openwater_bl) - self.__connect_regions("Skeleton path", "skeleton_path_sc", - self.skeleton_path, self.skeleton_path_sc, + self.__connect_one_way_regions(self.openwater_tr_turtle, self.openwater_tr) + self.__connect_one_way_regions(self.openwater_tr, self.openwater_tr_urns, + lambda state: _has_bind_song(state, self.player) or + _has_damaging_item(state, self.player)) + self.__connect_regions(self.openwater_tr, self.openwater_br) + self.__connect_regions(self.openwater_tr, self.mithalas_city) + self.__connect_regions(self.openwater_tr, self.veil_b) + self.__connect_one_way_regions(self.openwater_tr, self.veil_br, + lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) + self.__connect_one_way_regions(self.veil_br, self.openwater_tr) + self.__connect_regions(self.openwater_bl, self.openwater_br) + self.__connect_regions(self.openwater_bl, self.skeleton_path) + self.__connect_regions(self.abyss_l, self.openwater_bl) + self.__connect_regions(self.skeleton_path, self.skeleton_path_sc, lambda state: _has_spirit_form(state, self.player)) - self.__connect_regions("Abyss right area", "Open Water bottom right area", - self.abyss_r, self.openwater_br) - self.__connect_one_way_regions("Open Water bottom right area", "Arnassi", - self.openwater_br, self.arnassi, + self.__connect_regions(self.abyss_r, self.openwater_br) + self.__connect_one_way_regions(self.openwater_br, self.arnassi, lambda state: _has_beast_form(state, self.player)) - self.__connect_one_way_regions("Arnassi", "Open Water bottom right area", - self.arnassi, self.openwater_br) - self.__connect_regions("Arnassi", "Arnassi path", - self.arnassi, self.arnassi_path) - self.__connect_regions("Arnassi ruins, transturtle area", "Arnassi path", - self.arnassi_cave_transturtle, self.arnassi_path, + self.__connect_one_way_regions(self.arnassi, self.openwater_br) + self.__connect_regions(self.arnassi, self.arnassi_cave) + self.__connect_regions(self.arnassi_cave_transturtle, self.arnassi_cave, lambda state: _has_fish_form(state, self.player)) - self.__connect_one_way_regions("Arnassi path", "Arnassi crab boss area", - self.arnassi_path, self.arnassi_crab_boss, + self.__connect_one_way_regions(self.arnassi_cave, self.arnassi_crab_boss, lambda state: _has_beast_form_or_arnassi_armor(state, self.player) and (_has_energy_attack_item(state, self.player) or _has_nature_form(state, self.player))) - self.__connect_one_way_regions("Arnassi crab boss area", "Arnassi path", - self.arnassi_crab_boss, self.arnassi_path) + self.__connect_one_way_regions(self.arnassi_crab_boss, self.arnassi_cave) def __connect_mithalas_regions(self) -> None: """ Connect entrances of the different regions around Mithalas """ - self.__connect_one_way_regions("Mithalas City", "Mithalas City top path", - self.mithalas_city, self.mithalas_city_top_path, + self.__connect_one_way_regions(self.mithalas_city, self.mithalas_city_urns, + lambda state: _has_damaging_item(state, self.player)) + self.__connect_one_way_regions(self.mithalas_city, self.mithalas_city_top_path, lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) - self.__connect_one_way_regions("Mithalas City_top_path", "Mithalas City", - self.mithalas_city_top_path, self.mithalas_city) - self.__connect_regions("Mithalas City", "Mithalas City home with fishpass", - self.mithalas_city, self.mithalas_city_fishpass, + self.__connect_one_way_regions(self.mithalas_city_top_path, self.mithalas_city) + self.__connect_regions(self.mithalas_city, self.mithalas_city_fishpass, lambda state: _has_fish_form(state, self.player)) - self.__connect_regions("Mithalas City", "Mithalas castle", - self.mithalas_city, self.cathedral_l) - self.__connect_one_way_regions("Mithalas City top path", "Mithalas castle, flower tube", - self.mithalas_city_top_path, - self.cathedral_l_tube, + self.__connect_regions(self.mithalas_city, self.mithalas_castle) + self.__connect_one_way_regions(self.mithalas_city_top_path, + self.mithalas_castle_tube, lambda state: _has_nature_form(state, self.player) and _has_energy_attack_item(state, self.player)) - self.__connect_one_way_regions("Mithalas castle, flower tube area", "Mithalas City top path", - self.cathedral_l_tube, + self.__connect_one_way_regions(self.mithalas_castle_tube, self.mithalas_city_top_path, lambda state: _has_nature_form(state, self.player)) - self.__connect_one_way_regions("Mithalas castle flower tube area", "Mithalas castle, spirit crystals", - self.cathedral_l_tube, self.cathedral_l_sc, + self.__connect_one_way_regions(self.mithalas_castle_tube, self.mithalas_castle_sc, lambda state: _has_spirit_form(state, self.player)) - self.__connect_one_way_regions("Mithalas castle_flower tube area", "Mithalas castle", - self.cathedral_l_tube, self.cathedral_l, + self.__connect_one_way_regions(self.mithalas_castle_tube, self.mithalas_castle, lambda state: _has_spirit_form(state, self.player)) - self.__connect_regions("Mithalas castle", "Mithalas castle, spirit crystals", - self.cathedral_l, self.cathedral_l_sc, + self.__connect_one_way_regions(self.mithalas_castle, self.mithalas_castle_urns, + lambda state: _has_damaging_item(state, self.player)) + self.__connect_regions(self.mithalas_castle, self.mithalas_castle_sc, lambda state: _has_spirit_form(state, self.player)) - self.__connect_one_way_regions("Mithalas castle", "Cathedral boss right area", - self.cathedral_l, self.cathedral_boss_r, + self.__connect_one_way_regions(self.mithalas_castle, self.cathedral_boss_r, lambda state: _has_beast_form(state, self.player)) - self.__connect_one_way_regions("Cathedral boss left area", "Mithalas castle", - self.cathedral_boss_l, self.cathedral_l, + self.__connect_one_way_regions(self.cathedral_boss_l, self.mithalas_castle, lambda state: _has_beast_form(state, self.player)) - self.__connect_regions("Mithalas castle", "Mithalas Cathedral underground", - self.cathedral_l, self.cathedral_underground, + self.__connect_regions(self.mithalas_castle, self.cathedral_underground, lambda state: _has_beast_form(state, self.player)) - self.__connect_one_way_regions("Mithalas castle", "Mithalas Cathedral", - self.cathedral_l, self.cathedral_r, - lambda state: _has_bind_song(state, self.player) and - _has_energy_attack_item(state, self.player)) - self.__connect_one_way_regions("Mithalas Cathedral", "Mithalas Cathedral underground", - self.cathedral_r, self.cathedral_underground) - self.__connect_one_way_regions("Mithalas Cathedral underground", "Mithalas Cathedral", - self.cathedral_underground, self.cathedral_r, + self.__connect_one_way_regions(self.mithalas_castle, self.cathedral_top_start, + lambda state: _has_bind_song(state, self.player)) + self.__connect_one_way_regions(self.cathedral_top_start, self.cathedral_top_start_urns, + lambda state: _has_damaging_item(state, self.player)) + self.__connect_regions(self.cathedral_top_start, self.cathedral_top_end, + lambda state: _has_energy_attack_item(state, self.player)) + self.__connect_one_way_regions(self.cathedral_underground, self.cathedral_top_end, lambda state: _has_beast_form(state, self.player) and - _has_energy_attack_item(state, self.player)) - self.__connect_one_way_regions("Mithalas Cathedral underground", "Cathedral boss right area", - self.cathedral_underground, self.cathedral_boss_r) - self.__connect_one_way_regions("Cathedral boss right area", "Mithalas Cathedral underground", - self.cathedral_boss_r, self.cathedral_underground, + _has_damaging_item(state, self.player)) + self.__connect_one_way_regions(self.cathedral_top_end, self.cathedral_underground, + lambda state: _has_energy_attack_item(state, self.player) + ) + self.__connect_one_way_regions(self.cathedral_underground, self.cathedral_boss_r) + self.__connect_one_way_regions(self.cathedral_boss_r, self.cathedral_underground, lambda state: _has_beast_form(state, self.player)) - self.__connect_one_way_regions("Cathedral boss right area", "Cathedral boss left area", - self.cathedral_boss_r, self.cathedral_boss_l, + self.__connect_one_way_regions(self.cathedral_boss_r, self.cathedral_boss_l, lambda state: _has_bind_song(state, self.player) and _has_energy_attack_item(state, self.player)) - self.__connect_one_way_regions("Cathedral boss left area", "Cathedral boss right area", - self.cathedral_boss_l, self.cathedral_boss_r) + self.__connect_one_way_regions(self.cathedral_boss_l, self.cathedral_boss_r) def __connect_forest_regions(self) -> None: """ Connect entrances of the different regions around the Kelp Forest """ - self.__connect_regions("Forest bottom right", "Veil bottom left area", - self.forest_br, self.veil_bl) - self.__connect_regions("Forest bottom right", "Forest bottom left area", - self.forest_br, self.forest_bl) - self.__connect_one_way_regions("Forest bottom left area", "Forest bottom left area, spirit crystals", - self.forest_bl, self.forest_bl_sc, + self.__connect_regions(self.forest_br, self.veil_b) + self.__connect_regions(self.forest_br, self.forest_bl) + self.__connect_one_way_regions(self.forest_bl, self.forest_bl_sc, lambda state: _has_energy_attack_item(state, self.player) or _has_fish_form(state, self.player)) - self.__connect_one_way_regions("Forest bottom left area, spirit crystals", "Forest bottom left area", - self.forest_bl_sc, self.forest_bl) - self.__connect_regions("Forest bottom right", "Forest top right area", - self.forest_br, self.forest_tr) - self.__connect_regions("Forest bottom left area", "Forest fish cave", - self.forest_bl, self.forest_fish_cave) - self.__connect_regions("Forest bottom left area", "Forest top left area", - self.forest_bl, self.forest_tl) - self.__connect_regions("Forest bottom left area", "Forest boss entrance", - self.forest_bl, self.forest_boss_entrance, + self.__connect_one_way_regions(self.forest_bl_sc, self.forest_bl) + self.__connect_regions(self.forest_br, self.forest_tr) + self.__connect_regions(self.forest_bl, self.forest_fish_cave) + self.__connect_regions(self.forest_bl, self.forest_tl) + self.__connect_regions(self.forest_bl, self.forest_boss_entrance, lambda state: _has_nature_form(state, self.player)) - self.__connect_regions("Forest top left area", "Forest top left area, fish pass", - self.forest_tl, self.forest_tl_fp, - lambda state: _has_nature_form(state, self.player) and - _has_bind_song(state, self.player) and - _has_energy_attack_item(state, self.player) and - _has_fish_form(state, self.player)) - self.__connect_regions("Forest top left area", "Forest top right area", - self.forest_tl, self.forest_tr) - self.__connect_regions("Forest top left area", "Forest boss entrance", - self.forest_tl, self.forest_boss_entrance) - self.__connect_regions("Forest boss area", "Forest boss entrance", - self.forest_boss, self.forest_boss_entrance, - lambda state: _has_energy_attack_item(state, self.player)) - self.__connect_regions("Forest top right area", "Forest top right area fish pass", - self.forest_tr, self.forest_tr_fp, + self.__connect_one_way_regions(self.forest_tl, self.forest_tl_verse_egg_room, + lambda state: _has_nature_form(state, self.player) and + _has_bind_song(state, self.player) and + _has_energy_attack_item(state, self.player) and + _has_fish_form(state, self.player)) + self.__connect_one_way_regions(self.forest_tl_verse_egg_room, self.forest_tl, + lambda state: _has_fish_form(state, self.player)) + self.__connect_regions(self.forest_tl, self.forest_tr) + self.__connect_regions(self.forest_tl, self.forest_boss_entrance) + self.__connect_one_way_regions(self.forest_boss_entrance, self.forest_boss, + lambda state: _has_energy_attack_item(state, self.player)) + self.__connect_one_way_regions(self.forest_boss, self.forest_boss_entrance) + self.__connect_regions(self.forest_tr, self.forest_tr_fp, lambda state: _has_fish_form(state, self.player)) - self.__connect_regions("Forest top right area", "Forest sprite cave", - self.forest_tr, self.forest_sprite_cave) - self.__connect_regions("Forest sprite cave", "Forest sprite cave flower tube", - self.forest_sprite_cave, self.forest_sprite_cave_tube, + self.__connect_regions(self.forest_tr, self.sprite_cave) + self.__connect_regions(self.sprite_cave, self.sprite_cave_tube, lambda state: _has_nature_form(state, self.player)) - self.__connect_regions("Forest top right area", "Mermog cave", - self.forest_tr_fp, self.mermog_cave) - self.__connect_regions("Fermog cave", "Fermog boss", - self.mermog_cave, self.mermog_boss, + self.__connect_regions(self.forest_tr_fp, self.mermog_cave) + self.__connect_regions(self.mermog_cave, self.mermog_boss, lambda state: _has_beast_form(state, self.player) and _has_energy_attack_item(state, self.player)) @@ -704,113 +687,94 @@ class AquariaRegions: """ Connect entrances of the different regions around The Veil """ - self.__connect_regions("Veil bottom left area", "Veil bottom left area, fish pass", - self.veil_bl, self.veil_bl_fp, + self.__connect_regions(self.veil_b, self.veil_b_fp, lambda state: _has_fish_form(state, self.player) and - _has_bind_song(state, self.player) and - _has_damaging_item(state, self.player)) - self.__connect_regions("Veil bottom left area", "Veil bottom area spirit crystals path", - self.veil_bl, self.veil_b_sc, + _has_bind_song(state, self.player)) + self.__connect_regions(self.veil_b, self.veil_b_sc, lambda state: _has_spirit_form(state, self.player)) - self.__connect_regions("Veil bottom area spirit crystals path", "Veil bottom right", - self.veil_b_sc, self.veil_br, + self.__connect_regions(self.veil_b_sc, self.veil_br, lambda state: _has_spirit_form(state, self.player)) - self.__connect_regions("Veil bottom right", "Veil top left area", - self.veil_br, self.veil_tl) - self.__connect_regions("Veil top left area", "Veil_top left area, fish pass", - self.veil_tl, self.veil_tl_fp, + self.__connect_regions(self.veil_br, self.veil_tl) + self.__connect_regions(self.veil_tl, self.veil_tl_fp, lambda state: _has_fish_form(state, self.player)) - self.__connect_regions("Veil top left area", "Veil right of sun temple", - self.veil_tl, self.veil_tr_r) - self.__connect_regions("Veil top left area", "Turtle cave", - self.veil_tl, self.turtle_cave) - self.__connect_regions("Turtle cave", "Turtle cave Bubble Cliff", - self.turtle_cave, self.turtle_cave_bubble) - self.__connect_regions("Veil right of sun temple", "Sun Temple right area", - self.veil_tr_r, self.sun_temple_r) - self.__connect_one_way_regions("Sun Temple right area", "Sun Temple left area", - self.sun_temple_r, self.sun_temple_l, + self.__connect_regions(self.veil_tl, self.veil_tr_r) + self.__connect_regions(self.veil_tl, self.turtle_cave) + self.__connect_regions(self.turtle_cave, self.turtle_cave_bubble) + self.__connect_regions(self.veil_tr_r, self.sun_temple_r) + + self.__connect_one_way_regions(self.sun_temple_r, self.sun_temple_l_entrance, lambda state: _has_bind_song(state, self.player) or _has_light(state, self.player)) - self.__connect_one_way_regions("Sun Temple left area", "Sun Temple right area", - self.sun_temple_l, self.sun_temple_r, + self.__connect_one_way_regions(self.sun_temple_l_entrance, self.sun_temple_r, lambda state: _has_light(state, self.player)) - self.__connect_regions("Sun Temple left area", "Veil left of sun temple", - self.sun_temple_l, self.veil_tr_l) - self.__connect_regions("Sun Temple left area", "Sun Temple before boss area", - self.sun_temple_l, self.sun_temple_boss_path) - self.__connect_regions("Sun Temple before boss area", "Sun Temple boss area", - self.sun_temple_boss_path, self.sun_temple_boss, + self.__connect_regions(self.sun_temple_l_entrance, self.veil_tr_l) + self.__connect_regions(self.sun_temple_l, self.sun_temple_l_entrance) + self.__connect_one_way_regions(self.sun_temple_l, self.sun_temple_boss_path) + self.__connect_one_way_regions(self.sun_temple_boss_path, self.sun_temple_l) + self.__connect_regions(self.sun_temple_boss_path, self.sun_temple_boss, lambda state: _has_energy_attack_item(state, self.player)) - self.__connect_one_way_regions("Sun Temple boss area", "Veil left of sun temple", - self.sun_temple_boss, self.veil_tr_l) - self.__connect_regions("Veil left of sun temple", "Octo cave top path", - self.veil_tr_l, self.octo_cave_t, - lambda state: _has_fish_form(state, self.player) and - _has_sun_form(state, self.player) and - _has_beast_form(state, self.player) and - _has_energy_attack_item(state, self.player)) - self.__connect_regions("Veil left of sun temple", "Octo cave bottom path", - self.veil_tr_l, self.octo_cave_b, + self.__connect_one_way_regions(self.sun_temple_boss, self.veil_tr_l) + self.__connect_regions(self.veil_tr_l, self.veil_tr_l_fp, lambda state: _has_fish_form(state, self.player)) + self.__connect_one_way_regions(self.veil_tr_l_fp, self.octo_cave_t, + lambda state: _has_sun_form(state, self.player) and + _has_beast_form(state, self.player) and + _has_energy_attack_item(state, self.player)) + self.__connect_one_way_regions(self.octo_cave_t, self.veil_tr_l_fp) + self.__connect_regions(self.veil_tr_l_fp, self.octo_cave_b) def __connect_abyss_regions(self) -> None: """ Connect entrances of the different regions around The Abyss """ - self.__connect_regions("Abyss left area", "Abyss bottom of left area", - self.abyss_l, self.abyss_lb, + self.__connect_regions(self.abyss_l, self.abyss_lb, lambda state: _has_nature_form(state, self.player)) - self.__connect_regions("Abyss left bottom area", "Sunken City right area", - self.abyss_lb, self.sunken_city_r, + self.__connect_regions(self.abyss_lb, self.sunken_city_r, lambda state: _has_li(state, self.player)) - self.__connect_one_way_regions("Abyss left bottom area", "Body center area", - self.abyss_lb, self.body_c, + self.__connect_one_way_regions(self.abyss_lb, self.body_c, lambda state: _has_tongue_cleared(state, self.player)) - self.__connect_one_way_regions("Body center area", "Abyss left bottom area", - self.body_c, self.abyss_lb) - self.__connect_regions("Abyss left area", "King jellyfish cave", - self.abyss_l, self.king_jellyfish_cave, - lambda state: (_has_energy_form(state, self.player) and - _has_beast_form(state, self.player)) or - _has_dual_form(state, self.player)) - self.__connect_regions("Abyss left area", "Abyss right area", - self.abyss_l, self.abyss_r) - self.__connect_regions("Abyss right area", "Abyss right area, transturtle", - self.abyss_r, self.abyss_r_transturtle) - self.__connect_regions("Abyss right area", "Inside the whale", - self.abyss_r, self.whale, + self.__connect_one_way_regions(self.body_c, self.abyss_lb) + self.__connect_one_way_regions(self.abyss_l, self.king_jellyfish_cave, + lambda state: _has_dual_form(state, self.player) or + (_has_energy_form(state, self.player) and + _has_beast_form(state, self.player))) + self.__connect_one_way_regions(self.king_jellyfish_cave, self.abyss_l) + self.__connect_regions(self.abyss_l, self.abyss_r) + self.__connect_regions(self.abyss_r, self.abyss_r_whale, lambda state: _has_spirit_form(state, self.player) and _has_sun_form(state, self.player)) - self.__connect_regions("Abyss right area", "First secret area", - self.abyss_r, self.first_secret, + self.__connect_regions(self.abyss_r_whale, self.whale) + self.__connect_regions(self.abyss_r, self.abyss_r_transturtle) + self.__connect_regions(self.abyss_r, self.first_secret, lambda state: _has_spirit_form(state, self.player) and _has_sun_form(state, self.player) and _has_bind_song(state, self.player) and _has_energy_attack_item(state, self.player)) - self.__connect_regions("Abyss right area", "Ice Cave", - self.abyss_r, self.ice_cave, + self.__connect_regions(self.abyss_r, self.ice_cave, lambda state: _has_spirit_form(state, self.player)) - self.__connect_regions("Ice cave", "Bubble Cave", - self.ice_cave, self.bubble_cave, - lambda state: _has_beast_form(state, self.player) or - _has_hot_soup(state, self.player)) - self.__connect_regions("Bubble Cave boss area", "Bubble Cave", - self.bubble_cave, self.bubble_cave_boss, - lambda state: _has_nature_form(state, self.player) and _has_bind_song(state, self.player) - ) + self.__connect_regions(self.ice_cave, self.frozen_feil) + self.__connect_one_way_regions(self.frozen_feil, self.bubble_cave, + lambda state: _has_beast_form(state, self.player) or + _has_hot_soup(state, self.player)) + self.__connect_one_way_regions(self.bubble_cave, self.frozen_feil) + self.__connect_one_way_regions(self.bubble_cave, self.bubble_cave_boss, + lambda state: _has_nature_form(state, self.player) and + _has_bind_song(state, self.player) + ) + self.__connect_one_way_regions(self.bubble_cave_boss, self.bubble_cave) def __connect_sunken_city_regions(self) -> None: """ Connect entrances of the different regions around The Sunken City """ - self.__connect_regions("Sunken City right area", "Sunken City left area", - self.sunken_city_r, self.sunken_city_l) - self.__connect_regions("Sunken City left area", "Sunken City bedroom", - self.sunken_city_l, self.sunken_city_l_bedroom, + self.__connect_regions(self.sunken_city_r, self.sunken_city_l) + self.__connect_one_way_regions(self.sunken_city_r, self.sunken_city_r_crates, + lambda state: _has_energy_attack_item(state, self.player)) + self.__connect_regions(self.sunken_city_l, self.sunken_city_l_bedroom, lambda state: _has_spirit_form(state, self.player)) - self.__connect_regions("Sunken City left area", "Sunken City boss area", - self.sunken_city_l, self.sunken_city_boss, + self.__connect_one_way_regions(self.sunken_city_l, self.sunken_city_l_crates, + lambda state: _has_energy_attack_item(state, self.player)) + self.__connect_regions(self.sunken_city_l, self.sunken_city_boss, lambda state: _has_beast_form(state, self.player) and _has_sun_form(state, self.player) and _has_energy_attack_item(state, self.player) and @@ -820,62 +784,55 @@ class AquariaRegions: """ Connect entrances of the different regions around The Body """ - self.__connect_regions("Body center area", "Body left area", - self.body_c, self.body_l, - lambda state: _has_energy_form(state, self.player)) - self.__connect_regions("Body center area", "Body right area top path", - self.body_c, self.body_rt) - self.__connect_regions("Body center area", "Body right area bottom path", - self.body_c, self.body_rb, - lambda state: _has_energy_form(state, self.player)) - self.__connect_regions("Body center area", "Body bottom area", - self.body_c, self.body_b, + self.__connect_one_way_regions(self.body_c, self.body_l, + lambda state: _has_energy_form(state, self.player)) + self.__connect_one_way_regions(self.body_l, self.body_c) + self.__connect_regions(self.body_c, self.body_rt) + self.__connect_one_way_regions(self.body_c, self.body_rb, + lambda state: _has_energy_form(state, self.player)) + self.__connect_one_way_regions(self.body_rb, self.body_c) + self.__connect_regions(self.body_c, self.body_b, lambda state: _has_dual_form(state, self.player)) - self.__connect_regions("Body bottom area", "Final Boss area", - self.body_b, self.final_boss_loby, + self.__connect_regions(self.body_b, self.final_boss_loby, lambda state: _has_dual_form(state, self.player)) - self.__connect_regions("Before Final Boss", "Final Boss tube", - self.final_boss_loby, self.final_boss_tube, + self.__connect_regions(self.final_boss_loby, self.final_boss_tube, lambda state: _has_nature_form(state, self.player)) - self.__connect_one_way_regions("Before Final Boss", "Final Boss", - self.final_boss_loby, self.final_boss, + self.__connect_one_way_regions(self.final_boss_loby, self.final_boss, lambda state: _has_energy_form(state, self.player) and _has_dual_form(state, self.player) and _has_sun_form(state, self.player) and _has_bind_song(state, self.player)) - self.__connect_one_way_regions("final boss third form area", "final boss end", - self.final_boss, self.final_boss_end) + self.__connect_one_way_regions(self.final_boss, self.final_boss_end) - def __connect_transturtle(self, item_source: str, item_target: str, region_source: Region, - region_target: Region) -> None: + def __connect_transturtle(self, item_target: str, region_source: Region, region_target: Region) -> None: """Connect a single transturtle to another one""" - if item_source != item_target: - self.__connect_one_way_regions(item_source, item_target, region_source, region_target, + if region_source != region_target: + self.__connect_one_way_regions(region_source, region_target, lambda state: state.has(item_target, self.player)) - def _connect_transturtle_to_other(self, item: str, region: Region) -> None: + def _connect_transturtle_to_other(self, region: Region) -> None: """Connect a single transturtle to all others""" - self.__connect_transturtle(item, "Transturtle Veil top left", region, self.veil_tl) - self.__connect_transturtle(item, "Transturtle Veil top right", region, self.veil_tr_l) - self.__connect_transturtle(item, "Transturtle Open Water top right", region, self.openwater_tr_turtle) - self.__connect_transturtle(item, "Transturtle Forest bottom left", region, self.forest_bl) - self.__connect_transturtle(item, "Transturtle Home Water", region, self.home_water_transturtle) - self.__connect_transturtle(item, "Transturtle Abyss right", region, self.abyss_r_transturtle) - self.__connect_transturtle(item, "Transturtle Final Boss", region, self.final_boss_tube) - self.__connect_transturtle(item, "Transturtle Simon Says", region, self.simon) - self.__connect_transturtle(item, "Transturtle Arnassi Ruins", region, self.arnassi_cave_transturtle) + self.__connect_transturtle(ItemNames.TRANSTURTLE_VEIL_TOP_LEFT, region, self.veil_tl) + self.__connect_transturtle(ItemNames.TRANSTURTLE_VEIL_TOP_RIGHT, region, self.veil_tr_l) + self.__connect_transturtle(ItemNames.TRANSTURTLE_OPEN_WATERS, region, self.openwater_tr_turtle) + self.__connect_transturtle(ItemNames.TRANSTURTLE_KELP_FOREST, region, self.forest_bl) + self.__connect_transturtle(ItemNames.TRANSTURTLE_HOME_WATERS, region, self.home_water_transturtle) + self.__connect_transturtle(ItemNames.TRANSTURTLE_ABYSS, region, self.abyss_r_transturtle) + self.__connect_transturtle(ItemNames.TRANSTURTLE_BODY, region, self.final_boss_tube) + self.__connect_transturtle(ItemNames.TRANSTURTLE_SIMON_SAYS, region, self.simon) + self.__connect_transturtle(ItemNames.TRANSTURTLE_ARNASSI_RUINS, region, self.arnassi_cave_transturtle) def __connect_transturtles(self) -> None: """Connect every transturtle with others""" - self._connect_transturtle_to_other("Transturtle Veil top left", self.veil_tl) - self._connect_transturtle_to_other("Transturtle Veil top right", self.veil_tr_l) - self._connect_transturtle_to_other("Transturtle Open Water top right", self.openwater_tr_turtle) - self._connect_transturtle_to_other("Transturtle Forest bottom left", self.forest_bl) - self._connect_transturtle_to_other("Transturtle Home Water", self.home_water_transturtle) - self._connect_transturtle_to_other("Transturtle Abyss right", self.abyss_r_transturtle) - self._connect_transturtle_to_other("Transturtle Final Boss", self.final_boss_tube) - self._connect_transturtle_to_other("Transturtle Simon Says", self.simon) - self._connect_transturtle_to_other("Transturtle Arnassi Ruins", self.arnassi_cave_transturtle) + self._connect_transturtle_to_other(self.veil_tl) + self._connect_transturtle_to_other(self.veil_tr_l) + self._connect_transturtle_to_other(self.openwater_tr_turtle) + self._connect_transturtle_to_other(self.forest_bl) + self._connect_transturtle_to_other(self.home_water_transturtle) + self._connect_transturtle_to_other(self.abyss_r_transturtle) + self._connect_transturtle_to_other(self.final_boss_tube) + self._connect_transturtle_to_other(self.simon) + self._connect_transturtle_to_other(self.arnassi_cave_transturtle) def connect_regions(self) -> None: """ @@ -910,20 +867,20 @@ class AquariaRegions: Add every bit bosses (other than the creator) events to the `world` """ self.__add_event_location(self.energy_temple_boss, - "Beating Fallen God", - "Fallen God beated") + AquariaLocationNames.BEATING_FALLEN_GOD, + ItemNames.FALLEN_GOD_BEATED) self.__add_event_location(self.cathedral_boss_l, - "Beating Mithalan God", - "Mithalan God beated") + AquariaLocationNames.BEATING_MITHALAN_GOD, + ItemNames.MITHALAN_GOD_BEATED) self.__add_event_location(self.forest_boss, - "Beating Drunian God", - "Drunian God beated") + AquariaLocationNames.BEATING_DRUNIAN_GOD, + ItemNames.DRUNIAN_GOD_BEATED) self.__add_event_location(self.sun_temple_boss, - "Beating Sun God", - "Sun God beated") + AquariaLocationNames.BEATING_LUMEREAN_GOD, + ItemNames.LUMEREAN_GOD_BEATED) self.__add_event_location(self.sunken_city_boss, - "Beating the Golem", - "The Golem beated") + AquariaLocationNames.BEATING_THE_GOLEM, + ItemNames.THE_GOLEM_BEATED) def __add_event_mini_bosses(self) -> None: """ @@ -931,43 +888,44 @@ class AquariaRegions: events to the `world` """ self.__add_event_location(self.home_water_nautilus, - "Beating Nautilus Prime", - "Nautilus Prime beated") + AquariaLocationNames.BEATING_NAUTILUS_PRIME, + ItemNames.NAUTILUS_PRIME_BEATED) self.__add_event_location(self.energy_temple_blaster_room, - "Beating Blaster Peg Prime", - "Blaster Peg Prime beated") + AquariaLocationNames.BEATING_BLASTER_PEG_PRIME, + ItemNames.BLASTER_PEG_PRIME_BEATED) self.__add_event_location(self.mermog_boss, - "Beating Mergog", - "Mergog beated") - self.__add_event_location(self.cathedral_l_tube, - "Beating Mithalan priests", - "Mithalan priests beated") + AquariaLocationNames.BEATING_MERGOG, + ItemNames.MERGOG_BEATED) + self.__add_event_location(self.mithalas_castle_tube, + AquariaLocationNames.BEATING_MITHALAN_PRIESTS, + ItemNames.MITHALAN_PRIESTS_BEATED) self.__add_event_location(self.octo_cave_t, - "Beating Octopus Prime", - "Octopus Prime beated") + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + ItemNames.OCTOPUS_PRIME_BEATED) self.__add_event_location(self.arnassi_crab_boss, - "Beating Crabbius Maximus", - "Crabbius Maximus beated") + AquariaLocationNames.BEATING_CRABBIUS_MAXIMUS, + ItemNames.CRABBIUS_MAXIMUS_BEATED) self.__add_event_location(self.bubble_cave_boss, - "Beating Mantis Shrimp Prime", - "Mantis Shrimp Prime beated") + AquariaLocationNames.BEATING_MANTIS_SHRIMP_PRIME, + ItemNames.MANTIS_SHRIMP_PRIME_BEATED) self.__add_event_location(self.king_jellyfish_cave, - "Beating King Jellyfish God Prime", - "King Jellyfish God Prime beated") + AquariaLocationNames.BEATING_KING_JELLYFISH_GOD_PRIME, + ItemNames.KING_JELLYFISH_GOD_PRIME_BEATED) 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" - "First secret", - "First secret obtained") + self.__add_event_location(self.first_secret, + # Doit ajouter une région pour le AquariaLocationNames.FIRST_SECRET + AquariaLocationNames.FIRST_SECRET, + ItemNames.FIRST_SECRET_OBTAINED) self.__add_event_location(self.mithalas_city, - "Second secret", - "Second secret obtained") + AquariaLocationNames.SECOND_SECRET, + ItemNames.SECOND_SECRET_OBTAINED) self.__add_event_location(self.sun_temple_l, - "Third secret", - "Third secret obtained") + AquariaLocationNames.THIRD_SECRET, + ItemNames.THIRD_SECRET_OBTAINED) def add_event_locations(self) -> None: """ @@ -977,287 +935,236 @@ class AquariaRegions: self.__add_event_big_bosses() self.__add_event_secrets() self.__add_event_location(self.sunken_city_boss, - "Sunken City cleared", - "Body tongue cleared") + AquariaLocationNames.SUNKEN_CITY_CLEARED, + ItemNames.BODY_TONGUE_CLEARED) self.__add_event_location(self.sun_temple_r, - "Sun Crystal", - "Has sun crystal") - self.__add_event_location(self.final_boss_end, "Objective complete", - "Victory") - - def __adjusting_urns_rules(self) -> None: - """Since Urns need to be broken, add a damaging item to rules""" - add_rule(self.multiworld.get_location("Open Water top right area, first urn in the Mithalas exit", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule( - self.multiworld.get_location("Open Water top right area, second urn in the Mithalas exit", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Open Water top right area, third urn in the Mithalas exit", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, first urn in one of the homes", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, second urn in one of the homes", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, first urn in the city reserve", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, second urn in the city reserve", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, third urn in the city reserve", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, urn in the Castle flower tube entrance", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City Castle, urn in the bedroom", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City Castle, first urn of the single lamp path", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City Castle, second urn of the single lamp path", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City Castle, urn in the bottom room", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City Castle, first urn on the entrance path", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City Castle, second urn on the entrance path", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, urn inside a home fish pass", self.player), - lambda state: _has_damaging_item(state, self.player)) - - def __adjusting_crates_rules(self) -> None: - """Since Crate need to be broken, add a damaging item to rules""" - add_rule(self.multiworld.get_location("Sunken City right area, crate close to the save crystal", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Sunken City right area, crate in the left bottom room", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Sunken City left area, crate in the little pipe room", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Sunken City left area, crate close to the save crystal", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Sunken City left area, crate before the bedroom", self.player), - lambda state: _has_damaging_item(state, self.player)) + AquariaLocationNames.SUN_CRYSTAL, + ItemNames.HAS_SUN_CRYSTAL) + self.__add_event_location(self.final_boss_end, AquariaLocationNames.OBJECTIVE_COMPLETE, + ItemNames.VICTORY) def __adjusting_soup_rules(self) -> None: """ Modify rules for location that need soup """ - add_rule(self.multiworld.get_location("Turtle cave, Urchin Costume", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.TURTLE_CAVE_URCHIN_COSTUME, self.player), lambda state: _has_hot_soup(state, self.player)) - add_rule(self.multiworld.get_location("The Veil top right area, bulb at the top of the waterfall", self.player), - lambda state: _has_beast_and_soup_form(state, self.player)) + add_rule(self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, self.player), + lambda state: _has_beast_and_soup_form(state, self.player) or + state.has(ItemNames.LUMEREAN_GOD_BEATED, self.player), combine="or") + add_rule(self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB, self.player), + lambda state: _has_beast_and_soup_form(state, self.player) or + state.has(ItemNames.LUMEREAN_GOD_BEATED, self.player), combine="or") + add_rule( + self.multiworld.get_location(AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + self.player), + lambda state: _has_beast_and_soup_form(state, self.player)) def __adjusting_under_rock_location(self) -> None: """ Modify rules implying bind song needed for bulb under rocks """ - add_rule(self.multiworld.get_location("Home Water, bulb under the rock in the left path from the Verse Cave", + add_rule(self.multiworld.get_location( + AquariaLocationNames.HOME_WATERS_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH_FROM_THE_VERSE_CAVE, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.VERSE_CAVE_LEFT_AREA_BULB_UNDER_THE_ROCK_AT_THE_END_OF_THE_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.NAIJA_S_HOME_BULB_UNDER_THE_ROCK_AT_THE_RIGHT_OF_THE_MAIN_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.SONG_CAVE_BULB_UNDER_THE_ROCK_IN_THE_PATH_TO_THE_SINGING_STATUES, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location(AquariaLocationNames.SONG_CAVE_BULB_UNDER_THE_ROCK_CLOSE_TO_THE_SONG_DOOR, self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Verse Cave left area, bulb under the rock at the end of the path", + add_rule(self.multiworld.get_location(AquariaLocationNames.ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK, self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Naija's Home, bulb under the rock at the right of the main path", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Song Cave, bulb under the rock in the path to the singing statues", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Song Cave, bulb under the rock close to the song door", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Energy Temple second area, bulb under the rock", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Open Water top left area, bulb under the rock in the right path", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Open Water top left area, bulb under the rock in the left path", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Kelp Forest top right area, bulb under the rock in the right path", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("The Veil top left area, bulb under the rock in the top right path", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Abyss right area, bulb behind the rock in the whale room", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Abyss right area, bulb in the middle path", - self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("The Veil top left area, bulb under the rock in the top right path", + add_rule(self.multiworld.get_location( + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_TOP_RIGHT_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule( + self.multiworld.get_location(AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location(AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_MIDDLE_PATH, self.player), lambda state: _has_bind_song(state, self.player)) + add_rule(self.multiworld.get_location( + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_TOP_RIGHT_PATH, + self.player), lambda state: _has_bind_song(state, self.player)) def __adjusting_light_in_dark_place_rules(self) -> None: - add_rule(self.multiworld.get_location("Kelp Forest top right area, Black Pearl", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BLACK_PEARL, self.player), lambda state: _has_light(state, self.player)) - add_rule(self.multiworld.get_location("Kelp Forest bottom right area, Odd Container", self.player), + add_rule( + self.multiworld.get_location(AquariaLocationNames.KELP_FOREST_BOTTOM_RIGHT_AREA_ODD_CONTAINER, self.player), + lambda state: _has_light(state, self.player)) + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.sun_temple_l_entrance, self.sun_temple_l), + self.player), lambda state: _has_light(state, self.player) or + _has_sun_crystal(state, self.player)) + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.sun_temple_boss_path, self.sun_temple_l), + self.player), lambda state: _has_light(state, self.player) or + _has_sun_crystal(state, self.player)) + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.abyss_r_transturtle, self.abyss_r), + self.player), lambda state: _has_light(state, self.player)) - add_rule(self.multiworld.get_entrance("Body center area to Abyss left bottom area", self.player), + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.body_c, self.abyss_lb), self.player), lambda state: _has_light(state, self.player)) - add_rule(self.multiworld.get_entrance("Veil left of sun temple to Octo cave top path", self.player), + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.openwater_br, self.abyss_r), self.player), lambda state: _has_light(state, self.player)) - add_rule(self.multiworld.get_entrance("Open Water bottom right area to Abyss right area", self.player), - lambda state: _has_light(state, self.player)) - add_rule(self.multiworld.get_entrance("Open Water bottom left area to Abyss left area", self.player), - lambda state: _has_light(state, 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)) - add_rule(self.multiworld.get_entrance("Abyss right area, transturtle to Abyss right area", self.player), + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.openwater_bl, self.abyss_l), self.player), lambda state: _has_light(state, self.player)) def __adjusting_manual_rules(self) -> None: - add_rule(self.multiworld.get_location("Mithalas Cathedral, Mithalan Dress", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.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 lowest fish pass", self.player), + add_rule(self.multiworld.get_location( + AquariaLocationNames.OPEN_WATERS_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)) add_rule( - self.multiworld.get_location("The Veil top left area, bulb hidden behind the blocking rock", self.player), + self.multiworld.get_location(AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY, self.player), + lambda state: _has_spirit_form(state, self.player)) + add_rule( + self.multiworld.get_location( + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_HIDDEN_BEHIND_THE_BLOCKING_ROCK, self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Turtle cave, Turtle Egg", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.TURTLE_CAVE_TURTLE_EGG, self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Abyss left area, bulb in the bottom fish pass", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS, + self.player), lambda state: _has_fish_form(state, self.player)) - add_rule(self.multiworld.get_location("Song Cave, Anemone Seed", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.SONG_CAVE_ANEMONE_SEED, self.player), lambda state: _has_nature_form(state, self.player)) - add_rule(self.multiworld.get_location("Song Cave, Verse Egg", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.SONG_CAVE_VERSE_EGG, self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Verse Cave right area, Big Seed", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.VERSE_CAVE_RIGHT_AREA_BIG_SEED, self.player), lambda state: _has_bind_song(state, self.player)) - add_rule(self.multiworld.get_location("Arnassi Ruins, Song Plant Spore", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.ARNASSI_RUINS_SONG_PLANT_SPORE, self.player), lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) - add_rule(self.multiworld.get_location("Energy Temple first area, bulb in the bottom room blocked by a rock", - self.player), lambda state: _has_bind_song(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 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_attack_item(state, self.player)) - add_rule(self.multiworld.get_location("Abyss right area, bulb behind the rock in the whale room", self.player), - lambda state: _has_spirit_form(state, self.player) and - _has_sun_form(state, self.player)) - add_rule(self.multiworld.get_location("Arnassi Ruins, Arnassi Armor", self.player), + add_rule(self.multiworld.get_location( + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BULB_IN_THE_BOTTOM_ROOM_BLOCKED_BY_A_ROCK, + self.player), lambda state: _has_bind_song(state, self.player)) + add_rule( + self.multiworld.get_location(AquariaLocationNames.NAIJA_S_HOME_BULB_AFTER_THE_ENERGY_DOOR, self.player), + lambda state: _has_energy_attack_item(state, self.player)) + add_rule(self.multiworld.get_location(AquariaLocationNames.ARNASSI_RUINS_ARNASSI_ARMOR, self.player), lambda state: _has_fish_form(state, self.player) or _has_beast_and_soup_form(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, urn inside a home fish pass", self.player), - lambda state: _has_damaging_item(state, self.player)) - add_rule(self.multiworld.get_location("Mithalas City, urn in the Castle flower tube entrance", self.player), + add_rule( + self.multiworld.get_location(AquariaLocationNames.MITHALAS_CITY_URN_INSIDE_A_HOME_FISH_PASS, self.player), + lambda state: _has_damaging_item(state, self.player)) + add_rule(self.multiworld.get_location(AquariaLocationNames.MITHALAS_CITY_URN_IN_THE_CASTLE_FLOWER_TUBE_ENTRANCE, + self.player), lambda state: _has_damaging_item(state, self.player)) add_rule(self.multiworld.get_location( - "The Veil top right area, bulb in the middle of the wall jump cliff", self.player + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_IN_THE_MIDDLE_OF_THE_WALL_JUMP_CLIFF, self.player ), lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) - add_rule(self.multiworld.get_location("Kelp Forest top left area, Jelly Egg", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_JELLY_EGG, self.player), lambda state: _has_beast_form(state, self.player)) - add_rule(self.multiworld.get_location("Sun Worm path, first cliff bulb", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, self.player), lambda state: state.has("Sun God beated", self.player)) - add_rule(self.multiworld.get_location("Sun Worm path, second cliff bulb", self.player), + add_rule(self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB, self.player), lambda state: state.has("Sun God beated", self.player)) - add_rule(self.multiworld.get_location("The Body center area, breaking Li's cage", self.player), - lambda state: _has_tongue_cleared(state, self.player)) + add_rule( + self.multiworld.get_location(AquariaLocationNames.THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE, self.player), + lambda state: _has_tongue_cleared(state, self.player)) add_rule(self.multiworld.get_location( - "Open Water top right area, bulb in the small path before Mithalas", - self.player), lambda state: _has_bind_song(state, self.player) + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_SMALL_PATH_BEFORE_MITHALAS, + self.player), lambda state: _has_bind_song(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 = \ - lambda item: not item.advancement - self.multiworld.get_location("Mithalas boss area, beating Mithalan God", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Kelp Forest boss area, beating Drunian God", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Sun Temple boss area, beating Sun God", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Sunken City, bulb on top of the boss area", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Home Water, Nautilus Egg", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Energy Temple blaster room, Blaster Egg", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Mithalas City Castle, beating the Priests", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Mermog cave, Piranha Egg", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Octopus Cave, Dumbo Egg", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("King Jellyfish Cave, bulb in the right path from King Jelly", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("King Jellyfish Cave, Jellyfish Costume", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Final Boss area, bulb in the boss third form room", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Sun Worm path, first cliff bulb", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Sun Worm path, second cliff bulb", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("The Veil top right area, bulb at the top of the waterfall", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Bubble Cave, bulb in the left cave wall", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Bubble Cave, bulb in the right cave wall (behind the ice crystal)", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Bubble Cave, Verse Egg", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Kelp Forest bottom left area, bulb close to the spirit crystals", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Kelp Forest bottom left area, Walker Baby", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Sun Temple, Sun Key", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("The Body bottom area, Mutant Costume", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Sun Temple, bulb in the hidden room of the right part", - self.player).item_rule = \ - lambda item: not item.advancement - self.multiworld.get_location("Arnassi Ruins, Arnassi Armor", - self.player).item_rule = \ - lambda item: not item.advancement + self.multiworld.get_location(AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location( + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location( + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_BULB_CLOSE_TO_THE_SPIRIT_CRYSTALS, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_SUN_KEY, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_HIDDEN_ROOM_OF_THE_RIGHT_PART, + self.player).item_rule = _item_not_advancement + self.multiworld.get_location(AquariaLocationNames.ARNASSI_RUINS_ARNASSI_ARMOR, + self.player).item_rule = _item_not_advancement def adjusting_rules(self, options: AquariaOptions) -> None: """ Modify rules for single location or optional rules """ - self.multiworld.get_entrance("Before Final Boss to Final Boss", self.player) - self.__adjusting_urns_rules() - self.__adjusting_crates_rules() - self.__adjusting_soup_rules() self.__adjusting_manual_rules() + self.__adjusting_soup_rules() if options.light_needed_to_get_to_dark_places: self.__adjusting_light_in_dark_place_rules() if options.bind_song_needed_to_get_under_rock_bulb: self.__adjusting_under_rock_location() if options.mini_bosses_to_beat.value > 0: - add_rule(self.multiworld.get_entrance("Before Final Boss to Final Boss", self.player), - lambda state: _has_mini_bosses(state, self.player)) + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.final_boss_loby, self.final_boss), + self.player), lambda state: _has_mini_bosses(state, self.player)) if options.big_bosses_to_beat.value > 0: - add_rule(self.multiworld.get_entrance("Before Final Boss to Final Boss", self.player), - lambda state: _has_big_bosses(state, self.player)) - if options.objective.value == 1: - add_rule(self.multiworld.get_entrance("Before Final Boss to Final Boss", self.player), - lambda state: _has_secrets(state, self.player)) - if options.unconfine_home_water.value in [0, 1]: - add_rule(self.multiworld.get_entrance("Home Water to Home Water transturtle room", self.player), - lambda state: _has_bind_song(state, self.player)) - if options.unconfine_home_water.value in [0, 2]: - 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_attack_item(state, self.player)) - if options.early_energy_form: - self.multiworld.early_items[self.player]["Energy form"] = 1 - + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.final_boss_loby, self.final_boss), + self.player), lambda state: _has_big_bosses(state, self.player)) + if options.objective.value == options.objective.option_obtain_secrets_and_kill_the_creator: + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.final_boss_loby, self.final_boss), + self.player), lambda state: _has_secrets(state, self.player)) + if (options.unconfine_home_water.value == UnconfineHomeWater.option_via_energy_door or + options.unconfine_home_water.value == UnconfineHomeWater.option_off): + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.home_water, self.home_water_transturtle), + self.player), lambda state: _has_bind_song(state, self.player)) + if (options.unconfine_home_water.value == UnconfineHomeWater.option_via_transturtle or + options.unconfine_home_water.value == UnconfineHomeWater.option_off): + add_rule(self.multiworld.get_entrance(self.get_entrance_name(self.home_water, self.openwater_tl), + self.player), + lambda state: _has_bind_song(state, self.player) and + _has_energy_attack_item(state, self.player)) if options.no_progression_hard_or_hidden_locations: self.__no_progression_hard_or_hidden_location() @@ -1292,9 +1199,9 @@ class AquariaRegions: self.multiworld.regions.append(self.skeleton_path) self.multiworld.regions.append(self.skeleton_path_sc) self.multiworld.regions.append(self.arnassi) - self.multiworld.regions.append(self.arnassi_path) - self.multiworld.regions.append(self.arnassi_crab_boss) + self.multiworld.regions.append(self.arnassi_cave) self.multiworld.regions.append(self.arnassi_cave_transturtle) + self.multiworld.regions.append(self.arnassi_crab_boss) self.multiworld.regions.append(self.simon) def __add_mithalas_regions_to_world(self) -> None: @@ -1304,10 +1211,12 @@ class AquariaRegions: self.multiworld.regions.append(self.mithalas_city) self.multiworld.regions.append(self.mithalas_city_top_path) self.multiworld.regions.append(self.mithalas_city_fishpass) - self.multiworld.regions.append(self.cathedral_l) - self.multiworld.regions.append(self.cathedral_l_tube) - self.multiworld.regions.append(self.cathedral_l_sc) - self.multiworld.regions.append(self.cathedral_r) + self.multiworld.regions.append(self.mithalas_castle) + self.multiworld.regions.append(self.mithalas_castle_tube) + self.multiworld.regions.append(self.mithalas_castle_sc) + self.multiworld.regions.append(self.cathedral_top_start) + self.multiworld.regions.append(self.cathedral_top_start_urns) + self.multiworld.regions.append(self.cathedral_top_end) self.multiworld.regions.append(self.cathedral_underground) self.multiworld.regions.append(self.cathedral_boss_l) self.multiworld.regions.append(self.cathedral_boss_r) @@ -1317,7 +1226,7 @@ class AquariaRegions: Add every region around the kelp forest to the `world` """ self.multiworld.regions.append(self.forest_tl) - self.multiworld.regions.append(self.forest_tl_fp) + self.multiworld.regions.append(self.forest_tl_verse_egg_room) self.multiworld.regions.append(self.forest_tr) self.multiworld.regions.append(self.forest_tr_fp) self.multiworld.regions.append(self.forest_bl) @@ -1325,8 +1234,8 @@ class AquariaRegions: self.multiworld.regions.append(self.forest_br) self.multiworld.regions.append(self.forest_boss) self.multiworld.regions.append(self.forest_boss_entrance) - self.multiworld.regions.append(self.forest_sprite_cave) - self.multiworld.regions.append(self.forest_sprite_cave_tube) + self.multiworld.regions.append(self.sprite_cave) + self.multiworld.regions.append(self.sprite_cave_tube) self.multiworld.regions.append(self.mermog_cave) self.multiworld.regions.append(self.mermog_boss) self.multiworld.regions.append(self.forest_fish_cave) @@ -1338,16 +1247,18 @@ class AquariaRegions: self.multiworld.regions.append(self.veil_tl) self.multiworld.regions.append(self.veil_tl_fp) self.multiworld.regions.append(self.veil_tr_l) + self.multiworld.regions.append(self.veil_tr_l_fp) self.multiworld.regions.append(self.veil_tr_r) - self.multiworld.regions.append(self.veil_bl) + self.multiworld.regions.append(self.veil_b) self.multiworld.regions.append(self.veil_b_sc) - self.multiworld.regions.append(self.veil_bl_fp) + self.multiworld.regions.append(self.veil_b_fp) self.multiworld.regions.append(self.veil_br) self.multiworld.regions.append(self.octo_cave_t) self.multiworld.regions.append(self.octo_cave_b) self.multiworld.regions.append(self.turtle_cave) self.multiworld.regions.append(self.turtle_cave_bubble) self.multiworld.regions.append(self.sun_temple_l) + self.multiworld.regions.append(self.sun_temple_l_entrance) self.multiworld.regions.append(self.sun_temple_r) self.multiworld.regions.append(self.sun_temple_boss_path) self.multiworld.regions.append(self.sun_temple_boss) @@ -1359,6 +1270,7 @@ class AquariaRegions: self.multiworld.regions.append(self.abyss_l) self.multiworld.regions.append(self.abyss_lb) self.multiworld.regions.append(self.abyss_r) + self.multiworld.regions.append(self.abyss_r_whale) self.multiworld.regions.append(self.abyss_r_transturtle) self.multiworld.regions.append(self.ice_cave) self.multiworld.regions.append(self.bubble_cave) diff --git a/worlds/aquaria/__init__.py b/worlds/aquaria/__init__.py index f620bf6d..1f7b956b 100644 --- a/worlds/aquaria/__init__.py +++ b/worlds/aquaria/__init__.py @@ -7,9 +7,10 @@ Description: Main module for Aquaria game multiworld randomizer from typing import List, Dict, ClassVar, Any 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 -from .Options import AquariaOptions +from .Items import item_table, AquariaItem, ItemType, ItemGroup, ItemNames +from .Locations import location_table, AquariaLocationNames +from .Options import (AquariaOptions, IngredientRandomizer, TurtleRandomizer, EarlyBindSong, EarlyEnergyForm, + UnconfineHomeWater, Objective) from .Regions import AquariaRegions @@ -65,15 +66,15 @@ class AquariaWorld(World): web: WebWorld = AquariaWeb() "The web page generation informations" - item_name_to_id: ClassVar[Dict[str, int]] =\ + item_name_to_id: ClassVar[Dict[str, int]] = \ {name: data.id for name, data in item_table.items()} "The name and associated ID of each item of the world" item_name_groups = { - "Damage": {"Energy form", "Nature form", "Beast form", - "Li and Li song", "Baby Nautilus", "Baby Piranha", - "Baby Blaster"}, - "Light": {"Sun form", "Baby Dumbo"} + "Damage": {ItemNames.ENERGY_FORM, ItemNames.NATURE_FORM, ItemNames.BEAST_FORM, + ItemNames.LI_AND_LI_SONG, ItemNames.BABY_NAUTILUS, ItemNames.BABY_PIRANHA, + ItemNames.BABY_BLASTER}, + "Light": {ItemNames.SUN_FORM, ItemNames.BABY_DUMBO} } """Grouping item make it easier to find them""" @@ -148,23 +149,32 @@ class AquariaWorld(World): def create_items(self) -> None: """Create every item in the world""" precollected = [item.name for item in self.multiworld.precollected_items[self.player]] - if self.options.turtle_randomizer.value > 0: - if self.options.turtle_randomizer.value == 2: - self.__pre_fill_item("Transturtle Final Boss", "Final Boss area, Transturtle", precollected) + if self.options.turtle_randomizer.value != TurtleRandomizer.option_none: + if self.options.turtle_randomizer.value == TurtleRandomizer.option_all_except_final: + self.__pre_fill_item(ItemNames.TRANSTURTLE_BODY, AquariaLocationNames.FINAL_BOSS_AREA_TRANSTURTLE, + precollected) else: - self.__pre_fill_item("Transturtle Veil top left", "The Veil top left area, Transturtle", precollected) - self.__pre_fill_item("Transturtle Veil top right", "The Veil top right area, Transturtle", precollected) - self.__pre_fill_item("Transturtle Open Water top right", "Open Water top right area, Transturtle", + self.__pre_fill_item(ItemNames.TRANSTURTLE_VEIL_TOP_LEFT, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_TRANSTURTLE, precollected) + self.__pre_fill_item(ItemNames.TRANSTURTLE_VEIL_TOP_RIGHT, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_TRANSTURTLE, precollected) + self.__pre_fill_item(ItemNames.TRANSTURTLE_OPEN_WATERS, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_TRANSTURTLE, precollected) - self.__pre_fill_item("Transturtle Forest bottom left", "Kelp Forest bottom left area, Transturtle", + self.__pre_fill_item(ItemNames.TRANSTURTLE_KELP_FOREST, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_TRANSTURTLE, + precollected) + self.__pre_fill_item(ItemNames.TRANSTURTLE_HOME_WATERS, AquariaLocationNames.HOME_WATERS_TRANSTURTLE, + precollected) + self.__pre_fill_item(ItemNames.TRANSTURTLE_ABYSS, AquariaLocationNames.ABYSS_RIGHT_AREA_TRANSTURTLE, + precollected) + self.__pre_fill_item(ItemNames.TRANSTURTLE_BODY, AquariaLocationNames.FINAL_BOSS_AREA_TRANSTURTLE, precollected) - self.__pre_fill_item("Transturtle Home Water", "Home Water, Transturtle", precollected) - self.__pre_fill_item("Transturtle Abyss right", "Abyss right area, Transturtle", precollected) - self.__pre_fill_item("Transturtle Final Boss", "Final Boss area, Transturtle", precollected) # The last two are inverted because in the original game, they are special turtle that communicate directly - self.__pre_fill_item("Transturtle Simon Says", "Arnassi Ruins, Transturtle", precollected, - ItemClassification.progression) - self.__pre_fill_item("Transturtle Arnassi Ruins", "Simon Says area, Transturtle", precollected) + self.__pre_fill_item(ItemNames.TRANSTURTLE_SIMON_SAYS, AquariaLocationNames.ARNASSI_RUINS_TRANSTURTLE, + precollected, ItemClassification.progression) + self.__pre_fill_item(ItemNames.TRANSTURTLE_ARNASSI_RUINS, AquariaLocationNames.SIMON_SAYS_AREA_TRANSTURTLE, + precollected) for name, data in item_table.items(): if name not in self.exclude: for i in range(data.count): @@ -175,10 +185,17 @@ class AquariaWorld(World): """ Launched when the Multiworld generator is ready to generate rules """ - + if self.options.early_energy_form == EarlyEnergyForm.option_early: + self.multiworld.early_items[self.player][ItemNames.ENERGY_FORM] = 1 + elif self.options.early_energy_form == EarlyEnergyForm.option_early_and_local: + self.multiworld.local_early_items[self.player][ItemNames.ENERGY_FORM] = 1 + if self.options.early_bind_song == EarlyBindSong.option_early: + self.multiworld.early_items[self.player][ItemNames.BIND_SONG] = 1 + elif self.options.early_bind_song == EarlyBindSong.option_early_and_local: + self.multiworld.local_early_items[self.player][ItemNames.BIND_SONG] = 1 self.regions.adjusting_rules(self.options) self.multiworld.completion_condition[self.player] = lambda \ - state: state.has("Victory", self.player) + state: state.has(ItemNames.VICTORY, self.player) def generate_basic(self) -> None: """ @@ -186,13 +203,13 @@ class AquariaWorld(World): Used to fill then `ingredients_substitution` list """ simple_ingredients_substitution = [i for i in range(27)] - if self.options.ingredient_randomizer.value > 0: - if self.options.ingredient_randomizer.value == 1: + if self.options.ingredient_randomizer.value > IngredientRandomizer.option_off: + if self.options.ingredient_randomizer.value == IngredientRandomizer.option_common_ingredients: simple_ingredients_substitution.pop(-1) simple_ingredients_substitution.pop(-1) simple_ingredients_substitution.pop(-1) self.random.shuffle(simple_ingredients_substitution) - if self.options.ingredient_randomizer.value == 1: + if self.options.ingredient_randomizer.value == IngredientRandomizer.option_common_ingredients: simple_ingredients_substitution.extend([24, 25, 26]) dishes_substitution = [i for i in range(27, 76)] if self.options.dish_randomizer: @@ -205,14 +222,19 @@ class AquariaWorld(World): return {"ingredientReplacement": self.ingredients_substitution, "aquarian_translate": bool(self.options.aquarian_translation.value), "blind_goal": bool(self.options.blind_goal.value), - "secret_needed": self.options.objective.value > 0, + "secret_needed": + self.options.objective.value == Objective.option_obtain_secrets_and_kill_the_creator, "minibosses_to_kill": self.options.mini_bosses_to_beat.value, "bigbosses_to_kill": self.options.big_bosses_to_beat.value, "skip_first_vision": bool(self.options.skip_first_vision.value), - "unconfine_home_water_energy_door": self.options.unconfine_home_water.value in [1, 3], - "unconfine_home_water_transturtle": self.options.unconfine_home_water.value in [2, 3], + "unconfine_home_water_energy_door": + self.options.unconfine_home_water.value == UnconfineHomeWater.option_via_energy_door + or self.options.unconfine_home_water.value == UnconfineHomeWater.option_via_both, + "unconfine_home_water_transturtle": + self.options.unconfine_home_water.value == UnconfineHomeWater.option_via_transturtle + or self.options.unconfine_home_water.value == UnconfineHomeWater.option_via_both, "bind_song_needed_to_get_under_rock_bulb": bool(self.options.bind_song_needed_to_get_under_rock_bulb), "no_progression_hard_or_hidden_locations": bool(self.options.no_progression_hard_or_hidden_locations), "light_needed_to_get_to_dark_places": bool(self.options.light_needed_to_get_to_dark_places), - "turtle_randomizer": self.options.turtle_randomizer.value, + "turtle_randomizer": self.options.turtle_randomizer.value } diff --git a/worlds/aquaria/docs/en_Aquaria.md b/worlds/aquaria/docs/en_Aquaria.md index c3e5f54d..836a942b 100644 --- a/worlds/aquaria/docs/en_Aquaria.md +++ b/worlds/aquaria/docs/en_Aquaria.md @@ -24,7 +24,7 @@ The locations in the randomizer are: * Beating Mithalan God boss * Fish Cave puzzle * Beating Drunian God boss - * Beating Sun God boss + * Beating Lumerean God boss * Breaking Li cage in the body Note that, unlike the vanilla game, when opening sing bulbs, Mithalas urns and Sunken City crates, diff --git a/worlds/aquaria/test/__init__.py b/worlds/aquaria/test/__init__.py index 8c4f64c3..05f46fc7 100644 --- a/worlds/aquaria/test/__init__.py +++ b/worlds/aquaria/test/__init__.py @@ -6,211 +6,212 @@ Description: Base class for the Aquaria randomizer unit tests from test.bases import WorldTestBase +from ..Locations import AquariaLocationNames # Every location accessible after the home water. after_home_water_locations = [ - "Sun Crystal", - "Home Water, Transturtle", - "Open Water top left area, bulb under the rock in the right path", - "Open Water top left area, bulb under the rock in the left path", - "Open Water top left area, bulb to the right of the save crystal", - "Open Water top right area, bulb in the small path before Mithalas", - "Open Water top right area, bulb in the path from the left entrance", - "Open Water top right area, bulb in the clearing close to the bottom exit", - "Open Water top right area, bulb in the big clearing close to the save crystal", - "Open Water top right area, bulb in the big clearing to the top exit", - "Open Water top right area, first urn in the Mithalas exit", - "Open Water top right area, second urn in the Mithalas exit", - "Open Water top right area, third urn in the Mithalas exit", - "Open Water top right area, bulb in the turtle room", - "Open Water top right area, Transturtle", - "Open Water bottom left area, bulb behind the chomper fish", - "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 behind the chomper fish", - "Open Water skeleton path, King Skull", - "Arnassi Ruins, bulb in the right part", - "Arnassi Ruins, bulb in the left part", - "Arnassi Ruins, bulb in the center part", - "Arnassi Ruins, Song Plant Spore", - "Arnassi Ruins, Arnassi Armor", - "Arnassi Ruins, Arnassi Statue", - "Arnassi Ruins, Transturtle", - "Arnassi Ruins, Crab Armor", - "Simon Says area, Transturtle", - "Mithalas City, first bulb in the left city part", - "Mithalas City, second bulb in the left city part", - "Mithalas City, bulb in the right part", - "Mithalas City, bulb at the top of the city", - "Mithalas City, first bulb in a broken home", - "Mithalas City, second bulb in a broken home", - "Mithalas City, bulb in the bottom left part", - "Mithalas City, first bulb in one of the homes", - "Mithalas City, second bulb in one of the homes", - "Mithalas City, first urn in one of the homes", - "Mithalas City, second urn in one of the homes", - "Mithalas City, first urn in the city reserve", - "Mithalas City, second urn in the city reserve", - "Mithalas City, third urn in the city reserve", - "Mithalas City, first bulb at the end of the top path", - "Mithalas City, second bulb at the end of the top path", - "Mithalas City, bulb in the top path", - "Mithalas City, Mithalas Pot", - "Mithalas City, urn in the Castle flower tube entrance", - "Mithalas City, Doll", - "Mithalas City, urn inside a home fish pass", - "Mithalas City Castle, bulb in the flesh hole", - "Mithalas City Castle, Blue Banner", - "Mithalas City Castle, urn in the bedroom", - "Mithalas City Castle, first urn of the single lamp path", - "Mithalas City Castle, second urn of the single lamp path", - "Mithalas City Castle, urn in the bottom room", - "Mithalas City Castle, first urn on the entrance path", - "Mithalas City Castle, second urn on the entrance path", - "Mithalas City Castle, beating the Priests", - "Mithalas City Castle, Trident Head", - "Mithalas Cathedral, first urn in the top right room", - "Mithalas Cathedral, second urn in the top right room", - "Mithalas Cathedral, third urn in the top right room", - "Mithalas Cathedral, urn in the flesh room with fleas", - "Mithalas Cathedral, first urn in the bottom right path", - "Mithalas Cathedral, second urn in the bottom right path", - "Mithalas Cathedral, urn behind the flesh vein", - "Mithalas Cathedral, urn in the top left eyes boss room", - "Mithalas Cathedral, first urn in the path behind the flesh vein", - "Mithalas Cathedral, second urn in the path behind the flesh vein", - "Mithalas Cathedral, third urn in the path behind the flesh vein", - "Mithalas Cathedral, fourth urn in the top right room", - "Mithalas Cathedral, Mithalan Dress", - "Mithalas Cathedral, urn below the left entrance", - "Cathedral Underground, bulb in the center part", - "Cathedral Underground, first bulb in the top left part", - "Cathedral Underground, second bulb in the top left part", - "Cathedral Underground, third bulb in the top left part", - "Cathedral Underground, bulb close to the save crystal", - "Cathedral Underground, bulb in the bottom right path", - "Mithalas boss area, beating Mithalan God", - "Kelp Forest top left area, bulb in the bottom left clearing", - "Kelp Forest top left area, bulb in the path down from the top left clearing", - "Kelp Forest top left area, bulb in the top left clearing", - "Kelp Forest top left area, Jelly Egg", - "Kelp Forest top left area, bulb close to the Verse Egg", - "Kelp Forest top left area, Verse Egg", - "Kelp Forest top right area, bulb under the rock in the right path", - "Kelp Forest top right area, bulb at the left of the center clearing", - "Kelp Forest top right area, bulb in the left path's big room", - "Kelp Forest top right area, bulb in the left path's small room", - "Kelp Forest top right area, bulb at the top of the center clearing", - "Kelp Forest top right area, Black Pearl", - "Kelp Forest top right area, bulb in the top fish pass", - "Kelp Forest bottom left area, bulb close to the spirit crystals", - "Kelp Forest bottom left area, Walker Baby", - "Kelp Forest bottom left area, Transturtle", - "Kelp Forest bottom right area, Odd Container", - "Kelp Forest boss area, beating Drunian God", - "Kelp Forest boss room, bulb at the bottom of the area", - "Kelp Forest bottom left area, Fish Cave puzzle", - "Kelp Forest sprite cave, bulb inside the fish pass", - "Kelp Forest sprite cave, bulb in the second room", - "Kelp Forest sprite cave, Seed Bag", - "Mermog cave, bulb in the left part of the cave", - "Mermog cave, Piranha Egg", - "The Veil top left area, In Li's cave", - "The Veil top left area, bulb under the rock in the top right path", - "The Veil top left area, bulb hidden behind the blocking rock", - "The Veil top left area, Transturtle", - "The Veil top left area, bulb inside the fish pass", - "Turtle cave, Turtle Egg", - "Turtle cave, bulb in Bubble Cliff", - "Turtle cave, Urchin Costume", - "The Veil top right area, bulb in the middle of the wall jump cliff", - "The Veil top right area, Golden Starfish", - "The Veil top right area, bulb at the top of the waterfall", - "The Veil top right area, Transturtle", - "The Veil bottom area, bulb in the left path", - "The Veil bottom area, bulb in the spirit path", - "The Veil bottom area, Verse Egg", - "The Veil bottom area, Stone Head", - "Octopus Cave, Dumbo Egg", - "Octopus Cave, bulb in the path below the Octopus Cave path", - "Bubble Cave, bulb in the left cave wall", - "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", - "Bubble Cave, Verse Egg", - "Sun Temple, bulb in the top left part", - "Sun Temple, bulb in the top right part", - "Sun Temple, bulb at the top of the high dark room", - "Sun Temple, Golden Gear", - "Sun Temple, first bulb of the temple", - "Sun Temple, bulb on the right part", - "Sun Temple, bulb in the hidden room of the right part", - "Sun Temple, Sun Key", - "Sun Worm path, first path bulb", - "Sun Worm path, second path bulb", - "Sun Worm path, first cliff bulb", - "Sun Worm path, second cliff bulb", - "Sun Temple boss area, beating Sun God", - "Abyss left area, bulb in hidden path room", - "Abyss left area, bulb in the right part", - "Abyss left area, Glowing Seed", - "Abyss left area, Glowing Plant", - "Abyss left area, bulb in the bottom fish pass", - "Abyss right area, bulb behind the rock in the whale room", - "Abyss right area, bulb in the middle path", - "Abyss right area, bulb behind the rock in the middle path", - "Abyss right area, bulb in the left green room", - "Abyss right area, Transturtle", - "Ice Cave, bulb in the room to the right", - "Ice Cave, first bulb in the top exit room", - "Ice Cave, second bulb in the top exit room", - "Ice Cave, third bulb in the top exit room", - "Ice Cave, bulb in the left room", - "King Jellyfish Cave, bulb in the right path from King Jelly", - "King Jellyfish Cave, Jellyfish Costume", - "The Whale, Verse Egg", - "Sunken City right area, crate close to the save crystal", - "Sunken City right area, crate in the left bottom room", - "Sunken City left area, crate in the little pipe room", - "Sunken City left area, crate close to the save crystal", - "Sunken City left area, crate before the bedroom", - "Sunken City left area, Girl Costume", - "Sunken City, bulb on top of the boss area", - "The Body center area, breaking Li's cage", - "The Body center area, bulb on the main path blocking tube", - "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, 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 bottom face room", - "The Body right area, bulb in the top face room", - "The Body right area, bulb in the top path to the bottom face room", - "The Body right area, bulb in the bottom face room", - "The Body bottom area, bulb in the Jelly Zap room", - "The Body bottom area, bulb in the nautilus room", - "The Body bottom area, Mutant Costume", - "Final Boss area, first bulb in the turtle room", - "Final Boss area, second bulb in the turtle room", - "Final Boss area, third bulb in the turtle room", - "Final Boss area, Transturtle", - "Final Boss area, bulb in the boss third form room", - "Simon Says area, beating Simon Says", - "Beating Fallen God", - "Beating Mithalan God", - "Beating Drunian God", - "Beating Sun God", - "Beating the Golem", - "Beating Nautilus Prime", - "Beating Blaster Peg Prime", - "Beating Mergog", - "Beating Mithalan priests", - "Beating Octopus Prime", - "Beating Crabbius Maximus", - "Beating Mantis Shrimp Prime", - "Beating King Jellyfish God Prime", - "First secret", - "Second secret", - "Third secret", - "Sunken City cleared", - "Objective complete", + AquariaLocationNames.SUN_CRYSTAL, + AquariaLocationNames.HOME_WATERS_TRANSTURTLE, + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH, + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH, + AquariaLocationNames.OPEN_WATERS_TOP_LEFT_AREA_BULB_TO_THE_RIGHT_OF_THE_SAVE_CRYSTAL, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_SMALL_PATH_BEFORE_MITHALAS, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_PATH_FROM_THE_LEFT_ENTRANCE, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_CLEARING_CLOSE_TO_THE_BOTTOM_EXIT, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_BIG_CLEARING_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_BIG_CLEARING_TO_THE_TOP_EXIT, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_FIRST_URN_IN_THE_MITHALAS_EXIT, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_SECOND_URN_IN_THE_MITHALAS_EXIT, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_THIRD_URN_IN_THE_MITHALAS_EXIT, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_BULB_IN_THE_TURTLE_ROOM, + AquariaLocationNames.OPEN_WATERS_TOP_RIGHT_AREA_TRANSTURTLE, + AquariaLocationNames.OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_BEHIND_THE_CHOMPER_FISH, + AquariaLocationNames.OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_INSIDE_THE_LOWEST_FISH_PASS, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_BULB_CLOSE_TO_THE_RIGHT_EXIT, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_BULB_BEHIND_THE_CHOMPER_FISH, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_KING_SKULL, + AquariaLocationNames.ARNASSI_RUINS_BULB_IN_THE_RIGHT_PART, + AquariaLocationNames.ARNASSI_RUINS_BULB_IN_THE_LEFT_PART, + AquariaLocationNames.ARNASSI_RUINS_BULB_IN_THE_CENTER_PART, + AquariaLocationNames.ARNASSI_RUINS_SONG_PLANT_SPORE, + AquariaLocationNames.ARNASSI_RUINS_ARNASSI_ARMOR, + AquariaLocationNames.ARNASSI_RUINS_ARNASSI_STATUE, + AquariaLocationNames.ARNASSI_RUINS_TRANSTURTLE, + AquariaLocationNames.ARNASSI_RUINS_CRAB_ARMOR, + AquariaLocationNames.SIMON_SAYS_AREA_TRANSTURTLE, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_IN_THE_LEFT_CITY_PART, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_IN_THE_LEFT_CITY_PART, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_RIGHT_PART, + AquariaLocationNames.MITHALAS_CITY_BULB_AT_THE_TOP_OF_THE_CITY, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_IN_A_BROKEN_HOME, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_IN_A_BROKEN_HOME, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_BOTTOM_LEFT_PART, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_IN_ONE_OF_THE_HOMES, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_IN_ONE_OF_THE_HOMES, + AquariaLocationNames.MITHALAS_CITY_FIRST_URN_IN_ONE_OF_THE_HOMES, + AquariaLocationNames.MITHALAS_CITY_SECOND_URN_IN_ONE_OF_THE_HOMES, + AquariaLocationNames.MITHALAS_CITY_FIRST_URN_IN_THE_CITY_RESERVE, + AquariaLocationNames.MITHALAS_CITY_SECOND_URN_IN_THE_CITY_RESERVE, + AquariaLocationNames.MITHALAS_CITY_THIRD_URN_IN_THE_CITY_RESERVE, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_AT_THE_END_OF_THE_TOP_PATH, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_AT_THE_END_OF_THE_TOP_PATH, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_TOP_PATH, + AquariaLocationNames.MITHALAS_CITY_MITHALAS_POT, + AquariaLocationNames.MITHALAS_CITY_URN_IN_THE_CASTLE_FLOWER_TUBE_ENTRANCE, + AquariaLocationNames.MITHALAS_CITY_DOLL, + AquariaLocationNames.MITHALAS_CITY_URN_INSIDE_A_HOME_FISH_PASS, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BULB_IN_THE_FLESH_HOLE, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BLUE_BANNER, + AquariaLocationNames.MITHALAS_CITY_CASTLE_URN_IN_THE_BEDROOM, + AquariaLocationNames.MITHALAS_CITY_CASTLE_FIRST_URN_OF_THE_SINGLE_LAMP_PATH, + AquariaLocationNames.MITHALAS_CITY_CASTLE_SECOND_URN_OF_THE_SINGLE_LAMP_PATH, + AquariaLocationNames.MITHALAS_CITY_CASTLE_URN_IN_THE_BOTTOM_ROOM, + AquariaLocationNames.MITHALAS_CITY_CASTLE_FIRST_URN_ON_THE_ENTRANCE_PATH, + AquariaLocationNames.MITHALAS_CITY_CASTLE_SECOND_URN_ON_THE_ENTRANCE_PATH, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + AquariaLocationNames.MITHALAS_CITY_CASTLE_TRIDENT_HEAD, + AquariaLocationNames.MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_TOP_RIGHT_ROOM, + AquariaLocationNames.MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_TOP_RIGHT_ROOM, + AquariaLocationNames.MITHALAS_CATHEDRAL_THIRD_URN_IN_THE_TOP_RIGHT_ROOM, + AquariaLocationNames.MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_BOTTOM_RIGHT_PATH, + AquariaLocationNames.MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_BOTTOM_RIGHT_PATH, + AquariaLocationNames.MITHALAS_CATHEDRAL_URN_BEHIND_THE_FLESH_VEIN, + AquariaLocationNames.MITHALAS_CATHEDRAL_URN_IN_THE_TOP_LEFT_EYES_BOSS_ROOM, + AquariaLocationNames.MITHALAS_CATHEDRAL_FIRST_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN, + AquariaLocationNames.MITHALAS_CATHEDRAL_SECOND_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN, + AquariaLocationNames.MITHALAS_CATHEDRAL_THIRD_URN_IN_THE_PATH_BEHIND_THE_FLESH_VEIN, + AquariaLocationNames.MITHALAS_CATHEDRAL_FOURTH_URN_IN_THE_TOP_RIGHT_ROOM, + AquariaLocationNames.MITHALAS_CATHEDRAL_MITHALAN_DRESS, + AquariaLocationNames.MITHALAS_CATHEDRAL_URN_BELOW_THE_LEFT_ENTRANCE, + AquariaLocationNames.MITHALAS_CATHEDRAL_BULB_IN_THE_FLESH_ROOM_WITH_FLEAS, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_BULB_IN_THE_CENTER_PART, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_FIRST_BULB_IN_THE_TOP_LEFT_PART, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_SECOND_BULB_IN_THE_TOP_LEFT_PART, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_THIRD_BULB_IN_THE_TOP_LEFT_PART, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_BULB_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.CATHEDRAL_UNDERGROUND_BULB_IN_THE_BOTTOM_RIGHT_PATH, + AquariaLocationNames.MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_BOTTOM_LEFT_CLEARING, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_PATH_DOWN_FROM_THE_TOP_LEFT_CLEARING, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_IN_THE_TOP_LEFT_CLEARING, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_JELLY_EGG, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_CLOSE_TO_THE_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_UNDER_THE_ROCK_IN_THE_RIGHT_PATH, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_AT_THE_LEFT_OF_THE_CENTER_CLEARING, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_LEFT_PATH_S_BIG_ROOM, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_LEFT_PATH_S_SMALL_ROOM, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_CENTER_CLEARING, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BLACK_PEARL, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_TOP_FISH_PASS, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_BULB_CLOSE_TO_THE_SPIRIT_CRYSTALS, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_TRANSTURTLE, + AquariaLocationNames.KELP_FOREST_BOTTOM_RIGHT_AREA_ODD_CONTAINER, + AquariaLocationNames.KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD, + AquariaLocationNames.KELP_FOREST_BOSS_ROOM_BULB_AT_THE_BOTTOM_OF_THE_AREA, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_FISH_CAVE_PUZZLE, + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_BULB_INSIDE_THE_FISH_PASS, + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_BULB_IN_THE_SECOND_ROOM, + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_SEED_BAG, + AquariaLocationNames.MERMOG_CAVE_BULB_IN_THE_LEFT_PART_OF_THE_CAVE, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_IN_LI_S_CAVE, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_UNDER_THE_ROCK_IN_THE_TOP_RIGHT_PATH, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_HIDDEN_BEHIND_THE_BLOCKING_ROCK, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_TRANSTURTLE, + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_INSIDE_THE_FISH_PASS, + AquariaLocationNames.TURTLE_CAVE_TURTLE_EGG, + AquariaLocationNames.TURTLE_CAVE_BULB_IN_BUBBLE_CLIFF, + AquariaLocationNames.TURTLE_CAVE_URCHIN_COSTUME, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_IN_THE_MIDDLE_OF_THE_WALL_JUMP_CLIFF, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_GOLDEN_STARFISH, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_TRANSTURTLE, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_BULB_IN_THE_LEFT_PATH, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_BULB_IN_THE_SPIRIT_PATH, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_VERSE_EGG, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_STONE_HEAD, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.OCTOPUS_CAVE_BULB_IN_THE_PATH_BELOW_THE_OCTOPUS_CAVE_PATH, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_TOP_LEFT_PART, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_TOP_RIGHT_PART, + AquariaLocationNames.SUN_TEMPLE_BULB_AT_THE_TOP_OF_THE_HIGH_DARK_ROOM, + AquariaLocationNames.SUN_TEMPLE_GOLDEN_GEAR, + AquariaLocationNames.SUN_TEMPLE_FIRST_BULB_OF_THE_TEMPLE, + AquariaLocationNames.SUN_TEMPLE_BULB_ON_THE_RIGHT_PART, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_HIDDEN_ROOM_OF_THE_RIGHT_PART, + AquariaLocationNames.SUN_TEMPLE_SUN_KEY, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_PATH_BULB, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_PATH_BULB, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB, + AquariaLocationNames.SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_HIDDEN_PATH_ROOM, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_RIGHT_PART, + AquariaLocationNames.ABYSS_LEFT_AREA_GLOWING_SEED, + AquariaLocationNames.ABYSS_LEFT_AREA_GLOWING_PLANT, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_MIDDLE_PATH, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_MIDDLE_PATH, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_LEFT_GREEN_ROOM, + AquariaLocationNames.ABYSS_RIGHT_AREA_TRANSTURTLE, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_ROOM_TO_THE_RIGHT, + AquariaLocationNames.ICE_CAVERN_FIRST_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_SECOND_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_THIRD_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_LEFT_ROOM, + AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY, + AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME, + AquariaLocationNames.THE_WHALE_VERSE_EGG, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE, + AquariaLocationNames.THE_BODY_CENTER_AREA_BULB_ON_THE_MAIN_PATH_BLOCKING_TUBE, + AquariaLocationNames.THE_BODY_LEFT_AREA_FIRST_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_SECOND_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_BELOW_THE_WATER_STREAM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_FIRST_BULB_IN_THE_TURTLE_ROOM, + AquariaLocationNames.FINAL_BOSS_AREA_SECOND_BULB_IN_THE_TURTLE_ROOM, + AquariaLocationNames.FINAL_BOSS_AREA_THIRD_BULB_IN_THE_TURTLE_ROOM, + AquariaLocationNames.FINAL_BOSS_AREA_TRANSTURTLE, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.SIMON_SAYS_AREA_BEATING_SIMON_SAYS, + AquariaLocationNames.BEATING_FALLEN_GOD, + AquariaLocationNames.BEATING_MITHALAN_GOD, + AquariaLocationNames.BEATING_DRUNIAN_GOD, + AquariaLocationNames.BEATING_LUMEREAN_GOD, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.BEATING_NAUTILUS_PRIME, + AquariaLocationNames.BEATING_BLASTER_PEG_PRIME, + AquariaLocationNames.BEATING_MERGOG, + AquariaLocationNames.BEATING_MITHALAN_PRIESTS, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.BEATING_CRABBIUS_MAXIMUS, + AquariaLocationNames.BEATING_MANTIS_SHRIMP_PRIME, + AquariaLocationNames.BEATING_KING_JELLYFISH_GOD_PRIME, + AquariaLocationNames.FIRST_SECRET, + AquariaLocationNames.SECOND_SECRET, + AquariaLocationNames.THIRD_SECRET, + AquariaLocationNames.SUNKEN_CITY_CLEARED, + AquariaLocationNames.OBJECTIVE_COMPLETE, ] class AquariaTestBase(WorldTestBase): diff --git a/worlds/aquaria/test/test_beast_form_access.py b/worlds/aquaria/test/test_beast_form_access.py index c0958626..684c3311 100644 --- a/worlds/aquaria/test/test_beast_form_access.py +++ b/worlds/aquaria/test/test_beast_form_access.py @@ -5,6 +5,8 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames class BeastFormAccessTest(AquariaTestBase): @@ -13,16 +15,16 @@ class BeastFormAccessTest(AquariaTestBase): def test_beast_form_location(self) -> None: """Test locations that require beast form""" locations = [ - "Mermog cave, Piranha Egg", - "Kelp Forest top left area, Jelly Egg", - "Mithalas Cathedral, Mithalan Dress", - "The Veil top right area, bulb at the top of the waterfall", - "Sunken City, bulb on top of the boss area", - "Octopus Cave, Dumbo Egg", - "Beating the Golem", - "Beating Mergog", - "Beating Octopus Prime", - "Sunken City cleared", + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_JELLY_EGG, + AquariaLocationNames.MITHALAS_CATHEDRAL_MITHALAN_DRESS, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.BEATING_MERGOG, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.SUNKEN_CITY_CLEARED, ] - items = [["Beast form"]] + items = [[ItemNames.BEAST_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_beast_form_or_arnassi_armor_access.py b/worlds/aquaria/test/test_beast_form_or_arnassi_armor_access.py index fa4c6923..4c93c309 100644 --- a/worlds/aquaria/test/test_beast_form_or_arnassi_armor_access.py +++ b/worlds/aquaria/test/test_beast_form_or_arnassi_armor_access.py @@ -5,6 +5,8 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames class BeastForArnassiArmormAccessTest(AquariaTestBase): @@ -13,27 +15,27 @@ class BeastForArnassiArmormAccessTest(AquariaTestBase): def test_beast_form_arnassi_armor_location(self) -> None: """Test locations that require beast form or arnassi armor""" locations = [ - "Mithalas City Castle, beating the Priests", - "Arnassi Ruins, Crab Armor", - "Arnassi Ruins, Song Plant Spore", - "Mithalas City, first bulb at the end of the top path", - "Mithalas City, second bulb at the end of the top path", - "Mithalas City, bulb in the top path", - "Mithalas City, Mithalas Pot", - "Mithalas City, urn in the Castle flower tube entrance", - "Mermog cave, Piranha Egg", - "Mithalas Cathedral, Mithalan Dress", - "Kelp Forest top left area, Jelly Egg", - "The Veil top right area, bulb in the middle of the wall jump cliff", - "The Veil top right area, bulb at the top of the waterfall", - "Sunken City, bulb on top of the boss area", - "Octopus Cave, Dumbo Egg", - "Beating the Golem", - "Beating Mergog", - "Beating Crabbius Maximus", - "Beating Octopus Prime", - "Beating Mithalan priests", - "Sunken City cleared" + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + AquariaLocationNames.ARNASSI_RUINS_CRAB_ARMOR, + AquariaLocationNames.ARNASSI_RUINS_SONG_PLANT_SPORE, + AquariaLocationNames.MITHALAS_CITY_FIRST_BULB_AT_THE_END_OF_THE_TOP_PATH, + AquariaLocationNames.MITHALAS_CITY_SECOND_BULB_AT_THE_END_OF_THE_TOP_PATH, + AquariaLocationNames.MITHALAS_CITY_BULB_IN_THE_TOP_PATH, + AquariaLocationNames.MITHALAS_CITY_MITHALAS_POT, + AquariaLocationNames.MITHALAS_CITY_URN_IN_THE_CASTLE_FLOWER_TUBE_ENTRANCE, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.MITHALAS_CATHEDRAL_MITHALAN_DRESS, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_JELLY_EGG, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_IN_THE_MIDDLE_OF_THE_WALL_JUMP_CLIFF, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.BEATING_MERGOG, + AquariaLocationNames.BEATING_CRABBIUS_MAXIMUS, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.BEATING_MITHALAN_PRIESTS, + AquariaLocationNames.SUNKEN_CITY_CLEARED ] - items = [["Beast form", "Arnassi Armor"]] + items = [[ItemNames.BEAST_FORM, ItemNames.ARNASSI_ARMOR]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_bind_song_access.py b/worlds/aquaria/test/test_bind_song_access.py index 05f96edb..689f487c 100644 --- a/worlds/aquaria/test/test_bind_song_access.py +++ b/worlds/aquaria/test/test_bind_song_access.py @@ -6,31 +6,36 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase, after_home_water_locations +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import UnconfineHomeWater, EarlyBindSong class BindSongAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without the bind song""" options = { "bind_song_needed_to_get_under_rock_bulb": False, + "unconfine_home_water": UnconfineHomeWater.option_off, + "early_bind_song": EarlyBindSong.option_off } def test_bind_song_location(self) -> None: """Test locations that require Bind song""" locations = [ - "Verse Cave right area, Big Seed", - "Home Water, bulb in the path below Nautilus Prime", - "Home Water, bulb in the bottom left room", - "Home Water, Nautilus Egg", - "Song Cave, Verse Egg", - "Energy Temple first area, beating the Energy Statue", - "Energy Temple first area, bulb in the bottom room blocked by a rock", - "Energy Temple first area, Energy Idol", - "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", + AquariaLocationNames.VERSE_CAVE_RIGHT_AREA_BIG_SEED, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_PATH_BELOW_NAUTILUS_PRIME, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_BOTTOM_LEFT_ROOM, + AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG, + AquariaLocationNames.SONG_CAVE_VERSE_EGG, + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BEATING_THE_ENERGY_STATUE, + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BULB_IN_THE_BOTTOM_ROOM_BLOCKED_BY_A_ROCK, + AquariaLocationNames.ENERGY_TEMPLE_ENERGY_IDOL, + AquariaLocationNames.ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK, + AquariaLocationNames.ENERGY_TEMPLE_BOTTOM_ENTRANCE_KROTITE_ARMOR, + AquariaLocationNames.ENERGY_TEMPLE_THIRD_AREA_BULB_IN_THE_BOTTOM_PATH, + AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, *after_home_water_locations ] - items = [["Bind song"]] + items = [[ItemNames.BIND_SONG]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_bind_song_option_access.py b/worlds/aquaria/test/test_bind_song_option_access.py index e391eef1..74dfa2ed 100644 --- a/worlds/aquaria/test/test_bind_song_option_access.py +++ b/worlds/aquaria/test/test_bind_song_option_access.py @@ -7,6 +7,8 @@ Description: Unit test used to test accessibility of locations with and without from . import AquariaTestBase from .test_bind_song_access import after_home_water_locations +from ..Items import ItemNames +from ..Locations import AquariaLocationNames class BindSongOptionAccessTest(AquariaTestBase): @@ -18,25 +20,25 @@ class BindSongOptionAccessTest(AquariaTestBase): def test_bind_song_location(self) -> None: """Test locations that require Bind song with the bind song needed option activated""" locations = [ - "Verse Cave right area, Big Seed", - "Verse Cave left area, bulb under the rock at the end of the path", - "Home Water, bulb under the rock in the left path from the Verse Cave", - "Song Cave, bulb under the rock close to the song door", - "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", - "Home Water, bulb in the path below Nautilus Prime", - "Home Water, bulb in the bottom left room", - "Home Water, Nautilus Egg", - "Song Cave, Verse Egg", - "Energy Temple first area, beating the Energy Statue", - "Energy Temple first area, bulb in the bottom room blocked by a rock", - "Energy Temple first area, Energy Idol", - "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", + AquariaLocationNames.VERSE_CAVE_RIGHT_AREA_BIG_SEED, + AquariaLocationNames.VERSE_CAVE_LEFT_AREA_BULB_UNDER_THE_ROCK_AT_THE_END_OF_THE_PATH, + AquariaLocationNames.HOME_WATERS_BULB_UNDER_THE_ROCK_IN_THE_LEFT_PATH_FROM_THE_VERSE_CAVE, + AquariaLocationNames.SONG_CAVE_BULB_UNDER_THE_ROCK_CLOSE_TO_THE_SONG_DOOR, + AquariaLocationNames.SONG_CAVE_BULB_UNDER_THE_ROCK_IN_THE_PATH_TO_THE_SINGING_STATUES, + AquariaLocationNames.NAIJA_S_HOME_BULB_UNDER_THE_ROCK_AT_THE_RIGHT_OF_THE_MAIN_PATH, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_PATH_BELOW_NAUTILUS_PRIME, + AquariaLocationNames.HOME_WATERS_BULB_IN_THE_BOTTOM_LEFT_ROOM, + AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG, + AquariaLocationNames.SONG_CAVE_VERSE_EGG, + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BEATING_THE_ENERGY_STATUE, + AquariaLocationNames.ENERGY_TEMPLE_FIRST_AREA_BULB_IN_THE_BOTTOM_ROOM_BLOCKED_BY_A_ROCK, + AquariaLocationNames.ENERGY_TEMPLE_ENERGY_IDOL, + AquariaLocationNames.ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK, + AquariaLocationNames.ENERGY_TEMPLE_BOTTOM_ENTRANCE_KROTITE_ARMOR, + AquariaLocationNames.ENERGY_TEMPLE_THIRD_AREA_BULB_IN_THE_BOTTOM_PATH, + AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, *after_home_water_locations ] - items = [["Bind song"]] + items = [[ItemNames.BIND_SONG]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_confined_home_water.py b/worlds/aquaria/test/test_confined_home_water.py index 89c51ac5..d809a3d5 100644 --- a/worlds/aquaria/test/test_confined_home_water.py +++ b/worlds/aquaria/test/test_confined_home_water.py @@ -5,16 +5,17 @@ Description: Unit test used to test accessibility of region with the home water """ from . import AquariaTestBase +from ..Options import UnconfineHomeWater, EarlyEnergyForm class ConfinedHomeWaterAccessTest(AquariaTestBase): """Unit test used to test accessibility of region with the unconfine home water option disabled""" options = { - "unconfine_home_water": 0, - "early_energy_form": False + "unconfine_home_water": UnconfineHomeWater.option_off, + "early_energy_form": EarlyEnergyForm.option_off } def test_confine_home_water_location(self) -> None: """Test region accessible with confined home water""" - self.assertFalse(self.can_reach_region("Open Water top left area"), "Can reach Open Water top left area") - self.assertFalse(self.can_reach_region("Home Water, turtle room"), "Can reach Home Water, turtle room") + self.assertFalse(self.can_reach_region("Open Waters top left area"), "Can reach Open Waters top left area") + self.assertFalse(self.can_reach_region("Home Waters, turtle room"), "Can reach Home Waters, turtle room") diff --git a/worlds/aquaria/test/test_dual_song_access.py b/worlds/aquaria/test/test_dual_song_access.py index bb9b2e73..448d9df0 100644 --- a/worlds/aquaria/test/test_dual_song_access.py +++ b/worlds/aquaria/test/test_dual_song_access.py @@ -5,22 +5,25 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import TurtleRandomizer class LiAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without the dual song""" options = { - "turtle_randomizer": 1, + "turtle_randomizer": TurtleRandomizer.option_all, } def test_li_song_location(self) -> None: """Test locations that require the dual song""" locations = [ - "The Body bottom area, bulb in the Jelly Zap room", - "The Body bottom area, bulb in the nautilus room", - "The Body bottom area, Mutant Costume", - "Final Boss area, bulb in the boss third form room", - "Objective complete" + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.OBJECTIVE_COMPLETE ] - items = [["Dual form"]] + items = [[ItemNames.DUAL_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_energy_form_access.py b/worlds/aquaria/test/test_energy_form_access.py index b4431668..7eeb7c2e 100644 --- a/worlds/aquaria/test/test_energy_form_access.py +++ b/worlds/aquaria/test/test_energy_form_access.py @@ -6,28 +6,31 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import EarlyEnergyForm class EnergyFormAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without the energy form""" options = { - "early_energy_form": False, + "early_energy_form": EarlyEnergyForm.option_off } def test_energy_form_location(self) -> None: """Test locations that require Energy form""" locations = [ - "Energy Temple second area, bulb under the rock", - "Energy Temple third area, bulb in the bottom path", - "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, 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 bottom face room", - "The Body right area, bulb in the top path to the bottom face room", - "The Body right area, bulb in the bottom face room", - "Final Boss area, bulb in the boss third form room", - "Objective complete", + AquariaLocationNames.ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK, + AquariaLocationNames.ENERGY_TEMPLE_THIRD_AREA_BULB_IN_THE_BOTTOM_PATH, + AquariaLocationNames.THE_BODY_LEFT_AREA_FIRST_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_SECOND_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_BELOW_THE_WATER_STREAM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.OBJECTIVE_COMPLETE, ] - items = [["Energy form"]] + items = [[ItemNames.ENERGY_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_energy_form_or_dual_form_access.py b/worlds/aquaria/test/test_energy_form_or_dual_form_access.py index 8a765bc4..ba04405e 100644 --- a/worlds/aquaria/test/test_energy_form_or_dual_form_access.py +++ b/worlds/aquaria/test/test_energy_form_or_dual_form_access.py @@ -5,88 +5,74 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import EarlyEnergyForm, TurtleRandomizer class EnergyFormDualFormAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without the energy form and dual form (and Li)""" options = { - "early_energy_form": False, + "early_energy_form": EarlyEnergyForm.option_off, + "turtle_randomizer": TurtleRandomizer.option_all } def test_energy_form_or_dual_form_location(self) -> None: """Test locations that require Energy form or dual form""" locations = [ - "Naija's Home, bulb after the energy door", - "Home Water, Nautilus Egg", - "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 blaster room, Blaster Egg", - "Energy Temple boss area, Fallen God Tooth", - "Mithalas City Castle, beating the Priests", - "Mithalas boss area, beating Mithalan God", - "Mithalas Cathedral, first urn in the top right room", - "Mithalas Cathedral, second urn in the top right room", - "Mithalas Cathedral, third urn in the top right room", - "Mithalas Cathedral, urn in the flesh room with fleas", - "Mithalas Cathedral, first urn in the bottom right path", - "Mithalas Cathedral, second urn in the bottom right path", - "Mithalas Cathedral, urn behind the flesh vein", - "Mithalas Cathedral, urn in the top left eyes boss room", - "Mithalas Cathedral, first urn in the path behind the flesh vein", - "Mithalas Cathedral, second urn in the path behind the flesh vein", - "Mithalas Cathedral, third urn in the path behind the flesh vein", - "Mithalas Cathedral, fourth urn in the top right room", - "Mithalas Cathedral, Mithalan Dress", - "Mithalas Cathedral, urn below the left entrance", - "Kelp Forest top left area, bulb close to the Verse Egg", - "Kelp Forest top left area, Verse Egg", - "Kelp Forest boss area, beating Drunian God", - "Mermog cave, Piranha Egg", - "Octopus Cave, Dumbo Egg", - "Sun Temple boss area, beating Sun God", - "King Jellyfish Cave, bulb in the right path from King Jelly", - "King Jellyfish Cave, Jellyfish Costume", - "Sunken City right area, crate close to the save crystal", - "Sunken City right area, crate in the left bottom room", - "Sunken City left area, crate in the little pipe room", - "Sunken City left area, crate close to the save crystal", - "Sunken City left area, crate before the bedroom", - "Sunken City left area, Girl Costume", - "Sunken City, bulb on top of the boss area", - "The Body center area, breaking Li's cage", - "The Body center area, bulb on the main path blocking tube", - "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, 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 bottom face room", - "The Body right area, bulb in the top face room", - "The Body right area, bulb in the top path to the bottom face room", - "The Body right area, bulb in the bottom face room", - "The Body bottom area, bulb in the Jelly Zap room", - "The Body bottom area, bulb in the nautilus room", - "The Body bottom area, Mutant Costume", - "Final Boss area, bulb in the boss third form room", - "Final Boss area, first bulb in the turtle room", - "Final Boss area, second bulb in the turtle room", - "Final Boss area, third bulb in the turtle room", - "Final Boss area, Transturtle", - "Beating Fallen God", - "Beating Blaster Peg Prime", - "Beating Mithalan God", - "Beating Drunian God", - "Beating Sun God", - "Beating the Golem", - "Beating Nautilus Prime", - "Beating Mergog", - "Beating Mithalan priests", - "Beating Octopus Prime", - "Beating King Jellyfish God Prime", - "Beating the Golem", - "Sunken City cleared", - "First secret", - "Objective complete" + AquariaLocationNames.NAIJA_S_HOME_BULB_AFTER_THE_ENERGY_DOOR, + AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG, + AquariaLocationNames.ENERGY_TEMPLE_SECOND_AREA_BULB_UNDER_THE_ROCK, + AquariaLocationNames.ENERGY_TEMPLE_BOTTOM_ENTRANCE_KROTITE_ARMOR, + AquariaLocationNames.ENERGY_TEMPLE_THIRD_AREA_BULB_IN_THE_BOTTOM_PATH, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, + AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + AquariaLocationNames.MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_CLOSE_TO_THE_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD, + AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY, + AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE, + AquariaLocationNames.THE_BODY_CENTER_AREA_BULB_ON_THE_MAIN_PATH_BLOCKING_TUBE, + AquariaLocationNames.THE_BODY_LEFT_AREA_FIRST_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_SECOND_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_BELOW_THE_WATER_STREAM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.BEATING_FALLEN_GOD, + AquariaLocationNames.BEATING_BLASTER_PEG_PRIME, + AquariaLocationNames.BEATING_MITHALAN_GOD, + AquariaLocationNames.BEATING_DRUNIAN_GOD, + AquariaLocationNames.BEATING_LUMEREAN_GOD, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.BEATING_NAUTILUS_PRIME, + AquariaLocationNames.BEATING_MERGOG, + AquariaLocationNames.BEATING_MITHALAN_PRIESTS, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.BEATING_KING_JELLYFISH_GOD_PRIME, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.SUNKEN_CITY_CLEARED, + AquariaLocationNames.FIRST_SECRET, + AquariaLocationNames.OBJECTIVE_COMPLETE ] - items = [["Energy form", "Dual form", "Li and Li song", "Body tongue cleared"]] + items = [[ItemNames.ENERGY_FORM, ItemNames.DUAL_FORM, ItemNames.LI_AND_LI_SONG, ItemNames.BODY_TONGUE_CLEARED]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_fish_form_access.py b/worlds/aquaria/test/test_fish_form_access.py index 40b15a87..3cbc750c 100644 --- a/worlds/aquaria/test/test_fish_form_access.py +++ b/worlds/aquaria/test/test_fish_form_access.py @@ -5,33 +5,36 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import TurtleRandomizer class FishFormAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without the fish form""" options = { - "turtle_randomizer": 1, + "turtle_randomizer": TurtleRandomizer.option_all, } def test_fish_form_location(self) -> None: """Test locations that require fish form""" locations = [ - "The Veil top left area, bulb inside the fish pass", - "Energy Temple first area, Energy Idol", - "Mithalas City, Doll", - "Mithalas City, urn inside a home fish pass", - "Kelp Forest top right area, bulb in the top fish pass", - "The Veil bottom area, Verse Egg", - "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, Verse Egg", - "Mermog cave, bulb in the left part of the cave", - "Mermog cave, Piranha Egg", - "Beating Mergog", - "Octopus Cave, Dumbo Egg", - "Octopus Cave, bulb in the path below the Octopus Cave path", - "Beating Octopus Prime", - "Abyss left area, bulb in the bottom fish pass" + AquariaLocationNames.THE_VEIL_TOP_LEFT_AREA_BULB_INSIDE_THE_FISH_PASS, + AquariaLocationNames.ENERGY_TEMPLE_ENERGY_IDOL, + AquariaLocationNames.MITHALAS_CITY_DOLL, + AquariaLocationNames.MITHALAS_CITY_URN_INSIDE_A_HOME_FISH_PASS, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BULB_IN_THE_TOP_FISH_PASS, + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_VERSE_EGG, + AquariaLocationNames.OPEN_WATERS_BOTTOM_LEFT_AREA_BULB_INSIDE_THE_LOWEST_FISH_PASS, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_CLOSE_TO_THE_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_VERSE_EGG, + AquariaLocationNames.MERMOG_CAVE_BULB_IN_THE_LEFT_PART_OF_THE_CAVE, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.BEATING_MERGOG, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.OCTOPUS_CAVE_BULB_IN_THE_PATH_BELOW_THE_OCTOPUS_CAVE_PATH, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS ] - items = [["Fish form"]] + items = [[ItemNames.FISH_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_li_song_access.py b/worlds/aquaria/test/test_li_song_access.py index f615fb10..6c8d6e5e 100644 --- a/worlds/aquaria/test/test_li_song_access.py +++ b/worlds/aquaria/test/test_li_song_access.py @@ -5,41 +5,44 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import TurtleRandomizer class LiAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without Li""" options = { - "turtle_randomizer": 1, + "turtle_randomizer": TurtleRandomizer.option_all, } def test_li_song_location(self) -> None: """Test locations that require Li""" locations = [ - "Sunken City right area, crate close to the save crystal", - "Sunken City right area, crate in the left bottom room", - "Sunken City left area, crate in the little pipe room", - "Sunken City left area, crate close to the save crystal", - "Sunken City left area, crate before the bedroom", - "Sunken City left area, Girl Costume", - "Sunken City, bulb on top of the boss area", - "The Body center area, breaking Li's cage", - "The Body center area, bulb on the main path blocking tube", - "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, 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 bottom face room", - "The Body right area, bulb in the top face room", - "The Body right area, bulb in the top path to the bottom face room", - "The Body right area, bulb in the bottom face room", - "The Body bottom area, bulb in the Jelly Zap room", - "The Body bottom area, bulb in the nautilus room", - "The Body bottom area, Mutant Costume", - "Final Boss area, bulb in the boss third form room", - "Beating the Golem", - "Sunken City cleared", - "Objective complete" + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE, + AquariaLocationNames.THE_BODY_CENTER_AREA_BULB_ON_THE_MAIN_PATH_BLOCKING_TUBE, + AquariaLocationNames.THE_BODY_LEFT_AREA_FIRST_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_SECOND_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_BELOW_THE_WATER_STREAM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.SUNKEN_CITY_CLEARED, + AquariaLocationNames.OBJECTIVE_COMPLETE ] - items = [["Li and Li song", "Body tongue cleared"]] + items = [[ItemNames.LI_AND_LI_SONG, ItemNames.BODY_TONGUE_CLEARED]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_light_access.py b/worlds/aquaria/test/test_light_access.py index 29d37d79..ca668505 100644 --- a/worlds/aquaria/test/test_light_access.py +++ b/worlds/aquaria/test/test_light_access.py @@ -5,12 +5,15 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import TurtleRandomizer class LightAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without light""" options = { - "turtle_randomizer": 1, + "turtle_randomizer": TurtleRandomizer.option_all, "light_needed_to_get_to_dark_places": True, } @@ -19,52 +22,52 @@ class LightAccessTest(AquariaTestBase): locations = [ # Since the `assertAccessDependency` sweep for events even if I tell it not to, those location cannot be # tested. - # "Third secret", - # "Sun Temple, bulb in the top left part", - # "Sun Temple, bulb in the top right part", - # "Sun Temple, bulb at the top of the high dark room", - # "Sun Temple, Golden Gear", - # "Sun Worm path, first path bulb", - # "Sun Worm path, second path bulb", - # "Sun Worm path, first cliff bulb", - "Octopus Cave, Dumbo Egg", - "Kelp Forest bottom right area, Odd Container", - "Kelp Forest top right area, Black Pearl", - "Abyss left area, bulb in hidden path room", - "Abyss left area, bulb in the right part", - "Abyss left area, Glowing Seed", - "Abyss left area, Glowing Plant", - "Abyss left area, bulb in the bottom fish pass", - "Abyss right area, bulb behind the rock in the whale room", - "Abyss right area, bulb in the middle path", - "Abyss right area, bulb behind the rock in the middle path", - "Abyss right area, bulb in the left green room", - "Ice Cave, bulb in the room to the right", - "Ice Cave, first bulb in the top exit room", - "Ice Cave, second bulb in the top exit room", - "Ice Cave, third bulb in the top exit room", - "Ice Cave, bulb in the left room", - "Bubble Cave, bulb in the left cave wall", - "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", - "Bubble Cave, Verse Egg", - "Beating Mantis Shrimp Prime", - "King Jellyfish Cave, bulb in the right path from King Jelly", - "King Jellyfish Cave, Jellyfish Costume", - "Beating King Jellyfish God Prime", - "The Whale, Verse Egg", - "First secret", - "Sunken City right area, crate close to the save crystal", - "Sunken City right area, crate in the left bottom room", - "Sunken City left area, crate in the little pipe room", - "Sunken City left area, crate close to the save crystal", - "Sunken City left area, crate before the bedroom", - "Sunken City left area, Girl Costume", - "Sunken City, bulb on top of the boss area", - "Sunken City cleared", - "Beating the Golem", - "Beating Octopus Prime", - "Final Boss area, bulb in the boss third form room", - "Objective complete", + # AquariaLocationNames.THIRD_SECRET, + # AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_TOP_LEFT_PART, + # AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_TOP_RIGHT_PART, + # AquariaLocationNames.SUN_TEMPLE_BULB_AT_THE_TOP_OF_THE_HIGH_DARK_ROOM, + # AquariaLocationNames.SUN_TEMPLE_GOLDEN_GEAR, + # AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_PATH_BULB, + # AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_PATH_BULB, + # AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.KELP_FOREST_BOTTOM_RIGHT_AREA_ODD_CONTAINER, + AquariaLocationNames.KELP_FOREST_TOP_RIGHT_AREA_BLACK_PEARL, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_HIDDEN_PATH_ROOM, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_RIGHT_PART, + AquariaLocationNames.ABYSS_LEFT_AREA_GLOWING_SEED, + AquariaLocationNames.ABYSS_LEFT_AREA_GLOWING_PLANT, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_MIDDLE_PATH, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_MIDDLE_PATH, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_IN_THE_LEFT_GREEN_ROOM, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_ROOM_TO_THE_RIGHT, + AquariaLocationNames.ICE_CAVERN_FIRST_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_SECOND_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_THIRD_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_LEFT_ROOM, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + AquariaLocationNames.BEATING_MANTIS_SHRIMP_PRIME, + AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY, + AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME, + AquariaLocationNames.BEATING_KING_JELLYFISH_GOD_PRIME, + AquariaLocationNames.THE_WHALE_VERSE_EGG, + AquariaLocationNames.FIRST_SECRET, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.SUNKEN_CITY_CLEARED, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.OBJECTIVE_COMPLETE, ] - items = [["Sun form", "Baby Dumbo", "Has sun crystal"]] + items = [[ItemNames.SUN_FORM, ItemNames.BABY_DUMBO, ItemNames.HAS_SUN_CRYSTAL]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_nature_form_access.py b/worlds/aquaria/test/test_nature_form_access.py index 1d3b8f41..61aebaef 100644 --- a/worlds/aquaria/test/test_nature_form_access.py +++ b/worlds/aquaria/test/test_nature_form_access.py @@ -5,53 +5,56 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames +from ..Options import TurtleRandomizer class NatureFormAccessTest(AquariaTestBase): """Unit test used to test accessibility of locations with and without the nature form""" options = { - "turtle_randomizer": 1, + "turtle_randomizer": TurtleRandomizer.option_all, } def test_nature_form_location(self) -> None: """Test locations that require nature form""" locations = [ - "Song Cave, Anemone Seed", - "Energy Temple blaster room, Blaster Egg", - "Beating Blaster Peg Prime", - "Kelp Forest top left area, Verse Egg", - "Kelp Forest top left area, bulb close to the Verse Egg", - "Mithalas City Castle, beating the Priests", - "Kelp Forest sprite cave, bulb in the second room", - "Kelp Forest sprite cave, Seed Bag", - "Beating Mithalan priests", - "Abyss left area, bulb in the bottom fish pass", - "Bubble Cave, Verse Egg", - "Beating Mantis Shrimp Prime", - "Sunken City right area, crate close to the save crystal", - "Sunken City right area, crate in the left bottom room", - "Sunken City left area, crate in the little pipe room", - "Sunken City left area, crate close to the save crystal", - "Sunken City left area, crate before the bedroom", - "Sunken City left area, Girl Costume", - "Sunken City, bulb on top of the boss area", - "Beating the Golem", - "Sunken City cleared", - "The Body center area, breaking Li's cage", - "The Body center area, bulb on the main path blocking tube", - "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, 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 bottom face room", - "The Body right area, bulb in the top face room", - "The Body right area, bulb in the top path to the bottom face room", - "The Body right area, bulb in the bottom face room", - "The Body bottom area, bulb in the Jelly Zap room", - "The Body bottom area, bulb in the nautilus room", - "The Body bottom area, Mutant Costume", - "Final Boss area, bulb in the boss third form room", - "Objective complete" + AquariaLocationNames.SONG_CAVE_ANEMONE_SEED, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, + AquariaLocationNames.BEATING_BLASTER_PEG_PRIME, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_TOP_LEFT_AREA_BULB_CLOSE_TO_THE_VERSE_EGG, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_BULB_IN_THE_SECOND_ROOM, + AquariaLocationNames.KELP_FOREST_SPRITE_CAVE_SEED_BAG, + AquariaLocationNames.BEATING_MITHALAN_PRIESTS, + AquariaLocationNames.ABYSS_LEFT_AREA_BULB_IN_THE_BOTTOM_FISH_PASS, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + AquariaLocationNames.BEATING_MANTIS_SHRIMP_PRIME, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_RIGHT_AREA_CRATE_IN_THE_LEFT_BOTTOM_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_IN_THE_LITTLE_PIPE_ROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_CLOSE_TO_THE_SAVE_CRYSTAL, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_CRATE_BEFORE_THE_BEDROOM, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.SUNKEN_CITY_CLEARED, + AquariaLocationNames.THE_BODY_CENTER_AREA_BREAKING_LI_S_CAGE, + AquariaLocationNames.THE_BODY_CENTER_AREA_BULB_ON_THE_MAIN_PATH_BLOCKING_TUBE, + AquariaLocationNames.THE_BODY_LEFT_AREA_FIRST_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_SECOND_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_BELOW_THE_WATER_STREAM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_LEFT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_TOP_PATH_TO_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_RIGHT_AREA_BULB_IN_THE_BOTTOM_FACE_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_JELLY_ZAP_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_BULB_IN_THE_NAUTILUS_ROOM, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.OBJECTIVE_COMPLETE ] - items = [["Nature form"]] + items = [[ItemNames.NATURE_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py b/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py index 517af302..65139088 100644 --- a/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py +++ b/worlds/aquaria/test/test_no_progression_hard_hidden_locations.py @@ -6,6 +6,7 @@ Description: Unit test used to test that no progression items can be put in hard from . import AquariaTestBase from BaseClasses import ItemClassification +from ..Locations import AquariaLocationNames class UNoProgressionHardHiddenTest(AquariaTestBase): @@ -15,31 +16,31 @@ class UNoProgressionHardHiddenTest(AquariaTestBase): } unfillable_locations = [ - "Energy Temple boss area, Fallen God Tooth", - "Mithalas boss area, beating Mithalan God", - "Kelp Forest boss area, beating Drunian God", - "Sun Temple boss area, beating Sun God", - "Sunken City, bulb on top of the boss area", - "Home Water, Nautilus Egg", - "Energy Temple blaster room, Blaster Egg", - "Mithalas City Castle, beating the Priests", - "Mermog cave, Piranha Egg", - "Octopus Cave, Dumbo Egg", - "King Jellyfish Cave, bulb in the right path from King Jelly", - "King Jellyfish Cave, Jellyfish Costume", - "Final Boss area, bulb in the boss third form room", - "Sun Worm path, first cliff bulb", - "Sun Worm path, second cliff bulb", - "The Veil top right area, bulb at the top of the waterfall", - "Bubble Cave, bulb in the left cave wall", - "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", - "Bubble Cave, Verse Egg", - "Kelp Forest bottom left area, bulb close to the spirit crystals", - "Kelp Forest bottom left area, Walker Baby", - "Sun Temple, Sun Key", - "The Body bottom area, Mutant Costume", - "Sun Temple, bulb in the hidden room of the right part", - "Arnassi Ruins, Arnassi Armor", + AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH, + AquariaLocationNames.MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD, + AquariaLocationNames.KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD, + AquariaLocationNames.SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY, + AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_BULB_CLOSE_TO_THE_SPIRIT_CRYSTALS, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY, + AquariaLocationNames.SUN_TEMPLE_SUN_KEY, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_HIDDEN_ROOM_OF_THE_RIGHT_PART, + AquariaLocationNames.ARNASSI_RUINS_ARNASSI_ARMOR, ] def test_unconfine_home_water_both_location_fillable(self) -> None: diff --git a/worlds/aquaria/test/test_progression_hard_hidden_locations.py b/worlds/aquaria/test/test_progression_hard_hidden_locations.py index a1493c5d..f6ac8e0e 100644 --- a/worlds/aquaria/test/test_progression_hard_hidden_locations.py +++ b/worlds/aquaria/test/test_progression_hard_hidden_locations.py @@ -5,6 +5,7 @@ Description: Unit test used to test that progression items can be put in hard or """ from . import AquariaTestBase +from ..Locations import AquariaLocationNames class UNoProgressionHardHiddenTest(AquariaTestBase): @@ -14,31 +15,31 @@ class UNoProgressionHardHiddenTest(AquariaTestBase): } unfillable_locations = [ - "Energy Temple boss area, Fallen God Tooth", - "Mithalas boss area, beating Mithalan God", - "Kelp Forest boss area, beating Drunian God", - "Sun Temple boss area, beating Sun God", - "Sunken City, bulb on top of the boss area", - "Home Water, Nautilus Egg", - "Energy Temple blaster room, Blaster Egg", - "Mithalas City Castle, beating the Priests", - "Mermog cave, Piranha Egg", - "Octopus Cave, Dumbo Egg", - "King Jellyfish Cave, bulb in the right path from King Jelly", - "King Jellyfish Cave, Jellyfish Costume", - "Final Boss area, bulb in the boss third form room", - "Sun Worm path, first cliff bulb", - "Sun Worm path, second cliff bulb", - "The Veil top right area, bulb at the top of the waterfall", - "Bubble Cave, bulb in the left cave wall", - "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", - "Bubble Cave, Verse Egg", - "Kelp Forest bottom left area, bulb close to the spirit crystals", - "Kelp Forest bottom left area, Walker Baby", - "Sun Temple, Sun Key", - "The Body bottom area, Mutant Costume", - "Sun Temple, bulb in the hidden room of the right part", - "Arnassi Ruins, Arnassi Armor", + AquariaLocationNames.ENERGY_TEMPLE_BOSS_AREA_FALLEN_GOD_TOOTH, + AquariaLocationNames.MITHALAS_BOSS_AREA_BEATING_MITHALAN_GOD, + AquariaLocationNames.KELP_FOREST_BOSS_AREA_BEATING_DRUNIAN_GOD, + AquariaLocationNames.SUN_TEMPLE_BOSS_AREA_BEATING_LUMEREAN_GOD, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.HOME_WATERS_NAUTILUS_EGG, + AquariaLocationNames.ENERGY_TEMPLE_BLASTER_ROOM_BLASTER_EGG, + AquariaLocationNames.MITHALAS_CITY_CASTLE_BEATING_THE_PRIESTS, + AquariaLocationNames.MERMOG_CAVE_PIRANHA_EGG, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.KING_JELLYFISH_CAVE_BULB_IN_THE_RIGHT_PATH_FROM_KING_JELLY, + AquariaLocationNames.KING_JELLYFISH_CAVE_JELLYFISH_COSTUME, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_FIRST_CLIFF_BULB, + AquariaLocationNames.SUN_TEMPLE_BOSS_PATH_SECOND_CLIFF_BULB, + AquariaLocationNames.THE_VEIL_TOP_RIGHT_AREA_BULB_AT_THE_TOP_OF_THE_WATERFALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_BULB_CLOSE_TO_THE_SPIRIT_CRYSTALS, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY, + AquariaLocationNames.SUN_TEMPLE_SUN_KEY, + AquariaLocationNames.THE_BODY_BOTTOM_AREA_MUTANT_COSTUME, + AquariaLocationNames.SUN_TEMPLE_BULB_IN_THE_HIDDEN_ROOM_OF_THE_RIGHT_PART, + AquariaLocationNames.ARNASSI_RUINS_ARNASSI_ARMOR, ] def test_unconfine_home_water_both_location_fillable(self) -> None: diff --git a/worlds/aquaria/test/test_spirit_form_access.py b/worlds/aquaria/test/test_spirit_form_access.py index 7e31de99..834661e0 100644 --- a/worlds/aquaria/test/test_spirit_form_access.py +++ b/worlds/aquaria/test/test_spirit_form_access.py @@ -5,6 +5,8 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames class SpiritFormAccessTest(AquariaTestBase): @@ -13,23 +15,23 @@ class SpiritFormAccessTest(AquariaTestBase): def test_spirit_form_location(self) -> None: """Test locations that require spirit form""" locations = [ - "The Veil bottom area, bulb in the spirit path", - "Mithalas City Castle, Trident Head", - "Open Water skeleton path, King Skull", - "Kelp Forest bottom left area, Walker Baby", - "Abyss right area, bulb behind the rock in the whale room", - "The Whale, Verse Egg", - "Ice Cave, bulb in the room to the right", - "Ice Cave, first bulb in the top exit room", - "Ice Cave, second bulb in the top exit room", - "Ice Cave, third bulb in the top exit room", - "Ice Cave, bulb in the left room", - "Bubble Cave, bulb in the left cave wall", - "Bubble Cave, bulb in the right cave wall (behind the ice crystal)", - "Bubble Cave, Verse Egg", - "Sunken City left area, Girl Costume", - "Beating Mantis Shrimp Prime", - "First secret", + AquariaLocationNames.THE_VEIL_BOTTOM_AREA_BULB_IN_THE_SPIRIT_PATH, + AquariaLocationNames.MITHALAS_CITY_CASTLE_TRIDENT_HEAD, + AquariaLocationNames.OPEN_WATERS_SKELETON_PATH_KING_SKULL, + AquariaLocationNames.KELP_FOREST_BOTTOM_LEFT_AREA_WALKER_BABY, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM, + AquariaLocationNames.THE_WHALE_VERSE_EGG, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_ROOM_TO_THE_RIGHT, + AquariaLocationNames.ICE_CAVERN_FIRST_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_SECOND_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_THIRD_BULB_IN_THE_TOP_EXIT_ROOM, + AquariaLocationNames.ICE_CAVERN_BULB_IN_THE_LEFT_ROOM, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_LEFT_CAVE_WALL, + AquariaLocationNames.BUBBLE_CAVE_BULB_IN_THE_RIGHT_CAVE_WALL_BEHIND_THE_ICE_CRYSTAL, + AquariaLocationNames.BUBBLE_CAVE_VERSE_EGG, + AquariaLocationNames.SUNKEN_CITY_LEFT_AREA_GIRL_COSTUME, + AquariaLocationNames.BEATING_MANTIS_SHRIMP_PRIME, + AquariaLocationNames.FIRST_SECRET, ] - items = [["Spirit form"]] + items = [[ItemNames.SPIRIT_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_sun_form_access.py b/worlds/aquaria/test/test_sun_form_access.py index 394d5e4b..b37cceee 100644 --- a/worlds/aquaria/test/test_sun_form_access.py +++ b/worlds/aquaria/test/test_sun_form_access.py @@ -5,6 +5,8 @@ Description: Unit test used to test accessibility of locations with and without """ from . import AquariaTestBase +from ..Items import ItemNames +from ..Locations import AquariaLocationNames class SunFormAccessTest(AquariaTestBase): @@ -13,16 +15,16 @@ class SunFormAccessTest(AquariaTestBase): def test_sun_form_location(self) -> None: """Test locations that require sun form""" locations = [ - "First secret", - "The Whale, Verse Egg", - "Abyss right area, bulb behind the rock in the whale room", - "Octopus Cave, Dumbo Egg", - "Beating Octopus Prime", - "Sunken City, bulb on top of the boss area", - "Beating the Golem", - "Sunken City cleared", - "Final Boss area, bulb in the boss third form room", - "Objective complete" + AquariaLocationNames.FIRST_SECRET, + AquariaLocationNames.THE_WHALE_VERSE_EGG, + AquariaLocationNames.ABYSS_RIGHT_AREA_BULB_BEHIND_THE_ROCK_IN_THE_WHALE_ROOM, + AquariaLocationNames.OCTOPUS_CAVE_DUMBO_EGG, + AquariaLocationNames.BEATING_OCTOPUS_PRIME, + AquariaLocationNames.SUNKEN_CITY_BULB_ON_TOP_OF_THE_BOSS_AREA, + AquariaLocationNames.BEATING_THE_GOLEM, + AquariaLocationNames.SUNKEN_CITY_CLEARED, + AquariaLocationNames.FINAL_BOSS_AREA_BULB_IN_THE_BOSS_THIRD_FORM_ROOM, + AquariaLocationNames.OBJECTIVE_COMPLETE ] - items = [["Sun form"]] + items = [[ItemNames.SUN_FORM]] self.assertAccessDependency(locations, items) diff --git a/worlds/aquaria/test/test_unconfine_home_water_via_both.py b/worlds/aquaria/test/test_unconfine_home_water_via_both.py index 5b8689bc..038e2778 100644 --- a/worlds/aquaria/test/test_unconfine_home_water_via_both.py +++ b/worlds/aquaria/test/test_unconfine_home_water_via_both.py @@ -6,16 +6,17 @@ Description: Unit test used to test accessibility of region with the unconfined """ from . import AquariaTestBase +from ..Options import UnconfineHomeWater, EarlyEnergyForm class UnconfineHomeWaterBothAccessTest(AquariaTestBase): """Unit test used to test accessibility of region with the unconfine home water option enabled""" options = { - "unconfine_home_water": 3, - "early_energy_form": False + "unconfine_home_water": UnconfineHomeWater.option_via_both, + "early_energy_form": EarlyEnergyForm.option_off } def test_unconfine_home_water_both_location(self) -> None: """Test locations accessible with unconfined home water via energy door and transportation turtle""" - self.assertTrue(self.can_reach_region("Open Water top left area"), "Cannot reach Open Water top left area") - self.assertTrue(self.can_reach_region("Home Water, turtle room"), "Cannot reach Home Water, turtle room") + self.assertTrue(self.can_reach_region("Open Waters top left area"), "Cannot reach Open Waters top left area") + self.assertTrue(self.can_reach_region("Home Waters, turtle room"), "Cannot reach Home Waters, turtle room") diff --git a/worlds/aquaria/test/test_unconfine_home_water_via_energy_door.py b/worlds/aquaria/test/test_unconfine_home_water_via_energy_door.py index 37a5c986..269a4b33 100644 --- a/worlds/aquaria/test/test_unconfine_home_water_via_energy_door.py +++ b/worlds/aquaria/test/test_unconfine_home_water_via_energy_door.py @@ -5,16 +5,17 @@ Description: Unit test used to test accessibility of region with the unconfined """ from . import AquariaTestBase +from ..Options import UnconfineHomeWater, EarlyEnergyForm class UnconfineHomeWaterEnergyDoorAccessTest(AquariaTestBase): """Unit test used to test accessibility of region with the unconfine home water option enabled""" options = { - "unconfine_home_water": 1, - "early_energy_form": False + "unconfine_home_water": UnconfineHomeWater.option_via_energy_door, + "early_energy_form": EarlyEnergyForm.option_off } def test_unconfine_home_water_energy_door_location(self) -> None: """Test locations accessible with unconfined home water via energy door""" - self.assertTrue(self.can_reach_region("Open Water top left area"), "Cannot reach Open Water top left area") - self.assertFalse(self.can_reach_region("Home Water, turtle room"), "Can reach Home Water, turtle room") + self.assertTrue(self.can_reach_region("Open Waters top left area"), "Cannot reach Open Waters top left area") + self.assertFalse(self.can_reach_region("Home Waters, turtle room"), "Can reach Home Waters, turtle room") diff --git a/worlds/aquaria/test/test_unconfine_home_water_via_transturtle.py b/worlds/aquaria/test/test_unconfine_home_water_via_transturtle.py index da4c83c2..b8efb824 100644 --- a/worlds/aquaria/test/test_unconfine_home_water_via_transturtle.py +++ b/worlds/aquaria/test/test_unconfine_home_water_via_transturtle.py @@ -5,16 +5,17 @@ Description: Unit test used to test accessibility of region with the unconfined """ from . import AquariaTestBase +from ..Options import UnconfineHomeWater, EarlyEnergyForm class UnconfineHomeWaterTransturtleAccessTest(AquariaTestBase): """Unit test used to test accessibility of region with the unconfine home water option enabled""" options = { - "unconfine_home_water": 2, - "early_energy_form": False + "unconfine_home_water": UnconfineHomeWater.option_via_transturtle, + "early_energy_form": EarlyEnergyForm.option_off } def test_unconfine_home_water_transturtle_location(self) -> None: """Test locations accessible with unconfined home water via transportation turtle""" - self.assertTrue(self.can_reach_region("Home Water, turtle room"), "Cannot reach Home Water, turtle room") - self.assertFalse(self.can_reach_region("Open Water top left area"), "Can reach Open Water top left area") + self.assertTrue(self.can_reach_region("Home Waters, turtle room"), "Cannot reach Home Waters, turtle room") + self.assertFalse(self.can_reach_region("Open Waters top left area"), "Can reach Open Waters top left area")