From 13d38b98609425a50ae809a3ca334856d38657db Mon Sep 17 00:00:00 2001 From: Quildra Date: Tue, 3 Dec 2024 07:13:19 +0000 Subject: [PATCH] - Finish out the gold route --- Routes/Gold_Silver_Route.py | 75 ++++++++++++++++++++++++++++++++++--- Routes/Red_Blue_Route.py | 2 +- convert_to_pddl.py | 2 +- red_blue_goal_path.py | 1 + 4 files changed, 72 insertions(+), 8 deletions(-) diff --git a/Routes/Gold_Silver_Route.py b/Routes/Gold_Silver_Route.py index acd5e36..eb1f37b 100644 --- a/Routes/Gold_Silver_Route.py +++ b/Routes/Gold_Silver_Route.py @@ -89,6 +89,7 @@ CLEFAIRY_DOLL = 'Clefairy Doll' RAIL_PASS = 'Rail Pass' MISTY_FOUND = 'Misty Found' FLUTE_CHANNEL = 'Flute Channel' +ROUTE_28_UNLOCKED = 'Rotue 28 Unlocked' FLY = 'Fly' @@ -97,12 +98,12 @@ FLY_OUT_OF_BATTLE = 'Fly out of battle' def get_gold_silver_desc() -> PokemonGameDesc: desc: PokemonGameDesc = PokemonGameDesc() desc.graph = get_gold_silver_route() - desc.game_name = "Gold/Silver" + desc.game_name = "Gold_Silver" desc.towns_and_cities = [NEW_BARK_TOWN, CHERRYGROVE_CITY, VIOLET_CITY, AZALEA_TOWN, GOLDENROD_CITY, ECRUTEAK_CITY, OLIVINE_CITY, CIANWOOD_CITY, MAHOGANY_TOWN, BLACKTHORN_CITY, PALLET_TOWN, VIRIDIAN_CITY, PEWTER_CITY, CERULEAN_CITY, SAFFRON_CITY, CELADON_CITY, VERMILION_CITY, FUCHSIA_CITY, CINNABAR_ISLAND] desc.badges = [ZEPHYR_BADGE, HIVE_BADGE, PLAIN_BADGE, FOG_BADGE, STORM_BADGE, MINERAL_BADGE, GLACIER_BADGE, RISING_BADGE, BOULDER_BADGE, CASCADE_BADGE, THUNDER_BADGE, RAINBOW_BADGE, MARSH_BADGE, SOUL_BADGE, VOLCANO_BADGE, EARTH_BADGE] desc.hms = [CUT, SURF, FLASH, STRENGTH, FLY, WATERFALL, WHIRLPOOL] desc.starting_town = NEW_BARK_TOWN - desc.end_goal = MT_SILVER + desc.end_goal = INDIGO_PLATEAU return desc @@ -155,6 +156,7 @@ def get_gold_silver_route() -> Graph: G.add_node(MT_SILVER, node_type='location') G.add_node(SAFARI_ZONE, node_type='location') G.add_node(TOHJO_FALLS, node_type='location') + G.add_node(POWER_PLANT, node_type='location') G.add_edge(NEW_BARK_TOWN, 'Route 29', condition=None) G.add_edge(CHERRYGROVE_CITY, 'Route 29', condition=None) @@ -205,7 +207,7 @@ def get_gold_silver_route() -> Graph: G.add_edge('Route 46', DARK_CAVE, condition=[ROCK_SMASH]) G.add_edge('Route 26', NEW_BARK_TOWN, condition=[SURF, WATERFALL, WHIRLPOOL]) G.add_edge('Route 26', 'Route 27', condition=None) - G.add_edge('Route 28', 'Route 27', condition=None) + G.add_edge('Route 28', 'Route 27', condition=[ROUTE_28_UNLOCKED]) G.add_edge('Route 28', MT_SILVER, condition=None) G.add_edge('Route 23', 'Route 27', condition=None) G.add_edge('Route 23', VICTORY_ROAD, condition=[ZEPHYR_BADGE, HIVE_BADGE, PLAIN_BADGE, FOG_BADGE, STORM_BADGE, MINERAL_BADGE, GLACIER_BADGE, RISING_BADGE]) @@ -216,6 +218,59 @@ def get_gold_silver_route() -> Graph: G.add_edge(SAFFRON_CITY, GOLDENROD_CITY, condition=[POWER_RESTORED, RAIL_PASS]) G.add_edge(DIGLETTS_CAVE, 'Route 11', condition=[WOKE_SNORLAX]) + G.add_edge(PALLET_TOWN, 'Route 1', condition=None) + G.add_edge(PALLET_TOWN, 'Route 21', condition=[SURF]) + G.add_edge('Route 1', VIRIDIAN_CITY, condition=None) + G.add_edge(VIRIDIAN_CITY, 'Route 2', condition=None) + G.add_edge('Route 2', 'Viridian Forest', condition=None) + G.add_edge('Route 2', 'Route 3', condition=[CUT]) + G.add_edge('Viridian Forest', PEWTER_CITY, condition=None) + G.add_edge(PEWTER_CITY, 'Route 3', condition=None) + G.add_edge('Route 3', MT_MOON, condition=None) + G.add_edge(MT_MOON, 'Route 4', condition=None) + G.add_edge('Route 4', CERULEAN_CITY, condition=None) + G.add_edge(CERULEAN_CITY, 'Route 24', condition=None) + G.add_edge(CERULEAN_CITY, 'Route 9', condition=[CUT]) + G.add_edge(CERULEAN_CITY, 'Route 5', condition=None) + G.add_edge('Route 5', SAFFRON_CITY, condition=None) + G.add_edge(SAFFRON_CITY, 'Route 6', condition=None) + G.add_edge(SAFFRON_CITY, 'Route 7', condition=None) + G.add_edge(SAFFRON_CITY, 'Route 8', condition=None) + G.add_edge('Route 6', VERMILION_CITY, condition=None) + G.add_edge(VERMILION_CITY, 'Route 11', condition=None) + G.add_edge('Route 11', 'Route 12', condition=None) + G.add_edge('Route 11', DIGLETTS_CAVE, condition=None) + G.add_edge('Route 2', DIGLETTS_CAVE, condition=[CUT]) + G.add_edge('Route 12', 'Route 13', condition=None) + G.add_edge('Route 12', LAVENDER_TOWN, condition=None) + G.add_edge('Route 7', LAVENDER_TOWN, condition=None) + G.add_edge(LAVENDER_TOWN, 'Route 10', condition=None) + G.add_edge('Route 9', 'Rock Tunnel', condition=[FLASH]) + G.add_edge('Route 10', 'Rock Tunnel', condition=[FLASH]) + G.add_edge(CELADON_CITY, 'Route 8', condition=None) + G.add_edge(CELADON_CITY, 'Route 16', condition=None) + G.add_edge('Route 16', 'Route 17', condition=None) + G.add_edge('Route 17', 'Route 18', condition=None) + G.add_edge('Route 18', FUCHSIA_CITY, condition=None) + G.add_edge(FUCHSIA_CITY,'Route 19', condition=None) + G.add_edge(FUCHSIA_CITY,'Route 15', condition=None) + G.add_edge(FUCHSIA_CITY,'Safari Zone', condition=None) + G.add_edge('Route 19', 'Seafoam Islands', condition=[SURF]) + G.add_edge('Seafoam Islands', 'Route 20', condition=[SURF]) + G.add_edge('Route 20', CINNABAR_ISLAND, condition=[SURF]) + G.add_edge('Route 21', CINNABAR_ISLAND, condition=[SURF]) + G.add_edge('Route 22', VIRIDIAN_CITY, condition=None) + G.add_edge('Route 22', 'Route 23', condition=[SURF]) + G.add_edge('Route 23', VICTORY_ROAD, condition=None) + G.add_edge(VICTORY_ROAD, INDIGO_PLATEAU, condition=None) + G.add_edge('Route 12', 'Route 13', condition=None) + G.add_edge('Route 13', 'Route 14', condition=None) + G.add_edge('Route 14', 'Route 15', condition=None) + G.add_edge('Route 24', 'Route 25', condition=None) + G.add_edge('Route 10', POWER_PLANT, condition=[SURF]) + G.add_edge('Route 5', 'Underground Path', condition=None) + G.add_edge('Underground Path', 'Route 6', condition=None) + G.nodes[NEW_BARK_TOWN]['grants_conditions'] = [ {'condition': S_S_TICKET, 'required_conditions': [JOHTO_CHAMPION]} ] @@ -231,7 +286,7 @@ def get_gold_silver_route() -> Graph: G.nodes[GOLDENROD_CITY]['grants_conditions'] = [ {'condition': PLAIN_BADGE, 'required_conditions': []}, {'condition': SQUIRTBOTTLE, 'required_conditions': []}, - {'condition': OBTAIN_WING, 'required_conditions': [GLACIER_BADGE]}, + {'condition': PKMN_WING, 'required_conditions': [GLACIER_BADGE]}, ] G.nodes[ECRUTEAK_CITY]['grants_conditions'] = [ {'condition': SURF, 'required_conditions': []}, @@ -292,7 +347,7 @@ def get_gold_silver_route() -> Graph: {'condition': RAINBOW_BADGE, 'required_conditions': []} ] G.nodes[FUCHSIA_CITY]['grants_conditions'] = [ - {'condition': FOG_BADGE, 'required_conditions': []} + {'condition': SOUL_BADGE, 'required_conditions': []} ] G.nodes['Route 11']['grants_conditions'] = [ {'condition': WOKE_SNORLAX, 'required_conditions': [FLUTE_CHANNEL]} @@ -300,7 +355,15 @@ def get_gold_silver_route() -> Graph: G.nodes[PEWTER_CITY]['grants_conditions'] = [ {'condition': BOULDER_BADGE, 'required_conditions': []}, {'condition': PKMN_WING, 'required_conditions': []}, - + ] + G.nodes[VIRIDIAN_CITY]['grants_conditions'] = [ + {'condition': EARTH_BADGE, 'required_conditions': [VOLCANO_BADGE]}, + ] + G.nodes[PALLET_TOWN]['grants_conditions'] = [ + {'condition': ROUTE_28_UNLOCKED, 'required_conditions': [BOULDER_BADGE, CASCADE_BADGE, THUNDER_BADGE, RAINBOW_BADGE, MARSH_BADGE, SOUL_BADGE, VOLCANO_BADGE, EARTH_BADGE]}, + ] + G.nodes[CINNABAR_ISLAND]['grants_conditions'] = [ + {'condition': VOLCANO_BADGE, 'required_conditions': []}, ] return G \ No newline at end of file diff --git a/Routes/Red_Blue_Route.py b/Routes/Red_Blue_Route.py index 8cd7c7b..9851b50 100644 --- a/Routes/Red_Blue_Route.py +++ b/Routes/Red_Blue_Route.py @@ -61,7 +61,7 @@ FLY_OUT_OF_BATTLE = 'Fly out of battle' def get_red_blue_desc() -> PokemonGameDesc: desc: PokemonGameDesc = PokemonGameDesc() desc.graph = get_red_blue_route() - desc.game_name = "Red/Blue" + desc.game_name = "Red_Blue" desc.towns_and_cities = [PALLET_TOWN, VIRIDIAN_CITY, PEWTER_CITY, CERULEAN_CITY, SAFFRON_CITY, CELADON_CITY, VERMILLION_CITY, FUCHSIA_CITY, CINNABAR_ISLAND] desc.badges = [BOULDER_BADGE, CASCADE_BADGE, THUNDER_BADGE, RAINBOW_BADGE, MARSH_BADGE, SOUL_BADGE, VOLCANO_BADGE, EARTH_BADGE] desc.hms = [CUT, SURF, FLASH, STRENGTH, FLY] diff --git a/convert_to_pddl.py b/convert_to_pddl.py index e25a58b..2d57afa 100644 --- a/convert_to_pddl.py +++ b/convert_to_pddl.py @@ -164,5 +164,5 @@ def generate_pddl_problem(desc: PokemonGameDesc): problem_pddl += " )\n" problem_pddl += ")\n" - with open('pokemon_problem.pddl', 'w') as f: + with open(f'pokemon_problem_{desc.game_name}.pddl', 'w') as f: f.write(problem_pddl) diff --git a/red_blue_goal_path.py b/red_blue_goal_path.py index 8c23b8e..ba15f76 100644 --- a/red_blue_goal_path.py +++ b/red_blue_goal_path.py @@ -185,3 +185,4 @@ if __name__ == "__main__": gold_silver = get_gold_silver_desc() generate_pddl_problem(red_blue) + generate_pddl_problem(gold_silver)