diff --git a/.github/labeler.yml b/.github/labeler.yml index 2743104f..d0aa61c8 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -21,7 +21,6 @@ - '!data/**' - '!.run/**' - '!.github/**' - - '!worlds_disabled/**' - '!worlds/**' - '!WebHost.py' - '!WebHostLib/**' diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index dee8a6fd..b89f668c 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -232,7 +232,7 @@ ## Active Unmaintained Worlds # The following worlds in this repo are currently unmaintained, but currently still work in core. If any update breaks -# compatibility, these worlds may be moved to `worlds_disabled`. If you are interested in stepping up as maintainer for +# compatibility, these worlds may be deleted. If you are interested in stepping up as maintainer for # any of these worlds, please review `/docs/world maintainer.md` documentation. # Final Fantasy (1) @@ -241,15 +241,6 @@ # Ocarina of Time # /worlds/oot/ -## Disabled Unmaintained Worlds - -# The following worlds in this repo are currently unmaintained and disabled as they do not work in core. If you are -# interested in stepping up as maintainer for any of these worlds, please review `/docs/world maintainer.md` -# documentation. - -# Ori and the Blind Forest -# /worlds_disabled/oribf/ - ################### ## Documentation ## ################### diff --git a/docs/world maintainer.md b/docs/world maintainer.md index 17aacdf8..6971a982 100644 --- a/docs/world maintainer.md +++ b/docs/world maintainer.md @@ -65,5 +65,5 @@ date, voting members and final result in the commit message. ## Handling of Unmaintained Worlds -As long as worlds are known to work for the most part, they can stay included. Once a world becomes broken it shall be -moved from `worlds/` to `worlds_disabled/`. +As long as worlds are known to work for the most part, they can stay included. Once the world becomes broken, it shall +be deleted. diff --git a/setup.py b/setup.py index 2654cc69..ccca4639 100644 --- a/setup.py +++ b/setup.py @@ -373,10 +373,6 @@ class BuildExeCommand(cx_Freeze.command.build_exe.build_exe): assert not non_apworlds - set(AutoWorldRegister.world_types), \ f"Unknown world {non_apworlds - set(AutoWorldRegister.world_types)} designated for .apworld" folders_to_remove: list[str] = [] - disabled_worlds_folder = "worlds_disabled" - for entry in os.listdir(disabled_worlds_folder): - if os.path.isdir(os.path.join(disabled_worlds_folder, entry)): - folders_to_remove.append(entry) generate_yaml_templates(self.buildfolder / "Players" / "Templates", False) for worldname, worldtype in AutoWorldRegister.world_types.items(): if worldname not in non_apworlds: diff --git a/worlds_disabled/README.md b/worlds_disabled/README.md deleted file mode 100644 index a7bffe22..00000000 --- a/worlds_disabled/README.md +++ /dev/null @@ -1,13 +0,0 @@ -## Folder Purpose - -This folder is for already merged worlds that are unmaintained and currently broken. If you are interested in fixing and -stepping up as maintainer for any of these worlds, please review the [world maintainer](/docs/world%20maintainer.md) -documentation. - -## Information for Disabled Worlds - -For each disabled world, a README file can be found detailing when the world was disabled and the reasons that it -was disabled. In order to be considered for reactivation, these concerns should be handled at a bare minimum. However, -each world may have additional issues that also need to be handled, such as deprecated API calls or missing components. - - diff --git a/worlds_disabled/oribf/Items.py b/worlds_disabled/oribf/Items.py deleted file mode 100644 index 788b802d..00000000 --- a/worlds_disabled/oribf/Items.py +++ /dev/null @@ -1,10 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -from typing import Dict - -item_table: Dict[str, int] = \ - {'EX100': 262144, 'AC': 262145, 'Bash': 262146, 'HC': 262147, 'Plant': 262148, 'MapStone': 262149, 'ChargeFlame': 262150, 'ChargeJump': 262151, 'Climb': 262152, 'MS': 262153, 'Dash': 262154, 'EC': 262155, 'EX200': 262156, 'DoubleJump': 262157, 'EX15': 262158, 'Wind': 262159, 'KS': 262160, 'Water': 262161, 'Glide': 262162, 'Grenade': 262163, 'ForlornKey': 262164, 'CS': 262165, 'Stomp': 262166, 'HoruKey': 262167, 'WallJump': 262168, 'GinsoKey': 262169} - -default_pool: Dict[str, int] = \ - {'EX100': 53, 'AC': 33, 'Bash': 1, 'HC': 12, 'Plant': 24, 'MapStone': 9, 'ChargeFlame': 1, 'ChargeJump': 1, 'Climb': 1, 'MS': 9, 'Dash': 1, 'EC': 14, 'EX200': 29, 'DoubleJump': 1, 'EX15': 6, 'Wind': 1, 'KS': 40, 'Water': 1, 'Glide': 1, 'Grenade': 1, 'ForlornKey': 1, 'CS': 8, 'Stomp': 1, 'HoruKey': 1, 'WallJump': 1, 'GinsoKey': 1} \ No newline at end of file diff --git a/worlds_disabled/oribf/Locations.py b/worlds_disabled/oribf/Locations.py deleted file mode 100644 index 1522fb55..00000000 --- a/worlds_disabled/oribf/Locations.py +++ /dev/null @@ -1,262 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -from .Types import * - -locations_data = \ - {'AboveChargeFlameTreeExp': Location(code=262144, vanilla_item='EX100'), - 'AboveChargeJumpAbilityCell': Location(code=262145, vanilla_item='AC'), - 'AboveFourthHealth': Location(code=262146, vanilla_item='AC'), - 'AboveGrottoTeleporterExp': Location(code=262147, vanilla_item='EX100'), - 'BashAreaExp': Location(code=262148, vanilla_item='EX100'), - 'BashSkillTree': Location(code=262149, vanilla_item='SKBash'), - 'BelowGrottoTeleporterHealthCell': Location(code=262150, vanilla_item='HC'), - 'BelowGrottoTeleporterPlant': Location(code=262151, vanilla_item='Plant'), - 'BlackrootBoulderExp': Location(code=262152, vanilla_item='EX100'), - 'BlackrootMap': Location(code=262153, vanilla_item='MapStone'), - 'BlackrootTeleporterHealthCell': Location(code=262154, vanilla_item='HC'), - 'ChargeFlameAreaExp': Location(code=262155, vanilla_item='EX100'), - 'ChargeFlameAreaPlant': Location(code=262156, vanilla_item='Plant'), - 'ChargeFlameSkillTree': Location(code=262157, vanilla_item='SKChargeFlame'), - 'ChargeJumpSkillTree': Location(code=262158, vanilla_item='SKChargeJump'), - 'ClimbSkillTree': Location(code=262159, vanilla_item='SKClimb'), - 'DashAreaAbilityCell': Location(code=262160, vanilla_item='AC'), - 'DashAreaMapstone': Location(code=262161, vanilla_item='MS'), - 'DashAreaOrbRoomExp': Location(code=262162, vanilla_item='EX100'), - 'DashAreaPlant': Location(code=262163, vanilla_item='Plant'), - 'DashAreaRoofExp': Location(code=262164, vanilla_item='EX100'), - 'DashSkillTree': Location(code=262165, vanilla_item='SKDash'), - 'DeathGauntletEnergyCell': Location(code=262166, vanilla_item='EC'), - 'DeathGauntletExp': Location(code=262167, vanilla_item='EX100'), - 'DeathGauntletRoofHealthCell': Location(code=262168, vanilla_item='HC'), - 'DeathGauntletRoofPlant': Location(code=262169, vanilla_item='Plant'), - 'DeathGauntletStompSwim': Location(code=262170, vanilla_item='EX200'), - 'DeathGauntletSwimEnergyDoor': Location(code=262171, vanilla_item='AC'), - 'DoorWarpExp': Location(code=262172, vanilla_item='EX200'), - 'DoubleJumpAreaExp': Location(code=262173, vanilla_item='EX100'), - 'DoubleJumpSkillTree': Location(code=262174, vanilla_item='SKDoubleJump'), - 'FarLeftGumoHideoutExp': Location(code=262175, vanilla_item='EX100'), - 'FirstPickup': Location(code=262176, vanilla_item='EX15'), - 'ForlornEntranceExp': Location(code=262177, vanilla_item='EX200'), - 'ForlornEscape': Location(code=262178, vanilla_item='EVWind'), - 'ForlornHiddenSpiderExp': Location(code=262179, vanilla_item='EX100'), - 'ForlornKeystone1': Location(code=262180, vanilla_item='KS'), - 'ForlornKeystone2': Location(code=262181, vanilla_item='KS'), - 'ForlornKeystone3': Location(code=262182, vanilla_item='KS'), - 'ForlornKeystone4': Location(code=262183, vanilla_item='KS'), - 'ForlornMap': Location(code=262184, vanilla_item='MapStone'), - 'ForlornPlant': Location(code=262185, vanilla_item='Plant'), - 'FourthHealthCell': Location(code=262186, vanilla_item='HC'), - 'FronkeyFight': Location(code=262187, vanilla_item='EX15'), - 'FronkeyWalkRoof': Location(code=262188, vanilla_item='EX200'), - 'GinsoEscapeExit': Location(code=262189, vanilla_item='EVWater'), - 'GinsoEscapeHangingExp': Location(code=262190, vanilla_item='EX100'), - 'GinsoEscapeJumpPadExp': Location(code=262191, vanilla_item='EX100'), - 'GinsoEscapeProjectileExp': Location(code=262192, vanilla_item='EX100'), - 'GinsoEscapeSpiderExp': Location(code=262193, vanilla_item='EX200'), - 'GladesGrenadePool': Location(code=262194, vanilla_item='EX200'), - 'GladesGrenadeTree': Location(code=262195, vanilla_item='AC'), - 'GladesKeystone1': Location(code=262196, vanilla_item='KS'), - 'GladesKeystone2': Location(code=262197, vanilla_item='KS'), - 'GladesLaser': Location(code=262198, vanilla_item='EC'), - 'GladesLaserGrenade': Location(code=262199, vanilla_item='AC'), - 'GladesMainPool': Location(code=262200, vanilla_item='EX100'), - 'GladesMainPoolDeep': Location(code=262201, vanilla_item='EC'), - 'GladesMap': Location(code=262202, vanilla_item='MapStone'), - 'GladesMapKeystone': Location(code=262203, vanilla_item='KS'), - 'GlideSkillFeather': Location(code=262204, vanilla_item='SKGlide'), - 'GrenadeAreaAbilityCell': Location(code=262205, vanilla_item='AC'), - 'GrenadeAreaExp': Location(code=262206, vanilla_item='EX100'), - 'GrenadeSkillTree': Location(code=262207, vanilla_item='SKGrenade'), - 'GrottoEnergyDoorHealthCell': Location(code=262208, vanilla_item='HC'), - 'GrottoEnergyDoorSwim': Location(code=262209, vanilla_item='EX100'), - 'GrottoHideoutFallAbilityCell': Location(code=262210, vanilla_item='AC'), - 'GrottoLasersRoofExp': Location(code=262211, vanilla_item='EX100'), - 'GrottoSwampDrainAccessExp': Location(code=262212, vanilla_item='EX100'), - 'GrottoSwampDrainAccessPlant': Location(code=262213, vanilla_item='Plant'), - 'GroveAboveSpiderWaterEnergyCell': Location(code=262214, vanilla_item='EC'), - 'GroveAboveSpiderWaterExp': Location(code=262215, vanilla_item='EX200'), - 'GroveAboveSpiderWaterHealthCell': Location(code=262216, vanilla_item='HC'), - 'GroveSpiderWaterSwim': Location(code=262217, vanilla_item='EX100'), - 'GroveWaterStompAbilityCell': Location(code=262218, vanilla_item='AC'), - 'GumoHideoutCrusherExp': Location(code=262219, vanilla_item='EX100'), - 'GumoHideoutCrusherKeystone': Location(code=262220, vanilla_item='KS'), - 'GumoHideoutEnergyCell': Location(code=262221, vanilla_item='EC'), - 'GumoHideoutLeftHangingExp': Location(code=262222, vanilla_item='EX15'), - 'GumoHideoutMap': Location(code=262223, vanilla_item='MapStone'), - 'GumoHideoutMapstone': Location(code=262224, vanilla_item='MS'), - 'GumoHideoutMiniboss': Location(code=262225, vanilla_item='KS'), - 'GumoHideoutRedirectAbilityCell': Location(code=262226, vanilla_item='AC'), - 'GumoHideoutRedirectEnergyCell': Location(code=262227, vanilla_item='EC'), - 'GumoHideoutRedirectExp': Location(code=262228, vanilla_item='EX200'), - 'GumoHideoutRedirectPlant': Location(code=262229, vanilla_item='Plant'), - 'GumoHideoutRightHangingExp': Location(code=262230, vanilla_item='EX15'), - 'GumoHideoutRockfallExp': Location(code=262231, vanilla_item='EX100'), - 'GumonSeal': Location(code=262232, vanilla_item='EVForlornKey'), - 'HollowGroveMap': Location(code=262233, vanilla_item='MapStone'), - 'HollowGroveMapPlant': Location(code=262234, vanilla_item='Plant'), - 'HollowGroveMapstone': Location(code=262235, vanilla_item='MS'), - 'HollowGroveTreeAbilityCell': Location(code=262236, vanilla_item='AC'), - 'HollowGroveTreePlant': Location(code=262237, vanilla_item='Plant'), - 'HoruFieldsAbilityCell': Location(code=262238, vanilla_item='AC'), - 'HoruFieldsEnergyCell': Location(code=262239, vanilla_item='EC'), - 'HoruFieldsHealthCell': Location(code=262240, vanilla_item='HC'), - 'HoruFieldsHiddenExp': Location(code=262241, vanilla_item='EX200'), - 'HoruFieldsPlant': Location(code=262242, vanilla_item='Plant'), - 'HoruL1': Location(code=262243, vanilla_item='CS'), - 'HoruL2': Location(code=262244, vanilla_item='CS'), - 'HoruL3': Location(code=262245, vanilla_item='CS'), - 'HoruL4': Location(code=262246, vanilla_item='CS'), - 'HoruL4ChaseExp': Location(code=262247, vanilla_item='EX200'), - 'HoruL4LowerExp': Location(code=262248, vanilla_item='EX200'), - 'HoruLavaDrainedLeftExp': Location(code=262249, vanilla_item='EX200'), - 'HoruLavaDrainedRightExp': Location(code=262250, vanilla_item='EX200'), - 'HoruMap': Location(code=262251, vanilla_item='MapStone'), - 'HoruR1': Location(code=262252, vanilla_item='CS'), - 'HoruR1EnergyCell': Location(code=262253, vanilla_item='EC'), - 'HoruR1HangingExp': Location(code=262254, vanilla_item='EX100'), - 'HoruR1Mapstone': Location(code=262255, vanilla_item='MS'), - 'HoruR2': Location(code=262256, vanilla_item='CS'), - 'HoruR3': Location(code=262257, vanilla_item='CS'), - 'HoruR3Plant': Location(code=262258, vanilla_item='Plant'), - 'HoruR4': Location(code=262259, vanilla_item='CS'), - 'HoruR4DrainedExp': Location(code=262260, vanilla_item='EX200'), - 'HoruR4LaserExp': Location(code=262261, vanilla_item='EX200'), - 'HoruR4StompExp': Location(code=262262, vanilla_item='EX200'), - 'HoruTeleporterExp': Location(code=262263, vanilla_item='EX200'), - 'IcelessExp': Location(code=262264, vanilla_item='EX100'), - 'InnerSwampDrainExp': Location(code=262265, vanilla_item='EX100'), - 'InnerSwampEnergyCell': Location(code=262266, vanilla_item='EC'), - 'InnerSwampHiddenSwimExp': Location(code=262267, vanilla_item='EX100'), - 'InnerSwampStompExp': Location(code=262268, vanilla_item='EX100'), - 'InnerSwampSwimLeftKeystone': Location(code=262269, vanilla_item='KS'), - 'InnerSwampSwimMapstone': Location(code=262270, vanilla_item='MS'), - 'InnerSwampSwimRightKeystone': Location(code=262271, vanilla_item='KS'), - 'KuroPerchExp': Location(code=262272, vanilla_item='EX200'), - 'LeftGladesExp': Location(code=262273, vanilla_item='EX15'), - 'LeftGladesHiddenExp': Location(code=262274, vanilla_item='EX15'), - 'LeftGladesKeystone': Location(code=262275, vanilla_item='KS'), - 'LeftGladesMapstone': Location(code=262276, vanilla_item='MS'), - 'LeftGrottoTeleporterExp': Location(code=262277, vanilla_item='EX200'), - 'LeftGumoHideoutExp': Location(code=262278, vanilla_item='EX100'), - 'LeftGumoHideoutHealthCell': Location(code=262279, vanilla_item='HC'), - 'LeftGumoHideoutLowerPlant': Location(code=262280, vanilla_item='Plant'), - 'LeftGumoHideoutSwim': Location(code=262281, vanilla_item='EX100'), - 'LeftGumoHideoutUpperPlant': Location(code=262282, vanilla_item='Plant'), - 'LeftSorrowAbilityCell': Location(code=262283, vanilla_item='AC'), - 'LeftSorrowEnergyCell': Location(code=262284, vanilla_item='EC'), - 'LeftSorrowGrenade': Location(code=262285, vanilla_item='EX200'), - 'LeftSorrowKeystone1': Location(code=262286, vanilla_item='KS'), - 'LeftSorrowKeystone2': Location(code=262287, vanilla_item='KS'), - 'LeftSorrowKeystone3': Location(code=262288, vanilla_item='KS'), - 'LeftSorrowKeystone4': Location(code=262289, vanilla_item='KS'), - 'LeftSorrowPlant': Location(code=262290, vanilla_item='Plant'), - 'LostGroveAbilityCell': Location(code=262291, vanilla_item='AC'), - 'LostGroveHiddenExp': Location(code=262292, vanilla_item='EX100'), - 'LostGroveLongSwim': Location(code=262293, vanilla_item='AC'), - 'LostGroveTeleporter': Location(code=262294, vanilla_item='EX100'), - 'LowerBlackrootAbilityCell': Location(code=262295, vanilla_item='AC'), - 'LowerBlackrootGrenadeThrow': Location(code=262296, vanilla_item='AC'), - 'LowerBlackrootLaserAbilityCell': Location(code=262297, vanilla_item='AC'), - 'LowerBlackrootLaserExp': Location(code=262298, vanilla_item='EX100'), - 'LowerGinsoHiddenExp': Location(code=262299, vanilla_item='EX100'), - 'LowerGinsoKeystone1': Location(code=262300, vanilla_item='KS'), - 'LowerGinsoKeystone2': Location(code=262301, vanilla_item='KS'), - 'LowerGinsoKeystone3': Location(code=262302, vanilla_item='KS'), - 'LowerGinsoKeystone4': Location(code=262303, vanilla_item='KS'), - 'LowerGinsoPlant': Location(code=262304, vanilla_item='Plant'), - 'LowerValleyExp': Location(code=262305, vanilla_item='EX100'), - 'LowerValleyMapstone': Location(code=262306, vanilla_item='MS'), - 'MistyAbilityCell': Location(code=262307, vanilla_item='AC'), - 'MistyEntranceStompExp': Location(code=262308, vanilla_item='EX100'), - 'MistyEntranceTreeExp': Location(code=262309, vanilla_item='EX100'), - 'MistyFrogNookExp': Location(code=262310, vanilla_item='EX100'), - 'MistyGrenade': Location(code=262311, vanilla_item='EX200'), - 'MistyKeystone1': Location(code=262312, vanilla_item='KS'), - 'MistyKeystone2': Location(code=262313, vanilla_item='KS'), - 'MistyKeystone3': Location(code=262314, vanilla_item='KS'), - 'MistyKeystone4': Location(code=262315, vanilla_item='KS'), - 'MistyMortarCorridorHiddenExp': Location(code=262316, vanilla_item='EX100'), - 'MistyMortarCorridorUpperExp': Location(code=262317, vanilla_item='EX100'), - 'MistyPlant': Location(code=262318, vanilla_item='Plant'), - 'MistyPostClimbAboveSpikePit': Location(code=262319, vanilla_item='EX200'), - 'MistyPostClimbSpikeCave': Location(code=262320, vanilla_item='EX100'), - 'MoonGrottoStompPlant': Location(code=262321, vanilla_item='Plant'), - 'OuterSwampAbilityCell': Location(code=262322, vanilla_item='AC'), - 'OuterSwampGrenadeExp': Location(code=262323, vanilla_item='EX200'), - 'OuterSwampHealthCell': Location(code=262324, vanilla_item='HC'), - 'OuterSwampMortarAbilityCell': Location(code=262325, vanilla_item='AC'), - 'OuterSwampMortarPlant': Location(code=262326, vanilla_item='Plant'), - 'OuterSwampStompExp': Location(code=262327, vanilla_item='EX100'), - 'OutsideForlornCliffExp': Location(code=262328, vanilla_item='EX200'), - 'OutsideForlornTreeExp': Location(code=262329, vanilla_item='EX100'), - 'OutsideForlornWaterExp': Location(code=262330, vanilla_item='EX100'), - 'RazielNo': Location(code=262331, vanilla_item='EX100'), - 'RightForlornHealthCell': Location(code=262332, vanilla_item='HC'), - 'RightForlornPlant': Location(code=262333, vanilla_item='Plant'), - 'SorrowEntranceAbilityCell': Location(code=262334, vanilla_item='AC'), - 'SorrowHealthCell': Location(code=262335, vanilla_item='HC'), - 'SorrowHiddenKeystone': Location(code=262336, vanilla_item='KS'), - 'SorrowLowerLeftKeystone': Location(code=262337, vanilla_item='KS'), - 'SorrowMainShaftKeystone': Location(code=262338, vanilla_item='KS'), - 'SorrowMap': Location(code=262339, vanilla_item='MapStone'), - 'SorrowMapstone': Location(code=262340, vanilla_item='MS'), - 'SorrowSpikeKeystone': Location(code=262341, vanilla_item='KS'), - 'SpiderSacEnergyCell': Location(code=262342, vanilla_item='EC'), - 'SpiderSacEnergyDoor': Location(code=262343, vanilla_item='AC'), - 'SpiderSacGrenadeDoor': Location(code=262344, vanilla_item='AC'), - 'SpiderSacHealthCell': Location(code=262345, vanilla_item='HC'), - 'SpiritCavernsAbilityCell': Location(code=262346, vanilla_item='AC'), - 'SpiritCavernsKeystone1': Location(code=262347, vanilla_item='KS'), - 'SpiritCavernsKeystone2': Location(code=262348, vanilla_item='KS'), - 'SpiritCavernsTopLeftKeystone': Location(code=262349, vanilla_item='KS'), - 'SpiritCavernsTopRightKeystone': Location(code=262350, vanilla_item='KS'), - 'StompAreaExp': Location(code=262351, vanilla_item='EX100'), - 'StompAreaGrenadeExp': Location(code=262352, vanilla_item='EX200'), - 'StompAreaRoofExp': Location(code=262353, vanilla_item='EX200'), - 'StompSkillTree': Location(code=262354, vanilla_item='SKStomp'), - 'Sunstone': Location(code=262355, vanilla_item='EVHoruKey'), - 'SunstonePlant': Location(code=262356, vanilla_item='Plant'), - 'SwampEntranceAbilityCell': Location(code=262357, vanilla_item='AC'), - 'SwampEntrancePlant': Location(code=262358, vanilla_item='Plant'), - 'SwampEntranceSwim': Location(code=262359, vanilla_item='EX200'), - 'SwampMap': Location(code=262360, vanilla_item='MapStone'), - 'SwampTeleporterAbilityCell': Location(code=262361, vanilla_item='AC'), - 'TopGinsoLeftLowerExp': Location(code=262362, vanilla_item='EX100'), - 'TopGinsoLeftUpperExp': Location(code=262363, vanilla_item='EX100'), - 'TopGinsoRightPlant': Location(code=262364, vanilla_item='Plant'), - 'UpperGinsoEnergyCell': Location(code=262365, vanilla_item='EC'), - 'UpperGinsoLowerKeystone': Location(code=262366, vanilla_item='KS'), - 'UpperGinsoRedirectLowerExp': Location(code=262367, vanilla_item='EX100'), - 'UpperGinsoRedirectUpperExp': Location(code=262368, vanilla_item='EX100'), - 'UpperGinsoRightKeystone': Location(code=262369, vanilla_item='KS'), - 'UpperGinsoUpperLeftKeystone': Location(code=262370, vanilla_item='KS'), - 'UpperGinsoUpperRightKeystone': Location(code=262371, vanilla_item='KS'), - 'UpperSorrowFarLeftKeystone': Location(code=262372, vanilla_item='KS'), - 'UpperSorrowFarRightKeystone': Location(code=262373, vanilla_item='KS'), - 'UpperSorrowLeftKeystone': Location(code=262374, vanilla_item='KS'), - 'UpperSorrowRightKeystone': Location(code=262375, vanilla_item='KS'), - 'UpperSorrowSpikeExp': Location(code=262376, vanilla_item='EX100'), - 'ValleyEntryAbilityCell': Location(code=262377, vanilla_item='AC'), - 'ValleyEntryGrenadeLongSwim': Location(code=262378, vanilla_item='EC'), - 'ValleyEntryTreeExp': Location(code=262379, vanilla_item='EX100'), - 'ValleyEntryTreePlant': Location(code=262380, vanilla_item='Plant'), - 'ValleyForlornApproachGrenade': Location(code=262381, vanilla_item='AC'), - 'ValleyForlornApproachMapstone': Location(code=262382, vanilla_item='MS'), - 'ValleyMainFACS': Location(code=262383, vanilla_item='AC'), - 'ValleyMainPlant': Location(code=262384, vanilla_item='Plant'), - 'ValleyMap': Location(code=262385, vanilla_item='MapStone'), - 'ValleyRightBirdStompCell': Location(code=262386, vanilla_item='AC'), - 'ValleyRightExp': Location(code=262387, vanilla_item='EX100'), - 'ValleyRightFastStomplessCell': Location(code=262388, vanilla_item='AC'), - 'ValleyRightSwimExp': Location(code=262389, vanilla_item='EX100'), - 'ValleyThreeBirdAbilityCell': Location(code=262390, vanilla_item='AC'), - 'WallJumpAreaEnergyCell': Location(code=262391, vanilla_item='EC'), - 'WallJumpAreaExp': Location(code=262392, vanilla_item='EX200'), - 'WallJumpSkillTree': Location(code=262393, vanilla_item='SKWallJump'), - 'WaterVein': Location(code=262394, vanilla_item='EVGinsoKey'), - 'WilhelmExp': Location(code=262395, vanilla_item='EX200')} - - - -lookup_name_to_id = {location_name: location_data.code for location_name, location_data in locations_data.items()} \ No newline at end of file diff --git a/worlds_disabled/oribf/Options.py b/worlds_disabled/oribf/Options.py deleted file mode 100644 index ac6808aa..00000000 --- a/worlds_disabled/oribf/Options.py +++ /dev/null @@ -1,12 +0,0 @@ -from .RulesData import location_rules -from Options import Toggle - - -options = { - "open" : Toggle, - "openworld": Toggle -} - -for logic_set in location_rules: - if logic_set != "casual-core": - options[logic_set.replace("-", "_")] = Toggle diff --git a/worlds_disabled/oribf/README.md b/worlds_disabled/oribf/README.md deleted file mode 100644 index 0c78c23b..00000000 --- a/worlds_disabled/oribf/README.md +++ /dev/null @@ -1,7 +0,0 @@ -### Ori and the Blind Forest - -This world was disabled for the following reasons: - -* Missing client -* Unmaintained -* Outdated, fails tests as of Jun 29, 2023 diff --git a/worlds_disabled/oribf/Regions.py b/worlds_disabled/oribf/Regions.py deleted file mode 100644 index c8660873..00000000 --- a/worlds_disabled/oribf/Regions.py +++ /dev/null @@ -1,251 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -locations_by_region = \ - {'AboveChargeJumpArea': {'AboveChargeJumpAbilityCell'}, 'BashTree': {'BashAreaExp', 'BashSkillTree'}, - 'BashTreeDoorClosed': set(), 'BashTreeDoorOpened': set(), 'BelowSunstoneArea': set(), - 'BlackrootDarknessRoom': {'DashAreaOrbRoomExp', 'DashAreaAbilityCell', 'DashAreaRoofExp'}, - 'BlackrootGrottoConnection': {'BlackrootBoulderExp', 'BlackrootMap', 'BlackrootTeleporterHealthCell'}, - 'ChargeFlameAreaPlantAccess': {'ChargeFlameAreaPlant'}, 'ChargeFlameAreaStump': set(), - 'ChargeFlameSkillTreeChamber': {'ChargeFlameSkillTree'}, 'ChargeJumpArea': {'ChargeJumpSkillTree'}, - 'ChargeJumpDoor': set(), 'ChargeJumpDoorOpen': set(), - 'ChargeJumpDoorOpenLeft': {'UpperSorrowSpikeExp', 'UpperSorrowRightKeystone', 'UpperSorrowLeftKeystone', - 'UpperSorrowFarRightKeystone', 'UpperSorrowFarLeftKeystone'}, - 'DashArea': {'DashAreaMapstone', 'DashSkillTree'}, 'DashPlantAccess': {'DashAreaPlant'}, - 'DeathGauntlet': {'DeathGauntletEnergyCell', 'DeathGauntletStompSwim', 'DeathGauntletExp'}, - 'DeathGauntletDoor': set(), 'DeathGauntletDoorOpened': set(), 'DeathGauntletMoat': {'DeathGauntletSwimEnergyDoor'}, - 'DeathGauntletRoof': {'DeathGauntletRoofHealthCell'}, 'DeathGauntletRoofPlantAccess': {'DeathGauntletRoofPlant'}, - 'DoubleJumpKeyDoor': set(), 'DoubleJumpKeyDoorOpened': {'DoubleJumpSkillTree', 'DoubleJumpAreaExp'}, - 'ForlornGravityRoom': {'ForlornKeystone2', 'ForlornHiddenSpiderExp', 'ForlornKeystone1'}, - 'ForlornInnerDoor': {'ForlornEntranceExp'}, 'ForlornKeyDoor': set(), 'ForlornLaserRoom': {'ForlornEscape'}, - 'ForlornMapArea': {'ForlornMap', 'ForlornKeystone4'}, - 'ForlornOrbPossession': {'ForlornKeystone2', 'ForlornHiddenSpiderExp', 'ForlornKeystone1', 'ForlornKeystone4', - 'ForlornKeystone3'}, 'ForlornOuterDoor': set(), 'ForlornPlantAccess': {'ForlornPlant'}, - 'ForlornStompDoor': set(), 'ForlornTeleporter': {'ForlornKeystone3'}, 'GinsoEscape': set(), - 'GinsoEscapeComplete': {'GinsoEscapeExit', 'GinsoEscapeSpiderExp', 'GinsoEscapeProjectileExp', - 'GinsoEscapeJumpPadExp', 'GinsoEscapeHangingExp'}, 'GinsoInnerDoor': set(), - 'GinsoMiniBossDoor': {'LowerGinsoKeystone2', 'LowerGinsoKeystone1', 'LowerGinsoKeystone3', 'LowerGinsoKeystone4'}, - 'GinsoOuterDoor': set(), 'GinsoTeleporter': set(), 'GladesLaserArea': {'GladesLaserGrenade', 'GladesLaser'}, - 'GladesMain': {'FourthHealthCell', 'GladesMap', 'GladesMapKeystone'}, 'GladesMainAttic': {'AboveFourthHealth'}, - 'GrenadeArea': {'GrenadeAreaAbilityCell', 'GrenadeAreaExp', 'GrenadeSkillTree'}, 'GrenadeAreaAccess': set(), - 'GumoHideout': {'GumoHideoutMapstone', 'GumoHideoutCrusherExp', 'GumoHideoutRightHangingExp', - 'GumoHideoutEnergyCell', 'GumoHideoutCrusherKeystone', 'GumoHideoutMap', 'GumoHideoutMiniboss'}, - 'GumoHideoutRedirectArea': {'GumoHideoutRedirectAbilityCell', 'GumoHideoutRedirectPlant'}, - 'GumoHideoutRedirectEnergyVault': {'GumoHideoutRedirectExp', 'GumoHideoutRedirectEnergyCell'}, - 'HollowGrove': {'GroveWaterStompAbilityCell', 'HollowGroveTreeAbilityCell', 'HollowGroveMapPlant', - 'HoruFieldsHealthCell', 'HollowGroveMap', 'SwampTeleporterAbilityCell', 'HollowGroveMapstone', - 'HollowGroveTreePlant'}, 'HoruBasement': {'DoorWarpExp'}, 'HoruEscapeInnerDoor': set(), - 'HoruEscapeOuterDoor': set(), 'HoruFields': set(), - 'HoruFieldsPushBlock': {'HoruFieldsEnergyCell', 'HoruFieldsPlant', 'HoruFieldsHiddenExp', 'HoruFieldsAbilityCell'}, - 'HoruInnerDoor': {'HoruLavaDrainedLeftExp', 'HoruLavaDrainedRightExp'}, - 'HoruL4CutscenePeg': {'HoruL4', 'HoruL4LowerExp'}, 'HoruL4LavaChasePeg': {'HoruL4ChaseExp'}, - 'HoruMapLedge': {'HoruMap'}, 'HoruOuterDoor': set(), 'HoruR1CutsceneTrigger': {'HoruR1EnergyCell', 'HoruR1'}, - 'HoruR1MapstoneSecret': {'HoruR1Mapstone'}, 'HoruR3CutsceneTrigger': {'HoruR3'}, 'HoruR3ElevatorLever': set(), - 'HoruR3PlantCove': {'HoruR3Plant'}, 'HoruR4CutsceneTrigger': {'HoruR4DrainedExp', 'HoruR4'}, - 'HoruR4PuzzleEntrance': {'HoruR4LaserExp'}, 'HoruR4StompHideout': {'HoruR4StompExp'}, - 'HoruTeleporter': {'HoruTeleporterExp'}, 'Iceless': {'IcelessExp'}, 'InnerSwampAboveDrainArea': set(), - 'InnerSwampDrainBroken': {'InnerSwampDrainExp'}, 'InnerSwampSkyArea': {'InnerSwampEnergyCell'}, 'L1': {'HoruL1'}, - 'L1InnerDoor': set(), 'L1OuterDoor': set(), 'L2': {'HoruL2'}, 'L2InnerDoor': set(), 'L2OuterDoor': set(), - 'L3': {'HoruL3'}, 'L3InnerDoor': set(), 'L3OuterDoor': set(), 'L4': set(), 'L4InnerDoor': set(), - 'L4OuterDoor': {'HoruLavaDrainedLeftExp'}, - 'LeftGlades': {'WallJumpAreaEnergyCell', 'LeftGladesHiddenExp', 'WallJumpAreaExp', 'WallJumpSkillTree'}, - 'LeftGumoHideout': {'FarLeftGumoHideoutExp', 'LeftGumoHideoutUpperPlant'}, - 'LeftSorrow': {'LeftSorrowAbilityCell', 'LeftSorrowPlant', 'LeftSorrowGrenade'}, - 'LeftSorrowKeystones': {'LeftSorrowEnergyCell', 'LeftSorrowKeystone1', 'LeftSorrowKeystone2', - 'LeftSorrowKeystone4', 'LeftSorrowKeystone3'}, 'LeftSorrowLowerDoor': set(), - 'LeftSorrowMiddleDoor': set(), 'LostGrove': {'LostGroveLongSwim'}, - 'LostGroveExit': {'LostGroveTeleporter', 'LostGroveAbilityCell', 'LostGroveHiddenExp'}, - 'LowerBlackroot': {'LowerBlackrootAbilityCell', 'LowerBlackrootLaserAbilityCell', 'LowerBlackrootGrenadeThrow', - 'LowerBlackrootLaserExp'}, 'LowerChargeFlameArea': {'ChargeFlameAreaExp'}, - 'LowerGinsoTree': {'LowerGinsoPlant', 'LowerGinsoHiddenExp'}, - 'LowerLeftGumoHideout': {'LeftGumoHideoutSwim', 'LeftGumoHideoutHealthCell', 'LeftGumoHideoutExp', - 'GumoHideoutLeftHangingExp', 'GumoHideoutRightHangingExp', 'LeftGumoHideoutLowerPlant'}, - 'LowerSorrow': {'SorrowLowerLeftKeystone', 'SorrowHiddenKeystone', 'SorrowEntranceAbilityCell', 'SorrowHealthCell', - 'SorrowSpikeKeystone'}, - 'LowerSpiritCaverns': {'SpiritCavernsKeystone1', 'SpiritCavernsAbilityCell', 'SpiritCavernsKeystone2'}, - 'LowerValley': {'LowerValleyExp', 'LowerValleyMapstone', 'KuroPerchExp'}, - 'LowerValleyPlantApproach': {'ValleyMainPlant'}, 'MidSpiritCaverns': set(), 'MiddleSorrow': set(), - 'MistyAbove200xp': {'MistyGrenade'}, 'MistyBeforeDocks': set(), 'MistyBeforeMiniBoss': set(), - 'MistyEntrance': {'MistyEntranceStompExp', 'MistyEntranceTreeExp'}, 'MistyKeystone3Ledge': {'MistyKeystone3'}, - 'MistyKeystone4Ledge': {'MistyKeystone4'}, 'MistyMortarSpikeCave': {'MistyPostClimbAboveSpikePit'}, - 'MistyOrbRoom': {'GumonSeal'}, 'MistyPostClimb': set(), - 'MistyPostFeatherTutorial': {'MistyFrogNookExp', 'MistyKeystone1'}, 'MistyPostKeystone1': set(), - 'MistyPostLasers': {'MistyPostClimbSpikeCave'}, 'MistyPostMortarCorridor': set(), - 'MistyPreClimb': {'ClimbSkillTree'}, 'MistyPreKeystone2': {'MistyKeystone2', 'MistyAbilityCell'}, - 'MistyPreLasers': set(), 'MistyPreMortarCorridor': {'MistyMortarCorridorUpperExp', 'MistyMortarCorridorHiddenExp'}, - 'MistyPrePlantLedge': {'MistyPlant'}, 'MistySpikeCave': set(), - 'MoonGrotto': {'GrottoEnergyDoorHealthCell', 'GrottoEnergyDoorSwim'}, - 'MoonGrottoAboveTeleporter': {'LeftGrottoTeleporterExp', 'AboveGrottoTeleporterExp'}, - 'MoonGrottoBelowTeleporter': {'BelowGrottoTeleporterPlant', 'BelowGrottoTeleporterHealthCell'}, - 'MoonGrottoStompPlantAccess': {'MoonGrottoStompPlant'}, - 'MoonGrottoSwampAccessArea': {'GrottoSwampDrainAccessExp', 'GrottoSwampDrainAccessPlant'}, - 'OuterSwampAbilityCellNook': {'OuterSwampAbilityCell'}, - 'OuterSwampLowerArea': {'OuterSwampHealthCell', 'OuterSwampStompExp'}, - 'OuterSwampMortarAbilityCellLedge': {'OuterSwampMortarAbilityCell'}, - 'OuterSwampMortarPlantAccess': {'OuterSwampMortarPlant'}, 'OuterSwampUpperArea': {'OuterSwampGrenadeExp'}, - 'OutsideForlorn': {'OutsideForlornTreeExp', 'OutsideForlornWaterExp'}, - 'OutsideForlornCliff': {'OutsideForlornCliffExp'}, 'R1': {'HoruR1HangingExp'}, 'R1InnerDoor': set(), - 'R1OuterDoor': set(), 'R2': {'HoruR2'}, 'R2InnerDoor': set(), 'R2OuterDoor': set(), 'R3': set(), - 'R3InnerDoor': set(), 'R3OuterDoor': set(), 'R4': {'HoruR4DrainedExp'}, 'R4InnerDoor': set(), - 'R4OuterDoor': {'HoruLavaDrainedRightExp'}, 'RazielNoArea': {'RazielNo'}, - 'RightForlorn': {'RightForlornPlant', 'RightForlornHealthCell'}, - 'RightSwamp': {'StompAreaGrenadeExp', 'StompSkillTree', 'StompAreaExp', 'StompAreaRoofExp'}, - 'SideFallCell': {'GrottoHideoutFallAbilityCell'}, 'SorrowBashLedge': set(), - 'SorrowMainShaftKeystoneArea': {'SorrowMainShaftKeystone'}, 'SorrowMapstoneArea': {'SorrowMap', 'SorrowMapstone'}, - 'SorrowTeleporter': set(), 'SpiderSacArea': {'AboveChargeFlameTreeExp'}, - 'SpiderSacEnergyNook': {'SpiderSacEnergyCell'}, - 'SpiderSacTetherArea': {'SpiderSacGrenadeDoor', 'SpiderSacEnergyDoor', 'SpiderSacHealthCell'}, - 'SpiderWaterArea': {'GroveSpiderWaterSwim', 'GroveAboveSpiderWaterEnergyCell', 'GroveAboveSpiderWaterExp', - 'GroveAboveSpiderWaterHealthCell'}, 'SpiritCavernsDoor': set(), - 'SpiritCavernsDoorOpened': set(), 'SpiritTreeDoor': set(), 'SpiritTreeDoorOpened': set(), - 'SpiritTreeRefined': {'AboveChargeFlameTreeExp'}, - 'SunkenGladesRunaway': {'FronkeyWalkRoof', 'GladesGrenadePool', 'GladesMainPoolDeep', 'FirstPickup', - 'FronkeyFight', 'GladesMainPool', 'GladesKeystone1', 'GladesGrenadeTree', - 'GladesKeystone2'}, 'SunstoneArea': {'Sunstone', 'SunstonePlant'}, - 'Swamp': {'InnerSwampDrainExp', 'SwampMap'}, 'SwampDrainlessArea': {'SwampEntranceAbilityCell'}, - 'SwampEntryArea': {'SwampEntrancePlant', 'SwampEntranceSwim'}, 'SwampKeyDoorOpened': set(), - 'SwampKeyDoorPlatform': {'InnerSwampStompExp'}, 'SwampTeleporter': set(), - 'SwampWater': {'InnerSwampSwimRightKeystone', 'InnerSwampSwimMapstone', 'InnerSwampHiddenSwimExp', - 'InnerSwampSwimLeftKeystone'}, - 'TopGinsoTree': {'TopGinsoLeftLowerExp', 'TopGinsoLeftUpperExp', 'TopGinsoRightPlant'}, - 'UpperGinsoDoorClosed': set(), 'UpperGinsoDoorOpened': set(), - 'UpperGinsoRedirectArea': {'BashAreaExp', 'UpperGinsoRedirectUpperExp', 'UpperGinsoRedirectLowerExp'}, - 'UpperGinsoTree': {'UpperGinsoUpperLeftKeystone', 'UpperGinsoLowerKeystone', 'UpperGinsoRightKeystone', - 'UpperGinsoUpperRightKeystone', 'UpperGinsoEnergyCell'}, 'UpperGrotto': {'GrottoLasersRoofExp'}, - 'UpperLeftGlades': {'LeftGladesKeystone', 'LeftGladesExp', 'LeftGladesMapstone'}, - 'UpperSorrow': {'UpperSorrowSpikeExp', 'UpperSorrowRightKeystone', 'UpperSorrowLeftKeystone', - 'UpperSorrowFarRightKeystone', 'UpperSorrowFarLeftKeystone'}, - 'UpperSpiritCaverns': {'SpiritCavernsTopRightKeystone', 'SpiritCavernsTopLeftKeystone'}, - 'ValleyEntry': {'ValleyEntryAbilityCell', 'ValleyThreeBirdAbilityCell'}, - 'ValleyEntryTree': {'ValleyEntryTreeExp', 'ValleyEntryGrenadeLongSwim'}, - 'ValleyEntryTreePlantAccess': {'ValleyEntryTreePlant'}, - 'ValleyForlornApproach': {'ValleyMap', 'ValleyForlornApproachGrenade', 'ValleyForlornApproachMapstone'}, - 'ValleyMain': {'GlideSkillFeather', 'KuroPerchExp'}, 'ValleyPostStompDoor': {'ValleyRightSwimExp'}, - 'ValleyRight': set(), 'ValleyStompFloor': set(), 'ValleyStompless': {'KuroPerchExp'}, - 'ValleyStomplessApproach': {'ValleyRightFastStomplessCell', 'ValleyRightBirdStompCell', 'ValleyRightExp'}, - 'ValleyTeleporter': set(), 'ValleyThreeBirdLever': {'ValleyThreeBirdAbilityCell', 'ValleyMainFACS'}, - 'WaterVeinArea': {'WaterVein', 'GumoHideoutRockfallExp'}, 'WilhelmLedge': {'WilhelmExp', 'KuroPerchExp'}} - -connectors = \ - {'AboveChargeJumpArea': {'SorrowTeleporter', 'ChargeJumpArea'}, - 'BashTree': {'BashTreeDoorClosed', 'UpperGinsoRedirectArea'}, 'BashTreeDoorClosed': {'BashTreeDoorOpened'}, - 'BashTreeDoorOpened': {'GinsoMiniBossDoor', 'BashTree'}, 'BelowSunstoneArea': {'SunstoneArea', 'UpperSorrow'}, - 'BlackrootDarknessRoom': {'DashArea'}, 'BlackrootGrottoConnection': {'SideFallCell'}, - 'ChargeFlameAreaStump': {'LowerChargeFlameArea', 'ChargeFlameSkillTreeChamber', 'ChargeFlameAreaPlantAccess'}, - 'ChargeFlameSkillTreeChamber': {'SpiritTreeRefined', 'ChargeFlameAreaStump'}, - 'ChargeJumpArea': {'AboveChargeJumpArea', 'ChargeJumpDoor'}, 'ChargeJumpDoor': {'ChargeJumpDoorOpen'}, - 'ChargeJumpDoorOpen': {'ChargeJumpDoorOpenLeft', 'ChargeJumpArea'}, 'ChargeJumpDoorOpenLeft': {'UpperSorrow'}, - 'DashArea': {'RazielNoArea', 'GrenadeAreaAccess', 'DashPlantAccess'}, - 'DeathGauntlet': {'DeathGauntletRoofPlantAccess', 'MoonGrotto', 'DeathGauntletMoat', 'MoonGrottoAboveTeleporter', - 'DeathGauntletRoof', 'DeathGauntletDoor'}, 'DeathGauntletDoor': {'DeathGauntletDoorOpened'}, - 'DeathGauntletDoorOpened': {'SunkenGladesRunaway', 'DeathGauntlet', 'DeathGauntletMoat'}, - 'DeathGauntletRoof': {'DeathGauntlet', 'DeathGauntletRoofPlantAccess'}, - 'DoubleJumpKeyDoor': {'DoubleJumpKeyDoorOpened'}, 'ForlornGravityRoom': {'ForlornMapArea', 'ForlornInnerDoor'}, - 'ForlornInnerDoor': {'ForlornGravityRoom', 'ForlornOrbPossession', 'ForlornOuterDoor'}, - 'ForlornKeyDoor': {'ForlornLaserRoom'}, 'ForlornLaserRoom': {'ForlornStompDoor'}, - 'ForlornMapArea': {'ForlornGravityRoom', 'ForlornKeyDoor', 'ForlornPlantAccess', 'ForlornTeleporter'}, - 'ForlornOrbPossession': {'ForlornMapArea', 'ForlornKeyDoor', 'ForlornPlantAccess', 'ForlornInnerDoor'}, - 'ForlornOuterDoor': {'OutsideForlorn', 'ForlornInnerDoor'}, 'ForlornStompDoor': {'RightForlorn'}, - 'ForlornTeleporter': {'ForlornMapArea', 'ForlornGravityRoom', 'ForlornOrbPossession'}, - 'GinsoEscape': {'GinsoEscapeComplete'}, 'GinsoEscapeComplete': {'Swamp'}, 'GinsoInnerDoor': {'LowerGinsoTree'}, - 'GinsoMiniBossDoor': {'BashTreeDoorClosed'}, 'GinsoOuterDoor': {'GinsoInnerDoor'}, - 'GinsoTeleporter': {'UpperGinsoDoorClosed', 'TopGinsoTree'}, 'GladesLaserArea': {'MidSpiritCaverns', 'GladesMain'}, - 'GladesMain': {'LeftGlades', 'SpiritCavernsDoor', 'LowerChargeFlameArea', 'GladesMainAttic', 'GladesLaserArea'}, - 'GladesMainAttic': {'LowerChargeFlameArea', 'GladesMain'}, 'GrenadeAreaAccess': {'LowerBlackroot', 'GrenadeArea'}, - 'GumoHideout': {'SideFallCell', 'LeftGumoHideout', 'LowerLeftGumoHideout', 'DoubleJumpKeyDoor'}, - 'GumoHideoutRedirectArea': {'GumoHideoutRedirectEnergyVault'}, - 'HollowGrove': {'MoonGrottoStompPlantAccess', 'Iceless', 'SwampTeleporter', 'SpiderWaterArea', 'HoruFields', - 'OuterSwampUpperArea'}, 'HoruBasement': {'HoruEscapeOuterDoor'}, - 'HoruEscapeOuterDoor': {'HoruEscapeInnerDoor'}, 'HoruFields': {'HoruOuterDoor', 'HoruFieldsPushBlock'}, - 'HoruFieldsPushBlock': {'HollowGrove'}, - 'HoruInnerDoor': {'HoruBasement', 'R2OuterDoor', 'HoruMapLedge', 'L1OuterDoor', 'L2OuterDoor', 'HoruTeleporter', - 'L3OuterDoor', 'R1OuterDoor', 'R4OuterDoor', 'HoruOuterDoor', 'L4OuterDoor', 'R3OuterDoor'}, - 'HoruL4LavaChasePeg': {'HoruL4CutscenePeg'}, 'HoruOuterDoor': {'HoruFieldsPushBlock', 'HoruInnerDoor'}, - 'HoruR1CutsceneTrigger': {'LowerGinsoTree'}, 'HoruR1MapstoneSecret': {'HoruR1CutsceneTrigger'}, - 'HoruR3CutsceneTrigger': {'HoruR3PlantCove'}, 'HoruR3ElevatorLever': {'HoruR3PlantCove', 'HoruR3CutsceneTrigger'}, - 'HoruR4PuzzleEntrance': {'HoruR4CutsceneTrigger'}, - 'HoruR4StompHideout': {'HoruR4CutsceneTrigger', 'HoruR4PuzzleEntrance'}, 'HoruTeleporter': {'HoruInnerDoor'}, - 'Iceless': {'HollowGrove', 'UpperGrotto'}, 'InnerSwampAboveDrainArea': {'InnerSwampDrainBroken'}, - 'InnerSwampDrainBroken': {'Swamp'}, 'InnerSwampSkyArea': {'SwampKeyDoorPlatform', 'Swamp'}, 'L1InnerDoor': {'L1'}, - 'L1OuterDoor': {'L1InnerDoor', 'HoruInnerDoor'}, 'L2InnerDoor': {'L2'}, - 'L2OuterDoor': {'L2InnerDoor', 'HoruInnerDoor'}, 'L3InnerDoor': {'L3'}, - 'L3OuterDoor': {'L3InnerDoor', 'HoruInnerDoor'}, 'L4': {'HoruL4CutscenePeg', 'HoruL4LavaChasePeg'}, - 'L4InnerDoor': {'L4'}, 'L4OuterDoor': {'L4InnerDoor', 'HoruInnerDoor'}, - 'LeftGlades': {'UpperLeftGlades', 'GladesMain'}, 'LeftGumoHideout': {'WaterVeinArea', 'LowerLeftGumoHideout'}, - 'LeftSorrow': {'LeftSorrowKeystones'}, 'LeftSorrowKeystones': {'LeftSorrowMiddleDoor', 'MiddleSorrow'}, - 'LeftSorrowLowerDoor': {'LeftSorrow'}, 'LeftSorrowMiddleDoor': {'MiddleSorrow'}, 'LostGrove': {'LostGroveExit'}, - 'LowerBlackroot': {'LostGrove'}, 'LowerChargeFlameArea': {'ChargeFlameAreaStump', 'GladesMain'}, - 'LowerGinsoTree': {'R4InnerDoor', 'GinsoMiniBossDoor'}, - 'LowerLeftGumoHideout': {'LowerBlackroot', 'GumoHideoutRedirectArea'}, - 'LowerSorrow': {'SorrowMainShaftKeystoneArea', 'SorrowMapstoneArea', 'LeftSorrowLowerDoor', 'LeftSorrow', - 'SunstoneArea', 'WilhelmLedge', 'MiddleSorrow'}, - 'LowerSpiritCaverns': {'SpiritCavernsDoor', 'MidSpiritCaverns', 'GladesLaserArea'}, - 'LowerValley': {'ValleyThreeBirdLever', 'LowerValleyPlantApproach', 'ValleyTeleporter', 'MistyEntrance'}, - 'MidSpiritCaverns': {'UpperSpiritCaverns', 'LowerSpiritCaverns', 'GladesLaserArea'}, - 'MiddleSorrow': {'SorrowMainShaftKeystoneArea', 'LeftSorrowKeystones', 'LeftSorrow', 'LowerSorrow', 'UpperSorrow', - 'SunstoneArea'}, 'MistyAbove200xp': {'MistyBeforeMiniBoss'}, - 'MistyBeforeDocks': {'MistyAbove200xp'}, 'MistyBeforeMiniBoss': {'MistyOrbRoom'}, - 'MistyEntrance': {'MistyPostFeatherTutorial'}, 'MistyKeystone3Ledge': {'MistyPreLasers'}, - 'MistyKeystone4Ledge': {'MistyBeforeDocks'}, 'MistyMortarSpikeCave': {'MistyKeystone4Ledge'}, - 'MistyOrbRoom': {'MistyPreKeystone2'}, 'MistyPostClimb': {'MistySpikeCave'}, - 'MistyPostFeatherTutorial': {'MistyPostKeystone1'}, 'MistyPostKeystone1': {'MistyPreMortarCorridor'}, - 'MistyPostLasers': {'MistyMortarSpikeCave'}, 'MistyPostMortarCorridor': {'MistyPrePlantLedge'}, - 'MistyPreClimb': {'MistyPostClimb', 'ForlornTeleporter', 'RightForlorn'}, 'MistyPreLasers': {'MistyPostLasers'}, - 'MistyPreMortarCorridor': {'MistyPostMortarCorridor', 'RightForlorn'}, 'MistyPrePlantLedge': {'MistyPreClimb'}, - 'MistySpikeCave': {'MistyKeystone3Ledge'}, - 'MoonGrotto': {'MoonGrottoBelowTeleporter', 'MoonGrottoAboveTeleporter', 'WaterVeinArea', 'DeathGauntlet', - 'GumoHideout'}, - 'MoonGrottoAboveTeleporter': {'MoonGrottoSwampAccessArea', 'MoonGrottoBelowTeleporter', - 'MoonGrottoStompPlantAccess', 'MoonGrotto', 'DeathGauntletRoof', 'UpperGrotto'}, - 'MoonGrottoSwampAccessArea': {'InnerSwampAboveDrainArea'}, 'OuterSwampAbilityCellNook': {'InnerSwampSkyArea'}, - 'OuterSwampLowerArea': {'OuterSwampAbilityCellNook', 'OuterSwampMortarPlantAccess', 'SwampEntryArea', - 'OuterSwampMortarAbilityCellLedge', 'UpperGrotto', 'OuterSwampUpperArea'}, - 'OuterSwampMortarAbilityCellLedge': {'OuterSwampMortarPlantAccess', 'UpperGrotto'}, - 'OuterSwampUpperArea': {'OuterSwampLowerArea', 'OuterSwampAbilityCellNook', 'GinsoOuterDoor'}, - 'OutsideForlorn': {'OutsideForlornCliff', 'RightForlorn', 'ForlornOuterDoor'}, - 'OutsideForlornCliff': {'OutsideForlorn', 'ValleyForlornApproach'}, 'R1': {'HoruR1MapstoneSecret'}, - 'R1InnerDoor': {'R1'}, 'R1OuterDoor': {'R1InnerDoor', 'L1OuterDoor'}, 'R2InnerDoor': {'R2'}, - 'R2OuterDoor': {'R2InnerDoor', 'HoruInnerDoor'}, 'R3': {'HoruR3ElevatorLever'}, 'R3InnerDoor': {'R3'}, - 'R3OuterDoor': {'R3InnerDoor', 'HoruInnerDoor'}, 'R4': {'HoruR4StompHideout'}, 'R4InnerDoor': {'R4'}, - 'R4OuterDoor': {'R4InnerDoor', 'HoruInnerDoor'}, 'RazielNoArea': {'GumoHideout', 'BlackrootGrottoConnection'}, - 'SideFallCell': {'LeftGumoHideout', 'GumoHideout'}, 'SorrowBashLedge': {'LowerSorrow'}, - 'SorrowMainShaftKeystoneArea': {'LowerSorrow'}, 'SorrowMapstoneArea': {'HoruInnerDoor'}, - 'SorrowTeleporter': {'AboveChargeJumpArea', 'BelowSunstoneArea'}, - 'SpiderSacArea': {'SpiritTreeRefined', 'SpiderWaterArea', 'SpiderSacTetherArea', 'SpiderSacEnergyNook'}, - 'SpiderSacEnergyNook': {'ChargeFlameAreaPlantAccess'}, - 'SpiderSacTetherArea': {'SpiderWaterArea', 'SpiderSacEnergyNook'}, - 'SpiderWaterArea': {'HollowGrove', 'DeathGauntletRoof', 'SpiderSacEnergyNook', 'SpiderSacArea'}, - 'SpiritCavernsDoor': {'SpiritCavernsDoorOpened'}, 'SpiritCavernsDoorOpened': {'LowerSpiritCaverns', 'GladesMain'}, - 'SpiritTreeDoor': {'SpiritTreeDoorOpened'}, 'SpiritTreeDoorOpened': {'SpiritTreeRefined', 'UpperSpiritCaverns'}, - 'SpiritTreeRefined': {'ChargeFlameAreaStump', 'SpiritTreeDoor', 'ChargeFlameSkillTreeChamber', 'ValleyEntry', - 'SpiderSacArea'}, - 'SunkenGladesRunaway': {'MoonGrotto', 'LowerChargeFlameArea', 'ValleyTeleporter', 'SorrowTeleporter', - 'HoruTeleporter', 'GladesMain', 'GinsoTeleporter', 'SwampTeleporter', 'SpiritTreeRefined', - 'BlackrootDarknessRoom', 'DeathGauntletDoor', 'ForlornTeleporter'}, - 'SunstoneArea': {'SorrowTeleporter', 'UpperSorrow'}, - 'Swamp': {'SwampKeyDoorPlatform', 'SwampDrainlessArea', 'SwampWater'}, - 'SwampEntryArea': {'SwampDrainlessArea', 'Swamp'}, 'SwampKeyDoorOpened': {'RightSwamp'}, - 'SwampKeyDoorPlatform': {'SwampKeyDoorOpened', 'InnerSwampSkyArea'}, - 'SwampTeleporter': {'HollowGrove', 'OuterSwampMortarAbilityCellLedge'}, 'TopGinsoTree': {'GinsoEscape'}, - 'UpperGinsoDoorClosed': {'UpperGinsoDoorOpened'}, 'UpperGinsoDoorOpened': {'GinsoTeleporter', 'UpperGinsoTree'}, - 'UpperGinsoRedirectArea': {'UpperGinsoTree', 'BashTree'}, - 'UpperGinsoTree': {'UpperGinsoDoorClosed', 'UpperGinsoRedirectArea'}, - 'UpperGrotto': {'MoonGrottoStompPlantAccess', 'Iceless', 'MoonGrottoAboveTeleporter', - 'OuterSwampMortarAbilityCellLedge', 'OuterSwampLowerArea'}, 'UpperLeftGlades': {'LeftGlades'}, - 'UpperSorrow': {'SunstoneArea', 'MiddleSorrow', 'SorrowTeleporter', 'ChargeJumpDoor'}, - 'UpperSpiritCaverns': {'SpiritTreeDoor', 'MidSpiritCaverns'}, - 'ValleyEntry': {'ValleyThreeBirdLever', 'ValleyStompFloor', 'ValleyPostStompDoor', 'ValleyEntryTreePlantAccess', - 'ValleyEntryTree', 'SpiritTreeRefined'}, - 'ValleyEntryTree': {'ValleyPostStompDoor', 'ValleyEntryTreePlantAccess'}, - 'ValleyForlornApproach': {'ValleyStompFloor', 'OutsideForlornCliff'}, - 'ValleyMain': {'LowerValleyPlantApproach', 'LowerValley', 'MistyEntrance', 'WilhelmLedge', 'ValleyStompless'}, - 'ValleyPostStompDoor': {'ValleyEntry', 'ValleyRight', 'ValleyEntryTree'}, - 'ValleyRight': {'ValleyPostStompDoor', 'ValleyStomplessApproach'}, - 'ValleyStompFloor': {'ValleyThreeBirdLever', 'ValleyEntry', 'ValleyForlornApproach'}, - 'ValleyStompless': {'LowerValleyPlantApproach', 'ValleyMain', 'LowerValley', 'WilhelmLedge', 'MistyEntrance', - 'ValleyStomplessApproach'}, 'ValleyStomplessApproach': {'ValleyRight', 'ValleyStompless'}, - 'ValleyTeleporter': {'LowerValleyPlantApproach', 'ValleyRight', 'ValleyPostStompDoor', 'LowerValley', - 'MistyEntrance', 'ValleyStompless'}, - 'ValleyThreeBirdLever': {'ValleyStompFloor', 'ValleyEntry', 'LowerValley'}, - 'WaterVeinArea': {'MoonGrotto', 'LeftGumoHideout', 'LowerLeftGumoHideout'}, - 'WilhelmLedge': {'ValleyMain', 'SorrowBashLedge', 'ValleyStompless'}} diff --git a/worlds_disabled/oribf/Rules.py b/worlds_disabled/oribf/Rules.py deleted file mode 100644 index e59bc641..00000000 --- a/worlds_disabled/oribf/Rules.py +++ /dev/null @@ -1,59 +0,0 @@ -from typing import Set - -from .RulesData import location_rules -from worlds.generic.Rules import set_rule -from BaseClasses import Location, CollectionState - - -# TODO: implement Mapstone counting, Open, OpenWorld, connection rules - -def oribf_has_all(state: CollectionState, items: Set[str], player:int) -> bool: - return all(state.prog_items[item, player] if type(item) == str - else state.prog_items[item[0], player] >= item[1] for item in items) - -def set_rules(world): - temp_base_rule(world.multiworld, world.player) - for logicset in world.logic_sets: - apply_or_ruleset(world.multiworld, world.player, logicset) - - -def tautology(state): - return True - - -def add_or_rule_check_first(world, location: str, player: int, conditionsets): - location = world.get_location(location, player) - for set in conditionsets: - if "Free" in set: - location.access_rule = tautology - return - rule = lambda state, conditionsets=conditionsets: any( - oribf_has_all(state, conditionset, player) for conditionset in conditionsets) - if location.access_rule is Location.access_rule: - location.access_rule = rule - else: - old_rule = location.access_rule - location.access_rule = lambda state: rule(state) or old_rule(state) - - -def temp_base_rule(world, player): - world.completion_condition[player] = lambda state: oribf_has_all(state, - {"Bash", "ChargeFlame", "ChargeJump", "Climb", "Dash", "DoubleJump", "Glide", "Grenade", "Stomp", "WallJump"}, - player) - - -def base_rule(world, player): - if world.logic[player] != 'nologic': - # Victory gets placed on Escaped Horu Event - world.completion_condition[player] = lambda state: state.has('Victory', player) - # Events - # Also add: can complete goal - set_rule(world.get_location("Escaped Horu", player), - lambda state: state.can_reach("HoruEscapeInnerDoor", player) - and state.has_any({"Dash", "Stomp", "ChargeJump", "ChargeFlame"}, player)) - - -def apply_or_ruleset(world, player, rulesetname): - rules = location_rules[rulesetname] - for location, conditionsets in rules.items(): - add_or_rule_check_first(world, location, player, conditionsets) diff --git a/worlds_disabled/oribf/RulesData.py b/worlds_disabled/oribf/RulesData.py deleted file mode 100644 index 11a51c07..00000000 --- a/worlds_disabled/oribf/RulesData.py +++ /dev/null @@ -1,6 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -# Rules from areas.ori -location_rules = {'casual-core': {'AboveChargeJumpAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'BashSkillTree': {frozenset({'GinsoKey'})}, 'BashAreaExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'GinsoKey', 'ChargeJump'})}, 'DashAreaOrbRoomExp': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DashAreaAbilityCell': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DashAreaRoofExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'BlackrootBoulderExp': {frozenset({'Stomp'})}, 'BlackrootMap': {frozenset({'MapStone', 'ChargeJump'}), frozenset({'Climb', 'MapStone', 'DoubleJump'}), frozenset({'MapStone', 'WallJump'}), frozenset({'Grenade', 'Bash', 'MapStone'})}, 'ChargeFlameAreaPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DashAreaMapstone': {frozenset({'Dash'})}, 'DashAreaPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DeathGauntletExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DeathGauntletStompSwim': {frozenset({'Stomp', 'Water'})}, 'DeathGauntletEnergyCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DeathGauntletSwimEnergyDoor': {frozenset({('EC', 4)})}, 'DeathGauntletRoofPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DoubleJumpSkillTree': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'DoubleJump'})}, 'DoubleJumpAreaExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'Bash', 'WallJump', 'Water'}), frozenset({'ChargeJump', 'WallJump', 'Water'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey', 'Bash'})}, 'ForlornKeystone1': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey'}), frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'ForlornKey', 'DoubleJump', 'Bash'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'Glide', 'ForlornKey', 'DoubleJump', 'WallJump'}), frozenset({'ForlornKey'}), frozenset({'Climb', 'ForlornKey', 'Glide', 'DoubleJump'})}, 'ForlornEntranceExp': {frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'Open'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'}), frozenset({'ForlornKey', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ForlornKey', 'WallJump', 'Open'}), frozenset({'ForlornKey', 'DoubleJump', 'Open'}), frozenset({'Climb', 'ForlornKey', 'DoubleJump'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'}), frozenset({'Glide', 'ForlornKey', 'Climb', 'Open'})}, 'ForlornEscape': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'ForlornMap': {frozenset({'ForlornKey', 'MapStone'})}, 'ForlornKeystone4': {frozenset({'ForlornKey'}), frozenset({'Grenade', 'ForlornKey', 'WallJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'})}, 'ForlornKeystone3': {frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'}), frozenset({'Glide', 'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}, 'ForlornPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'LowerGinsoKeystone1': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'LowerGinsoKeystone2': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'LowerGinsoKeystone3': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'LowerGinsoKeystone4': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GladesLaser': {frozenset({'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}, 'GladesMap': {frozenset({'MapStone'})}, 'GrenadeSkillTree': {frozenset({'Climb', 'Dash'}), frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'})}, 'GrenadeAreaExp': {frozenset({'Climb', 'Dash', 'Glide'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'Dash', 'Bash'}), frozenset({'Glide', 'Dash', 'WallJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Grenade', 'Dash', 'ChargeJump'})}, 'GumoHideoutMap': {frozenset({'MapStone'})}, 'GumoHideoutRightHangingExp': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}, 'GumoHideoutMapstone': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'DoubleJump'})}, 'GumoHideoutMiniboss': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GumoHideoutEnergyCell': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutCrusherExp': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'Climb'}), frozenset({'WallJump'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'GumoHideoutRedirectPlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeFlame'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Climb', 'Grenade'})}, 'GumoHideoutRedirectEnergyCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GumoHideoutRedirectExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GroveWaterStompAbilityCell': {frozenset({'Stomp', 'Water'})}, 'HoruFieldsHealthCell': {frozenset({'Stomp'})}, 'HollowGroveTreePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'HollowGroveTreeAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'HollowGroveMap': {frozenset({'MapStone'})}, 'HollowGroveMapPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SwampTeleporterAbilityCell': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash', 'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide', 'WallJump'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb', 'Glide'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'DoorWarpExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruFieldsPlant': {frozenset({'Grenade', 'Glide', 'ChargeJump'}), frozenset({'ChargeFlame', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Bash'}), frozenset({'Climb', 'ChargeJump', 'Grenade'}), frozenset({'Climb', 'ChargeJump', 'ChargeFlame'})}, 'HoruFieldsEnergyCell': {frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'})}, 'HoruFieldsHiddenExp': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', 'Bash'}), frozenset({'Glide', 'Open', 'DoubleJump'}), frozenset({'Open', 'ChargeJump'})}, 'HoruLavaDrainedRightExp': {frozenset({'Glide', 'Open', 'Bash'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'Glide', 'Open', 'ChargeJump'})}, 'HoruL4': {frozenset({'Stomp'})}, 'HoruL4LowerExp': {frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}, 'HoruL4ChaseExp': {frozenset({'Free'})}, 'HoruMap': {frozenset({'MapStone'})}, 'HoruR1EnergyCell': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'Glide', 'WallJump'})}, 'HoruR3Plant': {frozenset({'Grenade'})}, 'HoruR4DrainedExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump'})}, 'HoruR4LaserExp': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'InnerSwampDrainExp': {frozenset({'Grenade', 'Bash', 'WallJump', 'Water'}), frozenset({'Climb', 'ChargeJump', 'Water'}), frozenset({'Glide'}), frozenset({'Climb', 'Bash', 'Grenade', 'Water'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'Water', 'Glide', 'Stomp', 'WallJump'}), frozenset({'DoubleJump', 'WallJump', 'Water'}), frozenset({'Grenade', 'Glide', 'Water', 'Bash'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'Water'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'Water'}), frozenset({'DoubleJump'}), frozenset({'Water', 'Grenade', 'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', 'DoubleJump', 'Water'}), frozenset({'Climb', 'Dash', 'Glide', 'Water'})}, 'HoruL1': {frozenset({'Grenade', 'Glide', 'Stomp', 'Bash'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump'})}, 'HoruL3': {frozenset({'Glide', 'Bash', 'Stomp', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'Stomp'}), frozenset({'Stomp', 'DoubleJump', 'Bash'})}, 'WallJumpAreaExp': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'WallJumpAreaEnergyCell': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Climb', 'ChargeFlame'}), frozenset({'Grenade'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump'})}, 'FarLeftGumoHideoutExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({'Glide', 'Bash'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}, 'LeftSorrowGrenade': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}, 'LeftSorrowPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump', 'WallJump'}), frozenset({'Grenade'})}, 'LeftSorrowKeystone1': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'LeftSorrowKeystone2': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'LeftSorrowKeystone3': {frozenset({'Glide'})}, 'LeftSorrowKeystone4': {frozenset({'Glide'})}, 'LeftSorrowEnergyCell': {frozenset({'Glide'})}, 'LostGroveLongSwim': {frozenset({'Water'})}, 'LostGroveHiddenExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'LostGroveTeleporter': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'LowerBlackrootAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Grenade', 'Dash', 'Bash'})}, 'LowerBlackrootLaserExp': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}, 'LowerBlackrootGrenadeThrow': {frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Climb', 'Grenade'}), frozenset({'Grenade', 'Glide'}), frozenset({'Grenade', 'DoubleJump'})}, 'LowerGinsoHiddenExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerGinsoPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'LeftGumoHideoutLowerPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GumoHideoutLeftHangingExp': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'LeftGumoHideoutExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'LeftGumoHideoutHealthCell': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'})}, 'LeftGumoHideoutSwim': {frozenset({'Water'})}, 'SorrowSpikeKeystone': {frozenset({'Glide'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'SorrowHiddenKeystone': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Glide'})}, 'SorrowHealthCell': {frozenset({'Glide', 'ChargeJump', 'Bash'})}, 'SorrowLowerLeftKeystone': {frozenset({'Glide'})}, 'SpiritCavernsKeystone2': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'LowerValleyMapstone': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Glide', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide'}), frozenset({'Bash'}), frozenset({'Glide', 'OpenWorld'}), frozenset({'Stomp'})}, 'ValleyMainPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'MistyGrenade': {frozenset({'Grenade'})}, 'MistyEntranceStompExp': {frozenset({'Stomp'})}, 'MistyEntranceTreeExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}, 'GumonSeal': {frozenset({'Climb'}), frozenset({'DoubleJump'}), frozenset({'Bash'}), frozenset({'WallJump'})}, 'MistyFrogNookExp': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', 'Bash', 'DoubleJump'})}, 'MistyAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Glide', 'Bash'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Glide'})}, 'MistyPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GrottoEnergyDoorSwim': {frozenset({('EC', 2), 'Water'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'ChargeJump'}), frozenset({('EC', 2), 'Bash', 'Grenade'}), frozenset({('EC', 2), 'DoubleJump', 'WallJump'})}, 'AboveGrottoTeleporterExp': {frozenset({'Grenade', 'Bash'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'Bash', 'WallJump'})}, 'LeftGrottoTeleporterExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}, 'BelowGrottoTeleporterPlant': {frozenset({'ChargeFlame', 'Glide'}), frozenset({'Grenade', 'Glide'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'MoonGrottoStompPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GrottoSwampDrainAccessExp': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'DoubleJump'})}, 'GrottoSwampDrainAccessPlant': {frozenset({'Grenade', 'Stomp'}), frozenset({'ChargeFlame', 'Stomp', 'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump', 'Glide'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump', 'DoubleJump'})}, 'OuterSwampStompExp': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'OuterSwampHealthCell': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'OuterSwampMortarPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'OuterSwampGrenadeExp': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'Climb'})}, 'OutsideForlornTreeExp': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'OutsideForlornWaterExp': {frozenset({'Water'})}, 'OutsideForlornCliffExp': {frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Dash'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'HoruR1HangingExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'HoruR2': {frozenset({'ChargeJump', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'Grenade', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'RightForlornPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'StompAreaExp': {frozenset({'Bash'}), frozenset({'Stomp'})}, 'StompAreaRoofExp': {frozenset({'ChargeJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'Glide', 'Water'}), frozenset({'Climb', 'Water', 'Grenade', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Stomp', 'ChargeJump', 'Water'}), frozenset({'Grenade', 'Bash', 'Stomp', 'Water'})}, 'SorrowMapstone': {frozenset({'Bash'})}, 'SorrowMap': {frozenset({'Bash', 'MapStone'}), frozenset({'Stomp', 'MapStone'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'ChargeFlame', 'Climb', 'ChargeJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 4)})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GroveSpiderWaterSwim': {frozenset({'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'})}, 'AboveChargeFlameTreeExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GladesGrenadePool': {frozenset({'Grenade', 'Water'})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesMainPool': {frozenset({'Water'})}, 'GladesMainPoolDeep': {frozenset({'Water'})}, 'FronkeyWalkRoof': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'})}, 'SunstonePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SwampMap': {frozenset({'MapStone'})}, 'SwampEntranceSwim': {frozenset({'Water'})}, 'SwampEntrancePlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Climb'})}, 'InnerSwampStompExp': {frozenset({'Stomp', 'Water'})}, 'InnerSwampSwimRightKeystone': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Glide', 'WallJump'})}, 'TopGinsoLeftLowerExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'TopGinsoLeftUpperExp': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'UpperGinsoLowerKeystone': {frozenset({'Glide', 'Bash', 'GinsoKey'}), frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Glide', 'Bash', 'GinsoKey'}), frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoEnergyCell': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'LeftGladesExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'UpperSorrowRightKeystone': {frozenset({'Glide'})}, 'UpperSorrowFarRightKeystone': {frozenset({'Glide'})}, 'UpperSorrowLeftKeystone': {frozenset({'Glide'})}, 'UpperSorrowSpikeExp': {frozenset({'Glide'})}, 'UpperSorrowFarLeftKeystone': {frozenset({'Glide'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Glide'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'ChargeJump', 'OpenWorld'}), frozenset({'Bash'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'ValleyEntryGrenadeLongSwim': {frozenset({'Grenade', 'Water'})}, 'ValleyEntryTreePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'ValleyForlornApproachGrenade': {frozenset({'Grenade'})}, 'ValleyMap': {frozenset({'Bash', 'MapStone'})}, 'ValleyRightSwimExp': {frozenset({'Water'})}, 'ValleyRightBirdStompCell': {frozenset({'Climb', 'ChargeJump'})}, 'ValleyRightFastStomplessCell': {frozenset({'Glide', 'Wind'})}, 'ValleyRightExp': {frozenset({'Bash'})}, 'ValleyMainFACS': {frozenset({'Climb', 'ChargeJump'})}, 'WilhelmExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Climb'})}}, 'dbash': {'AboveChargeJumpAbilityCell': {frozenset({'Bash'})}, 'GrenadeSkillTree': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Bash', 'DoubleJump'})}, 'GrenadeAreaExp': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Bash', 'DoubleJump'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Bash'})}, 'HoruFieldsEnergyCell': {frozenset({'Bash'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', 'Bash'}), frozenset({'Bash'})}, 'HoruR4DrainedExp': {frozenset({'Bash'})}, 'HoruR4LaserExp': {frozenset({'Bash'})}, 'LeftSorrowGrenade': {frozenset({'Grenade', 'Bash'})}, 'GumoHideoutLeftHangingExp': {frozenset({'Bash'})}, 'GumoHideoutRightHangingExp': {frozenset({'Bash'})}, 'LeftGumoHideoutExp': {frozenset({'Bash'})}, 'LeftGumoHideoutHealthCell': {frozenset({'Bash'})}, 'SorrowSpikeKeystone': {frozenset({'Bash'})}, 'SorrowHiddenKeystone': {frozenset({'Bash'})}, 'SorrowHealthCell': {frozenset({'Bash'})}, 'AboveGrottoTeleporterExp': {frozenset({'Bash'})}, 'GrottoSwampDrainAccessExp': {frozenset({'Bash'})}, 'StompAreaRoofExp': {frozenset({'Bash'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Bash'})}, 'ValleyMainFACS': {frozenset({'Bash'})}, 'WilhelmExp': {frozenset({'Bash'})}}, 'expert-abilities': {'AboveChargeJumpAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'BashAreaExp': {frozenset({('AC', 6), 'Dash', 'GinsoKey'}), frozenset({('AC', 6), 'Dash', 'GinsoKey', 'DoubleJump', 'WallJump'})}, 'ChargeFlameAreaPlant': {frozenset({'Dash', ('AC', 6)})}, 'DashAreaPlant': {frozenset({'Dash', ('AC', 6)})}, 'DeathGauntletRoofPlant': {frozenset({'Dash', ('AC', 6)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', ('AC', 6), 'Dash'})}, 'ForlornPlant': {frozenset({'Dash', ('AC', 6)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'ForlornKey', ('AC', 6), 'Dash'})}, 'GladesLaser': {frozenset({'Dash', ('AC', 6)})}, 'GladesLaserGrenade': {frozenset({('AC', 6), ('EC', 1), 'Dash', 'Grenade', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'Glide', 'ChargeJump'}), frozenset({('AC', 6), ('EC', 2), 'Climb', 'Dash', 'Grenade', 'ChargeJump'})}, 'GrenadeSkillTree': {frozenset({'Dash', ('AC', 6)})}, 'GrenadeAreaExp': {frozenset({'Dash', ('AC', 6)})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GumoHideoutRedirectPlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'HollowGroveTreePlant': {frozenset({'Dash', ('AC', 6)})}, 'HollowGroveTreeAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'HollowGroveMapPlant': {frozenset({'Dash', ('AC', 6)})}, 'SwampTeleporterAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'HoruFieldsPlant': {frozenset({'Dash', ('AC', 6), ('EC', 3)})}, 'HoruFieldsEnergyCell': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'HoruFieldsHiddenExp': {frozenset({'Dash', ('AC', 6)})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'HoruL4LowerExp': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', 'Stomp', ('AC', 3)})}, 'HoruR3Plant': {frozenset({'Dash', ('AC', 6)})}, 'HoruR4DrainedExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)}), frozenset({'Dash', ('AC', 6)})}, 'HoruR4LaserExp': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 2)})}, 'HoruL1': {frozenset({'Dash', 'Stomp', ('AC', 3), 'Bash'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', ('EC', 3)})}, 'HoruL2': {frozenset({'Stomp', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}, 'HoruL3': {frozenset({('AC', 6), 'Climb', 'Dash', ('EC', 2), 'ChargeJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'LeftSorrowPlant': {frozenset({'Dash', ('AC', 6)})}, 'LowerBlackrootAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'LowerBlackrootLaserExp': {frozenset({'Dash', ('AC', 6)})}, 'LowerGinsoPlant': {frozenset({'Dash', ('AC', 6)})}, 'LeftGumoHideoutLowerPlant': {frozenset({'Dash', ('AC', 6)})}, 'LeftGumoHideoutHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'SorrowSpikeKeystone': {frozenset({'Dash', ('AC', 6)})}, 'SorrowHiddenKeystone': {frozenset({'Dash', ('AC', 6)})}, 'SorrowLowerLeftKeystone': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp'})}, 'SpiritCavernsKeystone2': {frozenset({'Dash', ('AC', 6)})}, 'SpiritCavernsAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'LowerValleyMapstone': {frozenset({'Dash', ('AC', 6)})}, 'KuroPerchExp': {frozenset({'Dash', ('AC', 6), 'OpenWorld'}), frozenset({'Dash', ('AC', 3), 'ChargeJump', 'WallJump'}), frozenset({'Dash', ('AC', 6)})}, 'ValleyMainPlant': {frozenset({'Dash', ('AC', 6)})}, 'MistyEntranceTreeExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyMortarCorridorUpperExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'MistyPlant': {frozenset({'Dash', ('AC', 6)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'AboveGrottoTeleporterExp': {frozenset({'Dash', ('AC', 6)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'BelowGrottoTeleporterPlant': {frozenset({'Dash', ('AC', 6)})}, 'MoonGrottoStompPlant': {frozenset({'Dash', ('AC', 6)})}, 'GrottoSwampDrainAccessExp': {frozenset({'Dash', ('AC', 6)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampStompExp': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampMortarPlant': {frozenset({'Dash', ('AC', 6)})}, 'RightForlornPlant': {frozenset({'Dash', ('AC', 6)})}, 'StompAreaExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}, 'StompAreaGrenadeExp': {frozenset({('AC', 6), 'Dash', 'Water', 'Grenade', 'Stomp'}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Water', 'Grenade'})}, 'SorrowMapstone': {frozenset({'Dash', ('AC', 6)})}, 'AboveChargeFlameTreeExp': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterExp': {frozenset({'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'FronkeyWalkRoof': {frozenset({'Dash', ('AC', 6)})}, 'SunstonePlant': {frozenset({'Dash', ('AC', 6)})}, 'InnerSwampDrainExp': {frozenset({'Climb', 'Dash', 'Water', 'Grenade', 'Stomp', ('AC', 3)}), frozenset({'Climb', 'Dash', ('AC', 6), 'Water'}), frozenset({'ChargeFlame', 'Climb', 'Dash', 'Water', 'Stomp', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'WallJump', 'Water'})}, 'SwampEntrancePlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'InnerSwampStompExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3), 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({'Dash', ('AC', 6)})}, 'TopGinsoLeftUpperExp': {frozenset({'Dash', ('AC', 6)})}, 'TopGinsoRightPlant': {frozenset({'Dash', ('AC', 6)})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoLowerKeystone': {frozenset({('AC', 6), 'Dash', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}, 'UpperSorrowLeftKeystone': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyEntryTreePlant': {frozenset({'Dash', ('AC', 6)})}, 'ValleyMap': {frozenset({'Grenade', 'Dash', 'MapStone', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', 'MapStone', ('AC', 3)})}, 'ValleyMainFACS': {frozenset({'WallJump', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Wind', 'Dash', 'Glide', ('AC', 3), 'ChargeJump', 'WallJump'})}}, 'master-abilities': {'BashAreaExp': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'GumoHideoutRedirectPlant': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}, 'HoruFieldsAbilityCell': {frozenset({'Glide', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', ('AC', 12), 'DoubleJump'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)}), frozenset({'Glide', 'Open', ('AC', 12), 'DoubleJump'})}, 'HoruR4DrainedExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'HoruL1': {frozenset({('AC', 6), ('EC', 1), 'Dash', 'Stomp', 'DoubleJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', ('AC', 3), 'Dash'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}, 'HoruL3': {frozenset({('AC', 6), 'Dash', ('EC', 6), 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', ('EC', 3)}), frozenset({('AC', 6), ('EC', 4), 'Dash', 'Glide', 'DoubleJump'}), frozenset({'Dash', ('AC', 6), ('EC', 7)}), frozenset({'Glide', 'Dash', ('AC', 6), ('EC', 6)}), frozenset({('AC', 12), 'Climb', 'Dash', 'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({('AC', 6), 'Climb', 'Dash', ('EC', 6), 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'LowerGinsoHiddenExp': {frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'WallJump'})}, 'LeftGumoHideoutExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'LeftGumoHideoutHealthCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'SorrowLowerLeftKeystone': {frozenset({('AC', 12), 'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyFrogNookExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyMortarCorridorUpperExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyMortarCorridorHiddenExp': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'OuterSwampHealthCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'SpiderSacHealthCell': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'TopGinsoLeftUpperExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump'})}, 'UpperSorrowRightKeystone': {frozenset({('AC', 6), 'Dash', 'Grenade', 'Bash', 'DoubleJump'})}, 'UpperSorrowFarRightKeystone': {frozenset({('AC', 12), 'Dash', 'Grenade', 'Bash', 'DoubleJump'})}, 'ValleyThreeBirdAbilityCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'WilhelmExp': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'KuroPerchExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'master-core': {'DashAreaRoofExp': {frozenset({'DoubleJump'}), frozenset({'Bash'})}, 'DoubleJumpAreaExp': {frozenset({'DoubleJump'})}, 'ForlornKeystone4': {frozenset({'Grenade', 'ForlornKey', 'DoubleJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}, 'LowerGinsoKeystone3': {frozenset({'DoubleJump'})}, 'LowerGinsoKeystone4': {frozenset({'DoubleJump'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Bash', 'DoubleJump'})}, 'GrenadeSkillTree': {frozenset({'ChargeJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'ChargeJump'})}, 'GumoHideoutMiniboss': {frozenset({'DoubleJump'})}, 'GumoHideoutEnergyCell': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Stomp', 'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}, 'DoorWarpExp': {frozenset({'DoubleJump'})}, 'HoruFieldsPlant': {frozenset({'Grenade', 'Glide'}), frozenset({'Grenade', 'Dash'}), frozenset({'Grenade', 'DoubleJump'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash'})}, 'HoruL4LowerExp': {frozenset({'Dash', 'Stomp'})}, 'HoruR1EnergyCell': {frozenset({'DoubleJump'})}, 'HoruL2': {frozenset({'Glide', 'Stomp', 'DoubleJump'})}, 'HoruL3': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', 'Stomp'})}, 'WallJumpAreaEnergyCell': {frozenset({'DoubleJump'})}, 'FarLeftGumoHideoutExp': {frozenset({'Bash'})}, 'LeftSorrowAbilityCell': {frozenset({'Bash'})}, 'LeftSorrowKeystone2': {frozenset({'Bash'})}, 'LeftSorrowKeystone3': {frozenset({'Bash'})}, 'LeftSorrowKeystone4': {frozenset({'Bash'})}, 'LeftSorrowEnergyCell': {frozenset({'Bash'})}, 'LowerBlackrootAbilityCell': {frozenset({'DoubleJump'})}, 'LowerGinsoHiddenExp': {frozenset({'DoubleJump'})}, 'SorrowSpikeKeystone': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'SorrowLowerLeftKeystone': {frozenset({'Bash'})}, 'SpiritCavernsKeystone2': {frozenset({'Free'})}, 'LowerValleyMapstone': {frozenset({'Free'})}, 'MistyEntranceStompExp': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'ChargeFlame', 'Dash'})}, 'MistyEntranceTreeExp': {frozenset({'DoubleJump'}), frozenset({'WallJump'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Bash'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Bash'})}, 'OuterSwampHealthCell': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'})}, 'OutsideForlornTreeExp': {frozenset({'Bash'})}, 'HoruR1HangingExp': {frozenset({'Glide', 'WallJump'})}, 'HoruR2': {frozenset({'Stomp', 'DoubleJump'})}, 'HoruR4DrainedExp': {frozenset({'Bash'})}, 'StompAreaExp': {frozenset({'Grenade'})}, 'AboveChargeFlameTreeExp': {frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Stomp', 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 2)})}, 'InnerSwampDrainExp': {frozenset({'DoubleJump', 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({'DoubleJump'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Grenade', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'DoubleJump'}), frozenset({'Climb'})}, 'KuroPerchExp': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide', 'ChargeJump'})}}, 'glitched': {'BlackrootBoulderExp': {frozenset({'Free'})}, 'GroveWaterStompAbilityCell': {frozenset({'Bash'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 3)})}, 'GladesGrenadeTree': {frozenset({'Grenade'})}, 'KuroPerchExp': {frozenset({'ChargeJump'})}}, 'standard-abilities': {'BlackrootMap': {frozenset({'Climb', 'Dash', 'MapStone', ('AC', 3)})}, 'DoubleJumpSkillTree': {frozenset({'Dash', ('AC', 3)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Bash', 'Dash', ('AC', 3)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'ChargeJump', 'Dash', ('AC', 3)})}, 'LowerGinsoKeystone1': {frozenset({'Dash', ('AC', 3)})}, 'LowerGinsoKeystone2': {frozenset({'Dash', ('AC', 3)})}, 'GladesLaserGrenade': {frozenset({'Dash', 'Grenade', 'Glide', ('AC', 3), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'GumoHideoutMapstone': {frozenset({'Dash', ('AC', 3)})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Dash', ('AC', 3)})}, 'HollowGroveTreeAbilityCell': {frozenset({'WallJump', 'Dash', 'Glide', 'Stomp', ('AC', 3)}), frozenset({'Climb', 'Dash', 'Glide', 'Stomp', ('AC', 3)})}, 'SwampTeleporterAbilityCell': {frozenset({'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'HoruFieldsPlant': {frozenset({'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'HoruFieldsEnergyCell': {frozenset({'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Glide', 'ChargeJump', 'Dash', ('AC', 3)})}, 'HoruLavaDrainedLeftExp': {frozenset({'Glide', 'Open', 'Dash', ('AC', 3)})}, 'HoruR1EnergyCell': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'HoruR4DrainedExp': {frozenset({'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Glide', 'Dash', ('AC', 3)})}, 'InnerSwampDrainExp': {frozenset({'Dash', ('AC', 3)})}, 'HoruL1': {frozenset({'WallJump', 'Dash', 'Stomp', ('AC', 3), 'Bash'}), frozenset({'Dash', 'Grenade', 'Stomp', ('AC', 3), 'Bash'}), frozenset({'Dash', 'Stomp', 'ChargeJump', ('AC', 3), 'Bash'}), frozenset({'Climb', 'Dash', 'Stomp', ('AC', 3), 'Bash'})}, 'HoruL2': {frozenset({'Stomp', ('AC', 3), 'Dash', 'WallJump'}), frozenset({'Climb', 'Dash', 'Stomp', 'DoubleJump', ('AC', 3)})}, 'HoruL3': {frozenset({'Bash', 'Stomp', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Bash', 'Dash', ('AC', 3)})}, 'FarLeftGumoHideoutExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'GumoHideoutLeftHangingExp': {frozenset({'Dash', ('AC', 3)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'Dash', ('AC', 3)})}, 'BelowGrottoTeleporterPlant': {frozenset({'Grenade', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', ('AC', 3)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Dash', ('AC', 3), 'WallJump'}), frozenset({'ChargeFlame', 'Glide', 'Dash', ('AC', 3)})}, 'HoruR1HangingExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'HoruLavaDrainedRightExp': {frozenset({'Dash', ('AC', 3)})}, 'AboveChargeFlameTreeExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'UpperGinsoLowerKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}}, 'expert-core': {'BlackrootMap': {frozenset({'Climb', 'MapStone'})}, 'DashAreaMapstone': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DoubleJumpSkillTree': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'})}, 'DoubleJumpAreaExp': {frozenset({'Climb', 'Bash', 'Water'}), frozenset({'Grenade', 'Bash'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', 'DoubleJump', 'WallJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'Open'})}, 'GladesLaserGrenade': {frozenset({'Water', 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'Water'})}, 'GrenadeSkillTree': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Dash', 'Bash'})}, 'GumoHideoutCrusherExp': {frozenset({'DoubleJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'HoruL4LowerExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'HoruR1EnergyCell': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Glide'})}, 'HoruR4DrainedExp': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruL1': {frozenset({'Glide', 'Stomp', 'Bash'})}, 'HoruL2': {frozenset({'Climb', 'Stomp', 'Glide', 'DoubleJump'})}, 'HoruL3': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'ChargeFlame'})}, 'LeftSorrowKeystone1': {frozenset({'ChargeJump', 'WallJump'})}, 'LeftSorrowKeystone2': {frozenset({'ChargeJump', 'WallJump'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerBlackrootLaserExp': {frozenset({'Grenade', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'GumoHideoutRightHangingExp': {frozenset({'DoubleJump'})}, 'LeftGumoHideoutExp': {frozenset({'Climb', 'DoubleJump'})}, 'SorrowHiddenKeystone': {frozenset({'Bash', 'ChargeJump', 'WallJump'})}, 'SorrowHealthCell': {frozenset({'Climb', 'ChargeJump'})}, 'SorrowLowerLeftKeystone': {frozenset({'Bash', 'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'Climb', 'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'MistyEntranceStompExp': {frozenset({'Climb', 'Dash', 'ChargeJump'})}, 'MistyEntranceTreeExp': {frozenset({'Bash'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Bash', 'DoubleJump'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Bash', 'DoubleJump'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'Glide'})}, 'LeftGrottoTeleporterExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruR1HangingExp': {frozenset({'DoubleJump'}), frozenset({'Dash'})}, 'HoruR2': {frozenset({'Stomp', 'WallJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'ChargeJump'})}, 'StompAreaExp': {frozenset({'ChargeFlame'})}, 'AboveChargeFlameTreeExp': {frozenset({'ChargeFlame', 'Climb', 'Glide'}), frozenset({'Dash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'Glide'}), frozenset({'ChargeFlame', 'Glide', 'WallJump'}), frozenset({'Grenade', 'Glide', 'WallJump'}), frozenset({'Climb', 'Stomp', 'Glide'}), frozenset({'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', 'Dash'})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'Climb', 'DoubleJump'})}, 'InnerSwampDrainExp': {frozenset({'ChargeJump', 'DoubleJump', 'Water'}), frozenset({'Glide', 'Dash', 'WallJump', 'Water'})}, 'SwampEntrancePlant': {frozenset({'Grenade'})}, 'InnerSwampStompExp': {frozenset({'Grenade', 'Bash', 'ChargeJump', 'Water'})}, 'InnerSwampSwimRightKeystone': {frozenset({'DoubleJump'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'ChargeFlame', 'GinsoKey'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'}), frozenset({'ChargeFlame', 'GinsoKey'})}, 'UpperGinsoEnergyCell': {frozenset({'Dash', 'GinsoKey', 'ChargeJump'}), frozenset({'ChargeFlame', 'GinsoKey'})}, 'LeftGladesExp': {frozenset({'DoubleJump'}), frozenset({'Bash'})}, 'UpperSorrowLeftKeystone': {frozenset({'Grenade', 'Bash'})}, 'ValleyMap': {frozenset({'Grenade', 'MapStone', 'DoubleJump'}), frozenset({'Grenade', 'MapStone', 'ChargeJump'}), frozenset({'ChargeFlame', 'MapStone', 'ChargeJump'}), frozenset({'ChargeFlame', 'MapStone', 'DoubleJump'})}, 'WilhelmExp': {frozenset({'Climb', 'Bash'}), frozenset({'Grenade', 'Bash'})}}, 'expert-dboost': {'UpperSorrowSpikeExp': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('HC', 2)}), frozenset({('EC', 2), 'Dash', ('AC', 6), ('HC', 2)}), frozenset({'Grenade', 'Bash', 'DoubleJump', ('HC', 2)}), frozenset({('AC', 6), 'Dash', ('HC', 2), 'Grenade', 'Bash'})}, 'DeathGauntletStompSwim': {frozenset({('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Climb', 'Bash', ('HC', -1)})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'WallJump', ('HC', 1)})}, 'GladesLaser': {frozenset({'Glide', 'WallJump'})}, 'GladesLaserGrenade': {frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'Glide'}), frozenset({'Grenade', 'Glide', 'ChargeJump', ('HC', 0)}), frozenset({('AC', 6), ('EC', 1), 'Climb', 'Dash', ('HC', 2), 'Grenade'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'DoubleJump'}), frozenset({('HC', 0), 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Grenade', 'ChargeJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Water', 'Grenade'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Dash', 'Grenade', 'Glide', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', ('HC', 0)}), frozenset({'Grenade', 'ChargeJump', ('HC', 2)}), frozenset({('HC', 0), ('EC', 2), 'Grenade', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 6), ('HC', 0), ('EC', 2), 'Dash', 'Grenade', 'WallJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Dash', 'Water', 'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', ('HC', 0)}), frozenset({'Grenade', 'ChargeJump', ('HC', 0), 'Water'}), frozenset({('AC', 6), ('HC', 0), ('EC', 2), 'Climb', 'Dash', 'Grenade'}), frozenset({('EC', 1), ('HC', 1), 'Grenade', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 6), ('EC', 1), 'Dash', ('HC', 2), 'Grenade', 'WallJump'})}, 'GroveWaterStompAbilityCell': {frozenset({'Stomp', ('HC', 2)}), frozenset({('HC', 3), 'Bash'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash', 'WallJump', ('HC', 2)})}, 'HoruR1EnergyCell': {frozenset({'WallJump', ('HC', 2)}), frozenset({'Climb', ('HC', 2)})}, 'HoruR4DrainedExp': {frozenset({('HC', 3), 'DoubleJump'}), frozenset({('HC', 3), 'Dash', ('AC', 3)}), frozenset({('HC', 3), 'Glide'})}, 'LeftSorrowAbilityCell': {frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'LeftSorrowKeystone3': {frozenset({'Climb', 'ChargeJump', ('HC', 2)})}, 'LeftSorrowKeystone4': {frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 2)}), frozenset({'Climb', 'Dash', 'ChargeJump', ('HC', 2)})}, 'LeftSorrowEnergyCell': {frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 2)})}, 'LowerBlackrootAbilityCell': {frozenset({'DoubleJump', ('HC', 2)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'DoubleJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Glide', 'Stomp', ('HC', 1)}), frozenset({'Glide', 'WallJump', ('HC', 1)}), frozenset({'Dash', ('AC', 3), ('HC', 1)})}, 'LeftGumoHideoutSwim': {frozenset({'Free'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'DoubleJump', ('HC', 2)}), frozenset({'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'DoubleJump', 'WallJump', ('HC', 2)})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'Bash', ('HC', 2)}), frozenset({'Bash', 'WallJump', ('HC', 2)})}, 'SorrowHealthCell': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 2)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({('HC', 4), 'Dash', 'WallJump'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', ('HC', 1)})}, 'MistyMortarCorridorUpperExp': {frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Bash', ('HC', 1)})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Grenade', 'Bash', ('HC', 1)}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({('HC', 4), 'Bash'})}, 'GrottoEnergyDoorSwim': {frozenset({('EC', 2)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'DoubleJump'})}, 'LeftGrottoTeleporterExp': {frozenset({('HC', 4), 'WallJump'}), frozenset({'Glide', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 4)}), frozenset({'Glide', 'WallJump', ('HC', 1)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Bash', ('HC', 2)})}, 'OutsideForlornWaterExp': {frozenset({('HC', 1)}), frozenset({'Stomp', ('HC', -1)})}, 'HoruR1HangingExp': {frozenset({'ChargeJump', ('HC', 2)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', ('HC', 0)}), frozenset({('HC', 0), 'Climb', 'Dash', 'Water', 'Grenade', 'Stomp', 'DoubleJump', ('AC', 3)}), frozenset({'Climb', 'Dash', ('HC', 1), 'Grenade', 'Stomp', 'DoubleJump', ('AC', 3)}), frozenset({('HC', 0), 'Water', 'Grenade', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Grenade', ('HC', 1)}), frozenset({('HC', 1), 'Grenade', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'ChargeJump', ('HC', 1)})}, 'GroveSpiderWaterSwim': {frozenset({'Bash', ('HC', 2)}), frozenset({('HC', 3)})}, 'GladesGrenadePool': {frozenset({'Grenade', ('HC', 3)}), frozenset({'Grenade', 'Stomp', ('HC', 2)})}, 'GladesMainPool': {frozenset({'Bash', ('HC', 0)}), frozenset({('HC', 1)}), frozenset({'Stomp', ('HC', 0)})}, 'GladesMainPoolDeep': {frozenset({('HC', 4)})}, 'SwampEntranceSwim': {frozenset({'Free'})}, 'InnerSwampStompExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Stomp'}), frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'TopGinsoLeftLowerExp': {frozenset({('HC', 2)})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'DoubleJump', 'WallJump', ('HC', 0)}), frozenset({'Climb', ('HC', 0), 'DoubleJump', 'ChargeFlame'})}, 'UpperGinsoLowerKeystone': {frozenset({'GinsoKey', ('HC', 2)})}, 'UpperGinsoRightKeystone': {frozenset({'GinsoKey', 'DoubleJump', 'WallJump', ('HC', 2)})}, 'UpperSorrowRightKeystone': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('HC', 2)})}, 'UpperSorrowLeftKeystone': {frozenset({'ChargeJump', ('HC', 2)})}, 'ValleyRightSwimExp': {frozenset({('HC', 1)})}, 'ValleyRightFastStomplessCell': {frozenset({'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'ValleyRightExp': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'ValleyMainFACS': {frozenset({'WallJump', 'Dash', ('HC', 1), 'ChargeJump', ('AC', 3)})}, 'WilhelmExp': {frozenset({'ChargeJump', ('HC', 2)})}}, 'master-lure': {'UpperSorrowSpikeExp': {frozenset({'Bash'})}, 'UpperSorrowFarLeftKeystone': {frozenset({'Bash'})}, 'UpperSorrowRightKeystone': {frozenset({'Bash'})}, 'UpperSorrowFarRightKeystone': {frozenset({'Bash'})}, 'UpperSorrowLeftKeystone': {frozenset({'Bash'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'Bash'})}, 'ForlornEscape': {frozenset({'Bash'})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'Bash'})}, 'GroveWaterStompAbilityCell': {frozenset({('AC', 12)}), frozenset({('HC', 2)})}, 'SwampTeleporterAbilityCell': {frozenset({'Bash'})}, 'WallJumpAreaExp': {frozenset({'Bash'})}, 'WallJumpAreaEnergyCell': {frozenset({'Bash'})}, 'SorrowHealthCell': {frozenset({'Glide', 'Stomp', 'WallJump'}), frozenset({'Glide', 'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'Stomp'})}, 'KuroPerchExp': {frozenset({'Bash'})}, 'LeftGrottoTeleporterExp': {frozenset({'Bash'})}, 'InnerSwampDrainExp': {frozenset({'Bash', 'Water'})}, 'InnerSwampStompExp': {frozenset({'Bash', 'Water'}), frozenset({'Bash', ('HC', 0)})}}, 'master-dboost': {'UpperSorrowSpikeExp': {frozenset({('AC', 12), 'Dash', 'Grenade', 'Bash', ('HC', 1)}), frozenset({('AC', 12), 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('EC', 2), 'Dash', ('AC', 12), ('HC', 1)}), frozenset({('AC', 12), 'Dash', 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'UpperSorrowFarLeftKeystone': {frozenset({('AC', 12), 'Dash', ('HC', 1), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'Climb', 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', 'Dash', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 7)}), frozenset({('AC', 12), 'Climb', 'Dash', 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', ('AC', 12), ('HC', 0), 'WallJump'})}, 'HoruR1EnergyCell': {frozenset({('AC', 12), 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), ('HC', 1)})}, 'HoruR4DrainedExp': {frozenset({('HC', 8)}), frozenset({('AC', 12), ('HC', 6)})}, 'HoruL1': {frozenset({('EC', 1), ('AC', 12), 'Climb', ('HC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', ('EC', 2), 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), ('AC', 12), 'Climb', 'Stomp', 'DoubleJump'}), frozenset({('AC', 12), ('HC', 1), 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Bash', 'Stomp', ('HC', 2)}), frozenset({'Stomp', 'ChargeJump', ('HC', 2)})}, 'HoruL3': {frozenset({('HC', 3), ('AC', 12), 'Climb', 'Dash', ('EC', 2), 'Glide', 'DoubleJump'}), frozenset({('HC', 0), ('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeFlame', ('HC', 0), ('AC', 12), 'ChargeJump', 'DoubleJump'}), frozenset({('EC', 1), ('AC', 12), 'Climb', 'Dash', 'Glide', 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 0), ('AC', 12), 'Stomp', 'ChargeJump', 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)})}, 'LeftSorrowKeystone3': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LeftSorrowKeystone4': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LeftSorrowEnergyCell': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LostGroveLongSwim': {frozenset({('HC', 3), ('AC', 12)}), frozenset({('HC', 9)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Stomp', ('HC', 1)})}, 'SorrowLowerLeftKeystone': {frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}, 'MistyFrogNookExp': {frozenset({'DoubleJump', ('HC', 1)})}, 'MistyPostClimbSpikeCave': {frozenset({'Bash', ('HC', 1)}), frozenset({'DoubleJump', ('HC', 8)})}, 'MistyMortarCorridorHiddenExp': {frozenset({('HC', 7)}), frozenset({('HC', 4), ('AC', 12)}), frozenset({'DoubleJump', ('HC', 1)})}, 'LeftGrottoTeleporterExp': {frozenset({'DoubleJump', ('HC', 1)})}, 'OutsideForlornWaterExp': {frozenset({('AC', 12), ('HC', -1)})}, 'HoruR1HangingExp': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'DoubleJump', ('HC', 2)}), frozenset({'Water', ('HC', 2), 'Grenade', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Water', ('HC', 2), 'Grenade', 'DoubleJump'})}, 'GroveSpiderWaterSwim': {frozenset({('HC', 2)}), frozenset({'Bash', ('AC', 12)}), frozenset({('AC', 12), ('HC', 1)})}, 'GladesGrenadePool': {frozenset({'Grenade', ('HC', 2)})}, 'GladesMainPool': {frozenset({('HC', 0)})}, 'InnerSwampDrainExp': {frozenset({('HC', 4), 'Dash', ('AC', 12), 'WallJump'}), frozenset({('HC', 4), 'Bash', ('AC', 12)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', ('AC', 12)}), frozenset({'ChargeFlame', ('HC', 4), ('AC', 12), 'Glide', 'Stomp', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({'Climb', 'Dash', ('HC', 4), ('AC', 12)})}, 'TopGinsoLeftUpperExp': {frozenset({('HC', 0), 'Glide', 'DoubleJump'}), frozenset({('HC', 0), 'Dash', 'DoubleJump'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'DoubleJump', ('HC', 0)}), frozenset({'Grenade', 'DoubleJump', ('HC', 0)})}, 'UpperGinsoRightKeystone': {frozenset({('HC', 0), ('AC', 12), 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump', ('HC', 2)})}, 'UpperGinsoUpperLeftKeystone': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump', ('HC', 2)})}, 'UpperSorrowRightKeystone': {frozenset({('HC', 4), 'ChargeJump', 'DoubleJump', ('AC', 12)}), frozenset({('AC', 12), 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}, 'UpperSorrowFarRightKeystone': {frozenset({('HC', 4), 'Dash', 'ChargeJump', ('AC', 12)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'DoubleJump'})}, 'UpperSorrowLeftKeystone': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}, 'ValleyEntryGrenadeLongSwim': {frozenset({'Grenade', 'Bash', ('HC', 10)}), frozenset({'Grenade', ('HC', 11)}), frozenset({'Grenade', ('HC', 4), ('AC', 12)})}, 'ValleyRightFastStomplessCell': {frozenset({'Climb', ('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 2)})}, 'ValleyRightExp': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'WilhelmExp': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}}, 'standard-lure': {'DeathGauntletExp': {frozenset({'Bash'})}, 'DeathGauntletStompSwim': {frozenset({'Water'})}, 'GladesLaser': {frozenset({'Bash'})}, 'HoruFieldsHealthCell': {frozenset({'Free'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', 'Bash'})}, 'LeftSorrowKeystone1': {frozenset({'Bash'})}, 'MistyEntranceStompExp': {frozenset({'Bash'})}, 'MistyAbilityCell': {frozenset({'Bash'})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Grenade'})}, 'SorrowMap': {frozenset({'MapStone'})}, 'FronkeyWalkRoof': {frozenset({'Bash'})}, 'ValleyRightFastStomplessCell': {frozenset({'Bash'})}, 'WilhelmExp': {frozenset({'Bash', 'WallJump'})}, 'KuroPerchExp': {frozenset({'HoruKey'})}}, 'casual-dboost': {'DoubleJumpSkillTree': {frozenset({'Bash', ('HC', 0)}), frozenset({'Climb', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Grenade', 'Bash', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0), 'Water'}), frozenset({('HC', -1), 'ChargeJump', 'WallJump'}), frozenset({'Bash', ('HC', 0), 'Water'}), frozenset({'Bash', 'WallJump', ('HC', -1)})}, 'GrenadeAreaExp': {frozenset({'ChargeJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'WallJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'ChargeJump', 'Water'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'InnerSwampSwimRightKeystone': {frozenset({'Climb'}), frozenset({'WallJump'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'ChargeJump'}), frozenset({'Bash'})}}, 'standard-dboost': {'DoubleJumpSkillTree': {frozenset({'Dash', ('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', 'ChargeJump', ('HC', 0)}), frozenset({('HC', 0), 'Bash', 'Dash'}), frozenset({'ChargeJump', ('HC', 0), ('AC', 3), ('EC', 1)}), frozenset({'Bash', ('HC', 0), ('AC', 3), ('EC', 1)}), frozenset({'Bash', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'ChargeJump', ('HC', 1)})}, 'LowerGinsoKeystone1': {frozenset({('HC', 0)})}, 'LowerGinsoKeystone2': {frozenset({'ChargeJump', ('HC', 0)})}, 'GumoHideoutMapstone': {frozenset({'ChargeJump', ('HC', 1)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Dash', 'ChargeJump', ('HC', 1)})}, 'MistyAbilityCell': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'WallJump'})}, 'BelowGrottoTeleporterHealthCell': {frozenset({('HC', 0), 'Bash', 'DoubleJump'}), frozenset({'Bash', ('HC', 0), 'WallJump'}), frozenset({'ChargeJump', ('HC', 0)})}, 'BelowGrottoTeleporterPlant': {frozenset({'ChargeFlame', ('HC', 1)}), frozenset({'Grenade', ('HC', 1)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Glide', ('HC', 1)}), frozenset({'ChargeFlame', 'DoubleJump', ('HC', 1)}), frozenset({'ChargeFlame', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeFlame', 'WallJump', ('HC', 1)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', ('HC', 0), 'Water'})}, 'InnerSwampDrainExp': {frozenset({'Grenade', 'Bash', ('HC', 1), 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({('HC', 0), 'DoubleJump'}), frozenset({'ChargeJump', ('HC', 0)})}, 'TopGinsoLeftUpperExp': {frozenset({('HC', 0), 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'DoubleJump', ('HC', 0)}), frozenset({'Climb', 'Glide', 'DoubleJump', ('HC', 0)}), frozenset({('HC', 0), 'Glide', 'DoubleJump', 'WallJump'})}, 'TopGinsoRightPlant': {frozenset({'Grenade', 'DoubleJump', 'WallJump', ('HC', 0)}), frozenset({'Climb', 'Grenade', 'DoubleJump', ('HC', 0)})}, 'UpperGinsoLowerKeystone': {frozenset({'Bash', 'GinsoKey', ('HC', 0)}), frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'}), frozenset({('HC', 0), 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoRightKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}}, 'standard-core': {'DoubleJumpAreaExp': {frozenset({'ChargeJump', 'WallJump'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ForlornKey', 'Dash', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'Dash', 'DoubleJump'}), frozenset({'Glide', 'ForlornKey', 'Climb', 'Dash'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'Dash', 'WallJump', 'Open'}), frozenset({'Climb', 'ForlornKey', 'Dash', 'Open'})}, 'LowerGinsoKeystone1': {frozenset({'Grenade', 'Bash'})}, 'LowerGinsoKeystone2': {frozenset({'Grenade', 'Bash'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'Bash'}), frozenset({'Climb', 'Grenade', 'Glide', 'ChargeJump', 'DoubleJump'})}, 'GrenadeSkillTree': {frozenset({'Grenade', 'Bash'})}, 'GrenadeAreaExp': {frozenset({'Dash', 'DoubleJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'GumoHideoutMapstone': {frozenset({'Climb'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'SwampTeleporterAbilityCell': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}, 'HoruFieldsHiddenExp': {frozenset({'Bash'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', 'Dash', 'DoubleJump'})}, 'HoruL4LowerExp': {frozenset({'Climb', 'Stomp'})}, 'HoruR1EnergyCell': {frozenset({'Grenade', 'Bash'})}, 'HoruR3Plant': {frozenset({'ChargeFlame'})}, 'HoruR4DrainedExp': {frozenset({'Grenade', 'Bash', 'Climb'})}, 'HoruL1': {frozenset({'Glide', 'ChargeJump', 'Stomp', 'Bash'})}, 'HoruL3': {frozenset({'ChargeFlame', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Glide', 'Bash', 'ChargeFlame', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeFlame'}), frozenset({'Grenade', 'Bash', 'ChargeFlame'})}, 'FarLeftGumoHideoutExp': {frozenset({'Climb', 'Bash', 'Grenade'})}, 'LeftSorrowKeystone1': {frozenset({'Dash'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Dash', 'DoubleJump'})}, 'LowerBlackrootGrenadeThrow': {frozenset({'ChargeJump', 'DoubleJump'})}, 'GumoHideoutRightHangingExp': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'Dash', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump', 'WallJump'})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'Bash', 'Dash', 'DoubleJump'}), frozenset({'Bash', 'Dash', 'DoubleJump', 'WallJump'})}, 'SorrowHealthCell': {frozenset({'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'DoubleJump', 'WallJump'})}, 'MistyFrogNookExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', 'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Grenade', 'Bash'})}, 'OuterSwampHealthCell': {frozenset({'Climb', 'DoubleJump'})}, 'HoruR1HangingExp': {frozenset({'Grenade', 'Bash'})}, 'HoruR2': {frozenset({'Glide', 'Stomp', 'Climb', 'Bash'}), frozenset({'Glide', 'Stomp', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'})}, 'StompAreaExp': {frozenset({'Climb', 'ChargeJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'DoubleJump', 'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Bash', 'ChargeJump'})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'AboveChargeFlameTreeExp': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'Climb', 'Wind'}), frozenset({'Grenade', 'Glide', 'WallJump', 'Wind'})}, 'InnerSwampSwimRightKeystone': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}, 'TopGinsoLeftLowerExp': {frozenset({'Bash'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Glide', 'GinsoKey', 'ChargeJump'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Glide', 'GinsoKey', 'ChargeJump'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoEnergyCell': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'GrottoLasersRoofExp': {frozenset({'Climb', 'DoubleJump'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'ValleyRightBirdStompCell': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Dash', 'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'ForlornKeystone1': {frozenset({'ForlornKey', 'Bash'})}, 'GumoHideoutMiniboss': {frozenset({'Bash'})}, 'GroveWaterStompAbilityCell': {frozenset({'Bash', 'Water'})}, 'SorrowHealthCell': {frozenset({'Grenade', 'Glide', 'Stomp', 'Bash'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Glide', 'Stomp'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump'}), frozenset({'Glide', 'Stomp', 'ChargeJump'})}}, 'gjump': {'GladesLaserGrenade': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruFieldsEnergyCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruR4LaserExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruL3': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowLowerLeftKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'KuroPerchExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'Water'})}, 'SorrowMapstone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'UpperSorrowLeftKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'insane': {'GrenadeSkillTree': {frozenset({'WallJump'})}, 'ValleyRightBirdStompCell': {frozenset({'Bash'})}}, 'timed-level': {'LowerBlackrootGrenadeThrow': {frozenset({'Free'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 2)})}}} -connection_rules = {'AboveChargeJumpArea': {'casual-core': {'SorrowTeleporter': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'})}}, 'expert-dboost': {'SorrowTeleporter': {frozenset({'Dash', 'ChargeJump', 'WallJump', ('HC', 2)})}, 'ChargeJumpArea': {frozenset({('HC', 3), 'Bash', 'ChargeJump'}), frozenset({('HC', 3), 'Dash', 'ChargeJump', ('AC', 6)})}}, 'master-core': {'SorrowTeleporter': {frozenset({'Bash'})}, 'ChargeJumpArea': {frozenset({'Bash'})}}, 'standard-lure': {'ChargeJumpArea': {frozenset({'Climb', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'WallJump'})}}, 'expert-core': {'ChargeJumpArea': {frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', 'WallJump'})}}, 'expert-abilities': {'ChargeJumpArea': {frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'}), frozenset({'Climb', 'Dash', 'ChargeJump', ('AC', 6)}), frozenset({'Bash', 'ChargeJump', 'Dash', ('AC', 3)}), frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)})}}, 'gjump': {'ChargeJumpArea': {frozenset({'Climb', 'Dash', 'ChargeJump', 'Grenade'}), frozenset({'Climb', ('HC', 3), 'ChargeJump', 'Grenade'})}}, 'dbash': {'ChargeJumpArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}}, 'BashTree': {'casual-core': {'BashTreeDoorClosed': {frozenset({'Open'})}, 'UpperGinsoRedirectArea': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Dash', 'ChargeJump', 'DoubleJump'})}}, 'standard-dboost': {'UpperGinsoRedirectArea': {frozenset({'ChargeJump', ('HC', 1)})}}, 'expert-dboost': {'UpperGinsoRedirectArea': {frozenset({'ChargeJump', ('HC', 0)})}}, 'expert-abilities': {'UpperGinsoRedirectArea': {frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}, 'master-core': {'UpperGinsoRedirectArea': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump'})}}, 'master-abilities': {'UpperGinsoRedirectArea': {frozenset({('AC', 12), 'DoubleJump'})}}}, 'BashTreeDoorClosed': {'casual-core': {'BashTreeDoorOpened': {frozenset({('KS', 4)})}}}, 'BashTreeDoorOpened': {'casual-core': {'GinsoMiniBossDoor': {frozenset({'Open', 'GinsoKey'})}, 'BashTree': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'master-core': {'BashTree': {frozenset({'DoubleJump'})}}}, 'BelowSunstoneArea': {'casual-core': {'SunstoneArea': {frozenset({'Glide', 'Stomp'})}, 'UpperSorrow': {frozenset({'Stomp'})}}, 'standard-core': {'SunstoneArea': {frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'UpperSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'SunstoneArea': {frozenset({'Glide', 'Dash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', 'Glide'})}, 'UpperSorrow': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}}, 'gjump': {'SunstoneArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'SunstoneArea': {frozenset({'Bash'})}, 'UpperSorrow': {frozenset({'Bash'})}}, 'master-dboost': {'SunstoneArea': {frozenset({('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'UpperSorrow': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}}, 'BlackrootDarknessRoom': {'casual-core': {'DashArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'expert-core': {'DashArea': {frozenset({'DoubleJump'})}}, 'master-core': {'DashArea': {frozenset({'Bash'})}}}, 'BlackrootGrottoConnection': {'casual-core': {'SideFallCell': {frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-abilities': {'SideFallCell': {frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}}, 'expert-core': {'SideFallCell': {frozenset({'Climb', 'Stomp'})}}}, 'ChargeFlameAreaStump': {'casual-core': {'ChargeFlameSkillTreeChamber': {frozenset({'ChargeFlame'}), frozenset({'Grenade'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}}, 'standard-core': {'ChargeFlameSkillTreeChamber': {frozenset({'Stomp'})}}, 'expert-abilities': {'ChargeFlameSkillTreeChamber': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'ChargeFlameSkillTreeChamber': {frozenset({'DoubleJump'})}}}, 'ChargeFlameSkillTreeChamber': {'casual-core': {'SpiritTreeRefined': {frozenset({'ChargeJump'})}, 'ChargeFlameAreaStump': {frozenset({'ChargeJump'}), frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-abilities': {'ChargeFlameAreaStump': {frozenset({'Dash', ('AC', 6)})}}}, 'ChargeJumpArea': {'casual-core': {'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'ChargeJumpDoor': {frozenset({'Open'})}}, 'gjump': {'AboveChargeJumpArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Dash', 'ChargeJump', ('HC', 2)})}}, 'expert-abilities': {'AboveChargeJumpArea': {frozenset({'Climb', 'Dash', 'ChargeJump', ('AC', 6)})}}, 'master-core': {'AboveChargeJumpArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}}, 'ChargeJumpDoor': {'casual-core': {'ChargeJumpDoorOpen': {frozenset({('KS', 4)})}}}, 'ChargeJumpDoorOpen': {'casual-core': {'ChargeJumpArea': {frozenset({'Glide'})}}, 'master-dboost': {'ChargeJumpArea': {frozenset({('AC', 12), 'Dash', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('HC', 10), ('AC', 12), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}, 'ChargeJumpDoorOpenLeft': {frozenset({'ChargeJump', ('HC', 2)})}}, 'expert-dboost': {'ChargeJumpDoorOpenLeft': {frozenset({('HC', 3), 'ChargeJump'})}}, 'master-lure': {'ChargeJumpDoorOpenLeft': {frozenset({'Bash'})}}}, 'ChargeJumpDoorOpenLeft': {'casual-core': {'UpperSorrow': {frozenset({'Glide'})}}, 'master-dboost': {'UpperSorrow': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('AC', 6), ('HC', 6), 'Dash', ('EC', 2), 'ChargeJump'}), frozenset({('HC', 4), ('AC', 12), 'Dash', ('EC', 2), 'ChargeJump'})}}, 'master-lure': {'UpperSorrow': {frozenset({'Bash'})}}}, 'DashArea': {'casual-core': {'DashPlantAccess': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'WallJump'})}, 'GrenadeAreaAccess': {frozenset({'Stomp', 'Dash'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump'})}, 'RazielNoArea': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}, 'standard-abilities': {'DashPlantAccess': {frozenset({'Climb', 'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}, 'RazielNoArea': {frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Dash', ('AC', 3)}), frozenset({'WallJump'})}}, 'expert-core': {'DashPlantAccess': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Glide'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'GrenadeAreaAccess': {frozenset({'Stomp'})}}, 'expert-abilities': {'DashPlantAccess': {frozenset({'Climb', 'Dash', ('AC', 6), ('EC', 2)}), frozenset({'Grenade', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', ('AC', 6), 'WallJump'}), frozenset({('EC', 2), 'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6), 'ChargeFlame'})}, 'RazielNoArea': {frozenset({'Climb'})}}, 'master-core': {'DashPlantAccess': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Dash', 'DoubleJump'})}, 'GrenadeAreaAccess': {frozenset({'Bash'})}}, 'master-abilities': {'DashPlantAccess': {frozenset({'Climb', 'ChargeFlame', ('AC', 3)}), frozenset({'ChargeFlame', ('AC', 3), 'WallJump'}), frozenset({('AC', 12), 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump', ('AC', 3)})}, 'RazielNoArea': {frozenset({'DoubleJump'})}}, 'standard-core': {'GrenadeAreaAccess': {frozenset({'Climb', 'ChargeJump'})}, 'RazielNoArea': {frozenset({'Grenade', 'Bash'})}}, 'glitched': {'GrenadeAreaAccess': {frozenset({'Free'})}}, 'insane': {'GrenadeAreaAccess': {frozenset({'Free'})}}}, 'DeathGauntlet': {'casual-core': {'DeathGauntletMoat': {frozenset({'Water'})}, 'DeathGauntletDoor': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'DeathGauntletRoof': {frozenset({'ChargeJump'})}, 'MoonGrotto': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'expert-dboost': {'DeathGauntletMoat': {frozenset({('HC', 1)})}}, 'master-dboost': {'DeathGauntletMoat': {frozenset({('HC', 0)})}}, 'expert-core': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Bash', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Grenade'}), frozenset({'ChargeFlame', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Climb'})}}, 'master-core': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', 'DoubleJump'})}}, 'master-abilities': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', ('AC', 3)})}}, 'master-lure': {'MoonGrotto': {frozenset({'Dash', ('AC', 6), ('EC', 1)}), frozenset({'Bash'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Bash'})}}}, 'DeathGauntletDoor': {'casual-core': {'DeathGauntletDoorOpened': {frozenset({('EC', 4)})}}, 'glitched': {'DeathGauntletDoorOpened': {frozenset({('EC', 3)})}}, 'timed-level': {'DeathGauntletDoorOpened': {frozenset({('EC', 2)})}}}, 'DeathGauntletDoorOpened': {'casual-core': {'DeathGauntlet': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'WallJump', 'Water'}), frozenset({'Climb', 'Water'}), frozenset({'Bash', 'Water'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}, 'DeathGauntletMoat': {frozenset({'Water'})}}, 'standard-dboost': {'DeathGauntlet': {frozenset({'Climb', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'Bash', ('HC', 1)})}}, 'expert-dboost': {'DeathGauntlet': {frozenset({'Climb', ('HC', 0)}), frozenset({'Bash', ('HC', 0)}), frozenset({('HC', 0), 'WallJump'})}, 'DeathGauntletMoat': {frozenset({('HC', 2)})}}, 'expert-abilities': {'DeathGauntlet': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}}, 'master-core': {'DeathGauntlet': {frozenset({'DoubleJump'})}}, 'master-dboost': {'DeathGauntletMoat': {frozenset({('HC', 1)})}}}, 'DeathGauntletRoof': {'casual-core': {'DeathGauntlet': {frozenset({'Stomp'})}}, 'standard-lure': {'DeathGauntlet': {frozenset({'Free'})}}}, 'DoubleJumpKeyDoor': {'casual-core': {'DoubleJumpKeyDoorOpened': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'expert-core': {'DoubleJumpKeyDoorOpened': {frozenset({'DoubleJump'})}}}, 'ForlornGravityRoom': {'casual-core': {'ForlornMapArea': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'ForlornInnerDoor': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'master-core': {'ForlornMapArea': {frozenset({'DoubleJump'})}}, 'master-lure': {'ForlornMapArea': {frozenset({'Bash'})}}, 'standard-dboost': {'ForlornInnerDoor': {frozenset({('HC', 1)})}}, 'standard-core': {'ForlornInnerDoor': {frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'ForlornInnerDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'ForlornInnerDoor': {frozenset({'ChargeJump'})}}, 'master-dboost': {'ForlornInnerDoor': {frozenset({('AC', 12), ('HC', 0)})}}}, 'ForlornInnerDoor': {'casual-core': {'ForlornOuterDoor': {frozenset({'ForlornKey'})}, 'ForlornOrbPossession': {frozenset({'Climb', 'Glide', 'Open'}), frozenset({'Open', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Open'}), frozenset({'Glide', 'WallJump', 'Open'}), frozenset({'Open', 'DoubleJump'})}, 'ForlornGravityRoom': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'ForlornOrbPossession': {frozenset({'Dash', 'WallJump', 'Open'}), frozenset({'Climb', 'Dash', 'Open'})}, 'ForlornGravityRoom': {frozenset({'Climb', 'Dash', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'ForlornOrbPossession': {frozenset({'Open'})}, 'ForlornGravityRoom': {frozenset({'ChargeJump'})}}, 'standard-dboost': {'ForlornGravityRoom': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)})}}, 'standard-abilities': {'ForlornGravityRoom': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-dboost': {'ForlornGravityRoom': {frozenset({'WallJump', ('HC', 1)})}}, 'master-dboost': {'ForlornGravityRoom': {frozenset({('AC', 12), ('HC', 0), 'WallJump'})}}}, 'ForlornKeyDoor': {'casual-core': {'ForlornLaserRoom': {frozenset({'ForlornKey', ('KS', 4)})}}}, 'ForlornLaserRoom': {'casual-core': {'ForlornStompDoor': {frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Glide', 'Stomp', 'ChargeJump'})}}, 'standard-abilities': {'ForlornStompDoor': {frozenset({'Dash', 'Glide', ('AC', 3), 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', ('HC', 1), 'Stomp', 'ChargeJump', ('AC', 3)}), frozenset({'Dash', 'Stomp', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'standard-dboost': {'ForlornStompDoor': {frozenset({'Stomp', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'ForlornStompDoor': {frozenset({'Stomp', ('AC', 6), 'Dash', 'DoubleJump'}), frozenset({'Climb', 'Stomp', ('AC', 6), 'Dash'}), frozenset({('AC', 6), 'Stomp', 'ChargeJump', 'Dash'}), frozenset({'Stomp', ('AC', 6), 'Dash', 'WallJump'})}}, 'master-abilities': {'ForlornStompDoor': {frozenset({'Glide', 'Stomp', ('AC', 12), 'DoubleJump'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', ('AC', 12)})}}, 'master-lure': {'ForlornStompDoor': {frozenset({'Stomp', 'Bash'})}}, 'gjump': {'ForlornStompDoor': {frozenset({'Climb', 'Stomp', 'ChargeJump', 'Grenade'})}}}, 'ForlornMapArea': {'casual-core': {'ForlornTeleporter': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'ForlornPlantAccess': {frozenset({'Grenade', 'ForlornKey', 'WallJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'}), frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'})}}, 'standard-abilities': {'ForlornTeleporter': {frozenset({'Glide', 'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', 'Glide', ('AC', 3)}), frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-dboost': {'ForlornTeleporter': {frozenset({'ChargeJump', ('HC', 1)})}}, 'master-core': {'ForlornTeleporter': {frozenset({'DoubleJump'})}, 'ForlornPlantAccess': {frozenset({'Grenade', 'ForlornKey', 'DoubleJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}}, 'master-lure': {'ForlornTeleporter': {frozenset({'Bash'})}}, 'master-dboost': {'ForlornTeleporter': {frozenset({('AC', 12), 'ChargeJump', ('HC', 0)})}}}, 'ForlornOrbPossession': {'casual-core': {'ForlornPlantAccess': {frozenset({'ForlornKey'})}, 'ForlornInnerDoor': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'ForlornInnerDoor': {frozenset({('HC', 1)})}}, 'standard-core': {'ForlornInnerDoor': {frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'ForlornInnerDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'ForlornInnerDoor': {frozenset({'ChargeJump'})}}, 'master-dboost': {'ForlornInnerDoor': {frozenset({('AC', 12), ('HC', 0)})}}}, 'ForlornStompDoor': {'casual-core': {'RightForlorn': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'standard-abilities': {'RightForlorn': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Climb', 'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'RightForlorn': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)})}}, 'expert-dboost': {'RightForlorn': {frozenset({'Climb', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)})}}, 'master-dboost': {'RightForlorn': {frozenset({'Climb', ('AC', 12), ('HC', 0)}), frozenset({('AC', 12), ('HC', 0), 'WallJump'})}}, 'master-lure': {'RightForlorn': {frozenset({'Bash'})}}, 'master-abilities': {'RightForlorn': {frozenset({('AC', 12), 'DoubleJump'})}}}, 'ForlornTeleporter': {'casual-core': {'ForlornOrbPossession': {frozenset({'ForlornKey', 'Open'})}, 'ForlornMapArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}}, 'GinsoEscape': {'casual-core': {'GinsoEscapeComplete': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'})}}, 'standard-core': {'GinsoEscapeComplete': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-core': {'GinsoEscapeComplete': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'expert-dboost': {'GinsoEscapeComplete': {frozenset({'Climb', 'ChargeJump', ('HC', 0)}), frozenset({('AC', 6), ('HC', 0), 'Dash', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', ('HC', 6), 'WallJump'})}}, 'dbash': {'GinsoEscapeComplete': {frozenset({'Bash'})}}, 'master-dboost': {'GinsoEscapeComplete': {frozenset({('HC', 3), ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Climb', ('AC', 12), 'DoubleJump', ('HC', 7)}), frozenset({('HC', 4), 'ChargeJump', 'DoubleJump'})}}, 'insane': {'GinsoEscapeComplete': {frozenset({('HC', 9), ('AC', 12), 'DoubleJump'})}}}, 'GinsoInnerDoor': {'casual-core': {'LowerGinsoTree': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-core': {'LowerGinsoTree': {frozenset({'DoubleJump'})}}, 'master-abilities': {'LowerGinsoTree': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}}}, 'GinsoMiniBossDoor': {'casual-core': {'BashTreeDoorClosed': {frozenset({'Free'})}}}, 'GinsoTeleporter': {'casual-core': {'TopGinsoTree': {frozenset({'Bash', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'GinsoKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'GinsoKey', 'DoubleJump'}), frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoDoorClosed': {frozenset({'Open'})}}, 'standard-core': {'TopGinsoTree': {frozenset({'Grenade', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'GinsoKey', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'TopGinsoTree': {frozenset({'Stomp', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'GinsoKey', 'ChargeJump'})}}, 'master-abilities': {'TopGinsoTree': {frozenset({'ChargeFlame', ('AC', 12), 'GinsoKey', 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'GinsoKey', 'DoubleJump'}), frozenset({'Stomp', 'GinsoKey', 'DoubleJump', ('AC', 12)})}}}, 'GladesLaserArea': {'casual-core': {'MidSpiritCaverns': {frozenset({('EC', 4), 'DoubleJump'}), frozenset({('EC', 4), 'WallJump'}), frozenset({'Grenade', 'Bash', ('EC', 4)}), frozenset({'Climb', ('EC', 4)}), frozenset({'ChargeJump', ('EC', 4)})}}, 'expert-core': {'MidSpiritCaverns': {frozenset({'Dash', ('EC', 4)})}}, 'dbash': {'MidSpiritCaverns': {frozenset({'Bash', ('EC', 4)})}}, 'timed-level': {'MidSpiritCaverns': {frozenset({'Climb', ('EC', 2)}), frozenset({('EC', 2), 'WallJump'}), frozenset({('EC', 2), 'DoubleJump'}), frozenset({('EC', 2), 'Dash'}), frozenset({('EC', 2), 'ChargeJump'}), frozenset({('EC', 2), 'Bash'})}}}, 'GladesMain': {'casual-core': {'GladesMainAttic': {frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesLaserArea': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'LowerChargeFlameArea': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'standard-core': {'GladesMainAttic': {frozenset({'DoubleJump', 'WallJump'})}}, 'expert-core': {'GladesMainAttic': {frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash'})}, 'GladesLaserArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'GladesMainAttic': {frozenset({'Dash', ('AC', 6)})}, 'GladesLaserArea': {frozenset({'Dash', ('AC', 6)})}, 'LowerChargeFlameArea': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'GladesMainAttic': {frozenset({'Bash'})}, 'GladesLaserArea': {frozenset({'Bash'})}}, 'master-core': {'GladesMainAttic': {frozenset({'DoubleJump'})}}}, 'GladesMainAttic': {'glitched': {'LowerChargeFlameArea': {frozenset({'Dash'})}}}, 'GrenadeAreaAccess': {'casual-core': {'GrenadeArea': {frozenset({'Dash'})}, 'LowerBlackroot': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'})}}, 'expert-core': {'GrenadeArea': {frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'gjump': {'GrenadeArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'glitched': {'GrenadeArea': {frozenset({'Free'})}}, 'insane': {'GrenadeArea': {frozenset({'Free'})}}, 'casual-dboost': {'LowerBlackroot': {frozenset({'Free'})}}, 'standard-core': {'LowerBlackroot': {frozenset({'Grenade', 'Bash'})}}, 'expert-abilities': {'LowerBlackroot': {frozenset({'Dash', ('AC', 3)})}}, 'dbash': {'LowerBlackroot': {frozenset({'Bash'})}}}, 'GumoHideout': {'casual-core': {'DoubleJumpKeyDoor': {frozenset({('KS', 2)})}, 'LeftGumoHideout': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'})}, 'SideFallCell': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'ChargeJump', 'WallJump'})}}, 'expert-core': {'LeftGumoHideout': {frozenset({'ChargeJump'})}}, 'master-core': {'LeftGumoHideout': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}, 'LowerLeftGumoHideout': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}}, 'master-abilities': {'LeftGumoHideout': {frozenset({('AC', 12), 'DoubleJump'})}}, 'dbash': {'SideFallCell': {frozenset({'Bash'})}}}, 'GumoHideoutRedirectArea': {'casual-core': {'GumoHideoutRedirectEnergyVault': {frozenset({('EC', 4)})}}, 'glitched': {'GumoHideoutRedirectEnergyVault': {frozenset({'Free'})}}}, 'HollowGrove': {'casual-core': {'SpiderWaterArea': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'SwampTeleporter': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'OuterSwampUpperArea': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'HoruFields': {frozenset({'Bash'})}, 'Iceless': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'standard-core': {'SpiderWaterArea': {frozenset({'Bash'})}, 'HoruFields': {frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'master-core': {'SpiderWaterArea': {frozenset({'Free'})}, 'SwampTeleporter': {frozenset({'DoubleJump'})}, 'OuterSwampUpperArea': {frozenset({'DoubleJump'})}, 'HoruFields': {frozenset({'DoubleJump'})}, 'Iceless': {frozenset({'DoubleJump'}), frozenset({'WallJump'})}}, 'standard-abilities': {'HoruFields': {frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}}, 'expert-core': {'HoruFields': {frozenset({'ChargeJump'}), frozenset({'WallJump'})}}, 'expert-abilities': {'HoruFields': {frozenset({'Climb', 'Dash', ('AC', 3)})}, 'Iceless': {frozenset({'Dash', ('AC', 6)})}}, 'standard-lure': {'Iceless': {frozenset({'Bash'})}}, 'master-lure': {'MoonGrottoStompPlantAccess': {frozenset({'Dash', ('AC', 6)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'DoubleJump'}), frozenset({'Glide', 'WallJump'})}}}, 'HoruBasement': {'casual-core': {'HoruEscapeOuterDoor': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Dash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}}, 'HoruFields': {'casual-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}, 'HoruOuterDoor': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'})}, 'HoruOuterDoor': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}}, 'standard-abilities': {'HoruFieldsPushBlock': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)}), frozenset({'WallJump', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-abilities': {'HoruFieldsPushBlock': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 4)}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Glide', 'ChargeJump'})}}, 'dbash': {'HoruFieldsPushBlock': {frozenset({'Bash'})}}, 'master-abilities': {'HoruFieldsPushBlock': {frozenset({('EC', 4), ('AC', 12), 'Climb', 'Dash', 'DoubleJump'}), frozenset({('AC', 12), 'Dash', ('EC', 5), 'DoubleJump', 'WallJump'})}, 'HoruOuterDoor': {frozenset({('AC', 12), 'Dash', ('EC', 3), 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'gjump': {'HoruFieldsPushBlock': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruOuterDoor': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'HoruOuterDoor': {frozenset({'Bash'})}}}, 'HoruFieldsPushBlock': {'master-lure': {'HollowGrove': {frozenset({'Bash'})}}}, 'HoruInnerDoor': {'casual-core': {'HoruMapLedge': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'L1OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'L2OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'L3OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'L4OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Open', 'ChargeJump'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'R1OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'R2OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'R3OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'R4OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump'})}, 'HoruBasement': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'HoruTeleporter': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}}, 'expert-core': {'HoruMapLedge': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'L1OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'L2OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'L3OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'L4OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'R1OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'R2OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'R3OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'R4OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'HoruBasement': {frozenset({'Free'})}, 'HoruTeleporter': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}}, 'dbash': {'HoruMapLedge': {frozenset({'Bash'})}, 'L1OuterDoor': {frozenset({'Bash'})}, 'L2OuterDoor': {frozenset({'Open', 'Bash'})}, 'L3OuterDoor': {frozenset({'Open', 'Bash'})}, 'R1OuterDoor': {frozenset({'Bash'})}, 'R2OuterDoor': {frozenset({'Open', 'Bash'})}, 'R3OuterDoor': {frozenset({'Open', 'Bash'})}, 'R4OuterDoor': {frozenset({'Open', 'Bash'})}}, 'master-dboost': {'HoruMapLedge': {frozenset({('AC', 12), ('HC', 1), 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L1OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L2OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'L3OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'L4OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'R1OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R2OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R3OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'R4OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'HoruBasement': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'HoruTeleporter': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'L2OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L3OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R2OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Dash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'Dash', 'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'})}, 'R3OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'expert-dboost': {'L2OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'L3OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'R3OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}}, 'expert-abilities': {'L2OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'L3OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'L4OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'R2OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'R3OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'R4OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash'})}}, 'master-abilities': {'L2OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'L3OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'R2OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'R3OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}}, 'gjump': {'L2OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'L3OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'R2OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'R3OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}}}, 'HoruL4LavaChasePeg': {'casual-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Stomp'})}}, 'standard-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'HoruL4CutscenePeg': {frozenset({'Climb', 'Bash', 'Stomp', 'DoubleJump'})}}, 'expert-abilities': {'HoruL4CutscenePeg': {frozenset({('AC', 6), 'Dash', ('EC', 2), 'Bash', 'Stomp'})}}, 'master-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'DoubleJump'})}}}, 'HoruOuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'HoruKey'})}, 'HoruFieldsPushBlock': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'HoruFieldsPushBlock': {frozenset({'Dash', 'DoubleJump', 'Bash'})}}, 'standard-abilities': {'HoruFieldsPushBlock': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)}), frozenset({'WallJump', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-abilities': {'HoruFieldsPushBlock': {frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}, 'master-core': {'HoruFieldsPushBlock': {frozenset({'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'HoruFieldsPushBlock': {frozenset({'Bash', ('AC', 12), 'DoubleJump'})}}, 'gjump': {'HoruFieldsPushBlock': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'HoruR1CutsceneTrigger': {'glitched': {'LowerGinsoTree': {frozenset({'Dash'})}}}, 'HoruR1MapstoneSecret': {'casual-core': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}}, 'expert-core': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-dboost': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'ChargeJump', 'DoubleJump', ('HC', 2)}), frozenset({('AC', 6), ('EC', 1), 'Dash', ('HC', 2), 'ChargeJump'})}}, 'dbash': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'Dash', ('AC', 3)}), frozenset({'Bash', 'DoubleJump'})}}, 'master-core': {'HoruR1CutsceneTrigger': {frozenset({'Bash', 'DoubleJump'})}}, 'master-dboost': {'HoruR1CutsceneTrigger': {frozenset({('HC', 4), ('EC', 4), ('AC', 12), 'Dash', 'DoubleJump'})}}, 'gjump': {'HoruR1CutsceneTrigger': {frozenset({('AC', 12), 'Climb', 'Grenade', 'Glide', 'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 2), 'Grenade', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 6)}), frozenset({('AC', 12), 'Climb', 'Grenade', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', ('HC', 2), 'Grenade', 'Glide', 'ChargeJump'})}}}, 'HoruR3ElevatorLever': {'casual-core': {'HoruR3CutsceneTrigger': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Glide', 'WallJump'})}}, 'casual-dboost': {'HoruR3CutsceneTrigger': {frozenset({'Climb', ('HC', -1), 'ChargeJump'})}}, 'standard-core': {'HoruR3CutsceneTrigger': {frozenset({'WallJump'})}}, 'master-core': {'HoruR3CutsceneTrigger': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-abilities': {'HoruR3CutsceneTrigger': {frozenset({('AC', 12), 'DoubleJump'})}, 'HoruR3PlantCove': {frozenset({'Glide', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump', ('EC', 1)}), frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 1)})}}}, 'HoruR4PuzzleEntrance': {'casual-core': {'HoruR4CutsceneTrigger': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-abilities': {'HoruR4CutsceneTrigger': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 2)})}}, 'gjump': {'HoruR4CutsceneTrigger': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'HoruR4StompHideout': {'casual-core': {'HoruR4PuzzleEntrance': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-abilities': {'HoruR4PuzzleEntrance': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Bash', 'Dash', ('AC', 3)})}}, 'expert-dboost': {'HoruR4PuzzleEntrance': {frozenset({'ChargeJump', ('HC', 2)}), frozenset({'Bash', ('HC', 2)})}, 'HoruR4CutsceneTrigger': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 2)})}}, 'dbash': {'HoruR4PuzzleEntrance': {frozenset({'Bash'})}, 'HoruR4CutsceneTrigger': {frozenset({'Bash'})}}, 'master-dboost': {'HoruR4PuzzleEntrance': {frozenset({('AC', 12), 'DoubleJump', ('HC', 1)})}}, 'gjump': {'HoruR4PuzzleEntrance': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-core': {'HoruR4CutsceneTrigger': {frozenset({'Bash', 'ChargeJump'})}}}, 'HoruTeleporter': {'casual-core': {'HoruInnerDoor': {frozenset({'Climb', 'Open', 'ChargeJump'}), frozenset({'Open', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Open', 'Bash'})}}, 'dbash': {'HoruInnerDoor': {frozenset({'Open', 'Bash'})}}, 'master-core': {'HoruInnerDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'HoruInnerDoor': {frozenset({'Open', ('AC', 12), 'DoubleJump', 'WallJump'})}}}, 'Iceless': {'casual-core': {'UpperGrotto': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'UpperGrotto': {frozenset({'Grenade', 'Bash'})}}, 'standard-dboost': {'UpperGrotto': {frozenset({('HC', 1)})}}, 'gjump': {'UpperGrotto': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'InnerSwampAboveDrainArea': {'casual-core': {'InnerSwampDrainBroken': {frozenset({'ChargeFlame', 'Water'}), frozenset({'Grenade'})}}, 'casual-dboost': {'InnerSwampDrainBroken': {frozenset({'ChargeFlame'})}}}, 'InnerSwampDrainBroken': {'casual-core': {'Swamp': {frozenset({'Climb', 'ChargeJump', 'Water'}), frozenset({'Climb', 'Bash', 'Grenade', 'Water'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump', 'Water'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'WallJump', 'Water'})}}, 'casual-dboost': {'Swamp': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Water'}), frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'Swamp': {frozenset({'DoubleJump', 'Water'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'expert-dboost': {'Swamp': {frozenset({'ChargeJump'}), frozenset({'Climb', ('HC', 0), 'Water'})}}, 'master-core': {'Swamp': {frozenset({'Bash'})}}, 'standard-core': {'Swamp': {frozenset({'Climb', 'DoubleJump', 'Water'})}}, 'standard-abilities': {'Swamp': {frozenset({'Climb', 'Dash', ('AC', 3), 'Water'}), frozenset({'Dash', ('AC', 3), 'WallJump', 'Water'})}}, 'master-dboost': {'Swamp': {frozenset({('HC', 10), 'WallJump'}), frozenset({'Climb', ('HC', 4), ('AC', 12)}), frozenset({'Climb', ('HC', 10)}), frozenset({('HC', 10), 'DoubleJump'}), frozenset({('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({('HC', 4), ('AC', 12), 'WallJump'})}}}, 'L2OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'L3OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'L4': {'casual-core': {'HoruL4LavaChasePeg': {frozenset({'Bash'})}}, 'expert-core': {'HoruL4CutscenePeg': {frozenset({'Free'})}}}, 'LeftGlades': {'casual-core': {'UpperLeftGlades': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'standard-lure': {'UpperLeftGlades': {frozenset({'Bash'})}}, 'expert-core': {'UpperLeftGlades': {frozenset({'DoubleJump'})}}}, 'LeftGumoHideout': {'casual-core': {'WaterVeinArea': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'})}}, 'standard-core': {'WaterVeinArea': {frozenset({'Climb', 'DoubleJump'})}}, 'standard-abilities': {'WaterVeinArea': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'master-core': {'WaterVeinArea': {frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}}}, 'LeftSorrow': {'casual-core': {'LeftSorrowKeystones': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide'})}}, 'expert-dboost': {'LeftSorrowKeystones': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}}, 'master-dboost': {'LeftSorrowKeystones': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)})}}, 'master-abilities': {'LeftSorrowKeystones': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}, 'master-core': {'LeftSorrowKeystones': {frozenset({'Bash'})}}}, 'LeftSorrowKeystones': {'casual-core': {'LeftSorrowMiddleDoor': {frozenset({('KS', 4)})}}, 'standard-core': {'MiddleSorrow': {frozenset({'Bash', 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'Dash', 'DoubleJump'})}}, 'expert-abilities': {'MiddleSorrow': {frozenset({'Bash', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Bash', ('AC', 6), 'Dash'})}}, 'dbash': {'MiddleSorrow': {frozenset({'Bash'})}}, 'master-abilities': {'MiddleSorrow': {frozenset({'ChargeJump', ('AC', 12), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'Stomp', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 12), 'Climb', 'Stomp', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', 'ChargeJump', 'WallJump'})}}}, 'LeftSorrowLowerDoor': {'casual-core': {'LeftSorrow': {frozenset({'Glide', 'Stomp', 'Bash'})}}, 'standard-core': {'LeftSorrow': {frozenset({'Climb', 'Bash', 'ChargeJump', 'Stomp'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'ChargeJump', 'Stomp', 'WallJump'})}}, 'expert-dboost': {'LeftSorrow': {frozenset({'Climb', 'ChargeJump', ('HC', 2)})}}, 'dbash': {'LeftSorrow': {frozenset({'Bash', 'Stomp', ('HC', 2)}), frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}}}, 'LeftSorrowMiddleDoor': {'casual-core': {'MiddleSorrow': {frozenset({'Bash', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Climb', 'Bash', 'Stomp', 'DoubleJump'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'})}}, 'standard-core': {'MiddleSorrow': {frozenset({'Climb', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'WallJump'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}}, 'expert-dboost': {'MiddleSorrow': {frozenset({'Climb', ('HC', 2), 'Bash', 'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'MiddleSorrow': {frozenset({('AC', 6), 'Climb', 'Dash', 'Bash', 'ChargeJump'}), frozenset({('AC', 6), 'Bash', 'Stomp', 'Dash'})}}, 'master-dboost': {'MiddleSorrow': {frozenset({('AC', 12), 'Climb', 'Bash', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'glitched': {'MiddleSorrow': {frozenset({'Dash'})}}}, 'LostGrove': {'casual-core': {'LostGroveExit': {frozenset({'Grenade', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}}, 'casual-dboost': {'LostGroveExit': {frozenset({'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'})}}, 'expert-core': {'LostGroveExit': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Glide', 'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'WallJump'})}}, 'expert-dboost': {'LostGroveExit': {frozenset({'Grenade', ('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Dash', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', ('HC', 4)}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'WallJump'})}}, 'expert-abilities': {'LostGroveExit': {frozenset({'Climb', 'Dash', 'Grenade', 'ChargeJump', ('AC', 3)})}}, 'master-abilities': {'LostGroveExit': {frozenset({'Grenade', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump', 'WallJump'})}}, 'gjump': {'LostGroveExit': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}}}, 'LowerBlackroot': {'casual-core': {'LostGrove': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Grenade'})}}, 'expert-core': {'LostGrove': {frozenset({'Grenade', 'DoubleJump'})}}}, 'LowerChargeFlameArea': {'casual-core': {'GladesMain': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'ChargeFlameAreaStump': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'standard-core': {'GladesMain': {frozenset({'Stomp'})}}, 'expert-abilities': {'GladesMain': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'ChargeFlameAreaStump': {frozenset({'DoubleJump'})}}, 'master-lure': {'ChargeFlameAreaStump': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', ('AC', 6), 'Dash'}), frozenset({'Bash', 'Stomp'})}}}, 'LowerGinsoTree': {'casual-core': {'GinsoMiniBossDoor': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide'}), frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'}), frozenset({'Glide', 'WallJump'})}}, 'standard-dboost': {'GinsoMiniBossDoor': {frozenset({'Climb', ('HC', 0)}), frozenset({('HC', 0), 'WallJump'}), frozenset({'ChargeJump', ('HC', 0)})}}, 'standard-abilities': {'GinsoMiniBossDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'expert-core': {'GinsoMiniBossDoor': {frozenset({'WallJump'})}}, 'master-core': {'GinsoMiniBossDoor': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}, 'glitched': {'R4InnerDoor': {frozenset({'Dash'})}}}, 'LowerLeftGumoHideout': {'glitched': {'LowerBlackroot': {frozenset({'Dash'})}}}, 'LowerSorrow': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'DoubleJump'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Bash', 'WallJump'})}, 'SorrowMapstoneArea': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'LeftSorrowLowerDoor': {frozenset({('KS', 4)})}, 'LeftSorrow': {frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}, 'MiddleSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'WilhelmLedge': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}, 'MiddleSorrow': {frozenset({'Glide', 'Bash'})}}, 'expert-dboost': {'WilhelmLedge': {frozenset({'Glide', ('HC', 2)}), frozenset({'DoubleJump', ('HC', 2)})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Dash', ('AC', 6)})}, 'LeftSorrow': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'Stomp', 'ChargeJump'}), frozenset({('AC', 6), 'Dash', 'ChargeJump', 'DoubleJump'}), frozenset({('EC', 2), 'Dash', 'ChargeJump', ('AC', 6)})}, 'MiddleSorrow': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'WilhelmLedge': {frozenset({'Bash'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Bash'})}, 'SorrowMapstoneArea': {frozenset({'Bash'})}, 'LeftSorrow': {frozenset({'Bash'})}, 'SunstoneArea': {frozenset({'Glide', 'Bash'})}}, 'master-dboost': {'WilhelmLedge': {frozenset({'Glide', ('AC', 12), ('HC', 1)})}, 'LeftSorrow': {frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}}, 'master-abilities': {'WilhelmLedge': {frozenset({('AC', 12), 'DoubleJump'})}, 'LeftSorrow': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}, 'standard-lure': {'SorrowMapstoneArea': {frozenset({'Climb', 'Glide'}), frozenset({'Glide', 'WallJump'})}}, 'gjump': {'LeftSorrow': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'MiddleSorrow': {frozenset({'Bash'})}}, 'glitched': {'MiddleSorrow': {frozenset({'Glide', 'ChargeJump'})}}}, 'LowerSpiritCaverns': {'casual-core': {'MidSpiritCaverns': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'GladesLaserArea': {frozenset({'Bash', ('EC', 4)})}, 'SpiritCavernsDoor': {frozenset({'Open'})}}, 'expert-core': {'MidSpiritCaverns': {frozenset({'Bash', 'Dash'})}}, 'dbash': {'MidSpiritCaverns': {frozenset({'Bash'})}}, 'master-core': {'MidSpiritCaverns': {frozenset({'DoubleJump'})}}}, 'LowerValley': {'casual-core': {'LowerValleyPlantApproach': {frozenset({'Glide', 'Wind'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'DoubleJump'})}, 'MistyEntrance': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Wind'})}, 'ValleyTeleporter': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'DoubleJump'})}}, 'standard-lure': {'LowerValleyPlantApproach': {frozenset({'Bash'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}}, 'standard-core': {'ValleyThreeBirdLever': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}, 'MistyEntrance': {frozenset({'Climb', 'Bash', 'Grenade'})}, 'ValleyTeleporter': {frozenset({'Climb', 'Bash', 'Grenade', 'OpenWorld'}), frozenset({'OpenWorld', 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'ValleyThreeBirdLever': {frozenset({('HC', 1)})}}, 'expert-dboost': {'ValleyThreeBirdLever': {frozenset({('HC', -1)})}}, 'dbash': {'ValleyThreeBirdLever': {frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'MistyEntrance': {frozenset({'Dash', ('AC', 6)})}, 'ValleyTeleporter': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}, 'master-lure': {'MistyEntrance': {frozenset({'Bash'})}, 'ValleyTeleporter': {frozenset({'Bash', 'OpenWorld'})}}}, 'MidSpiritCaverns': {'casual-core': {'GladesLaserArea': {frozenset({('EC', 4)})}, 'UpperSpiritCaverns': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'glitched': {'GladesLaserArea': {frozenset({('EC', 3)})}}, 'casual-dboost': {'UpperSpiritCaverns': {frozenset({'DoubleJump'})}}, 'standard-core': {'UpperSpiritCaverns': {frozenset({'Bash'})}}}, 'MiddleSorrow': {'casual-core': {'UpperSorrow': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Stomp'})}, 'LowerSorrow': {frozenset({'Stomp'})}}, 'gjump': {'UpperSorrow': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'UpperSorrow': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'ChargeJump', ('HC', 2)})}}, 'master-dboost': {'UpperSorrow': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)})}}, 'expert-abilities': {'LeftSorrow': {frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'})}, 'LeftSorrowKeystones': {frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}, 'LowerSorrow': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-core': {'SorrowMainShaftKeystoneArea': {frozenset({'Climb', 'ChargeJump'})}, 'LowerSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'SorrowMainShaftKeystoneArea': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'LowerSorrow': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'SunstoneArea': {frozenset({'Glide', 'Bash'})}}}, 'MistyAbove200xp': {'casual-core': {'MistyBeforeMiniBoss': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'MistyBeforeMiniBoss': {frozenset({'Grenade', 'Bash'}), frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'MistyBeforeMiniBoss': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'MistyBeforeMiniBoss': {frozenset({'Bash'})}}}, 'MistyBeforeDocks': {'casual-core': {'MistyAbove200xp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'})}}, 'standard-core': {'MistyAbove200xp': {frozenset({'Glide', 'ChargeJump'})}}, 'standard-abilities': {'MistyAbove200xp': {frozenset({'Bash', ('AC', 6), 'Dash'}), frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-abilities': {'MistyAbove200xp': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'MistyAbove200xp': {frozenset({'Bash'})}}}, 'MistyBeforeMiniBoss': {'casual-core': {'MistyOrbRoom': {frozenset({('KS', 4)})}}}, 'MistyEntrance': {'casual-core': {'MistyPostFeatherTutorial': {frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-core': {'MistyPostFeatherTutorial': {frozenset({'Glide', 'Bash'})}}, 'standard-abilities': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', 'Glide', ('AC', 3), 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-dboost': {'MistyPostFeatherTutorial': {frozenset({('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'MistyPostFeatherTutorial': {frozenset({'Dash', ('AC', 6), ('EC', 4)}), frozenset({'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'master-core': {'MistyPostFeatherTutorial': {frozenset({'Bash'})}}, 'gjump': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 1)})}}}, 'MistyKeystone3Ledge': {'casual-core': {'MistyPreLasers': {frozenset({'Glide'})}}, 'standard-abilities': {'MistyPreLasers': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}}, 'expert-core': {'MistyPreLasers': {frozenset({'Grenade', 'Bash'}), frozenset({'Dash', 'DoubleJump'})}}, 'expert-dboost': {'MistyPreLasers': {frozenset({'ChargeJump', ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'MistyPreLasers': {frozenset({('HC', 4), 'WallJump'})}}, 'gjump': {'MistyPreLasers': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}}}, 'MistyKeystone4Ledge': {'casual-core': {'MistyBeforeDocks': {frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'Glide'}), frozenset({'Climb', 'Bash', 'Glide', 'DoubleJump'})}}, 'standard-core': {'MistyBeforeDocks': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'})}}, 'master-abilities': {'MistyBeforeDocks': {frozenset({'Dash', ('AC', 6)})}}, 'master-dboost': {'MistyBeforeDocks': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 7)})}}, 'master-lure': {'MistyBeforeDocks': {frozenset({'Bash'})}}}, 'MistyMortarSpikeCave': {'casual-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}}, 'standard-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash'})}}, 'expert-abilities': {'MistyKeystone4Ledge': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'master-core': {'MistyKeystone4Ledge': {frozenset({'Bash'})}}, 'master-abilities': {'MistyKeystone4Ledge': {frozenset({'Dash', ('AC', 6)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}}, 'MistyOrbRoom': {'casual-core': {'MistyPreKeystone2': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'master-core': {'MistyPreKeystone2': {frozenset({'DoubleJump'})}}}, 'MistyPostClimb': {'casual-core': {'MistySpikeCave': {frozenset({'Climb', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'MistySpikeCave': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'MistySpikeCave': {frozenset({'ChargeJump'})}}, 'expert-abilities': {'MistySpikeCave': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'dbash': {'MistySpikeCave': {frozenset({'Bash'})}}, 'master-core': {'MistySpikeCave': {frozenset({'DoubleJump'})}}}, 'MistyPostFeatherTutorial': {'casual-core': {'MistyPostKeystone1': {frozenset({'Free'})}}}, 'MistyPostKeystone1': {'casual-core': {'MistyPreMortarCorridor': {frozenset({'Glide', 'Bash'})}}, 'expert-core': {'MistyPreMortarCorridor': {frozenset({'Glide'})}}, 'expert-dboost': {'MistyPreMortarCorridor': {frozenset({('HC', 6)}), frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-core': {'MistyPreMortarCorridor': {frozenset({'Bash'})}}, 'master-abilities': {'MistyPreMortarCorridor': {frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump'})}}, 'master-dboost': {'MistyPreMortarCorridor': {frozenset({('HC', 3)}), frozenset({('AC', 12), ('HC', 1)})}}}, 'MistyPostLasers': {'casual-core': {'MistyMortarSpikeCave': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'standard-core': {'MistyMortarSpikeCave': {frozenset({'Glide', 'Bash'})}}, 'expert-core': {'MistyMortarSpikeCave': {frozenset({'Glide'})}}, 'master-core': {'MistyMortarSpikeCave': {frozenset({'Bash'})}}}, 'MistyPostMortarCorridor': {'casual-core': {'MistyPrePlantLedge': {frozenset({'Bash'})}}, 'standard-core': {'MistyPrePlantLedge': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'})}}, 'master-core': {'MistyPrePlantLedge': {frozenset({'DoubleJump'})}}, 'master-abilities': {'MistyPrePlantLedge': {frozenset({'Dash', ('AC', 6)})}}}, 'MistyPreClimb': {'casual-core': {'MistyPostClimb': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Stomp'})}}, 'expert-core': {'MistyPostClimb': {frozenset({'Grenade', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}}, 'master-core': {'MistyPostClimb': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump'})}}, 'glitched': {'ForlornTeleporter': {frozenset({'Dash'})}, 'RightForlorn': {frozenset({'Dash'})}}}, 'MistyPreLasers': {'casual-core': {'MistyPostLasers': {frozenset({'Climb', 'Glide', 'WallJump'})}}, 'standard-core': {'MistyPostLasers': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'expert-core': {'MistyPostLasers': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-core': {'MistyPostLasers': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}}, 'MistyPreMortarCorridor': {'casual-core': {'MistyPostMortarCorridor': {frozenset({'Glide'})}}, 'expert-dboost': {'MistyPostMortarCorridor': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', 'DoubleJump', ('AC', 3), ('HC', 1)})}}, 'master-core': {'MistyPostMortarCorridor': {frozenset({'Grenade', 'Bash', 'DoubleJump'})}}, 'master-abilities': {'MistyPostMortarCorridor': {frozenset({'Dash', ('AC', 6)})}}, 'master-dboost': {'MistyPostMortarCorridor': {frozenset({('AC', 12), ('HC', 6)}), frozenset({('HC', 7)})}}, 'glitched': {'RightForlorn': {frozenset({'Free'})}}}, 'MistyPrePlantLedge': {'casual-core': {'MistyPreClimb': {frozenset({'ChargeJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}}, 'standard-core': {'MistyPreClimb': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}}, 'expert-core': {'MistyPreClimb': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'master-core': {'MistyPreClimb': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}}, 'MistySpikeCave': {'casual-core': {'MistyKeystone3Ledge': {frozenset({'Climb', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'MistyKeystone3Ledge': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-core': {'MistyKeystone3Ledge': {frozenset({'DoubleJump'})}}, 'master-core': {'MistyKeystone3Ledge': {frozenset({'Bash'})}}, 'master-dboost': {'MistyKeystone3Ledge': {frozenset({'ChargeJump', ('HC', 1)})}}}, 'MoonGrotto': {'casual-core': {'MoonGrottoAboveTeleporter': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'DeathGauntlet': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'WaterVeinArea': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'MoonGrottoBelowTeleporter': {frozenset({'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'master-core': {'MoonGrottoAboveTeleporter': {frozenset({'DoubleJump'})}}, 'expert-abilities': {'MoonGrottoAboveTeleporter': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}}, 'standard-core': {'WaterVeinArea': {frozenset({'Dash'})}}, 'expert-core': {'WaterVeinArea': {frozenset({'WallJump'})}}, 'master-lure': {'WaterVeinArea': {frozenset({'Bash'})}}, 'standard-dboost': {'MoonGrottoBelowTeleporter': {frozenset({'Glide', ('HC', 1)})}}, 'standard-abilities': {'MoonGrottoBelowTeleporter': {frozenset({'Dash', ('AC', 3)})}}}, 'MoonGrottoAboveTeleporter': {'casual-core': {'UpperGrotto': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'})}, 'MoonGrottoSwampAccessArea': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'})}}, 'standard-core': {'UpperGrotto': {frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'UpperGrotto': {frozenset({'Climb', 'Glide'})}, 'MoonGrottoStompPlantAccess': {frozenset({'ChargeFlame'})}}, 'master-core': {'UpperGrotto': {frozenset({'DoubleJump'}), frozenset({'Bash', 'Dash', ('AC', 3)})}}, 'casual-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'DoubleJump'})}}, 'standard-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'ChargeJump', ('HC', 0)})}}, 'expert-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'Dash', ('HC', 1)})}}, 'expert-abilities': {'MoonGrottoSwampAccessArea': {frozenset({'Dash', ('AC', 6)})}}, 'gjump': {'MoonGrottoSwampAccessArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-lure': {'DeathGauntletRoof': {frozenset({'Bash'})}, 'MoonGrottoBelowTeleporter': {frozenset({'Bash'})}}}, 'MoonGrottoSwampAccessArea': {'casual-core': {'InnerSwampAboveDrainArea': {frozenset({'ChargeJump'})}}, 'standard-lure': {'InnerSwampAboveDrainArea': {frozenset({'Bash'})}}, 'expert-lure': {'InnerSwampAboveDrainArea': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Climb', 'ChargeFlame'})}}, 'master-lure': {'InnerSwampAboveDrainArea': {frozenset({'Grenade', 'DoubleJump'})}}}, 'OuterSwampAbilityCellNook': {'glitched': {'InnerSwampSkyArea': {frozenset({'Dash'})}}}, 'OuterSwampLowerArea': {'casual-core': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Bash'})}, 'OuterSwampUpperArea': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'OuterSwampAbilityCellNook': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'})}, 'OuterSwampMortarPlantAccess': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash'})}, 'SwampEntryArea': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'UpperGrotto': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'expert-abilities': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampUpperArea': {frozenset({'Dash', ('AC', 6)})}}, 'master-abilities': {'OuterSwampMortarAbilityCellLedge': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}, 'expert-core': {'OuterSwampUpperArea': {frozenset({'Climb'}), frozenset({'WallJump'})}}, 'standard-core': {'OuterSwampAbilityCellNook': {frozenset({'Climb'}), frozenset({'Bash'}), frozenset({'WallJump'})}}}, 'OuterSwampMortarAbilityCellLedge': {'expert-core': {'OuterSwampMortarPlantAccess': {frozenset({'ChargeFlame'})}}}, 'OuterSwampUpperArea': {'casual-core': {'GinsoOuterDoor': {frozenset({'GinsoKey'})}, 'OuterSwampAbilityCellNook': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'OuterSwampAbilityCellNook': {frozenset({'Free'})}}}, 'OutsideForlorn': {'casual-core': {'OutsideForlornCliff': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'})}, 'ForlornOuterDoor': {frozenset({'ForlornKey'})}}, 'expert-abilities': {'OutsideForlornCliff': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'OutsideForlornCliff': {frozenset({'Bash'})}}, 'master-core': {'OutsideForlornCliff': {frozenset({'ChargeJump', 'DoubleJump'})}}, 'glitched': {'RightForlorn': {frozenset({'Free'})}}}, 'OutsideForlornCliff': {'casual-core': {'ValleyForlornApproach': {frozenset({'Stomp', 'ChargeJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Bash'})}}, 'expert-core': {'ValleyForlornApproach': {frozenset({'ChargeFlame', 'Stomp', 'WallJump'}), frozenset({'ChargeFlame', 'Stomp', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump'})}}, 'master-core': {'ValleyForlornApproach': {frozenset({'Bash'})}}}, 'R1': {'casual-core': {'HoruR1MapstoneSecret': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'HoruR1MapstoneSecret': {frozenset({'Grenade', 'Bash'})}}, 'standard-abilities': {'HoruR1MapstoneSecret': {frozenset({'Dash', ('AC', 3)})}}, 'expert-dboost': {'HoruR1MapstoneSecret': {frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'Bash', ('HC', 2)}), frozenset({'Dash', ('HC', 2)})}}, 'master-dboost': {'HoruR1MapstoneSecret': {frozenset({'Dash', ('AC', 12), ('HC', 1)}), frozenset({('HC', 6)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)}), frozenset({'Bash', ('AC', 12), ('HC', 1)}), frozenset({('HC', 4), ('AC', 12)})}}, 'gjump': {'HoruR1MapstoneSecret': {frozenset({('AC', 12), 'Climb', 'Grenade', 'ChargeJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 2)}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'Grenade'})}}}, 'R1OuterDoor': {'expert-core': {'L1OuterDoor': {frozenset({'Free'})}}}, 'R3': {'casual-core': {'HoruR3ElevatorLever': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Climb'})}}, 'expert-core': {'HoruR3ElevatorLever': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'WallJump'})}}, 'master-abilities': {'HoruR3ElevatorLever': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}}, 'R3OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'R4': {'casual-core': {'HoruR4StompHideout': {frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Grenade'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-core': {'HoruR4StompHideout': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'HoruR4StompHideout': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', 'Stomp'})}}, 'expert-abilities': {'HoruR4StompHideout': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'expert-dboost': {'HoruR4StompHideout': {frozenset({('HC', 3), 'Bash'})}}, 'dbash': {'HoruR4StompHideout': {frozenset({'Bash'})}}}, 'RazielNoArea': {'casual-core': {'BlackrootGrottoConnection': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}, 'standard-core': {'BlackrootGrottoConnection': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'BlackrootGrottoConnection': {frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'})}}, 'expert-dboost': {'BlackrootGrottoConnection': {frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'glitched': {'BlackrootGrottoConnection': {frozenset({'Climb'})}, 'GumoHideout': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}}, 'SorrowBashLedge': {'casual-core': {'LowerSorrow': {frozenset({'Glide', 'Wind'})}}, 'expert-lure': {'LowerSorrow': {frozenset({'Climb', 'Dash', 'Glide', 'DoubleJump', 'Bash'}), frozenset({'Dash', 'Glide', 'DoubleJump', 'WallJump', 'Bash'})}}, 'dbash': {'LowerSorrow': {frozenset({'Bash'})}}, 'expert-dboost': {'LowerSorrow': {frozenset({'Climb', 'ChargeJump', ('HC', 6)}), frozenset({'ChargeJump', ('HC', 6), 'WallJump'})}}, 'master-dboost': {'LowerSorrow': {frozenset({('AC', 12), ('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', ('AC', 12)}), frozenset({('AC', 12), ('HC', 10), 'DoubleJump', 'WallJump'})}}}, 'SorrowMapstoneArea': {'glitched': {'HoruInnerDoor': {frozenset({'Dash'})}}}, 'SorrowTeleporter': {'casual-core': {'BelowSunstoneArea': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'AboveChargeJumpArea': {frozenset({'Climb', 'Stomp', 'ChargeJump'})}}, 'standard-core': {'BelowSunstoneArea': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'AboveChargeJumpArea': {frozenset({'Climb', 'ChargeJump'})}}, 'gjump': {'BelowSunstoneArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'BelowSunstoneArea': {frozenset({'Grenade', 'Stomp', ('HC', 2), 'Bash'}), frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'Glide', 'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'WallJump', 'Dash', ('HC', 2), 'ChargeJump', ('AC', 3)})}, 'AboveChargeJumpArea': {frozenset({('HC', 2), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'master-core': {'BelowSunstoneArea': {frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'Stomp', 'Bash'})}, 'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Stomp', 'Bash'})}}, 'master-dboost': {'BelowSunstoneArea': {frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'ChargeJump', 'WallJump'}), frozenset({('AC', 12), ('HC', 1), 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), ('HC', 1), 'Glide', 'ChargeJump', 'WallJump'})}}, 'expert-core': {'AboveChargeJumpArea': {frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'})}}, 'expert-abilities': {'AboveChargeJumpArea': {frozenset({'WallJump', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}}, 'SpiderSacArea': {'casual-core': {'SpiderSacTetherArea': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'SpiderWaterArea': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'SpiderSacEnergyNook': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'SpiritTreeRefined': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Climb'})}}, 'master-core': {'SpiderSacTetherArea': {frozenset({'DoubleJump'})}, 'SpiritTreeRefined': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}}, 'expert-abilities': {'SpiderWaterArea': {frozenset({'Dash', ('AC', 3)})}, 'SpiderSacEnergyNook': {frozenset({'Dash', ('AC', 3)})}}, 'standard-core': {'SpiritTreeRefined': {frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}}, 'SpiderSacEnergyNook': {'master-abilities': {'ChargeFlameAreaPlantAccess': {frozenset({'ChargeFlame', ('AC', 3)})}}}, 'SpiderSacTetherArea': {'casual-core': {'SpiderWaterArea': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SpiderSacEnergyNook': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-abilities': {'SpiderWaterArea': {frozenset({'Grenade', 'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'SpiderSacEnergyNook': {frozenset({'Grenade', 'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}}, 'SpiderWaterArea': {'casual-core': {'SpiderSacEnergyNook': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'SpiderSacArea': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}, 'HollowGrove': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'DeathGauntletRoof': {frozenset({'Stomp', 'WallJump', 'Water'}), frozenset({'Bash', 'Stomp', 'Water'}), frozenset({'Climb', 'Stomp', 'Water'})}}, 'standard-core': {'SpiderSacEnergyNook': {frozenset({'Dash', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'})}, 'SpiderSacArea': {frozenset({'Climb', 'Bash'}), frozenset({'Glide', 'Dash', 'WallJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Climb', 'Dash', 'Glide'})}, 'HollowGrove': {frozenset({'Bash'})}}, 'expert-core': {'SpiderSacEnergyNook': {frozenset({'DoubleJump'})}}, 'dbash': {'SpiderSacEnergyNook': {frozenset({'Bash'})}, 'SpiderSacArea': {frozenset({'Bash'})}}, 'expert-abilities': {'SpiderSacEnergyNook': {frozenset({'Dash', ('AC', 3)})}, 'SpiderSacArea': {frozenset({'Dash', ('AC', 6)})}}, 'gjump': {'SpiderSacEnergyNook': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'SpiderSacArea': {frozenset({'Climb', 'ChargeJump'})}}, 'master-abilities': {'HollowGrove': {frozenset({'Dash', ('AC', 6)})}}, 'expert-dboost': {'DeathGauntletRoof': {frozenset({'Climb', 'Stomp', ('HC', 2)}), frozenset({'Stomp', 'WallJump', ('HC', 2)}), frozenset({'Bash', 'Stomp', ('HC', 1)}), frozenset({'Stomp', 'DoubleJump', ('HC', 2)})}}, 'master-dboost': {'DeathGauntletRoof': {frozenset({'Climb', 'Stomp', ('AC', 12)}), frozenset({'Stomp', ('AC', 12), 'WallJump'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}}}, 'SpiritCavernsDoor': {'casual-core': {'SpiritCavernsDoorOpened': {frozenset({('KS', 2)})}}}, 'SpiritCavernsDoorOpened': {'casual-core': {'LowerSpiritCaverns': {frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'})}}, 'standard-lure': {'LowerSpiritCaverns': {frozenset({'Bash'})}}, 'expert-abilities': {'LowerSpiritCaverns': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'LowerSpiritCaverns': {frozenset({'DoubleJump'})}}}, 'SpiritTreeDoor': {'casual-core': {'SpiritTreeDoorOpened': {frozenset({('KS', 4)})}}}, 'SpiritTreeDoorOpened': {'casual-core': {'SpiritTreeRefined': {frozenset({'Climb'}), frozenset({'Bash'}), frozenset({'WallJump'})}}, 'casual-dboost': {'SpiritTreeRefined': {frozenset({'ChargeJump'})}}, 'master-core': {'SpiritTreeRefined': {frozenset({'DoubleJump'})}}}, 'SpiritTreeRefined': {'casual-core': {'SpiritTreeDoor': {frozenset({'Open'})}, 'ValleyEntry': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SpiderSacArea': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'ChargeFlame', 'Climb', 'Glide'}), frozenset({'Grenade', 'WallJump'}), frozenset({'ChargeFlame', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Climb', 'Dash'}), frozenset({'Grenade', 'Climb', 'Glide'}), frozenset({'Grenade', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Climb', 'Dash'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'ChargeJump'})}}, 'standard-core': {'ValleyEntry': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'expert-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacArea': {frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'WallJump'})}}, 'expert-core': {'SpiderSacArea': {frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'Climb'})}}, 'master-core': {'SpiderSacArea': {frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}}, 'master-abilities': {'SpiderSacArea': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}}}, 'SunkenGladesRunaway': {'casual-core': {'GladesMain': {frozenset({('KS', 2)}), frozenset({'OpenWorld'})}, 'BlackrootDarknessRoom': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'DeathGauntletDoor': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'SpiritTreeRefined': {frozenset({'TPGrove'})}, 'MoonGrotto': {frozenset({'TPGrotto'})}, 'SwampTeleporter': {frozenset({'TPSwamp'})}, 'ValleyTeleporter': {frozenset({'TPValley'})}, 'SorrowTeleporter': {frozenset({'TPSorrow'})}, 'GinsoTeleporter': {frozenset({'TPGinso'})}, 'ForlornTeleporter': {frozenset({'TPForlorn'})}, 'HoruTeleporter': {frozenset({'TPHoru', 'HoruKey'})}}, 'glitched': {'LowerChargeFlameArea': {frozenset({'Grenade'})}}, 'master-core': {'BlackrootDarknessRoom': {frozenset({'DoubleJump'})}, 'DeathGauntletDoor': {frozenset({'DoubleJump'})}}, 'casual-dboost': {'DeathGauntletDoor': {frozenset({'Climb'}), frozenset({'WallJump'})}}, 'standard-lure': {'DeathGauntletDoor': {frozenset({'Bash'})}}}, 'SunstoneArea': {'casual-core': {'UpperSorrow': {frozenset({'Stomp'})}, 'SorrowTeleporter': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'standard-core': {'UpperSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-dboost': {'SorrowTeleporter': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 2)})}}}, 'Swamp': {'casual-core': {'SwampDrainlessArea': {frozenset({'Stomp'})}, 'SwampKeyDoorPlatform': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'ChargeJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'SwampWater': {frozenset({'Water'})}}, 'expert-core': {'SwampDrainlessArea': {frozenset({'Climb', 'ChargeJump'})}}, 'casual-dboost': {'SwampKeyDoorPlatform': {frozenset({'Free'})}}, 'standard-core': {'SwampKeyDoorPlatform': {frozenset({'Dash'})}}, 'master-dboost': {'SwampWater': {frozenset({('HC', 4), ('AC', 12)}), frozenset({('HC', 12)})}}}, 'SwampEntryArea': {'casual-core': {'SwampDrainlessArea': {frozenset({'Climb', 'Stomp'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}, 'Swamp': {frozenset({'Stomp', 'ChargeJump'})}}, 'standard-core': {'SwampDrainlessArea': {frozenset({'Climb', 'ChargeJump'})}, 'Swamp': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'SwampDrainlessArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'Swamp': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}}}, 'SwampKeyDoorOpened': {'casual-core': {'RightSwamp': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'})}}, 'standard-core': {'RightSwamp': {frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'standard-dboost': {'RightSwamp': {frozenset({'Climb', 'ChargeJump', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0), 'WallJump'}), frozenset({('HC', 0), 'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump', ('HC', 0)})}}, 'expert-dboost': {'RightSwamp': {frozenset({'Climb', 'DoubleJump', ('HC', 2)}), frozenset({('HC', 0), 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', ('HC', 0), 'WallJump', 'Water'}), frozenset({'DoubleJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'Dash', ('AC', 6), ('HC', 0)}), frozenset({('AC', 6), ('HC', 0), 'Dash', ('EC', 3), 'Bash'}), frozenset({'Dash', ('AC', 6), ('HC', 0), 'WallJump'})}}, 'expert-abilities': {'RightSwamp': {frozenset({('EC', 2), 'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6), ('EC', 2)})}}, 'dbash': {'RightSwamp': {frozenset({'Bash', 'Water'}), frozenset({'Bash', ('HC', 2)})}}, 'master-dboost': {'RightSwamp': {frozenset({('HC', 9), 'WallJump'}), frozenset({('AC', 12), 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), 'DoubleJump'}), frozenset({('AC', 12), 'WallJump', 'Water', ('HC', 2)}), frozenset({('HC', 4), ('AC', 12), 'WallJump'}), frozenset({('HC', 6), 'WallJump', 'Water'})}}, 'master-abilities': {'RightSwamp': {frozenset({('EC', 2), 'Dash', ('AC', 6), 'DoubleJump'})}}, 'gjump': {'RightSwamp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'SwampKeyDoorPlatform': {'casual-core': {'SwampKeyDoorOpened': {frozenset({('KS', 2)})}, 'InnerSwampSkyArea': {frozenset({'Glide', 'Wind'})}}, 'standard-core': {'InnerSwampSkyArea': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'dbash': {'InnerSwampSkyArea': {frozenset({'Bash'})}}, 'gjump': {'InnerSwampSkyArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'SwampTeleporter': {'glitched': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Free'})}}}, 'TopGinsoTree': {'casual-core': {'GinsoEscape': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}}, 'standard-core': {'GinsoEscape': {frozenset({'Bash'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-dboost': {'GinsoEscape': {frozenset({('HC', 0), 'Climb', 'Dash', 'Stomp', 'DoubleJump'}), frozenset({('HC', 0), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('HC', 0), 'Climb', 'Glide', 'Stomp', 'DoubleJump'}), frozenset({('HC', 0), 'Dash', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'expert-abilities': {'GinsoEscape': {frozenset({'Stomp', ('AC', 6), 'Dash'})}}, 'master-abilities': {'GinsoEscape': {frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}}, 'master-dboost': {'GinsoEscape': {frozenset({('HC', 0), 'Stomp', 'DoubleJump', 'Dash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', ('HC', 0)})}}}, 'UpperGinsoDoorClosed': {'casual-core': {'UpperGinsoDoorOpened': {frozenset({('KS', 4)})}}}, 'UpperGinsoDoorOpened': {'casual-core': {'GinsoTeleporter': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}, 'UpperGinsoTree': {frozenset({'Open', 'Bash'}), frozenset({'Open', 'DoubleJump'}), frozenset({'Glide', 'Open'})}}, 'standard-core': {'GinsoTeleporter': {frozenset({'Bash'})}}, 'expert-dboost': {'GinsoTeleporter': {frozenset({'ChargeJump', ('HC', 2)}), frozenset({('HC', 0), 'ChargeJump', 'DoubleJump'})}}, 'master-dboost': {'GinsoTeleporter': {frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 2)})}}, 'casual-dboost': {'UpperGinsoTree': {frozenset({'Open', ('HC', 0)})}}, 'standard-abilities': {'UpperGinsoTree': {frozenset({'Open', 'Dash', ('AC', 3)})}}}, 'UpperGinsoRedirectArea': {'casual-core': {'UpperGinsoTree': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'BashTree': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}, 'master-abilities': {'UpperGinsoTree': {frozenset({'ChargeFlame', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', ('AC', 12), 'DoubleJump'}), frozenset({'ChargeFlame', ('AC', 12), 'DoubleJump', 'WallJump'})}}, 'standard-abilities': {'BashTree': {frozenset({'Dash', ('AC', 3)})}}, 'standard-dboost': {'BashTree': {frozenset({'Glide', ('HC', 1)}), frozenset({'Dash', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 1)})}}}, 'UpperGinsoTree': {'casual-core': {'UpperGinsoDoorClosed': {frozenset({'Free'})}, 'UpperGinsoRedirectArea': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Stomp'})}}, 'standard-core': {'UpperGinsoRedirectArea': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'UpperGinsoRedirectArea': {frozenset({'ChargeFlame', 'ChargeJump'})}}, 'expert-abilities': {'UpperGinsoRedirectArea': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'master-core': {'UpperGinsoRedirectArea': {frozenset({'Bash'})}}}, 'UpperGrotto': {'casual-core': {'OuterSwampMortarAbilityCellLedge': {frozenset({'ChargeJump'})}, 'MoonGrottoStompPlantAccess': {frozenset({'Stomp'})}, 'OuterSwampLowerArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'Iceless': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'Dash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'standard-core': {'MoonGrottoStompPlantAccess': {frozenset({'Climb', 'ChargeJump'})}, 'Iceless': {frozenset({'Grenade', 'Bash'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Grenade', 'Bash'})}}, 'master-core': {'MoonGrottoStompPlantAccess': {frozenset({'Bash'})}, 'Iceless': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'})}}, 'expert-core': {'OuterSwampLowerArea': {frozenset({'DoubleJump'})}}, 'standard-dboost': {'Iceless': {frozenset({'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', ('HC', 1)})}}, 'standard-abilities': {'Iceless': {frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'gjump': {'Iceless': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'glitched': {'MoonGrottoAboveTeleporter': {frozenset({'Free'})}}}, 'UpperSorrow': {'glitched': {'SunstoneArea': {frozenset({'Glide', 'ChargeJump'})}, 'SorrowTeleporter': {frozenset({'Climb', 'Glide', 'ChargeJump'})}}, 'casual-core': {'ChargeJumpDoor': {frozenset({'Free'})}}}, 'UpperSpiritCaverns': {'casual-core': {'SpiritTreeDoor': {frozenset({'Free'})}}}, 'ValleyEntry': {'casual-core': {'ValleyEntryTree': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Bash'}), frozenset({'WallJump'})}, 'ValleyEntryTreePlantAccess': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'ValleyPostStompDoor': {frozenset({'Stomp', 'ChargeJump', 'WallJump'}), frozenset({'OpenWorld', 'DoubleJump', 'WallJump'}), frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump'}), frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'ChargeJump', 'OpenWorld', 'WallJump'}), frozenset({'Climb', 'OpenWorld', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld', 'WallJump'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'DoubleJump'})}, 'ValleyStompFloor': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Glide', 'DoubleJump', 'OpenWorld'})}, 'SpiritTreeRefined': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'standard-lure': {'ValleyEntryTree': {frozenset({'Bash'})}}, 'expert-dboost': {'ValleyEntryTree': {frozenset({'ChargeJump', ('HC', 1)})}, 'ValleyPostStompDoor': {frozenset({'Stomp', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeJump', 'OpenWorld', ('HC', 1)}), frozenset({'Bash', 'ChargeJump', ('HC', 1)})}}, 'expert-abilities': {'ValleyEntryTree': {frozenset({'Dash', ('AC', 6)})}, 'ValleyEntryTreePlantAccess': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'ValleyThreeBirdLever': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyStompFloor': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'SpiritTreeRefined': {frozenset({'Dash', ('AC', 6)})}}, 'expert-core': {'ValleyEntryTreePlantAccess': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade'})}}, 'expert-lure': {'ValleyPostStompDoor': {frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'})}}, 'standard-core': {'ValleyThreeBirdLever': {frozenset({'Dash', 'ChargeJump', 'DoubleJump', 'OpenWorld'})}, 'ValleyStompFloor': {frozenset({'Glide', 'Dash', 'OpenWorld'}), frozenset({'Dash', 'DoubleJump', 'OpenWorld'})}}, 'gjump': {'ValleyThreeBirdLever': {frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'Grenade'})}}, 'standard-abilities': {'ValleyStompFloor': {frozenset({'Dash', 'ChargeJump', 'OpenWorld', ('AC', 3)})}}, 'standard-dboost': {'ValleyStompFloor': {frozenset({'OpenWorld', ('HC', 1)})}}}, 'ValleyEntryTree': {'casual-core': {'ValleyEntryTreePlantAccess': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyPostStompDoor': {frozenset({'OpenWorld'})}}, 'expert-core': {'ValleyEntryTreePlantAccess': {frozenset({'Grenade'})}}, 'expert-abilities': {'ValleyEntryTreePlantAccess': {frozenset({'Dash', ('AC', 6)})}}}, 'ValleyForlornApproach': {'casual-core': {'OutsideForlornCliff': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'ValleyStompFloor': {frozenset({'ChargeJump'})}}, 'standard-core': {'OutsideForlornCliff': {frozenset({'Stomp'})}}, 'master-core': {'ValleyStompFloor': {frozenset({'Bash'})}}}, 'ValleyMain': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Dash'}), frozenset({'Bash'}), frozenset({'DoubleJump'})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}}, 'gjump': {'WilhelmLedge': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'ValleyPostStompDoor': {'casual-core': {'ValleyRight': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'ValleyEntry': {frozenset({'OpenWorld'})}, 'ValleyEntryTree': {frozenset({'Bash', 'OpenWorld'}), frozenset({'OpenWorld', 'WallJump'}), frozenset({'ChargeJump', 'OpenWorld'}), frozenset({'OpenWorld', 'DoubleJump'}), frozenset({'Climb', 'OpenWorld'})}}, 'expert-dboost': {'ValleyRight': {frozenset({('HC', 4), 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'dbash': {'ValleyRight': {frozenset({'Bash'})}}, 'master-dboost': {'ValleyRight': {frozenset({('HC', 0), ('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({('HC', 0), ('AC', 12), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 8)})}}, 'gjump': {'ValleyRight': {frozenset({('AC', 12), 'Climb', 'Grenade', 'Stomp', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', ('HC', 2), 'Grenade', 'ChargeJump'}), frozenset({'Climb', 'Grenade', 'Stomp', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 6), 'Climb', 'Dash', 'Grenade', 'ChargeJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', 'Grenade'})}}, 'standard-core': {'ValleyEntryTree': {frozenset({'Dash', 'OpenWorld'})}}}, 'ValleyRight': {'expert-dboost': {'ValleyPostStompDoor': {frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'ValleyPostStompDoor': {frozenset({('HC', 4)}), frozenset({('AC', 12), ('HC', 2)})}}, 'casual-core': {'ValleyStomplessApproach': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 6), 'WallJump'})}}}, 'ValleyStompFloor': {'casual-core': {'ValleyForlornApproach': {frozenset({'Stomp'})}, 'ValleyThreeBirdLever': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'ValleyEntry': {frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide', 'ChargeJump', 'OpenWorld'})}}, 'standard-core': {'ValleyForlornApproach': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'ValleyForlornApproach': {frozenset({'Bash'})}}, 'standard-dboost': {'ValleyEntry': {frozenset({'ChargeJump', 'OpenWorld', ('HC', 1)})}}, 'expert-dboost': {'ValleyEntry': {frozenset({('HC', 0), 'OpenWorld', 'DoubleJump'}), frozenset({'OpenWorld', 'ChargeJump', ('HC', 0)})}}, 'expert-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}}, 'ValleyStompless': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Bash'})}, 'ValleyStomplessApproach': {frozenset({'Bash'}), frozenset({'Glide'})}, 'MistyEntrance': {frozenset({'Bash', 'OpenWorld'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'OpenWorld', 'DoubleJump'}), frozenset({'Dash', 'OpenWorld'}), frozenset({'Glide', 'OpenWorld'})}, 'LowerValley': {frozenset({'OpenWorld'})}, 'LowerValleyPlantApproach': {frozenset({'OpenWorld'})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 6), ('EC', 3)})}}, 'expert-core': {'ValleyMain': {frozenset({'Bash'})}}, 'master-core': {'ValleyMain': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-dboost': {'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'ValleyStomplessApproach': {frozenset({('HC', 7)}), frozenset({('HC', 4), 'ChargeJump'}), frozenset({('AC', 12), 'ChargeJump', ('HC', 2)}), frozenset({('HC', 4), ('AC', 12)})}}}, 'ValleyStomplessApproach': {'casual-core': {'ValleyStompless': {frozenset({'Bash'})}}, 'expert-dboost': {'ValleyStompless': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'ValleyStompless': {frozenset({('EC', 2), 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'DoubleJump', ('EC', 2)})}}, 'master-dboost': {'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}}, 'ValleyTeleporter': {'casual-core': {'ValleyPostStompDoor': {frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyRight': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Glide', 'OpenWorld'})}, 'LowerValley': {frozenset({'OpenWorld'})}, 'LowerValleyPlantApproach': {frozenset({'OpenWorld'})}, 'ValleyStompless': {frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Glide', 'OpenWorld', 'Wind'})}}, 'expert-abilities': {'ValleyPostStompDoor': {frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({'Dash', ('AC', 6), ('EC', 3)})}, 'ValleyRight': {frozenset({'Dash', ('AC', 6)})}, 'MistyEntrance': {frozenset({'Dash', 'DoubleJump', ('AC', 3), 'OpenWorld'}), frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyStompless': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}, 'master-core': {'ValleyPostStompDoor': {frozenset({'DoubleJump'})}}, 'expert-dboost': {'ValleyRight': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Glide', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', ('HC', 1)})}}, 'gjump': {'ValleyRight': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-abilities': {'ValleyRight': {frozenset({('AC', 12), 'DoubleJump'})}, 'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump', 'WallJump', 'OpenWorld'})}}, 'standard-core': {'MistyEntrance': {frozenset({'Grenade', 'Bash', 'DoubleJump', 'OpenWorld'})}}, 'standard-abilities': {'MistyEntrance': {frozenset({'OpenWorld', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'expert-core': {'MistyEntrance': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'OpenWorld'}), frozenset({'Dash', 'ChargeJump', 'DoubleJump', 'OpenWorld'}), frozenset({'Grenade', 'Bash', 'OpenWorld'})}, 'ValleyStompless': {frozenset({'Climb', 'Bash', 'Grenade', 'OpenWorld'}), frozenset({'Grenade', 'Bash', 'OpenWorld', 'WallJump'})}}, 'master-lure': {'ValleyStompless': {frozenset({'Bash', 'OpenWorld', 'WallJump'})}}}, 'ValleyThreeBirdLever': {'casual-core': {'ValleyEntry': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide'})}, 'LowerValley': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'DoubleJump'})}}, 'standard-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 3)})}, 'LowerValley': {frozenset({'Dash', ('AC', 3)})}}, 'standard-dboost': {'ValleyEntry': {frozenset({('HC', 4)})}, 'LowerValley': {frozenset({('HC', 4)})}}, 'expert-dboost': {'ValleyEntry': {frozenset({'Climb', ('HC', -1)}), frozenset({('HC', -1), 'WallJump'}), frozenset({('HC', -1), 'ChargeJump'})}, 'LowerValley': {frozenset({('HC', 2)})}}, 'standard-core': {'LowerValley': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}}, 'dbash': {'LowerValley': {frozenset({'Bash'})}}}, 'WaterVeinArea': {'casual-core': {'LeftGumoHideout': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerLeftGumoHideout': {frozenset({'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'MoonGrotto': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}}, 'standard-core': {'LeftGumoHideout': {frozenset({'Dash'})}, 'LowerLeftGumoHideout': {frozenset({'Dash'})}, 'MoonGrotto': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}}}, 'WilhelmLedge': {'casual-core': {'SorrowBashLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Bash'}), frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'ValleyStompless': {frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyMain': {frozenset({'Stomp'})}}, 'standard-core': {'SorrowBashLedge': {frozenset({'Glide', 'Dash', 'Climb', 'DoubleJump'})}, 'ValleyMain': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-abilities': {'SorrowBashLedge': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}, 'ValleyStompless': {frozenset({'Dash', ('AC', 6)})}}, 'master-abilities': {'SorrowBashLedge': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump'})}, 'ValleyMain': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-abilities': {'ValleyStompless': {frozenset({'Dash', 'DoubleJump', ('AC', 3)})}}, 'standard-lure': {'ValleyMain': {frozenset({'HoruKey'})}}, 'expert-core': {'ValleyMain': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}}, 'master-core': {'ValleyMain': {frozenset({'Bash'})}}, 'glitched': {'ValleyMain': {frozenset({'ChargeJump'})}}}} diff --git a/worlds_disabled/oribf/Types.py b/worlds_disabled/oribf/Types.py deleted file mode 100644 index 1ed2423a..00000000 --- a/worlds_disabled/oribf/Types.py +++ /dev/null @@ -1,5 +0,0 @@ -from typing import NamedTuple - -class Location(NamedTuple): - code: int - vanilla_item: str \ No newline at end of file diff --git a/worlds_disabled/oribf/__init__.py b/worlds_disabled/oribf/__init__.py deleted file mode 100644 index 6400961a..00000000 --- a/worlds_disabled/oribf/__init__.py +++ /dev/null @@ -1,71 +0,0 @@ -from typing import Set - -from worlds.AutoWorld import World -from .Items import item_table, default_pool -from .Locations import lookup_name_to_id -from .Rules import set_rules, location_rules -from .Regions import locations_by_region, connectors -from .Options import options -from BaseClasses import Region, Item, Location, Entrance, ItemClassification - - -class OriBlindForest(World): - game: str = "Ori and the Blind Forest" - - topology_present = True - data_version = 1 - - item_name_to_id = item_table - location_name_to_id = lookup_name_to_id - - option_definitions = options - - hidden = True - - def generate_early(self): - logic_sets = {"casual-core"} - for logic_set in location_rules: - if logic_set != "casual-core" and getattr(self.multiworld, logic_set.replace("-", "_")): - logic_sets.add(logic_set) - self.logic_sets = logic_sets - - set_rules = set_rules - - def create_region(self, name: str): - return Region(name, self.player, self.multiworld) - - def create_regions(self): - world = self.multiworld - menu = self.create_region("Menu") - world.regions.append(menu) - start = Entrance(self.player, "Start Game", menu) - menu.exits.append(start) - - # workaround for now, remove duplicate locations - already_placed_locations = set() - - for region_name, locations in locations_by_region.items(): - locations -= already_placed_locations - already_placed_locations |= locations - region = self.create_region(region_name) - if region_name == "SunkenGladesRunaway": # starting point - start.connect(region) - region.locations = {Location(self.player, location, lookup_name_to_id[location], region) - for location in locations} - world.regions.append(region) - - for region_name, exits in connectors.items(): - parent = world.get_region(region_name, self.player) - for exit in exits: - connection = Entrance(self.player, exit, parent) - connection.connect(world.get_region(exit, self.player)) - parent.exits.append(connection) - - def generate_basic(self): - for item_name, count in default_pool.items(): - self.multiworld.itempool.extend([self.create_item(item_name) for _ in range(count)]) - - def create_item(self, name: str) -> Item: - return Item(name, - ItemClassification.progression if not name.startswith("EX") else ItemClassification.filler, - item_table[name], self.player)