Waiting for Seedot - Breeding Chain and IV Calculator

Waiting for Seedot: Online Breeding Chain and IV Calculator

Features
  • Calculate arbitrarily complex breeding chains -- Never waste TMs again!
  • Browse for new and "creative" movesets
  • Coverage analysis broken down by tier helps find holes in your attacks
  • Advanced IV calculator recommends EVs to determine IVs as efficiently as possible

Home: http://waitingforseedot.appspot.com
IV Calculator: http://waitingforseedot.appspot.com/ivs

Examples
Breeding Chains
Here's an example of a DDMence:
http://waitingforseedot.appspot.com/moveset?id=salamence&m=Dragon%20Dance&m=Dragon%20Claw&m=Fire%20Blast&m=Earthquake
Notice that TMs are only used if required.

Each moveset also includes a coverage analysis that takes into account all abilities that do not refer to the power of moves (e.g., Technician is not considered, but Thick Fat does reduce fire / ice damage).

When there are multiple possibilities that use the same number of TMs, all options are displayed:
http://waitingforseedot.appspot.com/moveset?id=tyranitar&m=Taunt&m=Brick%20Break&m=Crunch&m=Stone%20Edge

Smeargle will also be used when necessary:
http://waitingforseedot.appspot.com/moveset?id=weavile&m=Pursuit&m=Brick%20Break&m=Ice%20Punch&m=Night%20Slash
Any specific Pokémon including Smeargle can also be disallowed.

A final completely contrived moveset that demonstrates that the calculator can find long breeding chains:
http://waitingforseedot.appspot.com/moveset?id=crawdaunt&m=Brick%20Break&m=Rock%20Slide&m=Facade&m=Toxic

It's also possible to search for all Pokémon who can have a particular combination of moves:
http://waitingforseedot.appspot.com/moveset?m=Nasty+Plot&m=Baton+Pass

IV Calculation
MetalKid and StarBP's threads about IV calculation also inspired me to add an IV calculator. Here is an example of beginning to calculate the IVs of a Beldum:
http://waitingforseedot.appspot.com/ivs?i1=beldum&nature=Adamant

After an initial set of values are entered, the calculator indicate which levels and EVs need to be sampled to fully determine the IVs.

The calculator recommends EVs that can easily be obtained with berries / vitamins in order to reduce the number of levels that are required. Once the IVs are determined with certainty, the hidden power type and power are also computed.

Bugs / Missing Features
These issues will be addressed in a future version:
  • No support for move tutors of any generation
  • No Platinum specific moves / formes
  • Does not take into account transferring from 3rd gen

Release Notes
  • 1.1 Added Deoxys and Wormadam formes. Fixed bug with Scrappy. Improved EV recommendations.
  • 1.0 Initial release.

Please let me know if you find any invalid breeding chains, missing legal movesets, incorrect coverage calculations, or other errors.
 
"MetalKid and StarBP's threads about IV calculation also inspired me to add an IV calculator."

Thanks. Your calculator looks like it needs improvement. It doesn't account for other formes (I tried an Attack Deoxys and it returned invalid stats). Also, your calculator is very powerful! It guessed that my Burmy's SpDef IV was between 0 and 9 with only L1 stats! That is especially uncanny because my Burmy has an SpDef IV of 30, verified by my calculator and Metalkid's.
 
Thanks for testing out my IV calculator. I will add support for additional forms next.

I think I see why we got different results when calculating the IVs of your Burmy, but I'm not certain which of us is correct. Here are the two ways to compute a non-HP stat:

Code:
Method 1: floor( nature*floor(level*(iv+2*base+floor(ev/4))/100)+5) )
Method 2: floor( nature*floor(level*(iv+2*base+floor(ev/4))/100+5)) )
Method 1 is the one I use in my calculator, and method 2 is the one that StarCalc appears to use.

Here are the stats computed using each method:

Code:
Burmy, iv = 9
L1 SpDef | Positive | Neutral | Negative |
---------+----------+---------+----------+
Method 1 |    5     |    5    |     4    |
Method 2 |    5     |    5    |     4    |

Burmy, iv = 30
L1 SpDef | Positive | Neutral | Negative |
---------+----------+---------+----------+
Method 1 |    6     |    6    |     5    |
Method 2 |    5     |    5    |     4    |
There appears to be a lack of consensus on the internet over which method is correct. Serebii's IV calculator, MetalKid, and Smogon recommend method 1, while LegendaryPokemon and StarCalc seem to use method 2.

