Programming Speed Tier Post Generator

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 at maximum speed investment, 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.
1691181053864.png


Options:
  • 0 - adds all Pokemon at base speed (default)
  • +1 - adds all Pokemon at +1 speed (default is no boosts)
  • +2 - adds all Pokemon at +2 speed (default is no boosts)
  • -1 - adds all Pokemon at +2 speed (default is no drops)
  • -2 - adds all Pokemon at +2 speed (default is no drops)
  • Level - adds all Pokemon at a specific level (default is 100)
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 textbox. Then click "Add to list".
1691181231418.png


Options:
  • 0 - adds this Pokemon at base speed (default)
  • +1 - adds this Pokemon at +1 speed (default is no boosts)
  • +2 - adds this Pokemon at +2 speed (default is no boosts)
  • -1 - adds this Pokemon at -1 speed (default is no drops)
  • -2 - adds this Pokemon at -2 speed (default is no 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 a Pokemon's details or remove it from the list. You can do this by clicking on its icon under "Added Pokemon:"
1691179927547.png

1691179591696.png

Clicking on the Pokemon's icon will bring up this window with its details. Clicking the "Delete" button will remove that Pokemon from the list as well as any duplicates.
Known bugs:
  • Lists that have Pokemon names in a language besides English are not able to be re-imported
Planned features:
  • Import multiple sets at once
  • Prevent adding duplicates of Pokemon already in the Added Pokemon list
  • Modify speed investment of bulk added Pokemon (ex. bulk add with 0 speed investment)
  • Gen 1 & 2 support
  • Check for Choice Scarf and other speed boosting items as a held item and set speed stage accordingly
  • Override official base speed (to support OMs that modify the base speed of a Pokemon)
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. If you encounter any problems, please DM me on Discord (grapetylenol) or post in this thread.

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.
 

Attachments

Last edited:

SparksBlade

is a Tournament Directoris a Community Leaderis a Community Contributoris a member of the Battle Simulator Staffis a Top Dedicated Tournament Host
Community Leader
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:

SparksBlade

is a Tournament Directoris a Community Leaderis a Community Contributoris a member of the Battle Simulator Staffis a Top Dedicated Tournament Host
Community Leader
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
 

shnowshner

You've Gotta Try
is a Pre-Contributor
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:
 

Dorron

BLU LOBSTAH
is a Top Social Media Contributoris a Community Contributoris a Tiering Contributoris a Top Contributoris a Smogon Media Contributoris a Site Content Manager Alumnusis a Forum Moderator Alumnusis a defending World Cup of Pokemon Champion
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.
 

Theorymon

Long Live Super Mario Maker! 2015-2024
is a Site Content Manageris a Forum Moderatoris a Community Contributoris a Smogon Discord Contributoris a Pokemon Researcheris a Top Contributoris a Top Smogon Media Contributoris a Social Media Contributor Alumnusis a Community Leader Alumnusis a CAP Contributor Alumnusis a Battle Simulator Moderator Alumnus
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.
 

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

Top