• The moderator of this forum is jetou.
  • Welcome to Smogon! Take a moment to read the Introduction to Smogon for a run-down on everything Smogon, and make sure you take some time to read the global rules.

Programming Speed Tier Post Generator

grape tylenol

it was fun while it lasted!
is a Site Content Manager Alumnusis a Top Artist Alumnusis a Forum Moderator Alumnusis a Community Contributor Alumnusis a Top Metagame Resource Contributor Alumnus
Speed Tier Generator

Recently, I have been hosting a tournament for a metagame that didn't have any up to date resources. A few players came to me asking "where are the speed tiers?" "can you make a speed tier list?" As a programmer, the idea of both manually typing out and manually calculating speed for each Pokemon seemed like a pain. So I created a program to do it! And now you can use this program too! (hopefully :worrywhirl:)

Add Pokemon using either "Bulk Import" or "Set Import" until you have added every Pokemon you want to be on the tier list. You can also import an existing speed tier list that was generated with this website. Then click "Generate Post" and the BBCode for the tier list will appear in the box on the right. You can copy this output to your clipboard using the "Copy output to clipboard" button.

1691181088422.png


Bulk Import:
If you have a list of Pokemon that you would like to add with the same level, EVs, IV, nature, and speed stage, you can use this function to add them all at once. Enter the Pokemon names separated by commas (no spaces, and make sure there is no comma after the last entry,) then click "Add to list." If you are adding a lot of Pokemon at once, it may take a few seconds.
1737585421858.png

Options:
  • Level - adds all Pokemon at a specific level (default is 100)
  • Speed EVs - adds all Pokemon with specified speed EVs (default is 252)
  • Speed IV - adds all Pokemon with specified speed IVs (default is 31)
  • Nature - adds all Pokemon with specified nature (default is Positive)
  • Speed stage - adds all Pokemon at the specified speed stage (default is neutral, no boosts or drops)
Set Import:
If you want to add a Pokemon that runs a specific speed investment, select "Set Import" and paste your set into the left text box. Then click "Add to list".
1737585637800.png


Options:
  • Speed stage - adds this Pokemon at the specified speed stage (default is neutral, no boosts or drops)
Import existing list:
If you previously generated a speed tier list using this website and would like to modify it, you can import it into the website using the "Import existing list" button.
1691179759792.png


Manage List:
While you are creating your list, you may want to view or edit a Pokemon's details or remove it from the list. You can do this by clicking on its icon under "Added Pokemon:"
1691179927547.png

1737585760596.png

Clicking on the Pokemon's icon will bring up this window with its details. You can edit the Pokemon's details by modifying the appropriate field and clicking "Save". If you don't click "Save" no changes will be made. Clicking the "Delete" button will remove that Pokemon from the list as well as any duplicates.

This tool was very helpful to me when generating the ADV LC speed tiers so I hope that it can be helpful to other people making speed tier lists. I am no longer maintaining this tool, but I hope that it can still be useful.

Thanks to SparksBlade's feedback I have fixed some bugs and made some minor improvements!
Fixes:
  • Setting a Pokemon to +1 speed now works as expected
  • There is no longer pre-existing text in the input area

Improvements:
  • Pokemon in the "Added Pokemon" list now have their speed boost displayed as a badge over their sprite:
    1690220021734.png
  • Added a "copy output to clipboard" button
  • Added a confirmation before clearing the list of added Pokemon
  • Adjusted wording of user interface so it is more clear what does what (hopefully :worrywhirl:)
I've made some additional changes (thanks Theorymon for the feedback!):
  • The default options are now selected by default instead of all options being blank.
    1690220029717.png
  • Support for -2 and -1 speed has been added (the badge indicating what speed stage a Pokemon in the Added Pokemon list will be red if the speed stage is negative.)
    1690220038603.png
  • Output language: this setting will change what language the names of the Pokemon are printed in (everything else will still be in English.)
    1690220047142.png
Minor update, but the bug where gendered Pokemon sets could not be imported is fixed!
Fixes:
  • Importing a Pokemon holding Choice Specs now works as expected (no longer calculates speed as NaN)
  • IVs are now properly detected when a Pokemon has EVs and IVs
Improvements:
  • It is now possible to import an existing speed tier list (generated by the website) using the Import existing list button, so that you can add more Pokemon and update it.
    1691179759792.png
  • You can now view the details of Pokemon you have added to the list by clicking on them:
    1691179591696.png
  • You can now delete Pokemon from the list individually. Note that if you delete a Pokemon and there is any duplicates in the list, all of them will be deleted.