If method 1 is correct, it is possible to tell whether Burmy's SpDef is greater than 9 with only L1 stats, while method 2 does not reveal enough information until level 25 (with zero EVs).

Would you mind posting the nature and stats of your Burmy at several levels to help test which method is more accurate?
 
Format: HP/Atk/Def/SpAtk/SpDef/Spd

Name: Burmy
Nature: Impish
IVs: 4/8/29/12/30/18
EVs: 0/0/0/0/0/0

L1: 11/5/6/4/5/6
L2: 13/6/7/5/6/7
L3: 15/6/8/6/7/8
L4: 17/7/9/7/8/9
L5: 19/8/11/8/9/10
L10: 28/11/17/11/13/15
L15: 37/14/24/15/18/21
L20: 36/18/30/18/22/26
L25: 56/21/37/23/27/32
L30: 65/24/44/27/32/37
L40: 83/31/57/34/40/48
L50: 102/38/70/42/49/59
L75: 148/54/103/61/71/86
L90: 175/64/123/72/84/102
L100: 194/71/136/80/93/113

Note: This is from my StatCalc stat calculator

If you need any other stats, just let me know. By the way, what's the difference between the two formulas? If proper order of operations is used, they should come out with the same results.
 
I think your calculator has the wrong base SpDef for Burmy. Smogon and Serebii say that the base SpDef is 45, but your calculator lists it as 29.

If the base stat is 29, a L1 Burmy will never have a SpDef of 6. I hatched two Burmy eggs in game with initial SpDef of 6, and I raised the first one to calculate its IVs:

Code:
Name: Burmy
Nature: Hasty
IVs: 25/7/28/10/29/28
Hidden Power: Fire/41

         Stats                  EVs
L1 : 12/ 5/ 5/ 5/ 6/ 6    (0/0/0/0/0/0)
L9 : 28/10/13/11/15/15    (0/0/0/0/0/0)
L10: 31/11/14/11/16/16    (20/0/0/0/0/30)
L11: 33/12/15/12/18/17    (20/0/0/0/0/30)
L12: 35/12/17/13/19/18    (20/0/0/0/0/30)
L13: 37/14/18/14/20/19    (20/20/0/20/0/30)
L14: 39/14/18/15/21/20    (20/20/0/20/0/30)
L15: 41/15/19/15/22/23    (20/20/0/20/0/30)
L16: 43/16/20/16/24/24    (20/20/0/20/0/30)
L17: 45/16/22/17/25/25    (20/20/0/20/0/30)
L18: 47/17/23/18/26/26    (20/20/0/20/0/30)
L19: 49/18/24/18/27/27    (20/20/0/20/0/30)
These are in-game numbers; you can do a similar experiment in your game if you want to confirm these results.

The base stat difference accounts for the discrepancy between our calculators -- we are using the same formula. You are correct that methods 1 and 2 are the same; I intended to type a formula in which the nature is not multiplied by the constant +5, since this can give different results at L1 for hindering natures.
 
I think your calculator has the wrong base SpDef for Burmy. Smogon and Serebii say that the base SpDef is 45, but your calculator lists it as 29.

If the base stat is 29, a L1 Burmy will never have a SpDef of 6. I hatched two Burmy eggs in game with initial SpDef of 6, and I raised the first one to calculate its IVs:

Code:
Name: Burmy
Nature: Hasty
IVs: 25/7/28/10/29/28
Hidden Power: Fire/41
 
         Stats                  EVs
L1 : 12/ 5/ 5/ 5/ 6/ 6    (0/0/0/0/0/0)
L9 : 28/10/13/11/15/15    (0/0/0/0/0/0)
L10: 31/11/14/11/16/16    (20/0/0/0/0/30)
L11: 33/12/15/12/18/17    (20/0/0/0/0/30)
L12: 35/12/17/13/19/18    (20/0/0/0/0/30)
L13: 37/14/18/14/20/19    (20/20/0/20/0/30)
L14: 39/14/18/15/21/20    (20/20/0/20/0/30)
L15: 41/15/19/15/22/23    (20/20/0/20/0/30)
L16: 43/16/20/16/24/24    (20/20/0/20/0/30)
L17: 45/16/22/17/25/25    (20/20/0/20/0/30)
L18: 47/17/23/18/26/26    (20/20/0/20/0/30)
L19: 49/18/24/18/27/27    (20/20/0/20/0/30)
These are in-game numbers; you can do a similar experiment in your game if you want to confirm these results.

