diff --git a/worlds/pokemon_crystal_prerelease/data/entrance_types.json b/worlds/pokemon_crystal_prerelease/data/entrance_types.json index fca3d9e5c987..7db72757cdaf 100644 --- a/worlds/pokemon_crystal_prerelease/data/entrance_types.json +++ b/worlds/pokemon_crystal_prerelease/data/entrance_types.json @@ -1,156 +1,156 @@ { - "REGION_AZALEA_TOWN -> REGION_CHARCOAL_KILN": "Building", - "REGION_CHARCOAL_KILN -> REGION_AZALEA_TOWN": "Building", - "REGION_AZALEA_TOWN -> REGION_KURTS_HOUSE": "Building", - "REGION_KURTS_HOUSE -> REGION_AZALEA_TOWN": "Building", - "REGION_BILLS_BROTHERS_HOUSE -> REGION_FUCHSIA_CITY": "Building", - "REGION_FUCHSIA_CITY -> REGION_BILLS_BROTHERS_HOUSE": "Building", - "REGION_BILLS_FAMILYS_HOUSE -> REGION_GOLDENROD_CITY": "Building", - "REGION_GOLDENROD_CITY -> REGION_BILLS_FAMILYS_HOUSE": "Building", - "REGION_BILLS_HOUSE -> REGION_ROUTE_25": "Building", - "REGION_ROUTE_25 -> REGION_BILLS_HOUSE": "Building", - "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_DRAGON_SPEECH_HOUSE": "Building", - "REGION_BLACKTHORN_DRAGON_SPEECH_HOUSE -> REGION_BLACKTHORN_CITY": "Building", - "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_EMYS_HOUSE": "Building", - "REGION_BLACKTHORN_EMYS_HOUSE -> REGION_BLACKTHORN_CITY": "Building", - "REGION_BLACKTHORN_CITY -> REGION_MOVE_DELETERS_HOUSE": "Building", - "REGION_MOVE_DELETERS_HOUSE -> REGION_BLACKTHORN_CITY": "Building", - "REGION_BLUES_HOUSE -> REGION_PALLET_TOWN": "Building", - "REGION_PALLET_TOWN -> REGION_BLUES_HOUSE": "Building", - "REGION_CELADON_CITY -> REGION_CELADON_MANSION_1F": "Building", - "REGION_CELADON_MANSION_1F -> REGION_CELADON_CITY": "Building", - "REGION_CELADON_CITY -> REGION_CELADON_MANSION_1F:STAIRWELL": "Building", - "REGION_CELADON_MANSION_1F:STAIRWELL -> REGION_CELADON_CITY": "Building", - "REGION_CERULEAN_CITY -> REGION_CERULEAN_GYM_BADGE_SPEECH_HOUSE": "Building", - "REGION_CERULEAN_GYM_BADGE_SPEECH_HOUSE -> REGION_CERULEAN_CITY": "Building", - "REGION_CERULEAN_CITY -> REGION_CERULEAN_POLICE_STATION": "Building", - "REGION_CERULEAN_POLICE_STATION -> REGION_CERULEAN_CITY": "Building", - "REGION_CERULEAN_CITY -> REGION_CERULEAN_TRADE_SPEECH_HOUSE": "Building", - "REGION_CERULEAN_TRADE_SPEECH_HOUSE -> REGION_CERULEAN_CITY": "Building", - "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE": "Building", - "REGION_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE -> REGION_CHERRYGROVE_CITY": "Building", - "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_GYM_SPEECH_HOUSE": "Building", - "REGION_CHERRYGROVE_GYM_SPEECH_HOUSE -> REGION_CHERRYGROVE_CITY": "Building", - "REGION_CHERRYGROVE_CITY -> REGION_GUIDE_GENTS_HOUSE": "Building", - "REGION_GUIDE_GENTS_HOUSE -> REGION_CHERRYGROVE_CITY": "Building", - "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_LUGIA_SPEECH_HOUSE": "Building", - "REGION_CIANWOOD_LUGIA_SPEECH_HOUSE -> REGION_CIANWOOD_CITY": "Building", - "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_PHOTO_STUDIO": "Building", - "REGION_CIANWOOD_PHOTO_STUDIO -> REGION_CIANWOOD_CITY": "Building", - "REGION_CIANWOOD_CITY -> REGION_MANIAS_HOUSE": "Building", - "REGION_MANIAS_HOUSE -> REGION_CIANWOOD_CITY": "Building", - "REGION_CIANWOOD_CITY -> REGION_POKE_SEERS_HOUSE": "Building", - "REGION_POKE_SEERS_HOUSE -> REGION_CIANWOOD_CITY": "Building", - "REGION_COPYCATS_HOUSE_1F -> REGION_SAFFRON_CITY": "Building", - "REGION_SAFFRON_CITY -> REGION_COPYCATS_HOUSE_1F": "Building", - "REGION_DANCE_THEATER -> REGION_ECRUTEAK_CITY": "Building", - "REGION_ECRUTEAK_CITY -> REGION_DANCE_THEATER": "Building", - "REGION_DAY_CARE -> REGION_ROUTE_34": "Building", - "REGION_ROUTE_34 -> REGION_DAY_CARE": "Building", - "REGION_DAY_CARE -> REGION_ROUTE_34:DAY_CARE_YARD": "Building", - "REGION_ROUTE_34:DAY_CARE_YARD -> REGION_DAY_CARE": "Building", - "REGION_DAY_OF_WEEK_SIBLINGS_HOUSE -> REGION_ROUTE_26": "Building", - "REGION_ROUTE_26 -> REGION_DAY_OF_WEEK_SIBLINGS_HOUSE": "Building", - "REGION_EARLS_POKEMON_ACADEMY -> REGION_VIOLET_CITY": "Building", - "REGION_VIOLET_CITY -> REGION_EARLS_POKEMON_ACADEMY": "Building", - "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_ITEMFINDER_HOUSE": "Building", - "REGION_ECRUTEAK_ITEMFINDER_HOUSE -> REGION_ECRUTEAK_CITY": "Building", - "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_LUGIA_SPEECH_HOUSE": "Building", - "REGION_ECRUTEAK_LUGIA_SPEECH_HOUSE -> REGION_ECRUTEAK_CITY": "Building", - "REGION_ELMS_HOUSE -> REGION_NEW_BARK_TOWN": "Building", - "REGION_NEW_BARK_TOWN -> REGION_ELMS_HOUSE": "Building", - "REGION_ELMS_LAB -> REGION_NEW_BARK_TOWN": "Building", - "REGION_NEW_BARK_TOWN -> REGION_ELMS_LAB": "Building", - "REGION_FUCHSIA_CITY -> REGION_SAFARI_ZONE_MAIN_OFFICE": "Building", - "REGION_SAFARI_ZONE_MAIN_OFFICE -> REGION_FUCHSIA_CITY": "Building", - "REGION_FUCHSIA_CITY -> REGION_SAFARI_ZONE_WARDENS_HOME": "Building", - "REGION_SAFARI_ZONE_WARDENS_HOME -> REGION_FUCHSIA_CITY": "Building", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_HAPPINESS_RATER": "Building", - "REGION_GOLDENROD_HAPPINESS_RATER -> REGION_GOLDENROD_CITY": "Building", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_MAGNET_TRAIN_STATION": "Building", - "REGION_GOLDENROD_MAGNET_TRAIN_STATION -> REGION_GOLDENROD_CITY": "Building", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_NAME_RATER": "Building", - "REGION_GOLDENROD_NAME_RATER -> REGION_GOLDENROD_CITY": "Building", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_PP_SPEECH_HOUSE": "Building", - "REGION_GOLDENROD_PP_SPEECH_HOUSE -> REGION_GOLDENROD_CITY": "Building", - "REGION_LAKE_OF_RAGE -> REGION_LAKE_OF_RAGE_MAGIKARP_HOUSE": "Building", - "REGION_LAKE_OF_RAGE_MAGIKARP_HOUSE -> REGION_LAKE_OF_RAGE": "Building", - "REGION_LAKE_OF_RAGE:HIDDEN_POWER_HOUSE -> REGION_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE": "Building", - "REGION_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE -> REGION_LAKE_OF_RAGE:HIDDEN_POWER_HOUSE": "Building", - "REGION_LAVENDER_NAME_RATER -> REGION_LAVENDER_TOWN": "Building", - "REGION_LAVENDER_TOWN -> REGION_LAVENDER_NAME_RATER": "Building", - "REGION_LAVENDER_SPEECH_HOUSE -> REGION_LAVENDER_TOWN": "Building", - "REGION_LAVENDER_TOWN -> REGION_LAVENDER_SPEECH_HOUSE": "Building", - "REGION_LAVENDER_TOWN -> REGION_LAV_RADIO_TOWER_1F": "Building", - "REGION_LAV_RADIO_TOWER_1F -> REGION_LAVENDER_TOWN": "Building", - "REGION_LAVENDER_TOWN -> REGION_MR_FUJIS_HOUSE": "Building", - "REGION_MR_FUJIS_HOUSE -> REGION_LAVENDER_TOWN": "Building", - "REGION_LAVENDER_TOWN -> REGION_SOUL_HOUSE": "Building", - "REGION_SOUL_HOUSE -> REGION_LAVENDER_TOWN": "Building", - "REGION_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE -> REGION_MAHOGANY_TOWN:EAST": "Building", - "REGION_MAHOGANY_TOWN:EAST -> REGION_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE": "Building", - "REGION_MR_POKEMONS_HOUSE -> REGION_ROUTE_30": "Building", - "REGION_ROUTE_30 -> REGION_MR_POKEMONS_HOUSE": "Building", - "REGION_MR_PSYCHICS_HOUSE -> REGION_SAFFRON_CITY": "Building", - "REGION_SAFFRON_CITY -> REGION_MR_PSYCHICS_HOUSE": "Building", - "REGION_NEW_BARK_TOWN -> REGION_PLAYERS_HOUSE_1F": "Building", - "REGION_PLAYERS_HOUSE_1F -> REGION_NEW_BARK_TOWN": "Building", - "REGION_NEW_BARK_TOWN -> REGION_PLAYERS_NEIGHBORS_HOUSE": "Building", - "REGION_PLAYERS_NEIGHBORS_HOUSE -> REGION_NEW_BARK_TOWN": "Building", - "REGION_OAKS_LAB -> REGION_PALLET_TOWN": "Building", - "REGION_PALLET_TOWN -> REGION_OAKS_LAB": "Building", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_GOOD_ROD_HOUSE": "Building", - "REGION_OLIVINE_GOOD_ROD_HOUSE -> REGION_OLIVINE_CITY": "Building", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_PUNISHMENT_SPEECH_HOUSE": "Building", - "REGION_OLIVINE_PUNISHMENT_SPEECH_HOUSE -> REGION_OLIVINE_CITY": "Building", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_TIMS_HOUSE": "Building", - "REGION_OLIVINE_TIMS_HOUSE -> REGION_OLIVINE_CITY": "Building", - "REGION_PALLET_TOWN -> REGION_REDS_HOUSE_1F": "Building", - "REGION_REDS_HOUSE_1F -> REGION_PALLET_TOWN": "Building", - "REGION_PEWTER_CITY -> REGION_PEWTER_NIDORAN_SPEECH_HOUSE": "Building", - "REGION_PEWTER_NIDORAN_SPEECH_HOUSE -> REGION_PEWTER_CITY": "Building", - "REGION_PEWTER_CITY -> REGION_PEWTER_SNOOZE_SPEECH_HOUSE": "Building", - "REGION_PEWTER_SNOOZE_SPEECH_HOUSE -> REGION_PEWTER_CITY": "Building", - "REGION_POKEMON_FAN_CLUB -> REGION_VERMILION_CITY": "Building", - "REGION_VERMILION_CITY -> REGION_POKEMON_FAN_CLUB": "Building", - "REGION_POWER_PLANT -> REGION_ROUTE_10_NORTH:SURF": "Building", - "REGION_ROUTE_10_NORTH:SURF -> REGION_POWER_PLANT": "Building", - "REGION_ROUTE_12:SOUTH -> REGION_ROUTE_12_SUPER_ROD_HOUSE": "Building", - "REGION_ROUTE_12_SUPER_ROD_HOUSE -> REGION_ROUTE_12:SOUTH": "Building", - "REGION_ROUTE_16:NORTH -> REGION_ROUTE_16_FUCHSIA_SPEECH_HOUSE": "Building", - "REGION_ROUTE_16_FUCHSIA_SPEECH_HOUSE -> REGION_ROUTE_16:NORTH": "Building", - "REGION_ROUTE_26 -> REGION_ROUTE_26_HEAL_HOUSE": "Building", - "REGION_ROUTE_26_HEAL_HOUSE -> REGION_ROUTE_26": "Building", - "REGION_ROUTE_27:CENTER -> REGION_ROUTE_27_SANDSTORM_HOUSE": "Building", - "REGION_ROUTE_27_SANDSTORM_HOUSE -> REGION_ROUTE_27:CENTER": "Building", - "REGION_ROUTE_28:CUT -> REGION_ROUTE_28_STEEL_WING_HOUSE": "Building", - "REGION_ROUTE_28_STEEL_WING_HOUSE -> REGION_ROUTE_28:CUT": "Building", - "REGION_ROUTE_2:NORTHEAST -> REGION_ROUTE_2_NUGGET_HOUSE": "Building", - "REGION_ROUTE_2_NUGGET_HOUSE -> REGION_ROUTE_2:NORTHEAST": "Building", - "REGION_ROUTE_30 -> REGION_ROUTE_30_BERRY_HOUSE": "Building", - "REGION_ROUTE_30_BERRY_HOUSE -> REGION_ROUTE_30": "Building", - "REGION_ROUTE_39 -> REGION_ROUTE_39_BARN": "Building", - "REGION_ROUTE_39_BARN -> REGION_ROUTE_39": "Building", - "REGION_ROUTE_5 -> REGION_ROUTE_5_CLEANSE_TAG_HOUSE": "Building", - "REGION_ROUTE_5_CLEANSE_TAG_HOUSE -> REGION_ROUTE_5": "Building", - "REGION_SAFFRON_CITY -> REGION_SAFFRON_MAGNET_TRAIN_STATION": "Building", - "REGION_SAFFRON_MAGNET_TRAIN_STATION -> REGION_SAFFRON_CITY": "Building", - "REGION_SAFFRON_CITY -> REGION_SILPH_CO_1F": "Building", - "REGION_SILPH_CO_1F -> REGION_SAFFRON_CITY": "Building", - "REGION_TRAINER_HOUSE_1F -> REGION_VIRIDIAN_CITY": "Building", - "REGION_VIRIDIAN_CITY -> REGION_TRAINER_HOUSE_1F": "Building", - "REGION_VERMILION_CITY -> REGION_VERMILION_DIGLETTS_CAVE_SPEECH_HOUSE": "Building", - "REGION_VERMILION_DIGLETTS_CAVE_SPEECH_HOUSE -> REGION_VERMILION_CITY": "Building", - "REGION_VERMILION_CITY -> REGION_VERMILION_FISHING_SPEECH_HOUSE": "Building", - "REGION_VERMILION_FISHING_SPEECH_HOUSE -> REGION_VERMILION_CITY": "Building", - "REGION_VERMILION_CITY -> REGION_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE": "Building", - "REGION_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE -> REGION_VERMILION_CITY": "Building", - "REGION_VIOLET_CITY -> REGION_VIOLET_KYLES_HOUSE": "Building", - "REGION_VIOLET_KYLES_HOUSE -> REGION_VIOLET_CITY": "Building", - "REGION_VIOLET_CITY -> REGION_VIOLET_NICKNAME_SPEECH_HOUSE": "Building", - "REGION_VIOLET_NICKNAME_SPEECH_HOUSE -> REGION_VIOLET_CITY": "Building", - "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_NICKNAME_SPEECH_HOUSE": "Building", - "REGION_VIRIDIAN_NICKNAME_SPEECH_HOUSE -> REGION_VIRIDIAN_CITY": "Building", + "REGION_AZALEA_TOWN -> REGION_CHARCOAL_KILN": "Building Entrance", + "REGION_CHARCOAL_KILN -> REGION_AZALEA_TOWN": "Building Exit", + "REGION_AZALEA_TOWN -> REGION_KURTS_HOUSE": "Building Entrance", + "REGION_KURTS_HOUSE -> REGION_AZALEA_TOWN": "Building Exit", + "REGION_BILLS_BROTHERS_HOUSE -> REGION_FUCHSIA_CITY": "Building Exit", + "REGION_FUCHSIA_CITY -> REGION_BILLS_BROTHERS_HOUSE": "Building Entrance", + "REGION_BILLS_FAMILYS_HOUSE -> REGION_GOLDENROD_CITY": "Building Exit", + "REGION_GOLDENROD_CITY -> REGION_BILLS_FAMILYS_HOUSE": "Building Entrance", + "REGION_BILLS_HOUSE -> REGION_ROUTE_25": "Building Exit", + "REGION_ROUTE_25 -> REGION_BILLS_HOUSE": "Building Entrance", + "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_DRAGON_SPEECH_HOUSE": "Building Entrance", + "REGION_BLACKTHORN_DRAGON_SPEECH_HOUSE -> REGION_BLACKTHORN_CITY": "Building Exit", + "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_EMYS_HOUSE": "Building Entrance", + "REGION_BLACKTHORN_EMYS_HOUSE -> REGION_BLACKTHORN_CITY": "Building Exit", + "REGION_BLACKTHORN_CITY -> REGION_MOVE_DELETERS_HOUSE": "Building Entrance", + "REGION_MOVE_DELETERS_HOUSE -> REGION_BLACKTHORN_CITY": "Building Exit", + "REGION_BLUES_HOUSE -> REGION_PALLET_TOWN": "Building Exit", + "REGION_PALLET_TOWN -> REGION_BLUES_HOUSE": "Building Entrance", + "REGION_CELADON_CITY -> REGION_CELADON_MANSION_1F": "Building Entrance", + "REGION_CELADON_MANSION_1F -> REGION_CELADON_CITY": "Building Exit", + "REGION_CELADON_CITY -> REGION_CELADON_MANSION_1F:STAIRWELL": "Building Entrance", + "REGION_CELADON_MANSION_1F:STAIRWELL -> REGION_CELADON_CITY": "Building Exit", + "REGION_CERULEAN_CITY -> REGION_CERULEAN_GYM_BADGE_SPEECH_HOUSE": "Building Entrance", + "REGION_CERULEAN_GYM_BADGE_SPEECH_HOUSE -> REGION_CERULEAN_CITY": "Building Exit", + "REGION_CERULEAN_CITY -> REGION_CERULEAN_POLICE_STATION": "Building Entrance", + "REGION_CERULEAN_POLICE_STATION -> REGION_CERULEAN_CITY": "Building Exit", + "REGION_CERULEAN_CITY -> REGION_CERULEAN_TRADE_SPEECH_HOUSE": "Building Entrance", + "REGION_CERULEAN_TRADE_SPEECH_HOUSE -> REGION_CERULEAN_CITY": "Building Exit", + "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE": "Building Entrance", + "REGION_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE -> REGION_CHERRYGROVE_CITY": "Building Exit", + "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_GYM_SPEECH_HOUSE": "Building Entrance", + "REGION_CHERRYGROVE_GYM_SPEECH_HOUSE -> REGION_CHERRYGROVE_CITY": "Building Exit", + "REGION_CHERRYGROVE_CITY -> REGION_GUIDE_GENTS_HOUSE": "Building Entrance", + "REGION_GUIDE_GENTS_HOUSE -> REGION_CHERRYGROVE_CITY": "Building Exit", + "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_LUGIA_SPEECH_HOUSE": "Building Entrance", + "REGION_CIANWOOD_LUGIA_SPEECH_HOUSE -> REGION_CIANWOOD_CITY": "Building Exit", + "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_PHOTO_STUDIO": "Building Entrance", + "REGION_CIANWOOD_PHOTO_STUDIO -> REGION_CIANWOOD_CITY": "Building Exit", + "REGION_CIANWOOD_CITY -> REGION_MANIAS_HOUSE": "Building Entrance", + "REGION_MANIAS_HOUSE -> REGION_CIANWOOD_CITY": "Building Exit", + "REGION_CIANWOOD_CITY -> REGION_POKE_SEERS_HOUSE": "Building Entrance", + "REGION_POKE_SEERS_HOUSE -> REGION_CIANWOOD_CITY": "Building Exit", + "REGION_COPYCATS_HOUSE_1F -> REGION_SAFFRON_CITY": "Building Exit", + "REGION_SAFFRON_CITY -> REGION_COPYCATS_HOUSE_1F": "Building Entrance", + "REGION_DANCE_THEATER -> REGION_ECRUTEAK_CITY": "Building Exit", + "REGION_ECRUTEAK_CITY -> REGION_DANCE_THEATER": "Building Entrance", + "REGION_DAY_CARE -> REGION_ROUTE_34": "Building Exit", + "REGION_ROUTE_34 -> REGION_DAY_CARE": "Building Entrance", + "REGION_DAY_CARE -> REGION_ROUTE_34:DAY_CARE_YARD": "Building Exit", + "REGION_ROUTE_34:DAY_CARE_YARD -> REGION_DAY_CARE": "Building Entrance", + "REGION_DAY_OF_WEEK_SIBLINGS_HOUSE -> REGION_ROUTE_26": "Building Exit", + "REGION_ROUTE_26 -> REGION_DAY_OF_WEEK_SIBLINGS_HOUSE": "Building Entrance", + "REGION_EARLS_POKEMON_ACADEMY -> REGION_VIOLET_CITY": "Building Exit", + "REGION_VIOLET_CITY -> REGION_EARLS_POKEMON_ACADEMY": "Building Entrance", + "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_ITEMFINDER_HOUSE": "Building Entrance", + "REGION_ECRUTEAK_ITEMFINDER_HOUSE -> REGION_ECRUTEAK_CITY": "Building Exit", + "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_LUGIA_SPEECH_HOUSE": "Building Entrance", + "REGION_ECRUTEAK_LUGIA_SPEECH_HOUSE -> REGION_ECRUTEAK_CITY": "Building Exit", + "REGION_ELMS_HOUSE -> REGION_NEW_BARK_TOWN": "Building Exit", + "REGION_NEW_BARK_TOWN -> REGION_ELMS_HOUSE": "Building Entrance", + "REGION_ELMS_LAB -> REGION_NEW_BARK_TOWN": "Building Exit", + "REGION_NEW_BARK_TOWN -> REGION_ELMS_LAB": "Building Entrance", + "REGION_FUCHSIA_CITY -> REGION_SAFARI_ZONE_MAIN_OFFICE": "Building Entrance", + "REGION_SAFARI_ZONE_MAIN_OFFICE -> REGION_FUCHSIA_CITY": "Building Exit", + "REGION_FUCHSIA_CITY -> REGION_SAFARI_ZONE_WARDENS_HOME": "Building Entrance", + "REGION_SAFARI_ZONE_WARDENS_HOME -> REGION_FUCHSIA_CITY": "Building Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_HAPPINESS_RATER": "Building Entrance", + "REGION_GOLDENROD_HAPPINESS_RATER -> REGION_GOLDENROD_CITY": "Building Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_MAGNET_TRAIN_STATION": "Building Entrance", + "REGION_GOLDENROD_MAGNET_TRAIN_STATION -> REGION_GOLDENROD_CITY": "Building Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_NAME_RATER": "Building Entrance", + "REGION_GOLDENROD_NAME_RATER -> REGION_GOLDENROD_CITY": "Building Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_PP_SPEECH_HOUSE": "Building Entrance", + "REGION_GOLDENROD_PP_SPEECH_HOUSE -> REGION_GOLDENROD_CITY": "Building Exit", + "REGION_LAKE_OF_RAGE -> REGION_LAKE_OF_RAGE_MAGIKARP_HOUSE": "Building Entrance", + "REGION_LAKE_OF_RAGE_MAGIKARP_HOUSE -> REGION_LAKE_OF_RAGE": "Building Exit", + "REGION_LAKE_OF_RAGE:HIDDEN_POWER_HOUSE -> REGION_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE": "Building Entrance", + "REGION_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE -> REGION_LAKE_OF_RAGE:HIDDEN_POWER_HOUSE": "Building Exit", + "REGION_LAVENDER_NAME_RATER -> REGION_LAVENDER_TOWN": "Building Exit", + "REGION_LAVENDER_TOWN -> REGION_LAVENDER_NAME_RATER": "Building Entrance", + "REGION_LAVENDER_SPEECH_HOUSE -> REGION_LAVENDER_TOWN": "Building Exit", + "REGION_LAVENDER_TOWN -> REGION_LAVENDER_SPEECH_HOUSE": "Building Entrance", + "REGION_LAVENDER_TOWN -> REGION_LAV_RADIO_TOWER_1F": "Building Entrance", + "REGION_LAV_RADIO_TOWER_1F -> REGION_LAVENDER_TOWN": "Building Exit", + "REGION_LAVENDER_TOWN -> REGION_MR_FUJIS_HOUSE": "Building Entrance", + "REGION_MR_FUJIS_HOUSE -> REGION_LAVENDER_TOWN": "Building Exit", + "REGION_LAVENDER_TOWN -> REGION_SOUL_HOUSE": "Building Entrance", + "REGION_SOUL_HOUSE -> REGION_LAVENDER_TOWN": "Building Exit", + "REGION_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE -> REGION_MAHOGANY_TOWN:EAST": "Building Exit", + "REGION_MAHOGANY_TOWN:EAST -> REGION_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE": "Building Entrance", + "REGION_MR_POKEMONS_HOUSE -> REGION_ROUTE_30": "Building Exit", + "REGION_ROUTE_30 -> REGION_MR_POKEMONS_HOUSE": "Building Entrance", + "REGION_MR_PSYCHICS_HOUSE -> REGION_SAFFRON_CITY": "Building Exit", + "REGION_SAFFRON_CITY -> REGION_MR_PSYCHICS_HOUSE": "Building Entrance", + "REGION_NEW_BARK_TOWN -> REGION_PLAYERS_HOUSE_1F": "Building Entrance", + "REGION_PLAYERS_HOUSE_1F -> REGION_NEW_BARK_TOWN": "Building Exit", + "REGION_NEW_BARK_TOWN -> REGION_PLAYERS_NEIGHBORS_HOUSE": "Building Entrance", + "REGION_PLAYERS_NEIGHBORS_HOUSE -> REGION_NEW_BARK_TOWN": "Building Exit", + "REGION_OAKS_LAB -> REGION_PALLET_TOWN": "Building Exit", + "REGION_PALLET_TOWN -> REGION_OAKS_LAB": "Building Entrance", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_GOOD_ROD_HOUSE": "Building Entrance", + "REGION_OLIVINE_GOOD_ROD_HOUSE -> REGION_OLIVINE_CITY": "Building Exit", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_PUNISHMENT_SPEECH_HOUSE": "Building Entrance", + "REGION_OLIVINE_PUNISHMENT_SPEECH_HOUSE -> REGION_OLIVINE_CITY": "Building Exit", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_TIMS_HOUSE": "Building Entrance", + "REGION_OLIVINE_TIMS_HOUSE -> REGION_OLIVINE_CITY": "Building Exit", + "REGION_PALLET_TOWN -> REGION_REDS_HOUSE_1F": "Building Entrance", + "REGION_REDS_HOUSE_1F -> REGION_PALLET_TOWN": "Building Exit", + "REGION_PEWTER_CITY -> REGION_PEWTER_NIDORAN_SPEECH_HOUSE": "Building Entrance", + "REGION_PEWTER_NIDORAN_SPEECH_HOUSE -> REGION_PEWTER_CITY": "Building Exit", + "REGION_PEWTER_CITY -> REGION_PEWTER_SNOOZE_SPEECH_HOUSE": "Building Entrance", + "REGION_PEWTER_SNOOZE_SPEECH_HOUSE -> REGION_PEWTER_CITY": "Building Exit", + "REGION_POKEMON_FAN_CLUB -> REGION_VERMILION_CITY": "Building Exit", + "REGION_VERMILION_CITY -> REGION_POKEMON_FAN_CLUB": "Building Entrance", + "REGION_POWER_PLANT -> REGION_ROUTE_10_NORTH:SURF": "Building Exit", + "REGION_ROUTE_10_NORTH:SURF -> REGION_POWER_PLANT": "Building Entrance", + "REGION_ROUTE_12:SOUTH -> REGION_ROUTE_12_SUPER_ROD_HOUSE": "Building Entrance", + "REGION_ROUTE_12_SUPER_ROD_HOUSE -> REGION_ROUTE_12:SOUTH": "Building Exit", + "REGION_ROUTE_16:NORTH -> REGION_ROUTE_16_FUCHSIA_SPEECH_HOUSE": "Building Entrance", + "REGION_ROUTE_16_FUCHSIA_SPEECH_HOUSE -> REGION_ROUTE_16:NORTH": "Building Exit", + "REGION_ROUTE_26 -> REGION_ROUTE_26_HEAL_HOUSE": "Building Entrance", + "REGION_ROUTE_26_HEAL_HOUSE -> REGION_ROUTE_26": "Building Exit", + "REGION_ROUTE_27:CENTER -> REGION_ROUTE_27_SANDSTORM_HOUSE": "Building Entrance", + "REGION_ROUTE_27_SANDSTORM_HOUSE -> REGION_ROUTE_27:CENTER": "Building Exit", + "REGION_ROUTE_28:CUT -> REGION_ROUTE_28_STEEL_WING_HOUSE": "Building Entrance", + "REGION_ROUTE_28_STEEL_WING_HOUSE -> REGION_ROUTE_28:CUT": "Building Exit", + "REGION_ROUTE_2:NORTHEAST -> REGION_ROUTE_2_NUGGET_HOUSE": "Building Entrance", + "REGION_ROUTE_2_NUGGET_HOUSE -> REGION_ROUTE_2:NORTHEAST": "Building Exit", + "REGION_ROUTE_30 -> REGION_ROUTE_30_BERRY_HOUSE": "Building Entrance", + "REGION_ROUTE_30_BERRY_HOUSE -> REGION_ROUTE_30": "Building Exit", + "REGION_ROUTE_39 -> REGION_ROUTE_39_BARN": "Building Entrance", + "REGION_ROUTE_39_BARN -> REGION_ROUTE_39": "Building Exit", + "REGION_ROUTE_5 -> REGION_ROUTE_5_CLEANSE_TAG_HOUSE": "Building Entrance", + "REGION_ROUTE_5_CLEANSE_TAG_HOUSE -> REGION_ROUTE_5": "Building Exit", + "REGION_SAFFRON_CITY -> REGION_SAFFRON_MAGNET_TRAIN_STATION": "Building Entrance", + "REGION_SAFFRON_MAGNET_TRAIN_STATION -> REGION_SAFFRON_CITY": "Building Exit", + "REGION_SAFFRON_CITY -> REGION_SILPH_CO_1F": "Building Entrance", + "REGION_SILPH_CO_1F -> REGION_SAFFRON_CITY": "Building Exit", + "REGION_TRAINER_HOUSE_1F -> REGION_VIRIDIAN_CITY": "Building Exit", + "REGION_VIRIDIAN_CITY -> REGION_TRAINER_HOUSE_1F": "Building Entrance", + "REGION_VERMILION_CITY -> REGION_VERMILION_DIGLETTS_CAVE_SPEECH_HOUSE": "Building Entrance", + "REGION_VERMILION_DIGLETTS_CAVE_SPEECH_HOUSE -> REGION_VERMILION_CITY": "Building Exit", + "REGION_VERMILION_CITY -> REGION_VERMILION_FISHING_SPEECH_HOUSE": "Building Entrance", + "REGION_VERMILION_FISHING_SPEECH_HOUSE -> REGION_VERMILION_CITY": "Building Exit", + "REGION_VERMILION_CITY -> REGION_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE": "Building Entrance", + "REGION_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE -> REGION_VERMILION_CITY": "Building Exit", + "REGION_VIOLET_CITY -> REGION_VIOLET_KYLES_HOUSE": "Building Entrance", + "REGION_VIOLET_KYLES_HOUSE -> REGION_VIOLET_CITY": "Building Exit", + "REGION_VIOLET_CITY -> REGION_VIOLET_NICKNAME_SPEECH_HOUSE": "Building Entrance", + "REGION_VIOLET_NICKNAME_SPEECH_HOUSE -> REGION_VIOLET_CITY": "Building Exit", + "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_NICKNAME_SPEECH_HOUSE": "Building Entrance", + "REGION_VIRIDIAN_NICKNAME_SPEECH_HOUSE -> REGION_VIRIDIAN_CITY": "Building Exit", "REGION_CELADON_MANSION_1F -> REGION_CELADON_MANSION_2F": "Building Interior", "REGION_CELADON_MANSION_2F -> REGION_CELADON_MANSION_1F": "Building Interior", "REGION_CELADON_MANSION_1F:STAIRWELL -> REGION_CELADON_MANSION_2F:STAIRWELL": "Building Interior", @@ -171,8 +171,8 @@ "REGION_PLAYERS_HOUSE_2F -> REGION_PLAYERS_HOUSE_1F": "Building Interior", "REGION_REDS_HOUSE_1F -> REGION_REDS_HOUSE_2F": "Building Interior", "REGION_REDS_HOUSE_2F -> REGION_REDS_HOUSE_1F": "Building Interior", - "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_RUINS_OF_ALPH_RESEARCH_CENTER": "Building", - "REGION_RUINS_OF_ALPH_RESEARCH_CENTER -> REGION_RUINS_OF_ALPH_OUTSIDE": "Building", + "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_RUINS_OF_ALPH_RESEARCH_CENTER": "Building Entrance", + "REGION_RUINS_OF_ALPH_RESEARCH_CENTER -> REGION_RUINS_OF_ALPH_OUTSIDE": "Building Exit", "REGION_TEAM_ROCKET_BASE_B1F -> REGION_TEAM_ROCKET_BASE_B2F:SOUTH": "Dungeon Interior", "REGION_TEAM_ROCKET_BASE_B2F:SOUTH -> REGION_TEAM_ROCKET_BASE_B1F": "Dungeon Interior", "REGION_TEAM_ROCKET_BASE_B2F:NORTH -> REGION_TEAM_ROCKET_BASE_B3F:SOUTH": "Dungeon Interior", @@ -185,94 +185,94 @@ "REGION_TEAM_ROCKET_BASE_B3F:WEST -> REGION_TEAM_ROCKET_BASE_B2F:WEST": "Dungeon Interior", "REGION_TRAINER_HOUSE_1F -> REGION_TRAINER_HOUSE_B1F": "Building Interior", "REGION_TRAINER_HOUSE_B1F -> REGION_TRAINER_HOUSE_1F": "Building Interior", - "REGION_AZALEA_TOWN:WELL -> REGION_SLOWPOKE_WELL_B1F:ENTRANCE": "Dungeon", - "REGION_SLOWPOKE_WELL_B1F:ENTRANCE -> REGION_AZALEA_TOWN:WELL": "Dungeon", - "REGION_BATTLE_TOWER_1F -> REGION_BATTLE_TOWER_OUTSIDE": "Dungeon", - "REGION_BATTLE_TOWER_OUTSIDE -> REGION_BATTLE_TOWER_1F": "Dungeon", - "REGION_BLACKTHORN_CITY -> REGION_ICE_PATH_1F:EAST": "Dungeon", - "REGION_ICE_PATH_1F:EAST -> REGION_BLACKTHORN_CITY": "Dungeon", - "REGION_BLACKTHORN_CITY:DRAGONS_DEN_ENTRANCE -> REGION_DRAGONS_DEN_1F:UPPER": "Dungeon", - "REGION_DRAGONS_DEN_1F:UPPER -> REGION_BLACKTHORN_CITY:DRAGONS_DEN_ENTRANCE": "Dungeon", - "REGION_BURNED_TOWER_1F -> REGION_ECRUTEAK_CITY": "Dungeon", - "REGION_ECRUTEAK_CITY -> REGION_BURNED_TOWER_1F": "Dungeon", - "REGION_CELADON_CITY -> REGION_CELADON_DEPT_STORE_1F": "Mart", - "REGION_CELADON_DEPT_STORE_1F -> REGION_CELADON_CITY": "Mart", - "REGION_DARK_CAVE_BLACKTHORN_ENTRANCE:NORTHEAST -> REGION_ROUTE_45": "Dungeon", - "REGION_ROUTE_45 -> REGION_DARK_CAVE_BLACKTHORN_ENTRANCE:NORTHEAST": "Dungeon", - "REGION_DARK_CAVE_VIOLET_ENTRANCE:SOUTHEAST -> REGION_ROUTE_46:NORTH": "Dungeon", - "REGION_ROUTE_46:NORTH -> REGION_DARK_CAVE_VIOLET_ENTRANCE:SOUTHEAST": "Dungeon", - "REGION_DARK_CAVE_VIOLET_ENTRANCE:WEST -> REGION_ROUTE_31": "Dungeon", - "REGION_ROUTE_31 -> REGION_DARK_CAVE_VIOLET_ENTRANCE:WEST": "Dungeon", - "REGION_DIGLETTS_CAVE:NORTH_ENTRANCE -> REGION_ROUTE_2:NORTHEAST": "Dungeon", - "REGION_ROUTE_2:NORTHEAST -> REGION_DIGLETTS_CAVE:NORTH_ENTRANCE": "Dungeon", - "REGION_DIGLETTS_CAVE:SOUTH_ENTRANCE -> REGION_VERMILION_CITY:DIGLETTS_CAVE_ENTRANCE": "Dungeon", - "REGION_VERMILION_CITY:DIGLETTS_CAVE_ENTRANCE -> REGION_DIGLETTS_CAVE:SOUTH_ENTRANCE": "Dungeon", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_DEPT_STORE_1F": "Mart", - "REGION_GOLDENROD_DEPT_STORE_1F -> REGION_GOLDENROD_CITY": "Mart", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:NORTH_ENTRANCE": "Dungeon", - "REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:NORTH_ENTRANCE -> REGION_GOLDENROD_CITY": "Dungeon", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:SOUTH_ENTRANCE": "Dungeon", - "REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:SOUTH_ENTRANCE -> REGION_GOLDENROD_CITY": "Dungeon", - "REGION_GOLDENROD_CITY -> REGION_RADIO_TOWER_1F": "Dungeon", - "REGION_RADIO_TOWER_1F -> REGION_GOLDENROD_CITY": "Dungeon", - "REGION_GOLDENROD_DEPT_STORE_B1F:WAREHOUSE -> REGION_GOLDENROD_UNDERGROUND_WAREHOUSE": "Dungeon", - "REGION_GOLDENROD_UNDERGROUND_WAREHOUSE -> REGION_GOLDENROD_DEPT_STORE_B1F:WAREHOUSE": "Dungeon", - "REGION_ICE_PATH_1F:WEST -> REGION_ROUTE_44": "Dungeon", - "REGION_ROUTE_44 -> REGION_ICE_PATH_1F:WEST": "Dungeon", - "REGION_ILEX_FOREST:NORTH -> REGION_ROUTE_34_ILEX_FOREST_GATE": "Dungeon", - "REGION_ROUTE_34_ILEX_FOREST_GATE -> REGION_ILEX_FOREST:NORTH": "Dungeon", - "REGION_ILEX_FOREST:SOUTH -> REGION_ILEX_FOREST_AZALEA_GATE": "Dungeon", - "REGION_ILEX_FOREST_AZALEA_GATE -> REGION_ILEX_FOREST:SOUTH": "Dungeon", - "REGION_MAHOGANY_MART_1F -> REGION_TEAM_ROCKET_BASE_B1F": "Dungeon", - "REGION_TEAM_ROCKET_BASE_B1F -> REGION_MAHOGANY_MART_1F": "Dungeon", - "REGION_MOUNT_MOON -> REGION_ROUTE_3": "Dungeon", - "REGION_ROUTE_3 -> REGION_MOUNT_MOON": "Dungeon", - "REGION_MOUNT_MOON -> REGION_ROUTE_4:WEST": "Dungeon", - "REGION_ROUTE_4:WEST -> REGION_MOUNT_MOON": "Dungeon", - "REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTH -> REGION_ROUTE_42:CENTER": "Dungeon", - "REGION_ROUTE_42:CENTER -> REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTH": "Dungeon", - "REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHEAST:ENTRANCE -> REGION_ROUTE_42:EAST": "Dungeon", - "REGION_ROUTE_42:EAST -> REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHEAST:ENTRANCE": "Dungeon", - "REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHWEST:ENTRANCE -> REGION_ROUTE_42:WEST": "Dungeon", - "REGION_ROUTE_42:WEST -> REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHWEST:ENTRANCE": "Dungeon", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_LIGHTHOUSE_1F": "Dungeon", - "REGION_OLIVINE_LIGHTHOUSE_1F -> REGION_OLIVINE_CITY": "Dungeon", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_PORT_PASSAGE:ENTRANCE": "Dungeon", - "REGION_OLIVINE_PORT_PASSAGE:ENTRANCE -> REGION_OLIVINE_CITY": "Dungeon", - "REGION_ROCK_TUNNEL_1F:NORTHEAST -> REGION_ROUTE_9": "Dungeon", - "REGION_ROUTE_9 -> REGION_ROCK_TUNNEL_1F:NORTHEAST": "Dungeon", - "REGION_ROCK_TUNNEL_1F:SOUTH -> REGION_ROUTE_10_SOUTH": "Dungeon", - "REGION_ROUTE_10_SOUTH -> REGION_ROCK_TUNNEL_1F:SOUTH": "Dungeon", - "REGION_ROUTE_23 -> REGION_VICTORY_ROAD:3F": "Dungeon", - "REGION_VICTORY_ROAD:3F -> REGION_ROUTE_23": "Dungeon", - "REGION_ROUTE_27:CENTER -> REGION_TOHJO_FALLS:EAST": "Dungeon", - "REGION_TOHJO_FALLS:EAST -> REGION_ROUTE_27:CENTER": "Dungeon", - "REGION_ROUTE_27:WEST -> REGION_TOHJO_FALLS:WEST": "Dungeon", - "REGION_TOHJO_FALLS:WEST -> REGION_ROUTE_27:WEST": "Dungeon", - "REGION_ROUTE_32:SOUTH -> REGION_UNION_CAVE_1F": "Dungeon", - "REGION_UNION_CAVE_1F -> REGION_ROUTE_32:SOUTH": "Dungeon", - "REGION_ROUTE_33 -> REGION_UNION_CAVE_1F": "Dungeon", - "REGION_UNION_CAVE_1F -> REGION_ROUTE_33": "Dungeon", - "REGION_ROUTE_41:NE_ISLAND -> REGION_WHIRL_ISLAND_NE:WEST": "Dungeon", - "REGION_WHIRL_ISLAND_NE:WEST -> REGION_ROUTE_41:NE_ISLAND": "Dungeon", - "REGION_ROUTE_41:NW_ISLAND -> REGION_WHIRL_ISLAND_NW:NORTH": "Dungeon", - "REGION_WHIRL_ISLAND_NW:NORTH -> REGION_ROUTE_41:NW_ISLAND": "Dungeon", - "REGION_ROUTE_41:SE_ISLAND -> REGION_WHIRL_ISLAND_SE": "Dungeon", - "REGION_WHIRL_ISLAND_SE -> REGION_ROUTE_41:SE_ISLAND": "Dungeon", - "REGION_ROUTE_41:SW_ISLAND -> REGION_WHIRL_ISLAND_SW:NORTHWEST": "Dungeon", - "REGION_WHIRL_ISLAND_SW:NORTHWEST -> REGION_ROUTE_41:SW_ISLAND": "Dungeon", - "REGION_ROUTE_5 -> REGION_ROUTE_5_UNDERGROUND_PATH_ENTRANCE": "Dungeon", - "REGION_ROUTE_5_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_5": "Dungeon", - "REGION_ROUTE_6 -> REGION_ROUTE_6_UNDERGROUND_PATH_ENTRANCE": "Dungeon", - "REGION_ROUTE_6_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_6": "Dungeon", - "REGION_ROUTE_7 -> REGION_ROUTE_7_UNDERGROUND_PATH_ENTRANCE": "Dungeon", - "REGION_ROUTE_7_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_7": "Dungeon", - "REGION_SILVER_CAVE_OUTSIDE -> REGION_SILVER_CAVE_ROOM_1": "Dungeon", - "REGION_SILVER_CAVE_ROOM_1 -> REGION_SILVER_CAVE_OUTSIDE": "Dungeon", - "REGION_SPROUT_TOWER_1F -> REGION_VIOLET_CITY": "Dungeon", - "REGION_VIOLET_CITY -> REGION_SPROUT_TOWER_1F": "Dungeon", - "REGION_VERMILION_CITY -> REGION_VERMILION_PORT_PASSAGE:ENTRANCE": "Dungeon", - "REGION_VERMILION_PORT_PASSAGE:ENTRANCE -> REGION_VERMILION_CITY": "Dungeon", + "REGION_AZALEA_TOWN:WELL -> REGION_SLOWPOKE_WELL_B1F:ENTRANCE": "Dungeon Entrance", + "REGION_SLOWPOKE_WELL_B1F:ENTRANCE -> REGION_AZALEA_TOWN:WELL": "Dungeon Exit", + "REGION_BATTLE_TOWER_1F -> REGION_BATTLE_TOWER_OUTSIDE": "Dungeon Exit", + "REGION_BATTLE_TOWER_OUTSIDE -> REGION_BATTLE_TOWER_1F": "Dungeon Entrance", + "REGION_BLACKTHORN_CITY -> REGION_ICE_PATH_1F:EAST": "Dungeon Entrance", + "REGION_ICE_PATH_1F:EAST -> REGION_BLACKTHORN_CITY": "Dungeon Exit", + "REGION_BLACKTHORN_CITY:DRAGONS_DEN_ENTRANCE -> REGION_DRAGONS_DEN_1F:UPPER": "Dungeon Entrance", + "REGION_DRAGONS_DEN_1F:UPPER -> REGION_BLACKTHORN_CITY:DRAGONS_DEN_ENTRANCE": "Dungeon Exit", + "REGION_BURNED_TOWER_1F -> REGION_ECRUTEAK_CITY": "Dungeon Exit", + "REGION_ECRUTEAK_CITY -> REGION_BURNED_TOWER_1F": "Dungeon Entrance", + "REGION_CELADON_CITY -> REGION_CELADON_DEPT_STORE_1F": "Mart Entrance", + "REGION_CELADON_DEPT_STORE_1F -> REGION_CELADON_CITY": "Mart Exit", + "REGION_DARK_CAVE_BLACKTHORN_ENTRANCE:NORTHEAST -> REGION_ROUTE_45": "Dungeon Exit", + "REGION_ROUTE_45 -> REGION_DARK_CAVE_BLACKTHORN_ENTRANCE:NORTHEAST": "Dungeon Entrance", + "REGION_DARK_CAVE_VIOLET_ENTRANCE:SOUTHEAST -> REGION_ROUTE_46:NORTH": "Dungeon Exit", + "REGION_ROUTE_46:NORTH -> REGION_DARK_CAVE_VIOLET_ENTRANCE:SOUTHEAST": "Dungeon Entrance", + "REGION_DARK_CAVE_VIOLET_ENTRANCE:WEST -> REGION_ROUTE_31": "Dungeon Exit", + "REGION_ROUTE_31 -> REGION_DARK_CAVE_VIOLET_ENTRANCE:WEST": "Dungeon Entrance", + "REGION_DIGLETTS_CAVE:NORTH_ENTRANCE -> REGION_ROUTE_2:NORTHEAST": "Dungeon Exit", + "REGION_ROUTE_2:NORTHEAST -> REGION_DIGLETTS_CAVE:NORTH_ENTRANCE": "Dungeon Entrance", + "REGION_DIGLETTS_CAVE:SOUTH_ENTRANCE -> REGION_VERMILION_CITY:DIGLETTS_CAVE_ENTRANCE": "Dungeon Exit", + "REGION_VERMILION_CITY:DIGLETTS_CAVE_ENTRANCE -> REGION_DIGLETTS_CAVE:SOUTH_ENTRANCE": "Dungeon Entrance", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_DEPT_STORE_1F": "Mart Entrance", + "REGION_GOLDENROD_DEPT_STORE_1F -> REGION_GOLDENROD_CITY": "Mart Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:NORTH_ENTRANCE": "Dungeon Entrance", + "REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:NORTH_ENTRANCE -> REGION_GOLDENROD_CITY": "Dungeon Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:SOUTH_ENTRANCE": "Dungeon Entrance", + "REGION_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES:SOUTH_ENTRANCE -> REGION_GOLDENROD_CITY": "Dungeon Exit", + "REGION_GOLDENROD_CITY -> REGION_RADIO_TOWER_1F": "Dungeon Entrance", + "REGION_RADIO_TOWER_1F -> REGION_GOLDENROD_CITY": "Dungeon Exit", + "REGION_GOLDENROD_DEPT_STORE_B1F:WAREHOUSE -> REGION_GOLDENROD_UNDERGROUND_WAREHOUSE": "Dungeon Entrance", + "REGION_GOLDENROD_UNDERGROUND_WAREHOUSE -> REGION_GOLDENROD_DEPT_STORE_B1F:WAREHOUSE": "Dungeon Exit", + "REGION_ICE_PATH_1F:WEST -> REGION_ROUTE_44": "Dungeon Exit", + "REGION_ROUTE_44 -> REGION_ICE_PATH_1F:WEST": "Dungeon Entrance", + "REGION_ILEX_FOREST:NORTH -> REGION_ROUTE_34_ILEX_FOREST_GATE": "Dungeon Exit", + "REGION_ROUTE_34_ILEX_FOREST_GATE -> REGION_ILEX_FOREST:NORTH": "Dungeon Entrance", + "REGION_ILEX_FOREST:SOUTH -> REGION_ILEX_FOREST_AZALEA_GATE": "Dungeon Exit", + "REGION_ILEX_FOREST_AZALEA_GATE -> REGION_ILEX_FOREST:SOUTH": "Dungeon Entrance", + "REGION_MAHOGANY_MART_1F -> REGION_TEAM_ROCKET_BASE_B1F": "Dungeon Entrance", + "REGION_TEAM_ROCKET_BASE_B1F -> REGION_MAHOGANY_MART_1F": "Dungeon Exit", + "REGION_MOUNT_MOON -> REGION_ROUTE_3": "Dungeon Exit", + "REGION_ROUTE_3 -> REGION_MOUNT_MOON": "Dungeon Entrance", + "REGION_MOUNT_MOON -> REGION_ROUTE_4:WEST": "Dungeon Exit", + "REGION_ROUTE_4:WEST -> REGION_MOUNT_MOON": "Dungeon Entrance", + "REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTH -> REGION_ROUTE_42:CENTER": "Dungeon Exit", + "REGION_ROUTE_42:CENTER -> REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTH": "Dungeon Entrance", + "REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHEAST:ENTRANCE -> REGION_ROUTE_42:EAST": "Dungeon Exit", + "REGION_ROUTE_42:EAST -> REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHEAST:ENTRANCE": "Dungeon Entrance", + "REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHWEST:ENTRANCE -> REGION_ROUTE_42:WEST": "Dungeon Exit", + "REGION_ROUTE_42:WEST -> REGION_MOUNT_MORTAR_1F_OUTSIDE:SOUTHWEST:ENTRANCE": "Dungeon Entrance", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_LIGHTHOUSE_1F": "Dungeon Entrance", + "REGION_OLIVINE_LIGHTHOUSE_1F -> REGION_OLIVINE_CITY": "Dungeon Exit", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_PORT_PASSAGE:ENTRANCE": "Dungeon Entrance", + "REGION_OLIVINE_PORT_PASSAGE:ENTRANCE -> REGION_OLIVINE_CITY": "Dungeon Exit", + "REGION_ROCK_TUNNEL_1F:NORTHEAST -> REGION_ROUTE_9": "Dungeon Exit", + "REGION_ROUTE_9 -> REGION_ROCK_TUNNEL_1F:NORTHEAST": "Dungeon Entrance", + "REGION_ROCK_TUNNEL_1F:SOUTH -> REGION_ROUTE_10_SOUTH": "Dungeon Exit", + "REGION_ROUTE_10_SOUTH -> REGION_ROCK_TUNNEL_1F:SOUTH": "Dungeon Entrance", + "REGION_ROUTE_23 -> REGION_VICTORY_ROAD:3F": "Dungeon Entrance", + "REGION_VICTORY_ROAD:3F -> REGION_ROUTE_23": "Dungeon Exit", + "REGION_ROUTE_27:CENTER -> REGION_TOHJO_FALLS:EAST": "Dungeon Entrance", + "REGION_TOHJO_FALLS:EAST -> REGION_ROUTE_27:CENTER": "Dungeon Exit", + "REGION_ROUTE_27:WEST -> REGION_TOHJO_FALLS:WEST": "Dungeon Entrance", + "REGION_TOHJO_FALLS:WEST -> REGION_ROUTE_27:WEST": "Dungeon Exit", + "REGION_ROUTE_32:SOUTH -> REGION_UNION_CAVE_1F": "Dungeon Entrance", + "REGION_UNION_CAVE_1F -> REGION_ROUTE_32:SOUTH": "Dungeon Exit", + "REGION_ROUTE_33 -> REGION_UNION_CAVE_1F": "Dungeon Entrance", + "REGION_UNION_CAVE_1F -> REGION_ROUTE_33": "Dungeon Exit", + "REGION_ROUTE_41:NE_ISLAND -> REGION_WHIRL_ISLAND_NE:WEST": "Dungeon Entrance", + "REGION_WHIRL_ISLAND_NE:WEST -> REGION_ROUTE_41:NE_ISLAND": "Dungeon Exit", + "REGION_ROUTE_41:NW_ISLAND -> REGION_WHIRL_ISLAND_NW:NORTH": "Dungeon Entrance", + "REGION_WHIRL_ISLAND_NW:NORTH -> REGION_ROUTE_41:NW_ISLAND": "Dungeon Exit", + "REGION_ROUTE_41:SE_ISLAND -> REGION_WHIRL_ISLAND_SE": "Dungeon Entrance", + "REGION_WHIRL_ISLAND_SE -> REGION_ROUTE_41:SE_ISLAND": "Dungeon Exit", + "REGION_ROUTE_41:SW_ISLAND -> REGION_WHIRL_ISLAND_SW:NORTHWEST": "Dungeon Entrance", + "REGION_WHIRL_ISLAND_SW:NORTHWEST -> REGION_ROUTE_41:SW_ISLAND": "Dungeon Exit", + "REGION_ROUTE_5 -> REGION_ROUTE_5_UNDERGROUND_PATH_ENTRANCE": "Dungeon Entrance", + "REGION_ROUTE_5_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_5": "Dungeon Exit", + "REGION_ROUTE_6 -> REGION_ROUTE_6_UNDERGROUND_PATH_ENTRANCE": "Dungeon Entrance", + "REGION_ROUTE_6_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_6": "Dungeon Exit", + "REGION_ROUTE_7 -> REGION_ROUTE_7_UNDERGROUND_PATH_ENTRANCE": "Dungeon Entrance", + "REGION_ROUTE_7_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_7": "Dungeon Exit", + "REGION_SILVER_CAVE_OUTSIDE -> REGION_SILVER_CAVE_ROOM_1": "Dungeon Entrance", + "REGION_SILVER_CAVE_ROOM_1 -> REGION_SILVER_CAVE_OUTSIDE": "Dungeon Exit", + "REGION_SPROUT_TOWER_1F -> REGION_VIOLET_CITY": "Dungeon Exit", + "REGION_VIOLET_CITY -> REGION_SPROUT_TOWER_1F": "Dungeon Entrance", + "REGION_VERMILION_CITY -> REGION_VERMILION_PORT_PASSAGE:ENTRANCE": "Dungeon Entrance", + "REGION_VERMILION_PORT_PASSAGE:ENTRANCE -> REGION_VERMILION_CITY": "Dungeon Exit", "REGION_CELADON_DEPT_STORE_1F -> REGION_CELADON_DEPT_STORE_2F": "Mart Interior", "REGION_CELADON_DEPT_STORE_2F -> REGION_CELADON_DEPT_STORE_1F": "Mart Interior", "REGION_CELADON_DEPT_STORE_2F -> REGION_CELADON_DEPT_STORE_3F": "Mart Interior", @@ -299,8 +299,8 @@ "REGION_ROUTE_7_UNDERGROUND_PATH_ENTRANCE -> REGION_EAST_WEST_UNDERGROUND": "Dungeon Interior", "REGION_EAST_WEST_UNDERGROUND -> REGION_ROUTE_8_UNDERGROUND_PATH_ENTRANCE": "Dungeon Interior", "REGION_ROUTE_8_UNDERGROUND_PATH_ENTRANCE -> REGION_EAST_WEST_UNDERGROUND": "Dungeon Interior", - "REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL -> REGION_TIN_TOWER_1F": "Dungeon", - "REGION_TIN_TOWER_1F -> REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL": "Dungeon", + "REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL -> REGION_TIN_TOWER_1F": "Dungeon Entrance", + "REGION_TIN_TOWER_1F -> REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL": "Dungeon Exit", "REGION_GOLDENROD_DEPT_STORE_1F -> REGION_GOLDENROD_DEPT_STORE_2F": "Mart Interior", "REGION_GOLDENROD_DEPT_STORE_2F -> REGION_GOLDENROD_DEPT_STORE_1F": "Mart Interior", "REGION_GOLDENROD_DEPT_STORE_2F -> REGION_GOLDENROD_DEPT_STORE_3F": "Mart Interior", @@ -407,26 +407,26 @@ "REGION_ROUTE_8_UNDERGROUND_PATH_ENTRANCE -> REGION_ROUTE_8": "Dungeon Interior", "REGION_RUINS_OF_ALPH_AERODACTYL_CHAMBER -> REGION_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM": "Dungeon Interior", "REGION_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM -> REGION_RUINS_OF_ALPH_AERODACTYL_CHAMBER": "Dungeon Interior", - "REGION_RUINS_OF_ALPH_AERODACTYL_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH -> REGION_RUINS_OF_ALPH_AERODACTYL_CHAMBER": "Dungeon", + "REGION_RUINS_OF_ALPH_AERODACTYL_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH": "Dungeon Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH -> REGION_RUINS_OF_ALPH_AERODACTYL_CHAMBER": "Dungeon Entrance", "REGION_RUINS_OF_ALPH_HO_OH_CHAMBER -> REGION_RUINS_OF_ALPH_HO_OH_ITEM_ROOM": "Dungeon Interior", "REGION_RUINS_OF_ALPH_HO_OH_ITEM_ROOM -> REGION_RUINS_OF_ALPH_HO_OH_CHAMBER": "Dungeon Interior", - "REGION_RUINS_OF_ALPH_HO_OH_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE:WEST": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE:WEST -> REGION_RUINS_OF_ALPH_HO_OH_CHAMBER": "Dungeon", - "REGION_RUINS_OF_ALPH_INNER_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_RUINS_OF_ALPH_INNER_CHAMBER": "Dungeon", + "REGION_RUINS_OF_ALPH_HO_OH_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE:WEST": "Dungeon Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE:WEST -> REGION_RUINS_OF_ALPH_HO_OH_CHAMBER": "Dungeon Entrance", + "REGION_RUINS_OF_ALPH_INNER_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE": "Dungeon Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_RUINS_OF_ALPH_INNER_CHAMBER": "Dungeon Entrance", "REGION_RUINS_OF_ALPH_KABUTO_CHAMBER -> REGION_RUINS_OF_ALPH_KABUTO_ITEM_ROOM": "Dungeon Interior", "REGION_RUINS_OF_ALPH_KABUTO_ITEM_ROOM -> REGION_RUINS_OF_ALPH_KABUTO_CHAMBER": "Dungeon Interior", - "REGION_RUINS_OF_ALPH_KABUTO_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_RUINS_OF_ALPH_KABUTO_CHAMBER": "Dungeon", + "REGION_RUINS_OF_ALPH_KABUTO_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE": "Dungeon Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_RUINS_OF_ALPH_KABUTO_CHAMBER": "Dungeon Entrance", "REGION_RUINS_OF_ALPH_OMANYTE_CHAMBER -> REGION_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM": "Dungeon Interior", "REGION_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM -> REGION_RUINS_OF_ALPH_OMANYTE_CHAMBER": "Dungeon Interior", - "REGION_RUINS_OF_ALPH_OMANYTE_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:OMANYTE_LEDGE": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:OMANYTE_LEDGE -> REGION_RUINS_OF_ALPH_OMANYTE_CHAMBER": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:UNION_LEDGE -> REGION_UNION_CAVE_B1F:STRENGTH": "Dungeon", - "REGION_UNION_CAVE_B1F:STRENGTH -> REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:UNION_LEDGE": "Dungeon", - "REGION_RUINS_OF_ALPH_OUTSIDE:WEST -> REGION_UNION_CAVE_B1F:NORTH": "Dungeon", - "REGION_UNION_CAVE_B1F:NORTH -> REGION_RUINS_OF_ALPH_OUTSIDE:WEST": "Dungeon", + "REGION_RUINS_OF_ALPH_OMANYTE_CHAMBER -> REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:OMANYTE_LEDGE": "Dungeon Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:OMANYTE_LEDGE -> REGION_RUINS_OF_ALPH_OMANYTE_CHAMBER": "Dungeon Entrance", + "REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:UNION_LEDGE -> REGION_UNION_CAVE_B1F:STRENGTH": "Dungeon Entrance", + "REGION_UNION_CAVE_B1F:STRENGTH -> REGION_RUINS_OF_ALPH_OUTSIDE:SOUTH:UNION_LEDGE": "Dungeon Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE:WEST -> REGION_UNION_CAVE_B1F:NORTH": "Dungeon Entrance", + "REGION_UNION_CAVE_B1F:NORTH -> REGION_RUINS_OF_ALPH_OUTSIDE:WEST": "Dungeon Exit", "REGION_SILVER_CAVE_ITEM_ROOMS:EAST -> REGION_SILVER_CAVE_ROOM_2:EAST": "Dungeon Interior", "REGION_SILVER_CAVE_ROOM_2:EAST -> REGION_SILVER_CAVE_ITEM_ROOMS:EAST": "Dungeon Interior", "REGION_SILVER_CAVE_ITEM_ROOMS:WEST -> REGION_SILVER_CAVE_ROOM_2:WEST": "Dungeon Interior", @@ -495,8 +495,8 @@ "REGION_VICTORY_ROAD:2F:NORTHEAST -> REGION_VICTORY_ROAD:3F:SOUTHEAST": "Dungeon Interior", "REGION_VICTORY_ROAD:1F -> REGION_VICTORY_ROAD:2F": "Dungeon Interior", "REGION_VICTORY_ROAD:2F -> REGION_VICTORY_ROAD:1F": "Dungeon Interior", - "REGION_VICTORY_ROAD:1F:ENTRANCE -> REGION_VICTORY_ROAD_GATE:NORTH": "Dungeon", - "REGION_VICTORY_ROAD_GATE:NORTH -> REGION_VICTORY_ROAD:1F:ENTRANCE": "Dungeon", + "REGION_VICTORY_ROAD:1F:ENTRANCE -> REGION_VICTORY_ROAD_GATE:NORTH": "Dungeon Exit", + "REGION_VICTORY_ROAD_GATE:NORTH -> REGION_VICTORY_ROAD:1F:ENTRANCE": "Dungeon Entrance", "REGION_WHIRL_ISLAND_B1F:LEDGE -> REGION_WHIRL_ISLAND_CAVE": "Dungeon Interior", "REGION_WHIRL_ISLAND_CAVE -> REGION_WHIRL_ISLAND_B1F:LEDGE": "Dungeon Interior", "REGION_WHIRL_ISLAND_B1F:NORTH -> REGION_WHIRL_ISLAND_B2F:CENTER": "Dungeon Interior", @@ -523,158 +523,158 @@ "REGION_WHIRL_ISLAND_NW:SOUTH -> REGION_WHIRL_ISLAND_CAVE": "Dungeon Interior", "REGION_WHIRL_ISLAND_NW:SOUTH -> REGION_WHIRL_ISLAND_SW:SOUTHWEST": "Dungeon Interior", "REGION_WHIRL_ISLAND_SW:SOUTHWEST -> REGION_WHIRL_ISLAND_NW:SOUTH": "Dungeon Interior", - "REGION_CELADON_DEPT_STORE_1F -> REGION_CELADON_DEPT_STORE_ELEVATOR:1F": "Elevator", - "REGION_CELADON_DEPT_STORE_ELEVATOR:1F -> REGION_CELADON_DEPT_STORE_1F": "Elevator", - "REGION_CELADON_DEPT_STORE_2F -> REGION_CELADON_DEPT_STORE_ELEVATOR:2F": "Elevator", - "REGION_CELADON_DEPT_STORE_ELEVATOR:2F -> REGION_CELADON_DEPT_STORE_2F": "Elevator", - "REGION_CELADON_DEPT_STORE_3F -> REGION_CELADON_DEPT_STORE_ELEVATOR:3F": "Elevator", - "REGION_CELADON_DEPT_STORE_ELEVATOR:3F -> REGION_CELADON_DEPT_STORE_3F": "Elevator", - "REGION_CELADON_DEPT_STORE_4F -> REGION_CELADON_DEPT_STORE_ELEVATOR:4F": "Elevator", - "REGION_CELADON_DEPT_STORE_ELEVATOR:4F -> REGION_CELADON_DEPT_STORE_4F": "Elevator", - "REGION_CELADON_DEPT_STORE_5F -> REGION_CELADON_DEPT_STORE_ELEVATOR:5F": "Elevator", - "REGION_CELADON_DEPT_STORE_ELEVATOR:5F -> REGION_CELADON_DEPT_STORE_5F": "Elevator", - "REGION_CELADON_DEPT_STORE_6F -> REGION_CELADON_DEPT_STORE_ELEVATOR:6F": "Elevator", - "REGION_CELADON_DEPT_STORE_ELEVATOR:6F -> REGION_CELADON_DEPT_STORE_6F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_1F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:1F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:1F -> REGION_GOLDENROD_DEPT_STORE_1F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_2F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:2F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:2F -> REGION_GOLDENROD_DEPT_STORE_2F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_3F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:3F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:3F -> REGION_GOLDENROD_DEPT_STORE_3F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_4F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:4F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:4F -> REGION_GOLDENROD_DEPT_STORE_4F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_5F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:5F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:5F -> REGION_GOLDENROD_DEPT_STORE_5F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_6F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:6F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:6F -> REGION_GOLDENROD_DEPT_STORE_6F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_B1F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:B1F": "Elevator", - "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:B1F -> REGION_GOLDENROD_DEPT_STORE_B1F": "Elevator", - "REGION_AZALEA_TOWN -> REGION_ILEX_FOREST_AZALEA_GATE": "Gate", - "REGION_ILEX_FOREST_AZALEA_GATE -> REGION_AZALEA_TOWN": "Gate", - "REGION_BATTLE_TOWER_OUTSIDE -> REGION_ROUTE_40_BATTLE_TOWER_GATE": "Gate", - "REGION_ROUTE_40_BATTLE_TOWER_GATE -> REGION_BATTLE_TOWER_OUTSIDE": "Gate", - "REGION_ECRUTEAK_CITY -> REGION_ROUTE_38_ECRUTEAK_GATE": "Gate", - "REGION_ROUTE_38_ECRUTEAK_GATE -> REGION_ECRUTEAK_CITY": "Gate", - "REGION_ECRUTEAK_CITY -> REGION_ROUTE_42_ECRUTEAK_GATE": "Gate", - "REGION_ROUTE_42_ECRUTEAK_GATE -> REGION_ECRUTEAK_CITY": "Gate", - "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE": "Gate", - "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE -> REGION_ECRUTEAK_CITY": "Gate", - "REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL -> REGION_WISE_TRIOS_ROOM": "Gate", - "REGION_WISE_TRIOS_ROOM -> REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL": "Gate", - "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:BEHIND_SAGE -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND": "Gate", - "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:BEHIND_SAGE": "Gate", - "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND -> REGION_WISE_TRIOS_ROOM": "Gate", - "REGION_WISE_TRIOS_ROOM -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND": "Gate", - "REGION_FUCHSIA_CITY -> REGION_ROUTE_15_FUCHSIA_GATE": "Gate", - "REGION_ROUTE_15_FUCHSIA_GATE -> REGION_FUCHSIA_CITY": "Gate", - "REGION_FUCHSIA_CITY -> REGION_ROUTE_19_FUCHSIA_GATE": "Gate", - "REGION_ROUTE_19_FUCHSIA_GATE -> REGION_FUCHSIA_CITY": "Gate", - "REGION_GOLDENROD_CITY -> REGION_ROUTE_35_GOLDENROD_GATE": "Gate", - "REGION_ROUTE_35_GOLDENROD_GATE -> REGION_GOLDENROD_CITY": "Gate", - "REGION_MAHOGANY_TOWN -> REGION_ROUTE_43_MAHOGANY_GATE": "Gate", - "REGION_ROUTE_43_MAHOGANY_GATE -> REGION_MAHOGANY_TOWN": "Gate", - "REGION_ROUTE_15 -> REGION_ROUTE_15_FUCHSIA_GATE": "Gate", - "REGION_ROUTE_15_FUCHSIA_GATE -> REGION_ROUTE_15": "Gate", - "REGION_ROUTE_16 -> REGION_ROUTE_16_GATE:EAST": "Gate", - "REGION_ROUTE_16_GATE:EAST -> REGION_ROUTE_16": "Gate", - "REGION_ROUTE_16:CYCLING_ROAD -> REGION_ROUTE_16_GATE:WEST": "Gate", - "REGION_ROUTE_16_GATE:WEST -> REGION_ROUTE_16:CYCLING_ROAD": "Gate", - "REGION_ROUTE_17 -> REGION_ROUTE_17_ROUTE_18_GATE:WEST": "Gate", - "REGION_ROUTE_17_ROUTE_18_GATE:WEST -> REGION_ROUTE_17": "Gate", - "REGION_ROUTE_17_ROUTE_18_GATE:EAST -> REGION_ROUTE_18": "Gate", - "REGION_ROUTE_18 -> REGION_ROUTE_17_ROUTE_18_GATE:EAST": "Gate", - "REGION_ROUTE_19:GATE_ENTRANCE -> REGION_ROUTE_19_FUCHSIA_GATE": "Gate", - "REGION_ROUTE_19_FUCHSIA_GATE -> REGION_ROUTE_19:GATE_ENTRANCE": "Gate", - "REGION_ROUTE_22 -> REGION_VICTORY_ROAD_GATE:EAST": "Gate", - "REGION_VICTORY_ROAD_GATE:EAST -> REGION_ROUTE_22": "Gate", - "REGION_ROUTE_26 -> REGION_VICTORY_ROAD_GATE": "Gate", - "REGION_VICTORY_ROAD_GATE -> REGION_ROUTE_26": "Gate", - "REGION_ROUTE_28 -> REGION_VICTORY_ROAD_GATE:WEST": "Gate", - "REGION_VICTORY_ROAD_GATE:WEST -> REGION_ROUTE_28": "Gate", - "REGION_ROUTE_29 -> REGION_ROUTE_29_ROUTE_46_GATE": "Gate", - "REGION_ROUTE_29_ROUTE_46_GATE -> REGION_ROUTE_29": "Gate", - "REGION_ROUTE_29_ROUTE_46_GATE -> REGION_ROUTE_46:SOUTH": "Gate", - "REGION_ROUTE_46:SOUTH -> REGION_ROUTE_29_ROUTE_46_GATE": "Gate", - "REGION_ROUTE_2:CENTEREAST -> REGION_ROUTE_2_GATE": "Gate", - "REGION_ROUTE_2_GATE -> REGION_ROUTE_2:CENTEREAST": "Gate", - "REGION_ROUTE_2:SOUTHEAST -> REGION_ROUTE_2_GATE": "Gate", - "REGION_ROUTE_2_GATE -> REGION_ROUTE_2:SOUTHEAST": "Gate", - "REGION_ROUTE_31 -> REGION_ROUTE_31_VIOLET_GATE": "Gate", - "REGION_ROUTE_31_VIOLET_GATE -> REGION_ROUTE_31": "Gate", - "REGION_ROUTE_31_VIOLET_GATE -> REGION_VIOLET_CITY": "Gate", - "REGION_VIOLET_CITY -> REGION_ROUTE_31_VIOLET_GATE": "Gate", - "REGION_ROUTE_32:NORTH -> REGION_ROUTE_32_RUINS_OF_ALPH_GATE": "Gate", - "REGION_ROUTE_32_RUINS_OF_ALPH_GATE -> REGION_ROUTE_32:NORTH": "Gate", - "REGION_ROUTE_32_RUINS_OF_ALPH_GATE -> REGION_RUINS_OF_ALPH_OUTSIDE": "Gate", - "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_ROUTE_32_RUINS_OF_ALPH_GATE": "Gate", - "REGION_ROUTE_34 -> REGION_ROUTE_34_ILEX_FOREST_GATE": "Gate", - "REGION_ROUTE_34_ILEX_FOREST_GATE -> REGION_ROUTE_34": "Gate", - "REGION_ROUTE_35 -> REGION_ROUTE_35_GOLDENROD_GATE": "Gate", - "REGION_ROUTE_35_GOLDENROD_GATE -> REGION_ROUTE_35": "Gate", - "REGION_ROUTE_35 -> REGION_ROUTE_35_NATIONAL_PARK_GATE": "Gate", - "REGION_ROUTE_35_NATIONAL_PARK_GATE -> REGION_ROUTE_35": "Gate", - "REGION_ROUTE_36:EAST -> REGION_ROUTE_36_RUINS_OF_ALPH_GATE": "Gate", - "REGION_ROUTE_36_RUINS_OF_ALPH_GATE -> REGION_ROUTE_36:EAST": "Gate", - "REGION_ROUTE_36:WEST -> REGION_ROUTE_36_NATIONAL_PARK_GATE": "Gate", - "REGION_ROUTE_36_NATIONAL_PARK_GATE -> REGION_ROUTE_36:WEST": "Gate", - "REGION_ROUTE_36_RUINS_OF_ALPH_GATE -> REGION_RUINS_OF_ALPH_OUTSIDE": "Gate", - "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_ROUTE_36_RUINS_OF_ALPH_GATE": "Gate", - "REGION_ROUTE_38 -> REGION_ROUTE_38_ECRUTEAK_GATE": "Gate", - "REGION_ROUTE_38_ECRUTEAK_GATE -> REGION_ROUTE_38": "Gate", - "REGION_ROUTE_40 -> REGION_ROUTE_40_BATTLE_TOWER_GATE": "Gate", - "REGION_ROUTE_40_BATTLE_TOWER_GATE -> REGION_ROUTE_40": "Gate", - "REGION_ROUTE_42:WEST -> REGION_ROUTE_42_ECRUTEAK_GATE": "Gate", - "REGION_ROUTE_42_ECRUTEAK_GATE -> REGION_ROUTE_42:WEST": "Gate", - "REGION_ROUTE_43 -> REGION_ROUTE_43_GATE:NORTH": "Gate", - "REGION_ROUTE_43_GATE:NORTH -> REGION_ROUTE_43": "Gate", - "REGION_ROUTE_43 -> REGION_ROUTE_43_GATE:SOUTH": "Gate", - "REGION_ROUTE_43_GATE:SOUTH -> REGION_ROUTE_43": "Gate", - "REGION_ROUTE_43 -> REGION_ROUTE_43_MAHOGANY_GATE": "Gate", - "REGION_ROUTE_43_MAHOGANY_GATE -> REGION_ROUTE_43": "Gate", - "REGION_ROUTE_5 -> REGION_ROUTE_5_SAFFRON_GATE:NORTH": "Gate", - "REGION_ROUTE_5_SAFFRON_GATE:NORTH -> REGION_ROUTE_5": "Gate", - "REGION_ROUTE_5_SAFFRON_GATE:SOUTH -> REGION_SAFFRON_CITY": "Gate", - "REGION_SAFFRON_CITY -> REGION_ROUTE_5_SAFFRON_GATE:SOUTH": "Gate", - "REGION_ROUTE_6 -> REGION_ROUTE_6_SAFFRON_GATE:SOUTH": "Gate", - "REGION_ROUTE_6_SAFFRON_GATE:SOUTH -> REGION_ROUTE_6": "Gate", - "REGION_ROUTE_6_SAFFRON_GATE:NORTH -> REGION_SAFFRON_CITY": "Gate", - "REGION_SAFFRON_CITY -> REGION_ROUTE_6_SAFFRON_GATE:NORTH": "Gate", - "REGION_ROUTE_7 -> REGION_ROUTE_7_SAFFRON_GATE:WEST": "Gate", - "REGION_ROUTE_7_SAFFRON_GATE:WEST -> REGION_ROUTE_7": "Gate", - "REGION_ROUTE_7_SAFFRON_GATE:EAST -> REGION_SAFFRON_CITY": "Gate", - "REGION_SAFFRON_CITY -> REGION_ROUTE_7_SAFFRON_GATE:EAST": "Gate", - "REGION_ROUTE_8 -> REGION_ROUTE_8_SAFFRON_GATE:EAST": "Gate", - "REGION_ROUTE_8_SAFFRON_GATE:EAST -> REGION_ROUTE_8": "Gate", - "REGION_ROUTE_8_SAFFRON_GATE:WEST -> REGION_SAFFRON_CITY": "Gate", - "REGION_SAFFRON_CITY -> REGION_ROUTE_8_SAFFRON_GATE:WEST": "Gate", - "REGION_AZALEA_GYM -> REGION_AZALEA_TOWN": "Gym", - "REGION_AZALEA_TOWN -> REGION_AZALEA_GYM": "Gym", - "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_GYM_1F": "Gym", - "REGION_BLACKTHORN_GYM_1F -> REGION_BLACKTHORN_CITY": "Gym", - "REGION_CELADON_CITY:GYM_ENTRANCE -> REGION_CELADON_GYM": "Gym", - "REGION_CELADON_GYM -> REGION_CELADON_CITY:GYM_ENTRANCE": "Gym", - "REGION_CERULEAN_CITY -> REGION_CERULEAN_GYM": "Gym", - "REGION_CERULEAN_GYM -> REGION_CERULEAN_CITY": "Gym", - "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_GYM": "Gym", - "REGION_CIANWOOD_GYM -> REGION_CIANWOOD_CITY": "Gym", - "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_GYM": "Gym", - "REGION_ECRUTEAK_GYM -> REGION_ECRUTEAK_CITY": "Gym", - "REGION_FIGHTING_DOJO -> REGION_SAFFRON_CITY": "Gym", - "REGION_SAFFRON_CITY -> REGION_FIGHTING_DOJO": "Gym", - "REGION_FUCHSIA_CITY -> REGION_FUCHSIA_GYM": "Gym", - "REGION_FUCHSIA_GYM -> REGION_FUCHSIA_CITY": "Gym", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_GYM": "Gym", - "REGION_GOLDENROD_GYM -> REGION_GOLDENROD_CITY": "Gym", - "REGION_MAHOGANY_GYM -> REGION_MAHOGANY_TOWN": "Gym", - "REGION_MAHOGANY_TOWN -> REGION_MAHOGANY_GYM": "Gym", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_GYM": "Gym", - "REGION_OLIVINE_GYM -> REGION_OLIVINE_CITY": "Gym", - "REGION_PEWTER_CITY -> REGION_PEWTER_GYM": "Gym", - "REGION_PEWTER_GYM -> REGION_PEWTER_CITY": "Gym", - "REGION_ROUTE_20:SEAFOAM -> REGION_SEAFOAM_GYM": "Gym", - "REGION_SEAFOAM_GYM -> REGION_ROUTE_20:SEAFOAM": "Gym", - "REGION_SAFFRON_CITY -> REGION_SAFFRON_GYM:ENTRANCE": "Gym", - "REGION_SAFFRON_GYM:ENTRANCE -> REGION_SAFFRON_CITY": "Gym", + "REGION_CELADON_DEPT_STORE_1F -> REGION_CELADON_DEPT_STORE_ELEVATOR:1F": "Elevator Entrance", + "REGION_CELADON_DEPT_STORE_ELEVATOR:1F -> REGION_CELADON_DEPT_STORE_1F": "Elevator Exit", + "REGION_CELADON_DEPT_STORE_2F -> REGION_CELADON_DEPT_STORE_ELEVATOR:2F": "Elevator Entrance", + "REGION_CELADON_DEPT_STORE_ELEVATOR:2F -> REGION_CELADON_DEPT_STORE_2F": "Elevator Exit", + "REGION_CELADON_DEPT_STORE_3F -> REGION_CELADON_DEPT_STORE_ELEVATOR:3F": "Elevator Entrance", + "REGION_CELADON_DEPT_STORE_ELEVATOR:3F -> REGION_CELADON_DEPT_STORE_3F": "Elevator Exit", + "REGION_CELADON_DEPT_STORE_4F -> REGION_CELADON_DEPT_STORE_ELEVATOR:4F": "Elevator Entrance", + "REGION_CELADON_DEPT_STORE_ELEVATOR:4F -> REGION_CELADON_DEPT_STORE_4F": "Elevator Exit", + "REGION_CELADON_DEPT_STORE_5F -> REGION_CELADON_DEPT_STORE_ELEVATOR:5F": "Elevator Entrance", + "REGION_CELADON_DEPT_STORE_ELEVATOR:5F -> REGION_CELADON_DEPT_STORE_5F": "Elevator Exit", + "REGION_CELADON_DEPT_STORE_6F -> REGION_CELADON_DEPT_STORE_ELEVATOR:6F": "Elevator Entrance", + "REGION_CELADON_DEPT_STORE_ELEVATOR:6F -> REGION_CELADON_DEPT_STORE_6F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_1F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:1F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:1F -> REGION_GOLDENROD_DEPT_STORE_1F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_2F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:2F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:2F -> REGION_GOLDENROD_DEPT_STORE_2F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_3F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:3F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:3F -> REGION_GOLDENROD_DEPT_STORE_3F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_4F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:4F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:4F -> REGION_GOLDENROD_DEPT_STORE_4F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_5F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:5F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:5F -> REGION_GOLDENROD_DEPT_STORE_5F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_6F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:6F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:6F -> REGION_GOLDENROD_DEPT_STORE_6F": "Elevator Exit", + "REGION_GOLDENROD_DEPT_STORE_B1F -> REGION_GOLDENROD_DEPT_STORE_ELEVATOR:B1F": "Elevator Entrance", + "REGION_GOLDENROD_DEPT_STORE_ELEVATOR:B1F -> REGION_GOLDENROD_DEPT_STORE_B1F": "Elevator Exit", + "REGION_AZALEA_TOWN -> REGION_ILEX_FOREST_AZALEA_GATE": "Gate Entrance", + "REGION_ILEX_FOREST_AZALEA_GATE -> REGION_AZALEA_TOWN": "Gate Exit", + "REGION_BATTLE_TOWER_OUTSIDE -> REGION_ROUTE_40_BATTLE_TOWER_GATE": "Gate Entrance", + "REGION_ROUTE_40_BATTLE_TOWER_GATE -> REGION_BATTLE_TOWER_OUTSIDE": "Gate Exit", + "REGION_ECRUTEAK_CITY -> REGION_ROUTE_38_ECRUTEAK_GATE": "Gate Entrance", + "REGION_ROUTE_38_ECRUTEAK_GATE -> REGION_ECRUTEAK_CITY": "Gate Exit", + "REGION_ECRUTEAK_CITY -> REGION_ROUTE_42_ECRUTEAK_GATE": "Gate Entrance", + "REGION_ROUTE_42_ECRUTEAK_GATE -> REGION_ECRUTEAK_CITY": "Gate Exit", + "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE": "Gate Entrance", + "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE -> REGION_ECRUTEAK_CITY": "Gate Exit", + "REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL -> REGION_WISE_TRIOS_ROOM": "Gate Entrance", + "REGION_WISE_TRIOS_ROOM -> REGION_ECRUTEAK_CITY:TIN_TOWER_TRAIL": "Gate Exit", + "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:BEHIND_SAGE -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND": "Gate Entrance", + "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:BEHIND_SAGE": "Gate Exit", + "REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND -> REGION_WISE_TRIOS_ROOM": "Gate Exit", + "REGION_WISE_TRIOS_ROOM -> REGION_ECRUTEAK_TIN_TOWER_ENTRANCE:UNDERGROUND": "Gate Entrance", + "REGION_FUCHSIA_CITY -> REGION_ROUTE_15_FUCHSIA_GATE": "Gate Entrance", + "REGION_ROUTE_15_FUCHSIA_GATE -> REGION_FUCHSIA_CITY": "Gate Exit", + "REGION_FUCHSIA_CITY -> REGION_ROUTE_19_FUCHSIA_GATE": "Gate Entrance", + "REGION_ROUTE_19_FUCHSIA_GATE -> REGION_FUCHSIA_CITY": "Gate Exit", + "REGION_GOLDENROD_CITY -> REGION_ROUTE_35_GOLDENROD_GATE": "Gate Entrance", + "REGION_ROUTE_35_GOLDENROD_GATE -> REGION_GOLDENROD_CITY": "Gate Exit", + "REGION_MAHOGANY_TOWN -> REGION_ROUTE_43_MAHOGANY_GATE": "Gate Entrance", + "REGION_ROUTE_43_MAHOGANY_GATE -> REGION_MAHOGANY_TOWN": "Gate Exit", + "REGION_ROUTE_15 -> REGION_ROUTE_15_FUCHSIA_GATE": "Gate Entrance", + "REGION_ROUTE_15_FUCHSIA_GATE -> REGION_ROUTE_15": "Gate Exit", + "REGION_ROUTE_16 -> REGION_ROUTE_16_GATE:EAST": "Gate Entrance", + "REGION_ROUTE_16_GATE:EAST -> REGION_ROUTE_16": "Gate Exit", + "REGION_ROUTE_16:CYCLING_ROAD -> REGION_ROUTE_16_GATE:WEST": "Gate Entrance", + "REGION_ROUTE_16_GATE:WEST -> REGION_ROUTE_16:CYCLING_ROAD": "Gate Exit", + "REGION_ROUTE_17 -> REGION_ROUTE_17_ROUTE_18_GATE:WEST": "Gate Entrance", + "REGION_ROUTE_17_ROUTE_18_GATE:WEST -> REGION_ROUTE_17": "Gate Exit", + "REGION_ROUTE_17_ROUTE_18_GATE:EAST -> REGION_ROUTE_18": "Gate Exit", + "REGION_ROUTE_18 -> REGION_ROUTE_17_ROUTE_18_GATE:EAST": "Gate Entrance", + "REGION_ROUTE_19:GATE_ENTRANCE -> REGION_ROUTE_19_FUCHSIA_GATE": "Gate Entrance", + "REGION_ROUTE_19_FUCHSIA_GATE -> REGION_ROUTE_19:GATE_ENTRANCE": "Gate Exit", + "REGION_ROUTE_22 -> REGION_VICTORY_ROAD_GATE:EAST": "Gate Entrance", + "REGION_VICTORY_ROAD_GATE:EAST -> REGION_ROUTE_22": "Gate Exit", + "REGION_ROUTE_26 -> REGION_VICTORY_ROAD_GATE": "Gate Entrance", + "REGION_VICTORY_ROAD_GATE -> REGION_ROUTE_26": "Gate Exit", + "REGION_ROUTE_28 -> REGION_VICTORY_ROAD_GATE:WEST": "Gate Entrance", + "REGION_VICTORY_ROAD_GATE:WEST -> REGION_ROUTE_28": "Gate Exit", + "REGION_ROUTE_29 -> REGION_ROUTE_29_ROUTE_46_GATE": "Gate Entrance", + "REGION_ROUTE_29_ROUTE_46_GATE -> REGION_ROUTE_29": "Gate Exit", + "REGION_ROUTE_29_ROUTE_46_GATE -> REGION_ROUTE_46:SOUTH": "Gate Exit", + "REGION_ROUTE_46:SOUTH -> REGION_ROUTE_29_ROUTE_46_GATE": "Gate Entrance", + "REGION_ROUTE_2:CENTEREAST -> REGION_ROUTE_2_GATE": "Gate Entrance", + "REGION_ROUTE_2_GATE -> REGION_ROUTE_2:CENTEREAST": "Gate Exit", + "REGION_ROUTE_2:SOUTHEAST -> REGION_ROUTE_2_GATE": "Gate Entrance", + "REGION_ROUTE_2_GATE -> REGION_ROUTE_2:SOUTHEAST": "Gate Exit", + "REGION_ROUTE_31 -> REGION_ROUTE_31_VIOLET_GATE": "Gate Entrance", + "REGION_ROUTE_31_VIOLET_GATE -> REGION_ROUTE_31": "Gate Exit", + "REGION_ROUTE_31_VIOLET_GATE -> REGION_VIOLET_CITY": "Gate Exit", + "REGION_VIOLET_CITY -> REGION_ROUTE_31_VIOLET_GATE": "Gate Entrance", + "REGION_ROUTE_32:NORTH -> REGION_ROUTE_32_RUINS_OF_ALPH_GATE": "Gate Entrance", + "REGION_ROUTE_32_RUINS_OF_ALPH_GATE -> REGION_ROUTE_32:NORTH": "Gate Exit", + "REGION_ROUTE_32_RUINS_OF_ALPH_GATE -> REGION_RUINS_OF_ALPH_OUTSIDE": "Gate Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_ROUTE_32_RUINS_OF_ALPH_GATE": "Gate Entrance", + "REGION_ROUTE_34 -> REGION_ROUTE_34_ILEX_FOREST_GATE": "Gate Entrance", + "REGION_ROUTE_34_ILEX_FOREST_GATE -> REGION_ROUTE_34": "Gate Exit", + "REGION_ROUTE_35 -> REGION_ROUTE_35_GOLDENROD_GATE": "Gate Entrance", + "REGION_ROUTE_35_GOLDENROD_GATE -> REGION_ROUTE_35": "Gate Exit", + "REGION_ROUTE_35 -> REGION_ROUTE_35_NATIONAL_PARK_GATE": "Gate Entrance", + "REGION_ROUTE_35_NATIONAL_PARK_GATE -> REGION_ROUTE_35": "Gate Exit", + "REGION_ROUTE_36:EAST -> REGION_ROUTE_36_RUINS_OF_ALPH_GATE": "Gate Entrance", + "REGION_ROUTE_36_RUINS_OF_ALPH_GATE -> REGION_ROUTE_36:EAST": "Gate Exit", + "REGION_ROUTE_36:WEST -> REGION_ROUTE_36_NATIONAL_PARK_GATE": "Gate Entrance", + "REGION_ROUTE_36_NATIONAL_PARK_GATE -> REGION_ROUTE_36:WEST": "Gate Exit", + "REGION_ROUTE_36_RUINS_OF_ALPH_GATE -> REGION_RUINS_OF_ALPH_OUTSIDE": "Gate Exit", + "REGION_RUINS_OF_ALPH_OUTSIDE -> REGION_ROUTE_36_RUINS_OF_ALPH_GATE": "Gate Entrance", + "REGION_ROUTE_38 -> REGION_ROUTE_38_ECRUTEAK_GATE": "Gate Entrance", + "REGION_ROUTE_38_ECRUTEAK_GATE -> REGION_ROUTE_38": "Gate Exit", + "REGION_ROUTE_40 -> REGION_ROUTE_40_BATTLE_TOWER_GATE": "Gate Entrance", + "REGION_ROUTE_40_BATTLE_TOWER_GATE -> REGION_ROUTE_40": "Gate Exit", + "REGION_ROUTE_42:WEST -> REGION_ROUTE_42_ECRUTEAK_GATE": "Gate Entrance", + "REGION_ROUTE_42_ECRUTEAK_GATE -> REGION_ROUTE_42:WEST": "Gate Exit", + "REGION_ROUTE_43 -> REGION_ROUTE_43_GATE:NORTH": "Gate Entrance", + "REGION_ROUTE_43_GATE:NORTH -> REGION_ROUTE_43": "Gate Exit", + "REGION_ROUTE_43 -> REGION_ROUTE_43_GATE:SOUTH": "Gate Entrance", + "REGION_ROUTE_43_GATE:SOUTH -> REGION_ROUTE_43": "Gate Exit", + "REGION_ROUTE_43 -> REGION_ROUTE_43_MAHOGANY_GATE": "Gate Entrance", + "REGION_ROUTE_43_MAHOGANY_GATE -> REGION_ROUTE_43": "Gate Exit", + "REGION_ROUTE_5 -> REGION_ROUTE_5_SAFFRON_GATE:NORTH": "Gate Entrance", + "REGION_ROUTE_5_SAFFRON_GATE:NORTH -> REGION_ROUTE_5": "Gate Exit", + "REGION_ROUTE_5_SAFFRON_GATE:SOUTH -> REGION_SAFFRON_CITY": "Gate Exit", + "REGION_SAFFRON_CITY -> REGION_ROUTE_5_SAFFRON_GATE:SOUTH": "Gate Entrance", + "REGION_ROUTE_6 -> REGION_ROUTE_6_SAFFRON_GATE:SOUTH": "Gate Entrance", + "REGION_ROUTE_6_SAFFRON_GATE:SOUTH -> REGION_ROUTE_6": "Gate Exit", + "REGION_ROUTE_6_SAFFRON_GATE:NORTH -> REGION_SAFFRON_CITY": "Gate Exit", + "REGION_SAFFRON_CITY -> REGION_ROUTE_6_SAFFRON_GATE:NORTH": "Gate Entrance", + "REGION_ROUTE_7 -> REGION_ROUTE_7_SAFFRON_GATE:WEST": "Gate Entrance", + "REGION_ROUTE_7_SAFFRON_GATE:WEST -> REGION_ROUTE_7": "Gate Exit", + "REGION_ROUTE_7_SAFFRON_GATE:EAST -> REGION_SAFFRON_CITY": "Gate Exit", + "REGION_SAFFRON_CITY -> REGION_ROUTE_7_SAFFRON_GATE:EAST": "Gate Entrance", + "REGION_ROUTE_8 -> REGION_ROUTE_8_SAFFRON_GATE:EAST": "Gate Entrance", + "REGION_ROUTE_8_SAFFRON_GATE:EAST -> REGION_ROUTE_8": "Gate Exit", + "REGION_ROUTE_8_SAFFRON_GATE:WEST -> REGION_SAFFRON_CITY": "Gate Exit", + "REGION_SAFFRON_CITY -> REGION_ROUTE_8_SAFFRON_GATE:WEST": "Gate Entrance", + "REGION_AZALEA_GYM -> REGION_AZALEA_TOWN": "Gym Entrance", + "REGION_AZALEA_TOWN -> REGION_AZALEA_GYM": "Gym Exit", + "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_GYM_1F": "Gym Entrance", + "REGION_BLACKTHORN_GYM_1F -> REGION_BLACKTHORN_CITY": "Gym Exit", + "REGION_CELADON_CITY:GYM_ENTRANCE -> REGION_CELADON_GYM": "Gym Entrance", + "REGION_CELADON_GYM -> REGION_CELADON_CITY:GYM_ENTRANCE": "Gym Exit", + "REGION_CERULEAN_CITY -> REGION_CERULEAN_GYM": "Gym Entrance", + "REGION_CERULEAN_GYM -> REGION_CERULEAN_CITY": "Gym Exit", + "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_GYM": "Gym Entrance", + "REGION_CIANWOOD_GYM -> REGION_CIANWOOD_CITY": "Gym Exit", + "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_GYM": "Gym Entrance", + "REGION_ECRUTEAK_GYM -> REGION_ECRUTEAK_CITY": "Gym Exit", + "REGION_FIGHTING_DOJO -> REGION_SAFFRON_CITY": "Gym Exit", + "REGION_SAFFRON_CITY -> REGION_FIGHTING_DOJO": "Gym Entrance", + "REGION_FUCHSIA_CITY -> REGION_FUCHSIA_GYM": "Gym Entrance", + "REGION_FUCHSIA_GYM -> REGION_FUCHSIA_CITY": "Gym Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_GYM": "Gym Entrance", + "REGION_GOLDENROD_GYM -> REGION_GOLDENROD_CITY": "Gym Exit", + "REGION_MAHOGANY_GYM -> REGION_MAHOGANY_TOWN": "Gym Exit", + "REGION_MAHOGANY_TOWN -> REGION_MAHOGANY_GYM": "Gym Entrance", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_GYM": "Gym Entrance", + "REGION_OLIVINE_GYM -> REGION_OLIVINE_CITY": "Gym Exit", + "REGION_PEWTER_CITY -> REGION_PEWTER_GYM": "Gym Entrance", + "REGION_PEWTER_GYM -> REGION_PEWTER_CITY": "Gym Exit", + "REGION_ROUTE_20:SEAFOAM -> REGION_SEAFOAM_GYM": "Gym Entrance", + "REGION_SEAFOAM_GYM -> REGION_ROUTE_20:SEAFOAM": "Gym Exit", + "REGION_SAFFRON_CITY -> REGION_SAFFRON_GYM:ENTRANCE": "Gym Entrance", + "REGION_SAFFRON_GYM:ENTRANCE -> REGION_SAFFRON_CITY": "Gym Exit", "REGION_SAFFRON_GYM:ENTRANCE -> REGION_SAFFRON_GYM:SE": "Gym Interior", "REGION_SAFFRON_GYM:SE -> REGION_SAFFRON_GYM:E": "Gym Interior", "REGION_SAFFRON_GYM:E -> REGION_SAFFRON_GYM:W": "Gym Interior", @@ -705,12 +705,12 @@ "REGION_SAFFRON_GYM:NE -> REGION_SAFFRON_GYM:E": "Gym Interior", "REGION_SAFFRON_GYM:NW -> REGION_SAFFRON_GYM:NE": "Gym Interior", "REGION_SAFFRON_GYM:CENTER -> REGION_SAFFRON_GYM:NW": "Gym Interior", - "REGION_VERMILION_CITY:GYM_ENTRANCE -> REGION_VERMILION_GYM": "Gym", - "REGION_VERMILION_GYM -> REGION_VERMILION_CITY:GYM_ENTRANCE": "Gym", - "REGION_VIOLET_CITY -> REGION_VIOLET_GYM": "Gym", - "REGION_VIOLET_GYM -> REGION_VIOLET_CITY": "Gym", - "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_GYM": "Gym", - "REGION_VIRIDIAN_GYM -> REGION_VIRIDIAN_CITY": "Gym", + "REGION_VERMILION_CITY:GYM_ENTRANCE -> REGION_VERMILION_GYM": "Gym Entrance", + "REGION_VERMILION_GYM -> REGION_VERMILION_CITY:GYM_ENTRANCE": "Gym Exit", + "REGION_VIOLET_CITY -> REGION_VIOLET_GYM": "Gym Entrance", + "REGION_VIOLET_GYM -> REGION_VIOLET_CITY": "Gym Exit", + "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_GYM": "Gym Entrance", + "REGION_VIRIDIAN_GYM -> REGION_VIRIDIAN_CITY": "Gym Exit", "REGION_BLACKTHORN_GYM_1F -> REGION_BLACKTHORN_GYM_2F": "Gym Interior", "REGION_BLACKTHORN_GYM_2F -> REGION_BLACKTHORN_GYM_1F": "Gym Interior", "REGION_BLACKTHORN_GYM_1F:MIDDLE -> REGION_BLACKTHORN_GYM_2F": "Gym Interior", @@ -741,50 +741,50 @@ "REGION_RUINS_OF_ALPH_KABUTO_ITEM_ROOM -> REGION_RUINS_OF_ALPH_KABUTO_WORD_ROOM": "One-Way", "REGION_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM -> REGION_RUINS_OF_ALPH_OMANYTE_WORD_ROOM": "One-Way", "REGION_VICTORY_ROAD:3F -> REGION_VICTORY_ROAD:2F:NORTHWEST": "One-Way", - "REGION_AZALEA_POKECENTER_1F -> REGION_AZALEA_TOWN": "Pokecenter", - "REGION_AZALEA_TOWN -> REGION_AZALEA_POKECENTER_1F": "Pokecenter", - "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_POKECENTER_1F": "Pokecenter", - "REGION_BLACKTHORN_POKECENTER_1F -> REGION_BLACKTHORN_CITY": "Pokecenter", - "REGION_CELADON_CITY -> REGION_CELADON_POKECENTER_1F": "Pokecenter", - "REGION_CELADON_POKECENTER_1F -> REGION_CELADON_CITY": "Pokecenter", - "REGION_CERULEAN_CITY -> REGION_CERULEAN_POKECENTER_1F": "Pokecenter", - "REGION_CERULEAN_POKECENTER_1F -> REGION_CERULEAN_CITY": "Pokecenter", - "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_POKECENTER_1F": "Pokecenter", - "REGION_CHERRYGROVE_POKECENTER_1F -> REGION_CHERRYGROVE_CITY": "Pokecenter", - "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_POKECENTER_1F": "Pokecenter", - "REGION_CIANWOOD_POKECENTER_1F -> REGION_CIANWOOD_CITY": "Pokecenter", - "REGION_CINNABAR_ISLAND -> REGION_CINNABAR_POKECENTER_1F": "Pokecenter", - "REGION_CINNABAR_POKECENTER_1F -> REGION_CINNABAR_ISLAND": "Pokecenter", - "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_POKECENTER_1F": "Pokecenter", - "REGION_ECRUTEAK_POKECENTER_1F -> REGION_ECRUTEAK_CITY": "Pokecenter", - "REGION_FUCHSIA_CITY -> REGION_FUCHSIA_POKECENTER_1F": "Pokecenter", - "REGION_FUCHSIA_POKECENTER_1F -> REGION_FUCHSIA_CITY": "Pokecenter", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_POKECENTER_1F": "Pokecenter", - "REGION_GOLDENROD_POKECENTER_1F -> REGION_GOLDENROD_CITY": "Pokecenter", - "REGION_INDIGO_PLATEAU_POKECENTER_1F -> REGION_ROUTE_23": "Pokecenter", - "REGION_ROUTE_23 -> REGION_INDIGO_PLATEAU_POKECENTER_1F": "Pokecenter", - "REGION_LAVENDER_POKECENTER_1F -> REGION_LAVENDER_TOWN": "Pokecenter", - "REGION_LAVENDER_TOWN -> REGION_LAVENDER_POKECENTER_1F": "Pokecenter", - "REGION_MAHOGANY_POKECENTER_1F -> REGION_MAHOGANY_TOWN": "Pokecenter", - "REGION_MAHOGANY_TOWN -> REGION_MAHOGANY_POKECENTER_1F": "Pokecenter", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_POKECENTER_1F": "Pokecenter", - "REGION_OLIVINE_POKECENTER_1F -> REGION_OLIVINE_CITY": "Pokecenter", - "REGION_PEWTER_CITY -> REGION_PEWTER_POKECENTER_1F": "Pokecenter", - "REGION_PEWTER_POKECENTER_1F -> REGION_PEWTER_CITY": "Pokecenter", - "REGION_ROUTE_10_NORTH:POKECENTER -> REGION_ROUTE_10_POKECENTER_1F": "Pokecenter", - "REGION_ROUTE_10_POKECENTER_1F -> REGION_ROUTE_10_NORTH:POKECENTER": "Pokecenter", - "REGION_ROUTE_32:SOUTH -> REGION_ROUTE_32_POKECENTER_1F": "Pokecenter", - "REGION_ROUTE_32_POKECENTER_1F -> REGION_ROUTE_32:SOUTH": "Pokecenter", - "REGION_SAFFRON_CITY -> REGION_SAFFRON_POKECENTER_1F": "Pokecenter", - "REGION_SAFFRON_POKECENTER_1F -> REGION_SAFFRON_CITY": "Pokecenter", - "REGION_SILVER_CAVE_OUTSIDE -> REGION_SILVER_CAVE_POKECENTER_1F": "Pokecenter", - "REGION_SILVER_CAVE_POKECENTER_1F -> REGION_SILVER_CAVE_OUTSIDE": "Pokecenter", - "REGION_VERMILION_CITY -> REGION_VERMILION_POKECENTER_1F": "Pokecenter", - "REGION_VERMILION_POKECENTER_1F -> REGION_VERMILION_CITY": "Pokecenter", - "REGION_VIOLET_CITY -> REGION_VIOLET_POKECENTER_1F": "Pokecenter", - "REGION_VIOLET_POKECENTER_1F -> REGION_VIOLET_CITY": "Pokecenter", - "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_POKECENTER_1F": "Pokecenter", - "REGION_VIRIDIAN_POKECENTER_1F -> REGION_VIRIDIAN_CITY": "Pokecenter", + "REGION_AZALEA_POKECENTER_1F -> REGION_AZALEA_TOWN": "Pokecenter Exit", + "REGION_AZALEA_TOWN -> REGION_AZALEA_POKECENTER_1F": "Pokecenter Entrance", + "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_POKECENTER_1F": "Pokecenter Entrance", + "REGION_BLACKTHORN_POKECENTER_1F -> REGION_BLACKTHORN_CITY": "Pokecenter Exit", + "REGION_CELADON_CITY -> REGION_CELADON_POKECENTER_1F": "Pokecenter Entrance", + "REGION_CELADON_POKECENTER_1F -> REGION_CELADON_CITY": "Pokecenter Exit", + "REGION_CERULEAN_CITY -> REGION_CERULEAN_POKECENTER_1F": "Pokecenter Entrance", + "REGION_CERULEAN_POKECENTER_1F -> REGION_CERULEAN_CITY": "Pokecenter Exit", + "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_POKECENTER_1F": "Pokecenter Entrance", + "REGION_CHERRYGROVE_POKECENTER_1F -> REGION_CHERRYGROVE_CITY": "Pokecenter Exit", + "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_POKECENTER_1F": "Pokecenter Entrance", + "REGION_CIANWOOD_POKECENTER_1F -> REGION_CIANWOOD_CITY": "Pokecenter Exit", + "REGION_CINNABAR_ISLAND -> REGION_CINNABAR_POKECENTER_1F": "Pokecenter Entrance", + "REGION_CINNABAR_POKECENTER_1F -> REGION_CINNABAR_ISLAND": "Pokecenter Exit", + "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_POKECENTER_1F": "Pokecenter Entrance", + "REGION_ECRUTEAK_POKECENTER_1F -> REGION_ECRUTEAK_CITY": "Pokecenter Exit", + "REGION_FUCHSIA_CITY -> REGION_FUCHSIA_POKECENTER_1F": "Pokecenter Entrance", + "REGION_FUCHSIA_POKECENTER_1F -> REGION_FUCHSIA_CITY": "Pokecenter Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_POKECENTER_1F": "Pokecenter Entrance", + "REGION_GOLDENROD_POKECENTER_1F -> REGION_GOLDENROD_CITY": "Pokecenter Exit", + "REGION_INDIGO_PLATEAU_POKECENTER_1F -> REGION_ROUTE_23": "Pokecenter Exit", + "REGION_ROUTE_23 -> REGION_INDIGO_PLATEAU_POKECENTER_1F": "Pokecenter Entrance", + "REGION_LAVENDER_POKECENTER_1F -> REGION_LAVENDER_TOWN": "Pokecenter Exit", + "REGION_LAVENDER_TOWN -> REGION_LAVENDER_POKECENTER_1F": "Pokecenter Entrance", + "REGION_MAHOGANY_POKECENTER_1F -> REGION_MAHOGANY_TOWN": "Pokecenter Exit", + "REGION_MAHOGANY_TOWN -> REGION_MAHOGANY_POKECENTER_1F": "Pokecenter Entrance", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_POKECENTER_1F": "Pokecenter Entrance", + "REGION_OLIVINE_POKECENTER_1F -> REGION_OLIVINE_CITY": "Pokecenter Exit", + "REGION_PEWTER_CITY -> REGION_PEWTER_POKECENTER_1F": "Pokecenter Entrance", + "REGION_PEWTER_POKECENTER_1F -> REGION_PEWTER_CITY": "Pokecenter Exit", + "REGION_ROUTE_10_NORTH:POKECENTER -> REGION_ROUTE_10_POKECENTER_1F": "Pokecenter Entrance", + "REGION_ROUTE_10_POKECENTER_1F -> REGION_ROUTE_10_NORTH:POKECENTER": "Pokecenter Exit", + "REGION_ROUTE_32:SOUTH -> REGION_ROUTE_32_POKECENTER_1F": "Pokecenter Entrance", + "REGION_ROUTE_32_POKECENTER_1F -> REGION_ROUTE_32:SOUTH": "Pokecenter Exit", + "REGION_SAFFRON_CITY -> REGION_SAFFRON_POKECENTER_1F": "Pokecenter Entrance", + "REGION_SAFFRON_POKECENTER_1F -> REGION_SAFFRON_CITY": "Pokecenter Exit", + "REGION_SILVER_CAVE_OUTSIDE -> REGION_SILVER_CAVE_POKECENTER_1F": "Pokecenter Entrance", + "REGION_SILVER_CAVE_POKECENTER_1F -> REGION_SILVER_CAVE_OUTSIDE": "Pokecenter Exit", + "REGION_VERMILION_CITY -> REGION_VERMILION_POKECENTER_1F": "Pokecenter Entrance", + "REGION_VERMILION_POKECENTER_1F -> REGION_VERMILION_CITY": "Pokecenter Exit", + "REGION_VIOLET_CITY -> REGION_VIOLET_POKECENTER_1F": "Pokecenter Entrance", + "REGION_VIOLET_POKECENTER_1F -> REGION_VIOLET_CITY": "Pokecenter Exit", + "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_POKECENTER_1F": "Pokecenter Entrance", + "REGION_VIRIDIAN_POKECENTER_1F -> REGION_VIRIDIAN_CITY": "Pokecenter Exit", "REGION_BRUNOS_ROOM -> REGION_KARENS_ROOM": "Pokemon League", "REGION_KARENS_ROOM -> REGION_BRUNOS_ROOM": "Pokemon League", "REGION_BRUNOS_ROOM -> REGION_KOGAS_ROOM": "Pokemon League", @@ -795,62 +795,62 @@ "REGION_LANCES_ROOM -> REGION_KARENS_ROOM": "Pokemon League", "REGION_KOGAS_ROOM -> REGION_WILLS_ROOM": "Pokemon League", "REGION_WILLS_ROOM -> REGION_KOGAS_ROOM": "Pokemon League", - "REGION_AZALEA_MART -> REGION_AZALEA_TOWN": "Mart", - "REGION_AZALEA_TOWN -> REGION_AZALEA_MART": "Mart", - "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_MART": "Mart", - "REGION_BLACKTHORN_MART -> REGION_BLACKTHORN_CITY": "Mart", - "REGION_CELADON_CAFE -> REGION_CELADON_CITY": "Building", - "REGION_CELADON_CITY -> REGION_CELADON_CAFE": "Building", - "REGION_CELADON_CITY -> REGION_CELADON_GAME_CORNER": "Building", - "REGION_CELADON_GAME_CORNER -> REGION_CELADON_CITY": "Building", - "REGION_CELADON_CITY -> REGION_CELADON_GAME_CORNER_PRIZE_ROOM": "Building", - "REGION_CELADON_GAME_CORNER_PRIZE_ROOM -> REGION_CELADON_CITY": "Building", - "REGION_CERULEAN_CITY -> REGION_CERULEAN_MART": "Mart", - "REGION_CERULEAN_MART -> REGION_CERULEAN_CITY": "Mart", - "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_MART": "Mart", - "REGION_CHERRYGROVE_MART -> REGION_CHERRYGROVE_CITY": "Mart", - "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_PHARMACY": "Mart", - "REGION_CIANWOOD_PHARMACY -> REGION_CIANWOOD_CITY": "Mart", - "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_MART": "Mart", - "REGION_ECRUTEAK_MART -> REGION_ECRUTEAK_CITY": "Mart", - "REGION_FUCHSIA_CITY:CUT -> REGION_FUCHSIA_MART": "Mart", - "REGION_FUCHSIA_MART -> REGION_FUCHSIA_CITY:CUT": "Mart", - "REGION_GOLDENROD_BIKE_SHOP -> REGION_GOLDENROD_CITY": "Mart", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_BIKE_SHOP": "Mart", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_FLOWER_SHOP": "Mart", - "REGION_GOLDENROD_FLOWER_SHOP -> REGION_GOLDENROD_CITY": "Mart", - "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_GAME_CORNER": "Building", - "REGION_GOLDENROD_GAME_CORNER -> REGION_GOLDENROD_CITY": "Building", - "REGION_LAVENDER_MART -> REGION_LAVENDER_TOWN": "Mart", - "REGION_LAVENDER_TOWN -> REGION_LAVENDER_MART": "Mart", - "REGION_MAHOGANY_MART_1F -> REGION_MAHOGANY_TOWN": "Mart", - "REGION_MAHOGANY_TOWN -> REGION_MAHOGANY_MART_1F": "Mart", - "REGION_MOUNT_MOON_GIFT_SHOP -> REGION_MOUNT_MOON_SQUARE": "Mart", - "REGION_MOUNT_MOON_SQUARE -> REGION_MOUNT_MOON_GIFT_SHOP": "Mart", - "REGION_OLIVINE_CAFE -> REGION_OLIVINE_CITY": "Building", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_CAFE": "Building", - "REGION_OLIVINE_CITY -> REGION_OLIVINE_MART": "Mart", - "REGION_OLIVINE_MART -> REGION_OLIVINE_CITY": "Mart", - "REGION_PEWTER_CITY -> REGION_PEWTER_MART": "Mart", - "REGION_PEWTER_MART -> REGION_PEWTER_CITY": "Mart", - "REGION_ROUTE_39 -> REGION_ROUTE_39_FARMHOUSE": "Building", - "REGION_ROUTE_39_FARMHOUSE -> REGION_ROUTE_39": "Building", - "REGION_SAFFRON_CITY -> REGION_SAFFRON_MART": "Mart", - "REGION_SAFFRON_MART -> REGION_SAFFRON_CITY": "Mart", - "REGION_VERMILION_CITY -> REGION_VERMILION_MART": "Mart", - "REGION_VERMILION_MART -> REGION_VERMILION_CITY": "Mart", - "REGION_VIOLET_CITY -> REGION_VIOLET_MART": "Mart", - "REGION_VIOLET_MART -> REGION_VIOLET_CITY": "Mart", - "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_MART": "Mart", - "REGION_VIRIDIAN_MART -> REGION_VIRIDIAN_CITY": "Mart", - "REGION_ROUTE_23_RESTORED:SOUTH -> REGION_VICTORY_ROAD_GATE:NORTH": "Gate", - "REGION_ROUTE_23_RESTORED:NORTH -> REGION_VICTORY_ROAD:1F:ENTRANCE": "Dungeon", - "REGION_VICTORY_ROAD:1F:ENTRANCE -> REGION_ROUTE_23_RESTORED:NORTH": "Dungeon", - "REGION_VICTORY_ROAD_GATE:NORTH -> REGION_ROUTE_23_RESTORED:SOUTH": "Gate", - "REGION_ROUTE_32:SOUTH -> REGION_FLOODED_MINE:NORTH_ENTRANCE": "Dungeon", - "REGION_FLOODED_MINE:NORTH_ENTRANCE -> REGION_ROUTE_32:SOUTH": "Dungeon", - "REGION_CHERRYGROVE_CITY:FLOODED_MINE_ENTRANCE -> REGION_FLOODED_MINE:SOUTH_ENTRANCE": "Dungeon", - "REGION_FLOODED_MINE:SOUTH_ENTRANCE -> REGION_CHERRYGROVE_CITY:FLOODED_MINE_ENTRANCE": "Dungeon", + "REGION_AZALEA_MART -> REGION_AZALEA_TOWN": "Mart Exit", + "REGION_AZALEA_TOWN -> REGION_AZALEA_MART": "Mart Entrance", + "REGION_BLACKTHORN_CITY -> REGION_BLACKTHORN_MART": "Mart Entrance", + "REGION_BLACKTHORN_MART -> REGION_BLACKTHORN_CITY": "Mart Exit", + "REGION_CELADON_CAFE -> REGION_CELADON_CITY": "Building Exit", + "REGION_CELADON_CITY -> REGION_CELADON_CAFE": "Building Entrance", + "REGION_CELADON_CITY -> REGION_CELADON_GAME_CORNER": "Building Entrance", + "REGION_CELADON_GAME_CORNER -> REGION_CELADON_CITY": "Building Exit", + "REGION_CELADON_CITY -> REGION_CELADON_GAME_CORNER_PRIZE_ROOM": "Building Entrance", + "REGION_CELADON_GAME_CORNER_PRIZE_ROOM -> REGION_CELADON_CITY": "Building Exit", + "REGION_CERULEAN_CITY -> REGION_CERULEAN_MART": "Mart Entrance", + "REGION_CERULEAN_MART -> REGION_CERULEAN_CITY": "Mart Exit", + "REGION_CHERRYGROVE_CITY -> REGION_CHERRYGROVE_MART": "Mart Entrance", + "REGION_CHERRYGROVE_MART -> REGION_CHERRYGROVE_CITY": "Mart Exit", + "REGION_CIANWOOD_CITY -> REGION_CIANWOOD_PHARMACY": "Mart Entrance", + "REGION_CIANWOOD_PHARMACY -> REGION_CIANWOOD_CITY": "Mart Exit", + "REGION_ECRUTEAK_CITY -> REGION_ECRUTEAK_MART": "Mart Entrance", + "REGION_ECRUTEAK_MART -> REGION_ECRUTEAK_CITY": "Mart Exit", + "REGION_FUCHSIA_CITY:CUT -> REGION_FUCHSIA_MART": "Mart Entrance", + "REGION_FUCHSIA_MART -> REGION_FUCHSIA_CITY:CUT": "Mart Exit", + "REGION_GOLDENROD_BIKE_SHOP -> REGION_GOLDENROD_CITY": "Mart Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_BIKE_SHOP": "Mart Entrance", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_FLOWER_SHOP": "Mart Entrance", + "REGION_GOLDENROD_FLOWER_SHOP -> REGION_GOLDENROD_CITY": "Mart Exit", + "REGION_GOLDENROD_CITY -> REGION_GOLDENROD_GAME_CORNER": "Building Entrance", + "REGION_GOLDENROD_GAME_CORNER -> REGION_GOLDENROD_CITY": "Building Exit", + "REGION_LAVENDER_MART -> REGION_LAVENDER_TOWN": "Mart Exit", + "REGION_LAVENDER_TOWN -> REGION_LAVENDER_MART": "Mart Entrance", + "REGION_MAHOGANY_MART_1F -> REGION_MAHOGANY_TOWN": "Mart Exit", + "REGION_MAHOGANY_TOWN -> REGION_MAHOGANY_MART_1F": "Mart Entrance", + "REGION_MOUNT_MOON_GIFT_SHOP -> REGION_MOUNT_MOON_SQUARE": "Mart Exit", + "REGION_MOUNT_MOON_SQUARE -> REGION_MOUNT_MOON_GIFT_SHOP": "Mart Entrance", + "REGION_OLIVINE_CAFE -> REGION_OLIVINE_CITY": "Building Exit", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_CAFE": "Building Entrance", + "REGION_OLIVINE_CITY -> REGION_OLIVINE_MART": "Mart Entrance", + "REGION_OLIVINE_MART -> REGION_OLIVINE_CITY": "Mart Exit", + "REGION_PEWTER_CITY -> REGION_PEWTER_MART": "Mart Entrance", + "REGION_PEWTER_MART -> REGION_PEWTER_CITY": "Mart Exit", + "REGION_ROUTE_39 -> REGION_ROUTE_39_FARMHOUSE": "Building Entrance", + "REGION_ROUTE_39_FARMHOUSE -> REGION_ROUTE_39": "Building Exit", + "REGION_SAFFRON_CITY -> REGION_SAFFRON_MART": "Mart Entrance", + "REGION_SAFFRON_MART -> REGION_SAFFRON_CITY": "Mart Exit", + "REGION_VERMILION_CITY -> REGION_VERMILION_MART": "Mart Entrance", + "REGION_VERMILION_MART -> REGION_VERMILION_CITY": "Mart Exit", + "REGION_VIOLET_CITY -> REGION_VIOLET_MART": "Mart Entrance", + "REGION_VIOLET_MART -> REGION_VIOLET_CITY": "Mart Exit", + "REGION_VIRIDIAN_CITY -> REGION_VIRIDIAN_MART": "Mart Entrance", + "REGION_VIRIDIAN_MART -> REGION_VIRIDIAN_CITY": "Mart Exit", + "REGION_ROUTE_23_RESTORED:SOUTH -> REGION_VICTORY_ROAD_GATE:NORTH": "Gate Entrance", + "REGION_ROUTE_23_RESTORED:NORTH -> REGION_VICTORY_ROAD:1F:ENTRANCE": "Dungeon Entrance", + "REGION_VICTORY_ROAD:1F:ENTRANCE -> REGION_ROUTE_23_RESTORED:NORTH": "Dungeon Exit", + "REGION_VICTORY_ROAD_GATE:NORTH -> REGION_ROUTE_23_RESTORED:SOUTH": "Gate Exit", + "REGION_ROUTE_32:SOUTH -> REGION_FLOODED_MINE:NORTH_ENTRANCE": "Dungeon Entrance", + "REGION_FLOODED_MINE:NORTH_ENTRANCE -> REGION_ROUTE_32:SOUTH": "Dungeon Exit", + "REGION_CHERRYGROVE_CITY:FLOODED_MINE_ENTRANCE -> REGION_FLOODED_MINE:SOUTH_ENTRANCE": "Dungeon Entrance", + "REGION_FLOODED_MINE:SOUTH_ENTRANCE -> REGION_CHERRYGROVE_CITY:FLOODED_MINE_ENTRANCE": "Dungeon Exit", "REGION_FLOODED_MINE:NORTH_ENTRANCE -> REGION_FLOODED_MINE": "Dungeon Interior", "REGION_FLOODED_MINE -> REGION_FLOODED_MINE:NORTH_ENTRANCE": "Dungeon Interior", "REGION_FLOODED_MINE:SOUTH_ENTRANCE -> REGION_FLOODED_MINE": "Dungeon Interior", diff --git a/worlds/pokemon_crystal_prerelease/entrance_rando.py b/worlds/pokemon_crystal_prerelease/entrance_rando.py index 4a86bf3ccc95..9c65687da839 100644 --- a/worlds/pokemon_crystal_prerelease/entrance_rando.py +++ b/worlds/pokemon_crystal_prerelease/entrance_rando.py @@ -6,136 +6,117 @@ object it belongs to while staying out of ``world.py``. """ import logging +import pkgutil +import re from collections import Counter +from collections.abc import Mapping from dataclasses import dataclass +from itertools import chain + +import orjson from BaseClasses import CollectionState, Region from .data import data, EntranceConnection, OUTDOOR_ENVIRONMENTS -from .utils import build_reverse_conn_lookup # Group IDs for ER pool assignment. Integers are arbitrary but must be stable # within a single world-generation run. -ER_GROUP_MIXED = 0 -ER_GROUP_ONEWAY = 1 +ER_GROUP_ONEWAY = 0 # Isolated per-category groups get IDs >= ER_GROUP_ISOLATED_BASE. One ID per # category in `isolated_categories`, assigned in sorted order for determinism. -ER_GROUP_ISOLATED_BASE = 2 - -# Under coupled ER a placement glues two door mouths together, so a self-mapped -# isolated pool lets GER join two overworld-side mouths. The two interiors those -# doors led to can then only pair with each other, forming an island with no way -# in. Splitting such a pool by which side of the wall each mouth stands on makes -# that pairing unrepresentable: every overworld mouth must take an interior one. -_ER_SIDE_OUTDOOR = "outdoor" -_ER_SIDE_INTERIOR = "interior" -_ER_SIDE_OPPOSITE = {_ER_SIDE_OUTDOOR: _ER_SIDE_INTERIOR, _ER_SIDE_INTERIOR: _ER_SIDE_OUTDOOR} - -# A pool key is the category on its own, or the category paired with a side when -# that category is split. -ErPoolKey = tuple[str, str | None] - - -def er_connection_side(conn: EntranceConnection) -> str | None: - """Which side of the wall this connection's door mouth stands on, or None - if the source map is unknown.""" - if not conn.exit_warps: - return None - map_data = data.maps.get(conn.exit_warps[0].map_name) - if map_data is None: - return None - return _ER_SIDE_OUTDOOR if map_data.environment in OUTDOOR_ENVIRONMENTS else _ER_SIDE_INTERIOR - - -def _compute_er_split_categories() -> frozenset[str]: - """Categories whose two-way connections are a true overworld/interior - bipartition: every connection has a reverse, and the two directions stand on - opposite sides of the wall. Anything else (interior-to-interior categories, a - category with an unsidable connection) keeps the single self-mapped pool.""" - reverse_lookup = build_reverse_conn_lookup(data.entrance_connections) - bipartite: dict[str, bool] = {} - for name, conn in data.entrance_connections.items(): - if conn.one_way: - continue - reverse_name = reverse_lookup.get(name) - reverse = data.entrance_connections.get(reverse_name) if reverse_name else None - side = er_connection_side(conn) - opposite = side is not None and reverse is not None and er_connection_side(reverse) != side - bipartite[conn.category] = bipartite.get(conn.category, True) and opposite - return frozenset(cat for cat, ok in bipartite.items() if ok) - - -ER_SPLIT_CATEGORIES = _compute_er_split_categories() - - -def _er_pool_key(conn: EntranceConnection, split_categories: frozenset[str]) -> ErPoolKey: - """The isolated-pool key a connection belongs to.""" - if conn.category not in split_categories: - return conn.category, None - return conn.category, er_connection_side(conn) - - -def _build_isolated_group_map( - isolated_categories: set[str], - split_categories: frozenset[str], -) -> dict[ErPoolKey, int]: - """Assign a stable integer group ID to each pool key in the isolated set. - Split categories contribute two keys, one per side of the wall.""" - keys: list[ErPoolKey] = [] - for cat in sorted(isolated_categories): - if cat in split_categories: - keys.append((cat, _ER_SIDE_OUTDOOR)) - keys.append((cat, _ER_SIDE_INTERIOR)) +ER_GROUP_ISOLATED_BASE = 1 + +_ER_BIPARTITE_ENTRANCE = "Entrance" +_ER_BIPARTITE_EXIT = "Exit" +_ER_SIDE_OPPOSITE = {_ER_BIPARTITE_ENTRANCE: _ER_BIPARTITE_EXIT, _ER_BIPARTITE_EXIT: _ER_BIPARTITE_ENTRANCE} +ER_BIPARTITE_SUFFIX = re.compile(f" ({_ER_BIPARTITE_ENTRANCE}|{_ER_BIPARTITE_EXIT})$") + + +def _load_entrance_categories() -> tuple[set[str], set[str]]: + """Read data/entrance_types.json into a set of available entrance categories. + Bipartite categories are a special group of categories that have a clear + entrance/exit separation where we don't want one to map to itself, + those have suffixes that we strip from the result set.""" + raw = pkgutil.get_data(__name__, "data/entrance_types.json") + mapping = orjson.loads(raw.decode("utf-8-sig")) + unique_categories = {cat for _, cat in mapping.items()} + bipartite = {ER_BIPARTITE_SUFFIX.sub("", cat) for cat in unique_categories if ER_BIPARTITE_SUFFIX.search(cat)} + regrouped_categories = {ER_BIPARTITE_SUFFIX.sub("", cat) for cat in unique_categories} + return (frozenset(bipartite), frozenset(regrouped_categories)) +ER_BIPARTITE_CATEGORIES, ENTRANCE_CATEGORIES = _load_entrance_categories() + + +def _build_group_map( + randomized_categories: set[str], +) -> dict[str, int]: + """Assign a stable integer group ID to each pool key in the randomized set. + Bipartite categories contribute two keys, one per side of the wall.""" + group_map = {"One-Way": ER_GROUP_ONEWAY} + keys: list[str] = [] + for cat in sorted(randomized_categories): + if cat in ER_BIPARTITE_CATEGORIES: + keys.append(f"{cat} {_ER_BIPARTITE_ENTRANCE}") + keys.append(f"{cat} {_ER_BIPARTITE_EXIT}") else: - keys.append((cat, None)) - return {key: ER_GROUP_ISOLATED_BASE + i for i, key in enumerate(keys)} - - -def er_group_for_connection( - conn: EntranceConnection, - isolated_group_map: dict[ErPoolKey, int], - split_categories: frozenset[str], -) -> int: - """Return the randomization_group for a connection. - - Caller must only invoke this for connections that are actually being - randomized (category in randomize_entrances). - """ - if conn.category == "One-Way": - return ER_GROUP_ONEWAY - return isolated_group_map.get(_er_pool_key(conn, split_categories), ER_GROUP_MIXED) + keys.append(cat) + group_map.update({key: ER_GROUP_ISOLATED_BASE + i for i, key in enumerate(keys)}) + return group_map def build_er_group_lookup( randomize: set[str], mix: set[str], - split_categories: frozenset[str] = ER_SPLIT_CATEGORIES, -) -> tuple[dict[int, list[int]], bool, dict[ErPoolKey, int]]: +) -> tuple[dict[int, list[int]], bool, dict[str, int]]: """Build target_group_lookup and isolated_group_map for randomize_entrances(). Returns: target_group_lookup: maps each source group ID to the list of target - group IDs it may match with. Unsplit pools map to themselves; the - two halves of a split pool map to each other. + group IDs it may match with. Non-bipartite pools map to themselves; the + two halves of a bipartite pool map to each other. preserve_group_order: always False (no soft-preference fallback). - isolated_group_map: pool key -> group ID for isolated categories. Used - by the caller to assign connections to the right group. + group_map: name -> group ID for categories. Used by the caller + to assign connections to the right group. """ randomized_non_oneway = randomize - {"One-Way"} - isolated_categories = randomized_non_oneway - mix - isolated_group_map = _build_isolated_group_map(isolated_categories, split_categories) + group_map = _build_group_map(randomized_non_oneway) lookup: dict[int, list[int]] = {} - # Mixed pool exists only if at least one randomized non-one-way category is - # also in mix_entrances. (One-Way never joins the mixed pool.) - if randomized_non_oneway & mix: - lookup[ER_GROUP_MIXED] = [ER_GROUP_MIXED] if "One-Way" in randomize: lookup[ER_GROUP_ONEWAY] = [ER_GROUP_ONEWAY] - for (cat, side), gid in isolated_group_map.items(): - lookup[gid] = [isolated_group_map[cat, _ER_SIDE_OPPOSITE[side]]] if side else [gid] + for cat, gid in group_map.items(): + regrouped = ER_BIPARTITE_SUFFIX.sub("", cat) + destinations = mix & randomized_non_oneway if regrouped in mix else {regrouped} + bipartite_match = ER_BIPARTITE_SUFFIX.search(cat) + if bipartite_match: + opposite = _ER_SIDE_OPPOSITE[bipartite_match.group(1)] + lookup[gid] = [group_map[f"{dest} {opposite}" if dest in ER_BIPARTITE_CATEGORIES else dest] + for dest in destinations] + else: + keys = chain.from_iterable([[f"{dest} {_ER_BIPARTITE_ENTRANCE}", f"{dest} {_ER_BIPARTITE_EXIT}"] + if dest in ER_BIPARTITE_CATEGORIES else [dest] for dest in destinations]) + lookup[gid] = [group_map[key] for key in keys] - return lookup, False, isolated_group_map + return lookup, False, group_map + + +def build_reverse_conn_lookup(conns: Mapping[str, EntranceConnection]) -> dict[str, str]: + conn_names = set(conns.keys()) + lookup: dict[str, str] = {} + for name, conn in conns.items(): + exact = f"{conn.entrance_region} -> {conn.exit_region}" + if exact in conn_names: + lookup[name] = exact + continue + + dst = conn.entrance_region + src_base = conn.exit_region.split(":")[0] + if ":" in dst: + dst_base = dst.split(":")[0] + suffix = dst[len(dst_base):] # includes the leading ":" + candidate = f"{dst_base} -> {src_base}{suffix}" + if candidate in conn_names: + lookup[name] = candidate + return lookup @dataclass @@ -201,56 +182,21 @@ def _shuffle_entrances(self) -> None: _er_logger = logging.getLogger(__name__) - # Each half of a split pool takes its partners from the other half, so it only - # balances if outdoor exits match interior targets and vice versa. Plando pairings - # consume and strand targets independently of the exits, so count both sides - # separately; a category that does not balance falls back to a single pool. - def _viable_split_categories(mix_set: set) -> frozenset[str]: - candidates = ER_SPLIT_CATEGORIES & ((randomize - {"One-Way"}) - mix_set) - exits: Counter[tuple[str, str | None]] = Counter() - targets: Counter[tuple[str, str | None]] = Counter() - for entrance, _dest in self.er_entrances: - conn = data.entrance_connections.get(entrance.name) - if conn is None or conn.category not in candidates: - continue - exits[_er_pool_key(conn, candidates)] += 1 - if entrance.name not in self._plando_consumed_targets: - targets[_er_pool_key(conn, candidates)] += 1 - for orphan in self._plando_orphan_targets: - conn = data.entrance_connections.get(orphan.connection_name) - if conn is not None and conn.category in candidates: - targets[_er_pool_key(conn, candidates)] += 1 - - viable = set() - for cat in candidates: - counts = (exits[cat, _ER_SIDE_OUTDOOR], targets[cat, _ER_SIDE_INTERIOR], - exits[cat, _ER_SIDE_INTERIOR], targets[cat, _ER_SIDE_OUTDOOR]) - if counts[0] and counts[0] == counts[1] and counts[2] == counts[3]: - viable.add(cat) - elif counts[0] or counts[2]: - _er_logger.warning( - "ER: %s pool for %s cannot be split (%d outdoor exits need %d interior " - "targets, %d interior exits need %d outdoor targets), most likely from " - "plando_connections; shuffling it as a single pool.", - cat, self.player_name, *counts) - return frozenset(viable) - # Assign each entrance's randomization group for the given mix and return the # target lookup. Targets inherit the group on the next reset/disconnect, so this # only needs to run when the mix changes, not per attempt. def _assign_er_groups(mix_set: set): - split = _viable_split_categories(mix_set) - lookup, _preserve, isolated_group_map = build_er_group_lookup(randomize, mix_set, split) + lookup, _preserve, group_map = build_er_group_lookup(randomize, mix_set) for entrance, _dest in self.er_entrances: conn = data.entrance_connections.get(entrance.name) if conn is None: continue - entrance.randomization_group = er_group_for_connection(conn, isolated_group_map, split) + entrance.randomization_group = group_map[conn.category] # Plando orphan targets have no entrance to inherit from, so group them here. for orphan in self._plando_orphan_targets: conn = data.entrance_connections.get(orphan.connection_name) if conn is not None: - orphan.group = er_group_for_connection(conn, isolated_group_map, split) + orphan.group = group_map[conn.category] return lookup def _try_randomize(target_group_lookup): @@ -447,7 +393,7 @@ def _pin_connections_to_vanilla(self, connection_names: set[str]) -> set[str]: assert conn is not None, ( f"_pin_connections_to_vanilla: unknown connection " f"{entrance.name!r}") - assert conn.category in randomize_set, ( + assert ER_BIPARTITE_SUFFIX.sub("", conn.category) in randomize_set, ( f"_pin_connections_to_vanilla: refusing to pin " f"{entrance.name!r} with category {conn.category!r}, " f"which is not in randomize_entrances={sorted(randomize_set)!r}") diff --git a/worlds/pokemon_crystal_prerelease/options.py b/worlds/pokemon_crystal_prerelease/options.py index 7e94bd5d11fe..1c3895f2eddb 100644 --- a/worlds/pokemon_crystal_prerelease/options.py +++ b/worlds/pokemon_crystal_prerelease/options.py @@ -1,10 +1,8 @@ import random -import pkgutil from collections.abc import Hashable from dataclasses import dataclass from typing import Type, override, Any -import orjson from schema import Schema, And, Optional, Use, Or, Regex from BaseClasses import PlandoOptions, ItemClassification @@ -15,6 +13,7 @@ from .data import data, MapPalette, MiscOption from .maps import FLASH_MAP_GROUPS from .pokemon_data import LEGENDARY_POKEMON, NON_LEGENDARY_POKEMON +from .entrance_rando import ENTRANCE_CATEGORIES from ..AutoWorld import World @@ -2844,15 +2843,6 @@ class PokemonCrystalDeathLink(DeathLink): __doc__ = DeathLink.__doc__ + "\n\n In Pokemon Crystal, whiting out sends a death and receiving a death causes you to white out.\n\n Being seen by a trainer when spinner heck or hell is enabled will send a deathlink." -def _load_entrance_categories() -> tuple[str, ...]: - raw = pkgutil.get_data(__name__, "data/entrance_types.json") - mapping = orjson.loads(raw.decode("utf-8-sig")) - return tuple(sorted(set(mapping.values()))) - - -_ENTRANCE_CATEGORIES = _load_entrance_categories() - - class RandomizeEntrances(EnhancedOptionSet): """ Categories of entrances to include in the entrance randomization pool. @@ -2877,7 +2867,7 @@ class RandomizeEntrances(EnhancedOptionSet): _Random has a 50% chance to include each category not already included. """ display_name = "Randomize Entrances" - valid_keys = list(_ENTRANCE_CATEGORIES) + valid_keys = sorted(ENTRANCE_CATEGORIES) default = [] @@ -2893,8 +2883,8 @@ class MixEntrances(EnhancedOptionSet): _All includes all categories (the default). """ display_name = "Mix Entrances" - valid_keys = list(_ENTRANCE_CATEGORIES) - default = list(_ENTRANCE_CATEGORIES) + valid_keys = sorted(ENTRANCE_CATEGORIES) + default = sorted(ENTRANCE_CATEGORIES) class CoupledEntrances(DefaultOnToggle): diff --git a/worlds/pokemon_crystal_prerelease/regions.py b/worlds/pokemon_crystal_prerelease/regions.py index 75a4693c2236..c12d6109005d 100644 --- a/worlds/pokemon_crystal_prerelease/regions.py +++ b/worlds/pokemon_crystal_prerelease/regions.py @@ -11,7 +11,7 @@ from .options import FreeFlyLocation, JohtoOnly, BlackthornDarkCaveAccess, Goal, Route42Access, LevelCurve, \ WildEncounterMethodsRequired from .pokemon_data import SWARM_REGISTRATIONS -from .entrance_rando import build_er_group_lookup, er_group_for_connection, ER_SPLIT_CATEGORIES +from .entrance_rando import build_er_group_lookup, ER_BIPARTITE_SUFFIX from .utils import get_fly_regions, should_include_region if TYPE_CHECKING: @@ -358,7 +358,7 @@ def setup_mart_regions(parent_region: Region, region_data: RegionData): mix = world.options.mix_entrances.value # frozenset of category strings # create_regions uses the structural split; connect_entrances reassigns every group # from the split that is actually viable for this seed before ER runs. - _, _, isolated_group_map = build_er_group_lookup(set(randomize), set(mix), ER_SPLIT_CATEGORIES) + _, _, group_map = build_er_group_lookup(set(randomize), set(mix)) # Pin certain pokecenter entrances to vanilla so the player always has pokecenter access. vanilla_pokecenter: set[str] = set() @@ -399,14 +399,13 @@ def setup_mart_regions(parent_region: Region, region_data: RegionData): # Disconnect for ER if this connection's category is in the randomization pool conn = data.entrance_connections.get(name) if (conn - and conn.category in randomize + and ER_BIPARTITE_SUFFIX.sub("", conn.category) in randomize and name not in vanilla_pokecenter): if conn.one_way: entrance.randomization_type = EntranceType.ONE_WAY else: entrance.randomization_type = EntranceType.TWO_WAY - entrance.randomization_group = er_group_for_connection( - conn, isolated_group_map, ER_SPLIT_CATEGORIES) + entrance.randomization_group = group_map[conn.category] world.er_entrances.append((entrance, regions[dest])) if world.options.skip_elite_four: diff --git a/worlds/pokemon_crystal_prerelease/rom.py b/worlds/pokemon_crystal_prerelease/rom.py index fcbbf07e78d1..6f441acd955d 100644 --- a/worlds/pokemon_crystal_prerelease/rom.py +++ b/worlds/pokemon_crystal_prerelease/rom.py @@ -16,6 +16,7 @@ from Utils import Version, tuplize_version from .data import data, MiscOption, EncounterType, EncounterKey, FishingRodType, FishTimeOfDay, TreeRarity, MapPalette, PaletteData, \ LocationData, EvolutionType, EntranceConnection, Landmark, GrassTimeOfDay, MoveCategory +from .entrance_rando import build_reverse_conn_lookup from .evolution import get_pokemon_evolutions from .battle_tower_data import BATTLE_TOWER_TIER_OFFSET, BATTLE_TOWER_NUM_TIERS, BATTLE_TOWER_TRAINER_OFFSET, \ BATTLE_TOWER_NUM_TRAINERS, BATTLE_TOWER_TRAINERS_PER_TIER @@ -34,7 +35,7 @@ from .pokemon_data import ALL_UNOWN from .rom_patches import ROM_PATCHES from .utils import convert_to_ingame_text, rom_offset_to_address, write_appp_tokens, write_rom_bytes, \ - replace_map_tiles, parse_time, build_reverse_conn_lookup + replace_map_tiles, parse_time if TYPE_CHECKING: from .world import PokemonCrystalWorld diff --git a/worlds/pokemon_crystal_prerelease/utils.py b/worlds/pokemon_crystal_prerelease/utils.py index f38250a8f247..9e356b1d095f 100644 --- a/worlds/pokemon_crystal_prerelease/utils.py +++ b/worlds/pokemon_crystal_prerelease/utils.py @@ -1,9 +1,8 @@ import logging -from collections.abc import Mapping from typing import TYPE_CHECKING from Options import Toggle -from .data import data, StartingTown, FlyRegion, RegionData, Landmark, FlypointWarp, EntranceConnection +from .data import data, StartingTown, FlyRegion, RegionData, Landmark, FlypointWarp from .mart_data import CUSTOM_MART_SLOT_NAMES from .options import FreeFlyLocation, Route32Condition, JohtoOnly, RandomizeBadges, UndergroundsRequirePower, \ Route3Access, VictoryRoadRequirement, EliteFourRequirement, Goal, Route44AccessRequirement, BlackthornDarkCaveAccess, RedRequirement, \ @@ -859,23 +858,3 @@ def write_appp_tokens(patch, byte_array, address): def write_rom_bytes(rom, byte_array, address): rom[address:address + len(byte_array)] = bytes(byte_array) - - -def build_reverse_conn_lookup(conns: Mapping[str, EntranceConnection]) -> dict[str, str]: - conn_names = set(conns.keys()) - lookup: dict[str, str] = {} - for name, conn in conns.items(): - exact = f"{conn.entrance_region} -> {conn.exit_region}" - if exact in conn_names: - lookup[name] = exact - continue - - dst = conn.entrance_region - src_base = conn.exit_region.split(":")[0] - if ":" in dst: - dst_base = dst.split(":")[0] - suffix = dst[len(dst_base):] # includes the leading ":" - candidate = f"{dst_base} -> {src_base}{suffix}" - if candidate in conn_names: - lookup[name] = candidate - return lookup