X-Git-Url: http://git.veekun.com/zzz-pokedex.git/blobdiff_plain/7493f22d45313c65cc69f8a846ec14c8dbd33dc8..3b7db63323a04c7b2e91ffdd856f8e61f1e72b02:/pokedex/lookup.py diff --git a/pokedex/lookup.py b/pokedex/lookup.py index 98e69c4..8c90950 100644 --- a/pokedex/lookup.py +++ b/pokedex/lookup.py @@ -104,6 +104,7 @@ class PokedexLookup(object): tables.Move, tables.Nature, tables.Pokemon, + tables.PokemonForm, tables.Type, ) ) @@ -212,16 +213,16 @@ class PokedexLookup(object): # Add the basic English name to the index if cls == tables.Pokemon: - # Pokémon need their form name added - # XXX kinda kludgy - add(row.full_name, None, u'en', u'us') - - # If this is a default form, ALSO add the unadorned name, - # so 'Deoxys' alone will still do the right thing - if row.forme_name and not row.forme_base_pokemon_id: - add(row.name, None, u'en', u'us') - else: - add(row.name, None, u'en', u'us') + # Don't re-add alternate forms of the same Pokémon; they'll + # be added as Pokémon forms instead + if not row.is_base_form: + continue + elif cls == tables.PokemonForm: + if row.name: + add(row.pokemon_name, None, u'en', u'us') + continue + + add(row.name, None, u'en', u'us') # Some things also have other languages' names # XXX other language form names..? @@ -550,8 +551,10 @@ class PokedexLookup(object): table_names = [] for valid_type in valid_types: table_name = self._parse_table_name(valid_type) - # Skip anything not recognized. Could be, say, a language code - if table_name: + # Skip anything not recognized. Could be, say, a language code. + # XXX The vast majority of Pokémon forms are unnamed and unindexed, + # which can produce blank results. So skip them too for now. + if table_name and table_name != 'pokemon_forms': table_names.append(table_name) if not table_names: @@ -559,6 +562,7 @@ class PokedexLookup(object): # were valid, but this function is guaranteed to return # *something*, so it politely selects from the entire index instead table_names = self.indexed_tables.keys() + table_names.remove('pokemon_forms') # Rather than create an array of many hundred items and pick randomly # from it, just pick a number up to the total number of potential