The base stat difference accounts for the discrepancy between our calculators -- we are using the same formula. You are correct that methods 1 and 2 are the same; I intended to type a formula in which the nature is not multiplied by the constant +5, since this can give different results at L1 for hindering natures.
THANK YOU!!! You have done more to help my calculator than anyone else ever has (other than me, of course)! I would have never found the incorrect cell reference if it wasn't for you, and I would have never found out that my lookup database has the Speed, Special Attack, and Special Defense columns switched if it wasn't for you! A fix is on its way. I have decided to link to your website in my Links section, and I will report to you by PM or e-mail how many click-throughs you get from my site. Oh, and the +5 is affected by the nature.
 
You're welcome! I don't have a links page but when I do I'll link to your calculator as well. There's a lot of value in a calculator that works without internet access.

I've also added support for formes, and improved the algorithm for recommending EVs when calculating IVs. Let me know if you encounter any problems.
 
HP Stat: Math.Floor((((baseStat * 2 + iv + Math.Floor(ev / 4)) * level) / 100) + 10 + level)
Non-Stat IV: Math.Floor(Math.Floor((((baseStat * 2 + iv + Math.Floor(ev / 4)) * level / 100) + 5)) * personality)

This is the way to go.

Also, if you look at the source code for v4.00, you can see how I approached the Breeding Chain issue. It works, its just very slow. I am redoing the code in the next release and it should be a lot faster (theoreteically).
 
I looked at your source code for calculating breeding chains -- your approach seems sound, and I'm impressed that you were able to do so much using Visual Basic. I'm interested to hear about your planned improvements for version 5.

One downside to your current approach is that it doesn't scale well when extended to complex chains. For instance, this moveset requirs a long chain:
http://waitingforseedot.appspot.com...m=Brick Break&m=Focus Punch&m=Toxic&m=Attract

In MKPP v4.07, the cost to find a chain of length n scales close to O(k^n):
Code:
A total of 67 Pokemon can impact the path...
Searching level 1... (20 paths to search)
Searching level 2... (342 paths to search)
Searching level 3... (8,862 paths to search)
Searching level 4... (262,828 paths to search)
After 30 minutes on my machine this search only made it halfway through level 4.

In contrast, Waiting for Seedot computes this breeding chain plus 61 additional chains in under 1 second:
Code:
   ncalls  tottime  percall  cumtime  percall function
        1    0.001    0.001    0.994    0.994 FindCompatibleMoves
       62    0.004    0.000    0.992    0.016 FindBreedingChain
      124    0.016    0.000    0.987    0.008 SearchForMoves
     3324    0.272    0.000    0.916    0.000 Extend
    15224    0.206    0.000    0.412    0.000 Reduce
Each move on a page is appended to the given moveset to determine compatibility, which is why FindBreedingChain is called 62 times. Even so, I only need to evaluate a total of 15224 candidate chains.

The way I can find long chains so quickly is by using a variant of Dijkstra's algorithm. Conceptually, once you find out that it's possible to breed a set of moves from A -> B -> C, you don't need to consider any chains that breed the exact same moves through A -> D -> C. This substantially reduces the number of chains that need to be evaluated.

Here's pseudocode for the algorithm. q = a priority queue of partial chains, keyed by negative cost.
Code:
q.add(target)
while not q.empty():
   candidate = q.pop()
   if candidate is a complete chain:
       return candidate
   q.add(all unique chains that lead to candidate)
return Impossible
Hopefully this is useful to you as you implement MKPP v5.0. Let me know if you have any questions -- I'm happy to explain more of the details if you're interested.

Also, as a minor update on the site, I've added support for the (few) D/P move tutors. This means I'm ready to add Platinum forms and tutors as soon as I get all the new data entered and loaded.
 
I know that it does not scale well when you start selecting TM type moves that have many Pokemon that can impact the chains. That is why I was trying to come up with a better approach in v5.00

That isn't entirely true... It is possible that each point can add some or all of the moves. This impacts the Pokemon needed towards the end of the chain, making it possible for new combinations to imerge. Also, the same letter could be part of the same chain more than once, total # of moves times to be exact. I have a feeling that your calculator doesn't bring back 100% of ALL combinations out there, which is what mine was attempting to do. v4.10 is a lot faster. I got to level 6 before it began stalling out a bit. Where are these combintions?:

