Browse Source

- Fix up most missing pokemon from the plan

- Vivillon, Rotom and Aegislash to go
plan_generation
Quildra 1 year ago
parent
commit
4746debb95
  1. 27
      ui/workers/gather_encounter_locations.py
  2. 16
      ui/workers/gather_evolutions_worker.py
  3. 5
      ui/workers/gather_pokemon_forms_worker.py
  4. 52
      ui/workers/generate_plan_worker.py
  5. 30
      utility/data.py
  6. 11
      utility/functions.py
  7. 2
      utility/pokemon_word_ninja.py

27
ui/workers/gather_encounter_locations.py

@ -395,6 +395,33 @@ class GatherEncountersWorker(QRunnable):
if form.lower() in ["spring form", "summer form", "autumn form", "winter form"] and main_form == None:
return True
if form.lower() in ["plant cloak", "sandy cloak", "trash cloak"] and main_form == None:
return True
if form.lower() in [
"meadow pattern",
"archipelago pattern",
"continental pattern",
"elegant pattern",
"garden pattern",
"high plains pattern",
"icy snow pattern",
"jungle pattern",
"marine pattern",
"meadow pattern",
"modern pattern",
"monsoon pattern",
"ocean pattern",
"polar pattern",
"river pattern",
"sandstorm pattern",
"savanna pattern",
"sun pattern",
"tundra pattern",
"fancy pattern"
]:
return True
if form and main_form is None:
return False

16
ui/workers/gather_evolutions_worker.py

@ -9,7 +9,7 @@ from db import db
import re
from utility.functions import get_form_name, get_display_name, parse_pfic
from utility.data import non_evolution_forms, alcremie_forms
from utility.data import non_evolution_forms, alcremie_forms, vivillon_patterns
class GatherEvolutionsWorkerSignals(QObject):
finished = pyqtSignal(dict)
@ -131,6 +131,20 @@ class GatherEvolutions(QRunnable):
}
evolution_tree["evolves_to"].append(node)
if evolution_tree["pokemon"] == "Scatterbug":
spewpa_node = evolution_tree["evolves_to"][0]
spewpa_node["evolves_to"] = []
for form in vivillon_patterns:
node = {
"pokemon": "Vivillon",
"form": form,
"requirement": None,
"method": "Level 12 →",
"evolves_to": [],
"stage": 2
}
spewpa_node["evolves_to"].append(node)
if evolution_tree["pokemon"] == "Flabébé":
def fix_form(node, new_form):
node["form"] = new_form

5
ui/workers/gather_pokemon_forms_worker.py