Fixes:
  • Importing existing lists now imports as expected (nature is correct and calculated speed is correct.)
Fixes:
  • Exporting imported lists as expected (Pokemon sprites show up correctly in the exported list.)
Fixes:
  • Importing existing lists now imports as expected (speed stage is exported correctly!)
Improvements
  • Refactored to use pkmn/dex instead of PokeAPI.
  • CAP Pokemon are now supported.
Fixes
  • Pokemon with alternate forms now import and export correctly.
Improvements
  • Bulk Import now supports specifying level, EVs, IV, nature, and speed stage.
  • Pokemon already added to the list can now have their level, EVs, IV, nature, and speed stage edited.
 
Last edited:
This is absolutely awesome thank you so much!!

Just a few things of note:
  • Speed tiers are calculated on "Add to list" and not on "Generate speed tier list" so it would be nice to make that clear in the UI, otherwise someone might think they can change the Speed Tier after adding the Pokemon, or generate +1 and +2 Speed Tier lists for the same batch of Pokemon without adding them separately.
  • In the "Added Pokemon" maybe underneath the sprites you can show the speed modifier so if someone adds a lot of Pokemon to generate multiple lists for, they can check if they've already added +1 Lanturn or not.
  • Maybe a check for duplicates? You can design your own ID system and the list can be an object instead of an array. Should be easier for bulk import
  • A confirmation prompt on "Clear list" to save fools like me from making fools of ourselves
  • You're using parseInt instead of parseFloat to get the speed tier when doing "new Pokemon()" which is converting 1.5 to 1, which results in +1 speed actually being calculated as +0. Since you're also using that same speedStage to then determine the table header when generating the post, that also ends up using 0. Also you're already using the parser when calling the constructor so don't need to do it again in the constructor
  • Suggestion: Make some constant to map +0 to 1 multiplier, +1 to 1.5 multiplier etc so you don't have to determine it every time yourself.
  • Suggestion: In setOptions on your inputs you can pass the label along with the actual speed tier so you don't have to reverse calculate that for your table header