Smeargle (Brick Break - Lv. 1/1/1, Focus Punch - Lv. 1/1/1, Attract - Lv. 1/1/1, Toxic - Lv. 1/1/1) >> Psyduck >> Squirtle
Smeargle (Brick Break - Lv. 1/1/1, Focus Punch - Lv. 1/1/1, Attract - Lv. 1/1/1, Toxic - Lv. 1/1/1) >> Mawile >> Marill >> Squirtle
Smeargle (Brick Break - Lv. 1/1/1, Focus Punch - Lv. 1/1/1, Attract - Lv. 1/1/1, Toxic - Lv. 1/1/1) >> Snubbull >> Marill >> Squirtle
Smeargle (Brick Break - Lv. 1/1/1, Focus Punch - Lv. 1/1/1, Attract - Lv. 1/1/1, Toxic - Lv. 1/1/1) >> Pikachu >> Marill >> Squirtle
Wurmple (Attract - Evolve, Toxic - Evolve) >> Volbeat >> Hitmonlee (Brick Break - Lv. 20/20/20) >> Spinda >> Slakoth (Focus Punch - Evolve) >> Psyduck >> Squirtle
Cascoon (Attract - Evolve, Toxic - Evolve) >> Volbeat >> Hitmonlee (Brick Break - Lv. 20/20/20) >> Spinda >> Slakoth (Focus Punch - Evolve) >> Psyduck >> Squirtle
Wurmple (Attract - Evolve, Toxic - Evolve) >> Heracross (Brick Break - Lv. 23/23/23) >> Volbeat >> Spinda >> Slakoth (Focus Punch - Evolve) >> Psyduck >> Squirtle
Cascoon (Attract - Evolve, Toxic - Evolve) >> Heracross (Brick Break - Lv. 23/23/23) >> Volbeat >> Spinda >> Slakoth (Focus Punch - Evolve) >> Psyduck >> Squirtle
Wurmple (Attract - Evolve, Toxic - Evolve) >> Pinsir (Brick Break - Lv. 31/31/31) >> Volbeat >> Spinda >> Slakoth (Focus Punch - Evolve) >> Psyduck >> Squirtle
Cascoon (Attract - Evolve, Toxic - Evolve) >> Pinsir (Brick Break - Lv. 31/31/31) >> Volbeat >> Spinda >> Slakoth (Focus Punch - Evolve) >> Psyduck >> Squirtle


My new approach involves treating things like Nodes, where the child/parent relationship between Pokemon chains is preserved. Most of my processing comes from copying data from one chain to the next. With nodes, I really don't have to do much copying at all. I also plan on scrubbing the data a lot more before hand and trying to add things to dictionaries so it is easier/faster to find/loop thru everything.
 
I know this post is kinda old, but it is relavent. I FINALLY got my program to do this in about 10 seconds or less! Here are just a few of the results that came back:

Skitty (Attract) -> Roselia (Toxic) -> Paras -> Pinsir (Brick Break) -> Volbeat -> Spinda -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Heracross (Brick Break) -> Volbeat -> Spinda -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Heracross (Brick Break) -> Illumise -> Spinda -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Heracross (Brick Break) -> Illumise -> Spinda -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Pinsir (Brick Break) -> Illumise -> Spinda -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Pinsir (Brick Break) -> Illumise -> Spinda -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Pinsir (Brick Break) -> Illumise -> Chimchar -> Slakoth (Focus Punch) -> Psyduck -> Squirtle
Skitty (Attract) -> Roselia (Toxic) -> Paras -> Pinsir (Brick Break) -> Illumise -> Chimchar -> Slakoth (Focus Punch) -> Psyduck -> Squirtle

Looks like I have some dups in there, but at least the thing is really fast now! :)

Edit:

I think I have it all figured out now. It even does entries with the same Pokemon more than once:

Glameow (Attract [Level - 45]) -> Delibird -> Lotad -> Roselia (Toxic [Level - 45]) -> Paras -> Heracross (Brick Break [Level - 23]) -> Volbeat -> Chimchar -> Slakoth (Focus Punch [Evolution]) -> Delibird -> Squirtle
 
You're missing Volt Tackle in your calculator. Otherwise, I've found this fantastically useful. I bookmarked it, and if I do find any glitches or missing information I'll update this post.

EDIT: Found something on your Charizard.

Fire Fang / Belly Drum / Earthquake

SNORLAX: Learn Belly Drum at level 17
CHARMANDER: Breed male SNORLAX with female CHARMANDER
CHARMELEON: Level up CHARMANDER at Level 16
CHARIZARD: Level up CHARMELEON at Level 36
CHARIZARD: Learn Fire Fang at level 28
CHARIZARD: Teach TM26 - Earthquake

