Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update tiering banlist information #5

Open
scheibo opened this issue Aug 27, 2024 · 2 comments
Open

Update tiering banlist information #5

scheibo opened this issue Aug 27, 2024 · 2 comments
Labels
stats Issue related to @pkmn/stats

Comments

@scheibo
Copy link
Contributor

scheibo commented Aug 27, 2024

The tiering banlists are woefully out of data, from about ~2020.

stats/stats/src/reports.ts

Lines 483 to 515 in 652db3e

const SKIP = new Set([
'pichuspikyeared', 'unownb', 'unownc', 'unownd', 'unowne', 'unownf', 'unowng', 'unownh',
'unowni', 'unownj', 'unownk', 'unownl', 'unownm', 'unownn', 'unowno', 'unownp', 'unownq',
'unownr', 'unowns', 'unownt', 'unownu', 'unownv', 'unownw', 'unownx', 'unowny', 'unownz',
'unownem', 'unownqm', 'burmysandy', 'burmytrash', 'cherrimsunshine', 'shelloseast',
'gastrodoneast', 'deerlingsummer', 'deerlingautumn', 'deerlingwinter', 'sawsbucksummer',
'sawsbuckautumn', 'sawsbuckwinter', 'keldeoresolution', 'genesectdouse', 'genesectburn',
'genesectshock', 'genesectchill', 'basculinbluestriped', 'darmanitanzen', 'keldeoresolute',
'pikachucosplay',
]);
const BL: {[tier in Tier]?: Set<string>} = {
UU: new Set([
'hawlucha', 'dracozolt', 'diggersby', 'durant', 'weavile', 'ninetalesalola', 'gyarados',
'primarina', 'venusaur', 'haxorus', 'aegislash', 'conkeldurr', 'gengar', 'scolipede',
'lycanrocdusk',
]),
RU: new Set([
'barbaracle', 'pangoro', 'shiftry', 'slurpuff', 'chansey', 'indeedee', 'raichualola', 'linoone',
'sharpedo', 'zoroark', 'lucario', 'reuniclus', 'sirfetchd', 'heracross', 'sigilyph',
]),
NU: new Set([
'slurpuff', 'scrafty', 'haunter', 'linoone', 'chansey', 'indeedeef', 'porygon2', 'tauros',
'exeggutoralola', 'sneasel', 'snorlax', 'zygarde10', 'tyrantrum', 'kingdra',
]),
PU: new Set([
'arctozolt', 'arctovish', 'silvally', 'noctowl', 'silvallyground', 'silvallyfire',
'silvallyflying', 'silvallyfighting', 'scyther', 'magneton', 'porygon2', 'basculin',
'hitmontop', 'silvallypsychic', 'silvallyelectric', 'silvallygrass', 'rotomfrost', 'orbeetle',
'butterfree', 'golurk', 'flapple', 'thievul', 'sawk', 'galvantula', 'silvallydark', 'exeggutor',
'mesprit', 'guzzlord', 'magmortar', 'zygarde10', 'kingler', 'absol',
]),
ZU: new Set(['silvallyelectric', 'thwackey', 'ludicolo', 'musharna', 'grapploct', 'swoobat']),

Ideally, we can pull this information from the PS data (@pkmn/data), but there are potentially some gotchas. I don't know that in all cases we have scenarios where a Pokémon gets added to the xBL tier (eg. UU -> UUBL). In some cases the ban is an ability ban or implemented by some other means in the rule table which might complicate things (though hopefully not)?

Like with many things (#4), these banlists should also likely be generation aware (tiering by usage only actually takes place on the most recent generation, but Smogon still likes to report what would have shifted in old generations had this not been the policy)

@shrianshChari
Copy link
Collaborator

stats/stats/src/reports.ts

Lines 483 to 515 in 652db3e

const SKIP = new Set([
'pichuspikyeared', 'unownb', 'unownc', 'unownd', 'unowne', 'unownf', 'unowng', 'unownh',
'unowni', 'unownj', 'unownk', 'unownl', 'unownm', 'unownn', 'unowno', 'unownp', 'unownq',
'unownr', 'unowns', 'unownt', 'unownu', 'unownv', 'unownw', 'unownx', 'unowny', 'unownz',
'unownem', 'unownqm', 'burmysandy', 'burmytrash', 'cherrimsunshine', 'shelloseast',
'gastrodoneast', 'deerlingsummer', 'deerlingautumn', 'deerlingwinter', 'sawsbucksummer',
'sawsbuckautumn', 'sawsbuckwinter', 'keldeoresolution', 'genesectdouse', 'genesectburn',
'genesectshock', 'genesectchill', 'basculinbluestriped', 'darmanitanzen', 'keldeoresolute',
'pikachucosplay',
]);
const BL: {[tier in Tier]?: Set<string>} = {
UU: new Set([
'hawlucha', 'dracozolt', 'diggersby', 'durant', 'weavile', 'ninetalesalola', 'gyarados',
'primarina', 'venusaur', 'haxorus', 'aegislash', 'conkeldurr', 'gengar', 'scolipede',
'lycanrocdusk',
]),
RU: new Set([
'barbaracle', 'pangoro', 'shiftry', 'slurpuff', 'chansey', 'indeedee', 'raichualola', 'linoone',
'sharpedo', 'zoroark', 'lucario', 'reuniclus', 'sirfetchd', 'heracross', 'sigilyph',
]),
NU: new Set([
'slurpuff', 'scrafty', 'haunter', 'linoone', 'chansey', 'indeedeef', 'porygon2', 'tauros',
'exeggutoralola', 'sneasel', 'snorlax', 'zygarde10', 'tyrantrum', 'kingdra',
]),
PU: new Set([
'arctozolt', 'arctovish', 'silvally', 'noctowl', 'silvallyground', 'silvallyfire',
'silvallyflying', 'silvallyfighting', 'scyther', 'magneton', 'porygon2', 'basculin',
'hitmontop', 'silvallypsychic', 'silvallyelectric', 'silvallygrass', 'rotomfrost', 'orbeetle',
'butterfree', 'golurk', 'flapple', 'thievul', 'sawk', 'galvantula', 'silvallydark', 'exeggutor',
'mesprit', 'guzzlord', 'magmortar', 'zygarde10', 'kingler', 'absol',
]),
ZU: new Set(['silvallyelectric', 'thwackey', 'ludicolo', 'musharna', 'grapploct', 'swoobat']),

Unown, Burmy, Shellos, Gastrodon, Deerling, and Sawsbuck all have the property specie.cosmeticFormes. Therefore, we could check if the Pokemon's baseSpecies has a cosmeticForme. This wouldn't hold for the other Pokemon because they are not purely cosmetic changes; Keldeo-Resolute is guaranteed to have Secret Sword, the Genesect formes have a different typing for Techno Blast, Basculin-Blue-Striped has a different ability from Red-Striped, and Pikachu-Cosplay gets access to various other moves. I suppose we could precompute whether or not the alternate formes of a Pokemon have the same base stats and typing as the base forme, though that could potentially be expensive to compute with over 1000 Pokemon.

@scheibo
Copy link
Contributor Author

scheibo commented Sep 10, 2024

You're right, simplifying this list via a cosmeticFormes check is a good idea

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stats Issue related to @pkmn/stats
Development

No branches or pull requests

2 participants