sorry if this comes off as very nitpicky :( but again thanks a lot for making this <3
 
In the "Added Pokemon" maybe underneath the sprites you can show the speed modifier so if someone adds a lot of Pokemon to generate multiple lists for, they can check if they've already added +1 Lanturn or not.
i was thinking of adding this (although my thinking was that ALL of the object's info would be shown on hover or something.) do you have any other suggestions for how it should be displayed?

  • You're using parseInt instead of parseFloat to get the speed tier when doing "new Pokemon()" which is converting 1.5 to 1, which results in +1 speed actually being calculated as +0.
i actually did notice this last night but i'm away for the weekend so i can't fix it until tomorrow evening :( even though it would be so easy :( :( :(

(remaining feedback)
this is all great feedback! as i'm sure you can tell now that you've looked at the code, ui and react are not my strong suits lol. i will look in to implementing everything you've mentioned once i'm back home, thank you again for your feedback!
 
Last edited:
i was thinking of adding this (although my thinking was that ALL of the object's info would be shown on hover or something.) do you have any other suggestions for how it should be displayed?
I don't know what all info you wanna show, but just for the speed stage itself you can just put them under different headers. Could also do that with a table on the right as the right half of the screen is free real estate atm.
1689431130652.png

Two other small suggestions I forgot earlier: a copy button on the output box, and use placeholder on your textboxes instead of starting with some text in them
 
grape tylenol this is awesome except for the part where it doesn't want to work for me

1690215663858.png


i do not want to imagine what hellish unforeseen coding mishaps are involved to cause all of this. i was using set import for a lot of mons since it's super efficient but noticed my output had a couple of pokemon with glitched stats, namely arcanine-hisui, walking wake, and specifically a max speed timid set for iron moth would have this NaN glitch (iron moth is especially weird since the booster energy speed set worked just fine, but not max speed specs). below that were mons that were placed incorrectly and i don't know if that's a result of the weird behavior above or some other sort of issue?

otherwise please add support for cap project guys they are funny and cool thanks
 
grape tylenol this is awesome except for the part where it doesn't want to work for me

View attachment 537530

i do not want to imagine what hellish unforeseen coding mishaps are involved to cause all of this. i was using set import for a lot of mons since it's super efficient but noticed my output had a couple of pokemon with glitched stats, namely arcanine-hisui, walking wake, and specifically a max speed timid set for iron moth would have this NaN glitch (iron moth is especially weird since the booster energy speed set worked just fine, but not max speed specs). below that were mons that were placed incorrectly and i don't know if that's a result of the weird behavior above or some other sort of issue?

otherwise please add support for cap project guys they are funny and cool thanks
Hi shnowshner, this isn't very helpful without any information about the sets you were trying to import - would it be possible for you to send me the sets you were trying to import either via DM here or on discord (grapetylenol) so that I can debug this? Thank you!

Edit: this bug should be fixed now. Thanks for your bug report!
 
Last edited:
Small update, if you noticed the speed stages on your exported tables were incorrect, this is for you!
Fixes:
  • Importing existing lists now imports as expected (speed stage is exported correctly!)
I've seen lists made by this tool pop up on the forums which is awesome! If you have been using this tool and have any feedback, please feel free to message me here or on Discord (grapetylenol) :tyke:
 
pls add cap support tysm ily for this


e: ogerpon formes don't work
e 2: urshifu doesn't work, you have to type "Urshifu-Single-Strike" and the sprite won't appear
e 3: lando, thundy, torn and enamorus don't work it seems, but just in their avatar form, therian work well
e 4: Aegislash have the same issue as Urshifu, having to type "Aegislash-Shield"
e 5: mimikyu doesn't work
 
Last edited:
pls add cap support tysm ily for this


e: ogerpon formes don't work
e 2: urshifu doesn't work, you have to type "Urshifu-Single-Strike" and the sprite won't appear
e 3: lando, thundy, torn and enamorus don't work it seems, but just in their avatar form, therian work well
e 4: Aegislash have the same issue as Urshifu, having to type "Aegislash-Shield"
e 5: mimikyu doesn't work
Hey Dorron,
Thanks for using my tool! I do know about some forms of Pokemon not working and I know why that is the case (there are some inconsistencies with how the API I'm using and how Smogon/Pokemon Showdown handles them), I just unfortunately don't have the time to fix it at the moment. When I do have time to fix it, I will post an update in this thread.
 
Heya, since I've been using this again, I complied a list of Pokemon that seem to have names in the tier post generator that don't match the syntax for Smogon minisprites, hope this helps! Note its really BSS centric so I'm sure I'm missing some. I'll put what the Smogon :syntax: expects after the sprite if that makes things easier!

:necrozma-dusk mane: Necrozma Dusk-Mane
:necrozma-dawn wings: Necrozma-Dawn Wings
:giratina: Giratina (it seems like the calc wants Giratina-Altered, but it still doesn't give a sprite)
:basculegion: Basculegion (it seems to want a gender specified)
:indeedee: Indeedee (Indeedee-M doesn't have a forme name for the Smogon syntax)
 
When I do have time to fix it, I will post an update in this thread.
Well that took a while :worrywhirl:

Anyways, the project has been refactored to use @pkmn/dex instead of PokeAPI! This should solve the issues Dorron and Theorymon were having where Pokemon with alternate forms weren't working. This also comes with the added bonus of CAP support! Unfortunately this did require me to remove support for exporting in other languages (as far as i know, only one person was using this feature,) but I will look into restoring that in my next update. I am also looking into improving the user interface in the next update as it is quite ugly and not user friendly.

I am actively working on this project again so if you have any further feedback or questions please feel free to reach out to me here or on discord at grapetylenol :tyke:

Improvements
  • Refactored to use pkmn/dex instead of PokeAPI.
  • CAP Pokemon are now supported.
Fixes
  • Pokemon with alternate forms now import and export correctly.
 
First of all amazing resource, it's very useful and I'm so happy to have it so thank you :)
As a suggestion it would be very useful to have an option to bulk import pokemon with no speed investment instead of full speed investment for all the bulky mons that don't put any points in their speed
 
First of all amazing resource, it's very useful and I'm so happy to have it so thank you :)
As a suggestion it would be very useful to have an option to bulk import pokemon with no speed investment instead of full speed investment for all the bulky mons that don't put any points in their speed
I'm glad to hear people are still getting use out of this tool! I went ahead and added the feature you requested. When "Bulk Import" is selected you can now enter whatever values you want for level, EVs, IV, nature, and speed stage.

1737585018353.png


I also added the ability to modify the level, EVs, IV, Nature, and speed stage of Pokemon you've already added to the list. You can do so by changing the values on the pop-up that appears when you click on a Pokemon and then clicking "Save".

As always if you are using this tool and have any bug reports, feedback, or questions, please feel free to reach out to me here or on Discord (at grapetylenol). :tyke:
 
Back
Top