Browse Source

- Finish out the gold route

rough-outline
Quildra 1 year ago
parent
commit
13d38b9860
  1. 75
      Routes/Gold_Silver_Route.py
  2. 2
      Routes/Red_Blue_Route.py
  3. 2
      convert_to_pddl.py
  4. 1
      red_blue_goal_path.py

75
Routes/Gold_Silver_Route.py

@ -89,6 +89,7 @@ CLEFAIRY_DOLL = 'Clefairy Doll'
RAIL_PASS = 'Rail Pass' RAIL_PASS = 'Rail Pass'
MISTY_FOUND = 'Misty Found' MISTY_FOUND = 'Misty Found'
FLUTE_CHANNEL = 'Flute Channel' FLUTE_CHANNEL = 'Flute Channel'
ROUTE_28_UNLOCKED = 'Rotue 28 Unlocked'
FLY = 'Fly' FLY = 'Fly'
@ -97,12 +98,12 @@ FLY_OUT_OF_BATTLE = 'Fly out of battle'
def get_gold_silver_desc() -> PokemonGameDesc: def get_gold_silver_desc() -> PokemonGameDesc:
desc: PokemonGameDesc = PokemonGameDesc() desc: PokemonGameDesc = PokemonGameDesc()
desc.graph = get_gold_silver_route() 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.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.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.hms = [CUT, SURF, FLASH, STRENGTH, FLY, WATERFALL, WHIRLPOOL]
desc.starting_town = NEW_BARK_TOWN desc.starting_town = NEW_BARK_TOWN
desc.end_goal = MT_SILVER desc.end_goal = INDIGO_PLATEAU
return desc return desc
@ -155,6 +156,7 @@ def get_gold_silver_route() -> Graph:
G.add_node(MT_SILVER, node_type='location') G.add_node(MT_SILVER, node_type='location')
G.add_node(SAFARI_ZONE, node_type='location') G.add_node(SAFARI_ZONE, node_type='location')
G.add_node(TOHJO_FALLS, 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(NEW_BARK_TOWN, 'Route 29', condition=None)
G.add_edge(CHERRYGROVE_CITY, '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 46', DARK_CAVE, condition=[ROCK_SMASH])
G.add_edge('Route 26', NEW_BARK_TOWN, condition=[SURF, WATERFALL, WHIRLPOOL]) 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 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 28', MT_SILVER, condition=None)
G.add_edge('Route 23', 'Route 27', 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]) 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(SAFFRON_CITY, GOLDENROD_CITY, condition=[POWER_RESTORED, RAIL_PASS])
G.add_edge(DIGLETTS_CAVE, 'Route 11', condition=[WOKE_SNORLAX]) 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'] = [ G.nodes[NEW_BARK_TOWN]['grants_conditions'] = [
{'condition': S_S_TICKET, 'required_conditions': [JOHTO_CHAMPION]} {'condition': S_S_TICKET, 'required_conditions': [JOHTO_CHAMPION]}
] ]
@ -231,7 +286,7 @@ def get_gold_silver_route() -> Graph:
G.nodes[GOLDENROD_CITY]['grants_conditions'] = [ G.nodes[GOLDENROD_CITY]['grants_conditions'] = [
{'condition': PLAIN_BADGE, 'required_conditions': []}, {'condition': PLAIN_BADGE, 'required_conditions': []},
{'condition': SQUIRTBOTTLE, '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'] = [ G.nodes[ECRUTEAK_CITY]['grants_conditions'] = [
{'condition': SURF, 'required_conditions': []}, {'condition': SURF, 'required_conditions': []},
@ -292,7 +347,7 @@ def get_gold_silver_route() -> Graph:
{'condition': RAINBOW_BADGE, 'required_conditions': []} {'condition': RAINBOW_BADGE, 'required_conditions': []}
] ]
G.nodes[FUCHSIA_CITY]['grants_conditions'] = [ G.nodes[FUCHSIA_CITY]['grants_conditions'] = [
{'condition': FOG_BADGE, 'required_conditions': []} {'condition': SOUL_BADGE, 'required_conditions': []}
] ]
G.nodes['Route 11']['grants_conditions'] = [ G.nodes['Route 11']['grants_conditions'] = [
{'condition': WOKE_SNORLAX, 'required_conditions': [FLUTE_CHANNEL]} {'condition': WOKE_SNORLAX, 'required_conditions': [FLUTE_CHANNEL]}
@ -300,7 +355,15 @@ def get_gold_silver_route() -> Graph:
G.nodes[PEWTER_CITY]['grants_conditions'] = [ G.nodes[PEWTER_CITY]['grants_conditions'] = [
{'condition': BOULDER_BADGE, 'required_conditions': []}, {'condition': BOULDER_BADGE, 'required_conditions': []},
{'condition': PKMN_WING, '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 return G

2
Routes/Red_Blue_Route.py

@ -61,7 +61,7 @@ FLY_OUT_OF_BATTLE = 'Fly out of battle'
def get_red_blue_desc() -> PokemonGameDesc: def get_red_blue_desc() -> PokemonGameDesc:
desc: PokemonGameDesc = PokemonGameDesc() desc: PokemonGameDesc = PokemonGameDesc()
desc.graph = get_red_blue_route() 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.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.badges = [BOULDER_BADGE, CASCADE_BADGE, THUNDER_BADGE, RAINBOW_BADGE, MARSH_BADGE, SOUL_BADGE, VOLCANO_BADGE, EARTH_BADGE]
desc.hms = [CUT, SURF, FLASH, STRENGTH, FLY] desc.hms = [CUT, SURF, FLASH, STRENGTH, FLY]

2
convert_to_pddl.py

@ -164,5 +164,5 @@ def generate_pddl_problem(desc: PokemonGameDesc):
problem_pddl += " )\n" problem_pddl += " )\n"
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) f.write(problem_pddl)

1
red_blue_goal_path.py

@ -185,3 +185,4 @@ if __name__ == "__main__":
gold_silver = get_gold_silver_desc() gold_silver = get_gold_silver_desc()
generate_pddl_problem(red_blue) generate_pddl_problem(red_blue)
generate_pddl_problem(gold_silver)

Loading…
Cancel
Save