Wouldn't it be more efficient (TM-wise) to simply breed;
Rhyhorn (Earthquake [Level - 49]) > Snorlax (Belly Drum [Level - 17]) > Charmander > Charizard (Fire Fang [Level 28])?
 
v4.00 doesn't count. This is the new, v5.00 one that hasn't been released yet. :)

As for Fire Fang, since it can learn it on its own, it won't show up as a choice for the chain:

Rhyhorn (Earthquake [Level - 52]) -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Larvitar (Earthquake [Level - 50]) -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Wooper (Earthquake [Level - 36]) -> Slowpoke -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Barboach (Earthquake [Level - 31]) -> Relicanth -> Slowpoke -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Diglett (Earthquake [Level - 41]) -> Ekans -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Swinub (Earthquake [Level - 37]) -> Ekans -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Phanpy (Earthquake [Evolution]) -> Ekans -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Numel (Earthquake [Level - 35]) -> Ekans -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Hippopotas (Earthquake [Level - 37]) -> Ekans -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Hippopotas (Earthquake [Level - 37]) -> Seviper -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Numel (Earthquake [Level - 35]) -> Seviper -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
Phanpy (Earthquake [Evolution]) -> Seviper -> Gible -> Snorlax (Belly Drum [Level - 15]) -> Charmander
 
@Arcaseven:
Thanks for looking for errors in this calculator -- I appreciate getting feedback. Unfortunately, Charmander cannot learn Earthquake, which prevents breeding Earthquake from Ryhorn to Charizard.

I will definitely add Volt Tackle in my next update. I have been too busy with work to spend much time on the site, but I'm hoping to have some time soon to finish Platinum support, followed at some point by third generation tutors as well as Gold / Silver now that they are coming to the DS.

@MetalKid:
Congratulations on speeding up the breeding chain calculator in MKPP v5.00 by so much! If your chains can pass through the same Pokemon more than once it means you have solved the problem generally.

Here are some challenges:

How does your calculator handle this somewhat degenerate case? (it failed utterly when I tried it in my calculator the first time):

Tyrogue: Rapid Spin / Bullet Punch / Hi Jump Kick
Hitmonlee (Hi Jump Kick [Level - 29]) -> Tyrogue -> Hitmontop (Rapid Spin [Level - 24]) -> Tyrogue -> Hitmonchan (Bullet Punch [Level - 16]) -> Tyrogue

Here is another one that I got wrong at first:
Mamoswine: Ice Beam / Bite / Rest / Substitute

The catch is that Piloswine must know Ancientpower to level up, so Mamoswine can never learn four egg moves through breeding alone.

Another bug I had for a long time was demonstrated by:
Heracross: Fling / Thief

Finding this chain relies on breeding Illumise with Spinda to produce a Volbeat, which requires special case logic (also needed for Nidoran M and F).
 
Yay, I guess I have more bugs. :) Pokemon that end up hatching but have no egg groups really mess things up for me. Same with being forced to breed with Ditto because that usually doesn't "pass moves on". But, since the speed is there, I should still be able to fix these issues. Thanks for the examples! :)



Edit:

Ah, after I fixed an issue with some bad data, the Heracross one worked right away because I just treat Volbeat/Illumise and Nidoran M/F as valid targets, ignoring the whole male/female issue.

As for Mamoswine thing... That one is going to be difficult for me to fix. However, I guess you could say that I "cheat" a little in that I always end the chain with the base evolution Pokemon. Thus, you will be able to get all 4 moves to Swinub. From there, they'll have to deal with the Ancient Power thing themselves. :)

I only have the Tyrogue bug left, which is definately a valid one.

Edit 2:

Sweet, I just had to change one small thing in a stored procedure, and I got the Tyrogue chain. However, I'll have to say "Breed to Ditto" because it comes out like this right now:

Hitmonlee (Rapid Spin [Level - 25],Bullet Punch [Pre-Evolution],Hi-Jump Kick [Pre-Evolution]) -> Hitmontop
Hitmonchan (Rapid Spin [Level - 25],Bullet Punch [Pre-Evolution],Hi-Jump Kick [Pre-Evolution]) -> Hitmontop

Edit 3:

Ack, it'll be too difficult to make them appear any different. Another cool thing I was able to implement was to allow to check for chains for a specific Game. Thus, if you only have Emerald, you can search for Emerald only chains.
 

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top