Ticket #309 (closed code bug: fixed)

Opened 23 months ago

Last modified 22 months ago

Move chain finder error

Reported by: piotr_mil@… Owned by: eevee
Priority: minor Component: pokedex
Keywords: Blaze Kick Breeding chain finder Cc:
Difficulty:

Description

Hi! Your website is simply awesome, especially the breeding chain finder and the IVs calculator. One question, though: Lucario can learn Blaze kick via breeding with Smeargle(sketch),Combusken(Lvl) and another Lucario. However, your finder states that Luc cannot learn this attack. (I tried Riolu, but the script says that Riolu cannot breed). That's the only bug I could find. Once again: this tool is REAALy helpful ;D

Blaze Kick:  http://www.serebii.net/pokedex-dp/egg/448.shtml#blazekick http://veekun.com/dex/calculators/breeding_chains?pokemon=Riolu&move=Blaze+Kick

Attachments

Change History

Changed 23 months ago by eevee

Well, that's not done yet. But this is part of a fundamental problem with it that I haven't addressed yet. What 'Pokemon' means for the calculator is really fuzzy and undefined, but it should mean "the Pokemon I ultimately want to have this move".

This means:

  • Entering 'Riolu' will use Riolu's egg moves, but Lucario's breeding compatibility. It should probably be indicated that the egg will be a Riolu.
  • Entering 'Snorlax' will use BOTH Munchlax's and Snorlax's egg moves, but Snorlax's breeding compatibility.
  • Entering 'Venusaur' will use Bulbasaur's egg moves, and any breeding compatibility from the chain.

I'm thinking this through as I type it, if that weren't obvious. So.. need to snag every evo-chain parent, use the breedable ones (grouped by egg group combos) as roots for the breeding chain trees. Egg is irrelevant to the tree, but will need to be named somewhere as the target so people know whether to use an attached item or not.

I'm not sure if each parent should be its own root or what. I'll have to see if breeding groups even ever change across evolutions; this might not be a case I ever have to worry about.

Changed 22 months ago by eevee

SELECT
    evo_chain_id,
    COUNT(DISTINCT breeding_code),
    GROUP_CONCAT(name SEPARATOR ', '),
    GROUP_CONCAT(breeding_groups.breeding_code SEPARATOR ', ')
FROM pokemon
INNER JOIN (
    SELECT
        pokemon_id,
        GROUP_CONCAT(breed ORDER BY breed SEPARATOR '/') breeding_code
    FROM pokemon_breeds
    WHERE breed != 15
    GROUP BY pokemon_id
) breeding_groups
    ON pokemon.id = breeding_groups.pokemon_id
GROUP BY evo_chain_id
HAVING COUNT(DISTINCT breeding_code) != 1

According to this query, the ONLY Pokemon that has an egg group combination not matching the rest of its chain is Shedinja, which is also unique (?) in being genderless and thus incapable of passing any moves around. I'm noting this so I can check on it in future versions, but for now it seems okay to assume that only one egg group combination (except FF, of course) appears per chain. Thus the third case above is irrelevant, and it comes down to this:

  • The Pokemon entered is the target Pokemon. Thus we need an egg for either it or a hatchable ancestor -- normally only the base form, but occasionally in the form of conditional eggs e.g. Munchlax.
  • The Pokemon at the root of the chain is whichever of the above possible Pokemon (or all of them) is egg-compatible with the move in question.
  • The initial breeding code used is the one common to the entire (breedable) chain.

I should really have a legend for how to read the chart, too..

Changed 22 months ago by eevee

  • status changed from new to closed
  • resolution set to fixed

Mentioned this on #302 too, but r432 fixes the notion of 'Pokemon' and thus this particular bug.

Add/Change #309 (Move chain finder error)

Author


E-mail address and user name can be saved in the Preferences.


Action
as closed
Next status will be 'reopened'
 
Note: See TracTickets for help on using tickets.