@ -187,6 +187,11 @@ class GatherPokemonFormsWorker(QRunnable):
if not record_female_form and not record_male_form:
record_genderless_form = True
if pokemon_name == "Basculin" and form_name.lower() == "white-striped form":
generation = 8
elif pokemon_name == "Burmy":
gender_relevant = True
if gender_relevant or record_genderless_form:
pokemon_form = {
"pfic":format_pokemon_id(national_dex_number, generation, form_index, gender),

52
ui/workers/generate_plan_worker.py

@ -5,7 +5,7 @@ from cache import cache
from db import db
from utility.data import exclusive_choice_pokemon
from utility.functions import get_shiftable_forms, parse_pfic
from utility.functions import get_shiftable_forms, get_shiftable_forms_bidirectional, parse_pfic, sanitize_filename
class GeneratePlanWorkerSignals(QObject):
finished = pyqtSignal(dict)
@ -66,11 +66,11 @@ class GeneratePlanWorker(QRunnable):
games_in_group.extend(db.get_games_by_generation(generation))
pokemon_in_generation = db.get_pokemon_by_generation(generation)
for pokemon in pokemon_in_generation:
pfic = pokemon["PFIC"]
if pokemon["storable_in_home"] == False:
continue
pfic = pokemon["PFIC"]
testing = [
"0140-01-000-1", "0138-01-000-1", "0140-01-000-2", "0138-01-000-2",
"0141-01-000-1", "0139-01-000-1", "0141-01-000-2", "0139-01-000-2",
@ -90,6 +90,39 @@ class GeneratePlanWorker(QRunnable):
encounters.extend(static)
encounters.extend(starter)
"""
def thingy(current_pfic):
evolution_chains = db.get_full_evolution_paths(current_pfic)
if evolution_chains and (len(evolution_chains["predecessors"]) > 0 or len(evolution_chains["successors"]) > 0):
for chains in evolution_chains["predecessors"]:
for evolved_pfic, method in chains:
if evolved_pfic in needed_pokemon:
game_pokemon[game['id']].add(evolved_pfic)
for shiftable_form in get_shiftable_forms_bidirectional(evolved_pfic):
game_pokemon[game['id']].add(shiftable_form["to_pfic"])
game_pokemon[game['id']].add(shiftable_form["from_pfic"])
for chains in evolution_chains["successors"]:
for evolved_pfic, method in chains:
if evolved_pfic in needed_pokemon:
game_pokemon[game['id']].add(evolved_pfic)
for shiftable_form in get_shiftable_forms_bidirectional(evolved_pfic):
game_pokemon[game['id']].add(shiftable_form["to_pfic"])
game_pokemon[game['id']].add(shiftable_form["from_pfic"])
for game in games_in_group:
game_pokemon[game['id']] = set()
for encounter in encounters:
current_pfic = encounter['PFIC']
if game["id"] == encounter["game_id"]:
game_pokemon[game['id']].add(current_pfic)
for shiftable_form in get_shiftable_forms_bidirectional(current_pfic):
game_pokemon[game['id']].add(shiftable_form["to_pfic"])
game_pokemon[game['id']].add(shiftable_form["from_pfic"])
thingy(shiftable_form["from_pfic"])
thingy(pfic)
"""
for game in games_in_group:
game_pokemon[game['id']] = set()
for encounter in encounters:
@ -117,6 +150,8 @@ class GeneratePlanWorker(QRunnable):
for game in available_games:
cache[game['id']] = self.get_covered_pokemon(game, remaining_pokemon, game_pokemon[game['id']])
pokemon_covered = {}
if cache:
best_game = max(available_games, key=lambda g: len(cache[g["id"]]))
pokemon_covered = cache[best_game['id']]
@ -138,7 +173,8 @@ class GeneratePlanWorker(QRunnable):
print(f"Removed {game['name']} as it's covered by {best_game['name']}")
for game in selected_games:
output_file = "./temp/"+game["name"]+".json"
file_name = sanitize_filename(game["name"])
output_file = "./temp/"+file_name+".json"
with open(output_file, 'w', encoding='utf-8') as f:
temp = []
for pfic in catch_in_game[game["id"]]:
@ -154,6 +190,14 @@ class GeneratePlanWorker(QRunnable):
exclusive_groups = self.get_exclusive_groups(game['id'])
pokemon_covered = set()
search_value = "0412-04-002-2"
if search_value in needed_pokemon:
pass
if search_value in available_pokemon:
pass
evolution_paths = {}
evolution_predecessors = {}
all_pokemon = needed_pokemon | available_pokemon

30
utility/data.py

@ -358,7 +358,6 @@ default_forms = [
"Red-Striped Form",
"Spring Form",
"Incarnate Forme",
"Meadow Pattern",
"Red Flower",
"Average Size",
"50% Forme",
@ -397,7 +396,11 @@ POKEMON_PROPER_NOUNS = {
"Pa'u",
"Sensu",
"Debutante",
"Douse"
"Douse",
"Red-Striped",
"Blue-Striped",
"White-Striped",
"Ash-Greninja"
}
POKEMON_PROPER_NOUNS = POKEMON_PROPER_NOUNS | set(regions)
@ -510,3 +513,26 @@ alcremie_forms = [
"Salted Cream Star Sweet",
"Salted Cream Strawberry Sweet",
]
vivillon_patterns =[
"Meadow Pattern",
"Archipelago Pattern",
"Continental Pattern",
"Elegant Pattern",
"Garden Pattern",
"High plains Pattern",
"Icy snow Pattern",
"Jungle Pattern",
"Marine Pattern",
"Meadow Pattern",
"Modern Pattern",
"Monsoon Pattern",
"Ocean Pattern",
"Polar Pattern",
"River Pattern",
"Sandstorm Pattern",
"Savanna Pattern",
"Sun Pattern",
"Tundra Pattern",
"Fancy Pattern"
]

11
utility/functions.py

@ -16,8 +16,8 @@ def compare_pokemon_forms(a, b):
if a == None or b == None:
return False
temp_a = a.lower().replace("forme", "").replace("form", "").replace("é", "e").replace("-", " ").strip()
temp_b = b.lower().replace("forme", "").replace("form", "").replace("é", "e").replace("-", " ").strip()
temp_a = a.lower().replace("forme", "").replace("form", "").replace("é", "e").strip()
temp_b = b.lower().replace("forme", "").replace("form", "").replace("é", "e").strip()
# Common spelling mistakes
temp_a = temp_a.replace("deputante", "debutante").replace("p'au", "pa'u").replace("blood moon", "bloodmoon")
@ -137,3 +137,10 @@ def get_shiftable_forms(pfic):
if pfic == form_pair["from_pfic"]:
forms.append(form_pair)
return forms
def get_shiftable_forms_bidirectional(pfic):
forms = []
for form_pair in shiftable_forms:
if pfic == form_pair["from_pfic"] or pfic == form_pair["to_pfic"]:
forms.append(form_pair)
return forms

2
utility/pokemon_word_ninja.py

@ -31,7 +31,7 @@ class PokemonWordNinja:
def split(self, text: str) -> str:
working_text = text
working_text = working_text.replace("-", " ")
#working_text = working_text.replace("-", " ")
# First handle exact custom words to preserve capitalization
for word in self.custom_words:

Loading…
Cancel
Save