@pkmn/sim 0.5.26 → 0.5.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/build/config/formats.js +196 -160
  2. package/build/config/formats.js.map +1 -1
  3. package/build/data/aliases.js +2 -2
  4. package/build/data/aliases.js.map +1 -1
  5. package/build/data/conditions.js +1 -1
  6. package/build/data/conditions.js.map +1 -1
  7. package/build/data/formats-data.js +24 -25
  8. package/build/data/formats-data.js.map +1 -1
  9. package/build/data/learnsets.js +27 -20
  10. package/build/data/learnsets.js.map +1 -1
  11. package/build/data/mods/gen2/moves.js +10 -5
  12. package/build/data/mods/gen2/moves.js.map +1 -1
  13. package/build/data/mods/gen3/formats-data.js +2 -2
  14. package/build/data/mods/gen3/formats-data.js.map +1 -1
  15. package/build/data/mods/gen3/moves.js +9 -0
  16. package/build/data/mods/gen3/moves.js.map +1 -1
  17. package/build/data/pokedex.js +7 -7
  18. package/build/data/pokedex.js.map +1 -1
  19. package/build/data/text/abilities.js +321 -139
  20. package/build/data/text/abilities.js.map +1 -1
  21. package/build/data/text/moves.js +8 -2
  22. package/build/data/text/moves.js.map +1 -1
  23. package/build/sim/battle-actions.js.map +1 -1
  24. package/build/sim/pokemon.js +1 -1
  25. package/build/sim/pokemon.js.map +1 -1
  26. package/build/sim/team-validator.js +21 -16
  27. package/build/sim/team-validator.js.map +1 -1
  28. package/config/formats.ts +197 -158
  29. package/data/aliases.ts +2 -2
  30. package/data/conditions.ts +1 -1
  31. package/data/formats-data.ts +24 -25
  32. package/data/learnsets.ts +27 -20
  33. package/data/mods/gen2/moves.ts +10 -5
  34. package/data/mods/gen3/formats-data.ts +2 -2
  35. package/data/mods/gen3/moves.ts +9 -0
  36. package/data/pokedex.ts +7 -7
  37. package/data/text/abilities.ts +321 -139
  38. package/data/text/moves.ts +8 -2
  39. package/package.json +1 -1
  40. package/sim/battle-actions.ts +1 -0
  41. package/sim/pokemon.ts +1 -1
  42. package/sim/team-validator.ts +22 -18
@@ -232,7 +232,7 @@ exports.Formats = [
232
232
  // LC OU
233
233
  'Abra', 'Carvanha', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey', 'Koffing',
234
234
  'Larvesta', 'Magby', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Natu', 'Onix', 'Pawniard',
235
- 'Ponyta-Base', 'Porygon', 'Slowpoke-Base', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt',
235
+ 'Ponyta-Base', 'Porygon', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt',
236
236
  // LC UUBL
237
237
  'Archen', 'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
238
238
  ],
@@ -278,7 +278,7 @@ exports.Formats = [
278
278
  unbanlist: [
279
279
  'Venusaur', 'Charizard', 'Blastoise', 'Sandslash-Base', 'Ninetales-Base', 'Arcanine', 'Alakazam', 'Tentacruel', 'Magneton', 'Cloyster',
280
280
  'Exeggutor-Base', 'Rhydon', 'Gyarados', 'Lapras', 'Vaporeon', 'Jolteon', 'Flareon', 'Aerodactyl', 'Dragonite', 'Heracross', 'Skarmory',
281
- 'Tyranitar', 'Ludicolo', 'Aggron', 'Wailord', 'Altaria', 'Whiscash', 'Claydol', 'Cradily', 'Armaldo', 'Milotic', 'Salamence',
281
+ 'Tyranitar', 'Ludicolo', 'Gardevoir', 'Aggron', 'Wailord', 'Altaria', 'Whiscash', 'Claydol', 'Cradily', 'Armaldo', 'Milotic', 'Salamence',
282
282
  'Metagross', 'Roserade', 'Gastrodon', 'Spiritomb', 'Garchomp', 'Lucario', 'Rhyperior', 'Togekiss', 'Seismitoad', 'Archeops',
283
283
  'Vanilluxe', 'Escavalier', 'Haxorus', 'Accelgor', 'Druddigon', 'Bouffalant', 'Hydreigon', 'Volcarona', 'Aegislash', 'Tyrantrum',
284
284
  'Aurorus', 'Hawlucha', 'Carbink', 'Goodra', 'Gourgeist', 'Rillaboom', 'Cinderace', 'Inteleon', 'Mr. Rime', 'Dragapult',
@@ -537,7 +537,7 @@ exports.Formats = [
537
537
  ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', '!Obtainable'],
538
538
  banlist: [
539
539
  // Pokemon
540
- 'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Cramorant-Gorging', 'Calyrex-Shadow',
540
+ 'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Cramorant-Gorging', 'Calyrex-Shadow', 'Darmanitan-Galar-Zen',
541
541
  // Abilities
542
542
  'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Protean', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard',
543
543
  // Items
@@ -598,117 +598,35 @@ exports.Formats = [
598
598
  column: 2,
599
599
  },
600
600
  {
601
- name: "[Gen 8] Partners in Crime",
602
- desc: `Doubles-based metagame where both active ally Pokémon share abilities and moves.`,
601
+ name: "[Gen 8] Revelationmons",
602
+ desc: `The moves in the first slot(s) of a Pokémon's set have their types changed to match the Pokémon's type(s).`,
603
603
  threads: [
604
- `&bullet; <a href="https://www.smogon.com/forums/threads/3706080/">Partners in Crime</a>`,
604
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3692297/">Revelationmons</a>`,
605
605
  ],
606
- mod: 'partnersincrime',
607
- gameType: 'doubles',
608
- // searchShow: false,
609
- ruleset: ['Standard Doubles', 'Dynamax Clause'],
606
+ mod: 'gen8',
607
+ ruleset: ['Standard OMs', 'Revelationmons Mod', 'Sleep Moves Clause'],
610
608
  banlist: [
611
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh',
612
- 'Jirachi', 'Kyogre', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
613
- 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Urshifu-Base',
614
- 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Emergency Exit',
615
- 'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard', 'Bolt Beak', 'Fishious Rend',
616
- 'Shell Smash', 'Swagger',
609
+ 'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult', 'Eternatus', 'Genesect',
610
+ 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala',
611
+ 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza',
612
+ 'Reshiram', 'Solgaleo', 'Spectrier', 'Thundurus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta',
613
+ 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
617
614
  ],
618
- onBeforeSwitchIn(pokemon) {
619
- pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
620
- let ngas = false;
621
- for (const poke of this.getAllActive()) {
622
- if (this.toID(poke.ability) === 'neutralizinggas') {
623
- ngas = true;
624
- break;
625
- }
626
- }
627
- const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
628
- // Abilities that must be applied before both sides trigger onSwitchIn to correctly
629
- // handle switch-in ability-to-ability interactions, e.g. Intimidate counters
630
- const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
631
- 'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
632
- 'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
633
- ];
634
- const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
635
- if (ally && ally.ability !== pokemon.ability) {
636
- if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
637
- NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
638
- pokemon.m.innate = 'ability:' + ally.ability;
639
- delete pokemon.volatiles[pokemon.m.innate];
640
- if (!ngas || ally.getAbility().isPermanent)
641
- pokemon.addVolatile(pokemon.m.innate);
642
- }
643
- if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
644
- NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
645
- ally.m.innate = 'ability:' + pokemon.ability;
646
- delete ally.volatiles[ally.m.innate];
647
- if (!ngas || pokemon.getAbility().isPermanent)
648
- ally.addVolatile(ally.m.innate);
649
- }
650
- }
651
- },
652
- onSwitchInPriority: 2,
653
- onSwitchIn(pokemon) {
654
- let ngas = false;
655
- for (const poke of this.getAllActive()) {
656
- if (this.toID(poke.ability) === 'neutralizinggas') {
657
- ngas = true;
658
- break;
659
- }
660
- }
661
- const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
662
- const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
663
- if (ally && ally.ability !== pokemon.ability) {
664
- if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
665
- pokemon.m.innate = 'ability:' + ally.ability;
666
- delete pokemon.volatiles[pokemon.m.innate];
667
- if (!ngas || ally.getAbility().isPermanent)
668
- pokemon.addVolatile(pokemon.m.innate);
669
- }
670
- if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
671
- ally.m.innate = 'ability:' + pokemon.ability;
672
- delete ally.volatiles[ally.m.innate];
673
- if (!ngas || pokemon.getAbility().isPermanent)
674
- ally.addVolatile(ally.m.innate);
675
- }
676
- }
677
- },
678
- onSwitchOut(pokemon) {
679
- if (pokemon.m.innate) {
680
- pokemon.removeVolatile(pokemon.m.innate);
681
- delete pokemon.m.innate;
682
- }
683
- const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
684
- if (ally && ally.m.innate) {
685
- ally.removeVolatile(ally.m.innate);
686
- delete ally.m.innate;
687
- }
688
- },
689
- onFaint(pokemon) {
690
- if (pokemon.m.innate) {
691
- pokemon.removeVolatile(pokemon.m.innate);
692
- delete pokemon.m.innate;
693
- }
694
- const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
695
- if (ally && ally.m.innate) {
696
- ally.removeVolatile(ally.m.innate);
697
- delete ally.m.innate;
698
- }
699
- },
615
+ restricted: ['Bolt Beak', 'Close Combat', 'U-turn', 'Volt Switch'],
700
616
  },
701
617
  {
702
- name: "[Gen 8] Chimera 1v1",
703
- desc: `One Pok&eacute;mon inherits specific traits from your entire 6-mon team, based on their order.`,
618
+ name: "[Gen 8] Tag Team Singles",
619
+ desc: `Bring four Pok&eacute;mon to Team Preview and choose two to battle in a singles battle.`,
704
620
  threads: [
705
- `&bullet; <a href="https://www.smogon.com/forums/threads/3661215/">Chimera 1v1</a>`,
621
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3705415/">Tag Team Singles</a>`,
706
622
  ],
707
623
  mod: 'gen8',
708
- ruleset: ['Chimera 1v1 Rule', 'Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
624
+ ruleset: ['Picked Team Size = 2', 'Max Team Size = 4', 'Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause'],
709
625
  banlist: [
710
- 'Shedinja', 'Huge Power', 'Moody', 'Neutralizing Gas', 'Truant', 'Perish Body', 'Eviolite', 'Focus Sash', 'Leek', 'Light Ball',
711
- 'Bolt Beak', 'Disable', 'Double Iron Bash', 'Fishious Rend', 'Perish Song', 'Switcheroo', 'Transform', 'Trick',
626
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
627
+ 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
628
+ 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
629
+ 'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Sash', 'King\'s Rock', 'Lax Incense', 'Final Gambit',
712
630
  ],
713
631
  },
714
632
  // Other Metagames
@@ -1730,6 +1648,107 @@ exports.Formats = [
1730
1648
  },
1731
1649
  },
1732
1650
  },
1651
+ {
1652
+ name: "[Gen 8] Partners in Crime",
1653
+ desc: `Doubles-based metagame where both active ally Pok&eacute;mon share abilities and moves.`,
1654
+ threads: [
1655
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3706080/">Partners in Crime</a>`,
1656
+ ],
1657
+ mod: 'partnersincrime',
1658
+ gameType: 'doubles',
1659
+ searchShow: false,
1660
+ ruleset: ['Standard Doubles', 'Dynamax Clause'],
1661
+ banlist: [
1662
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh',
1663
+ 'Jirachi', 'Kyogre', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
1664
+ 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Urshifu-Base',
1665
+ 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Emergency Exit',
1666
+ 'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard', 'Bolt Beak', 'Fishious Rend',
1667
+ 'Shell Smash', 'Swagger',
1668
+ ],
1669
+ onBeforeSwitchIn(pokemon) {
1670
+ pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
1671
+ let ngas = false;
1672
+ for (const poke of this.getAllActive()) {
1673
+ if (this.toID(poke.ability) === 'neutralizinggas') {
1674
+ ngas = true;
1675
+ break;
1676
+ }
1677
+ }
1678
+ const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
1679
+ // Abilities that must be applied before both sides trigger onSwitchIn to correctly
1680
+ // handle switch-in ability-to-ability interactions, e.g. Intimidate counters
1681
+ const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
1682
+ 'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
1683
+ 'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
1684
+ ];
1685
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
1686
+ if (ally && ally.ability !== pokemon.ability) {
1687
+ if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
1688
+ NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
1689
+ pokemon.m.innate = 'ability:' + ally.ability;
1690
+ delete pokemon.volatiles[pokemon.m.innate];
1691
+ if (!ngas || ally.getAbility().isPermanent)
1692
+ pokemon.addVolatile(pokemon.m.innate);
1693
+ }
1694
+ if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
1695
+ NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
1696
+ ally.m.innate = 'ability:' + pokemon.ability;
1697
+ delete ally.volatiles[ally.m.innate];
1698
+ if (!ngas || pokemon.getAbility().isPermanent)
1699
+ ally.addVolatile(ally.m.innate);
1700
+ }
1701
+ }
1702
+ },
1703
+ onSwitchInPriority: 2,
1704
+ onSwitchIn(pokemon) {
1705
+ let ngas = false;
1706
+ for (const poke of this.getAllActive()) {
1707
+ if (this.toID(poke.ability) === 'neutralizinggas') {
1708
+ ngas = true;
1709
+ break;
1710
+ }
1711
+ }
1712
+ const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
1713
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
1714
+ if (ally && ally.ability !== pokemon.ability) {
1715
+ if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
1716
+ pokemon.m.innate = 'ability:' + ally.ability;
1717
+ delete pokemon.volatiles[pokemon.m.innate];
1718
+ if (!ngas || ally.getAbility().isPermanent)
1719
+ pokemon.addVolatile(pokemon.m.innate);
1720
+ }
1721
+ if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
1722
+ ally.m.innate = 'ability:' + pokemon.ability;
1723
+ delete ally.volatiles[ally.m.innate];
1724
+ if (!ngas || pokemon.getAbility().isPermanent)
1725
+ ally.addVolatile(ally.m.innate);
1726
+ }
1727
+ }
1728
+ },
1729
+ onSwitchOut(pokemon) {
1730
+ if (pokemon.m.innate) {
1731
+ pokemon.removeVolatile(pokemon.m.innate);
1732
+ delete pokemon.m.innate;
1733
+ }
1734
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
1735
+ if (ally && ally.m.innate) {
1736
+ ally.removeVolatile(ally.m.innate);
1737
+ delete ally.m.innate;
1738
+ }
1739
+ },
1740
+ onFaint(pokemon) {
1741
+ if (pokemon.m.innate) {
1742
+ pokemon.removeVolatile(pokemon.m.innate);
1743
+ delete pokemon.m.innate;
1744
+ }
1745
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
1746
+ if (ally && ally.m.innate) {
1747
+ ally.removeVolatile(ally.m.innate);
1748
+ delete ally.m.innate;
1749
+ }
1750
+ },
1751
+ },
1733
1752
  {
1734
1753
  name: "[Gen 8] Pokebilities",
1735
1754
  desc: `Pok&eacute;mon have all of their released abilities simultaneously.`,
@@ -2135,10 +2154,11 @@ exports.Formats = [
2135
2154
  column: 2,
2136
2155
  },
2137
2156
  {
2138
- name: "[Gen 3] Challenge Cup",
2139
- mod: 'gen3',
2140
- team: 'randomCC',
2141
- ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
2157
+ name: "[Gen 7] Pick-Your-Team Random Battle",
2158
+ mod: 'gen7',
2159
+ team: 'random',
2160
+ ruleset: ['[Gen 7] Random Battle', 'Max Team Size = 12', 'Picked Team Size = 6', 'Team Preview'],
2161
+ desc: `Twelve Pokémon sets are randomly chosen, then you pick six for your team!`,
2142
2162
  },
2143
2163
  // Randomized Metas
2144
2164
  ///////////////////////////////////////////////////////////////////
@@ -2193,6 +2213,13 @@ exports.Formats = [
2193
2213
  }
2194
2214
  },
2195
2215
  },
2216
+ {
2217
+ name: "[Gen 8] Battle Factory",
2218
+ desc: `Randomized teams of Pok&eacute;mon for a generated Smogon tier with sets that are competitively viable.`,
2219
+ mod: 'gen8',
2220
+ team: 'randomFactory',
2221
+ ruleset: ['Standard', 'Dynamax Clause'],
2222
+ },
2196
2223
  {
2197
2224
  name: "[Gen 8] BSS Factory",
2198
2225
  desc: `Randomized 3v3 Singles featuring Pok&eacute;mon and movesets popular in Battle Stadium Singles.`,
@@ -2460,41 +2487,32 @@ exports.Formats = [
2460
2487
  column: 3,
2461
2488
  },
2462
2489
  {
2463
- name: "[Gen 4] Ubers",
2490
+ name: "[Gen 5] Ubers",
2464
2491
  threads: [
2465
- `&bullet; <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
2492
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8286278/">BW2 Ubers</a>`,
2466
2493
  ],
2467
- mod: 'gen4',
2494
+ mod: 'gen5',
2468
2495
  // searchShow: false,
2469
- ruleset: ['Standard'],
2470
- banlist: ['AG'],
2496
+ ruleset: ['Standard', 'Sleep Clause Mod'],
2471
2497
  },
2472
2498
  {
2473
- name: "[Gen 4] LC",
2499
+ name: "[Gen 7] PU",
2474
2500
  threads: [
2475
- `&bullet; <a href="https://www.smogon.com/dp/articles/little_cup_guide">DPP LC Guide</a>`,
2476
- `&bullet; <a href="https://www.smogon.com/forums/posts/7336500/">DPP LC Viability Rankings</a>`,
2501
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3611496/">USM PU Sample Teams</a>`,
2502
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3614892/">USM PU Viability Rankings</a>`,
2477
2503
  ],
2478
- mod: 'gen4',
2504
+ mod: 'gen7',
2479
2505
  // searchShow: false,
2480
- ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
2481
- banlist: [
2482
- 'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Yanma',
2483
- 'Berry Juice', 'Deep Sea Tooth', 'Dragon Rage', 'Sonic Boom', 'Swagger',
2484
- ],
2506
+ ruleset: ['[Gen 7] NU'],
2507
+ banlist: ['NU', 'PUBL'],
2485
2508
  },
2486
2509
  {
2487
- name: "[Gen 1] Nintendo Cup 1997",
2488
- threads: [
2489
- `&bullet; <a href="https://www.smogon.com/forums/threads/3682412/">Nintendo Cup 1997 Discussion &amp; Resources</a>`,
2490
- ],
2491
- mod: 'gen1jpn',
2492
- // searchShow: false,
2493
- ruleset: [
2494
- 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
2495
- 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Nintendo Cup 1997 Move Legality',
2496
- ],
2497
- banlist: ['Uber'],
2510
+ name: "[Gen 2] UUBL",
2511
+ threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3662389/">GSC UUBL</a>`],
2512
+ mod: 'gen2',
2513
+ ruleset: ['[Gen 2] OU'],
2514
+ banlist: ['OU'],
2515
+ unbanlist: ['Mean Look + Baton Pass', 'Spider Web + Baton Pass'],
2498
2516
  },
2499
2517
  // Past Gens OU
2500
2518
  ///////////////////////////////////////////////////////////////////
@@ -2747,17 +2765,6 @@ exports.Formats = [
2747
2765
  ruleset: ['[Gen 7] RU'],
2748
2766
  banlist: ['RU', 'NUBL', 'Drought'],
2749
2767
  },
2750
- {
2751
- name: "[Gen 7] PU",
2752
- threads: [
2753
- `&bullet; <a href="https://www.smogon.com/forums/threads/3611496/">USM PU Sample Teams</a>`,
2754
- `&bullet; <a href="https://www.smogon.com/forums/threads/3614892/">USM PU Viability Rankings</a>`,
2755
- ],
2756
- mod: 'gen7',
2757
- searchShow: false,
2758
- ruleset: ['[Gen 7] NU'],
2759
- banlist: ['NU', 'PUBL'],
2760
- },
2761
2768
  {
2762
2769
  name: "[Gen 7] LC",
2763
2770
  threads: [
@@ -2804,10 +2811,11 @@ exports.Formats = [
2804
2811
  'Obtainable', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Swagger Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause',
2805
2812
  ],
2806
2813
  banlist: [
2807
- 'Arceus', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega',
2808
- 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Mimikyu', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
2809
- 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Tapu Koko', 'Xerneas', 'Yveltal', 'Zekrom',
2810
- 'Moody', 'Focus Sash', 'Grass Whistle', 'Hypnosis', 'Perish Song', 'Sing', 'Detect + Fightinium Z',
2814
+ 'Arceus', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon',
2815
+ 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', 'Mew', 'Mewtwo',
2816
+ 'Mimikyu', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky',
2817
+ 'Snorlax', 'Solgaleo', 'Tapu Koko', 'Xerneas', 'Yveltal', 'Zekrom', 'Moody', 'Focus Sash', 'Grass Whistle', 'Hypnosis',
2818
+ 'Perish Song', 'Sing', 'Detect + Fightinium Z',
2811
2819
  ],
2812
2820
  },
2813
2821
  {
@@ -3257,15 +3265,6 @@ exports.Formats = [
3257
3265
  section: "B2/W2 Singles",
3258
3266
  column: 4,
3259
3267
  },
3260
- {
3261
- name: "[Gen 5] Ubers",
3262
- threads: [
3263
- `&bullet; <a href="https://www.smogon.com/forums/posts/8286278/">BW2 Ubers</a>`,
3264
- ],
3265
- mod: 'gen5',
3266
- searchShow: false,
3267
- ruleset: ['Standard', 'Sleep Clause Mod'],
3268
- },
3269
3268
  {
3270
3269
  name: "[Gen 5] UU",
3271
3270
  threads: [
@@ -3446,6 +3445,16 @@ exports.Formats = [
3446
3445
  section: "DPP Singles",
3447
3446
  column: 5,
3448
3447
  },
3448
+ {
3449
+ name: "[Gen 4] Ubers",
3450
+ threads: [
3451
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
3452
+ ],
3453
+ mod: 'gen4',
3454
+ searchShow: false,
3455
+ ruleset: ['Standard'],
3456
+ banlist: ['AG'],
3457
+ },
3449
3458
  {
3450
3459
  name: "[Gen 4] UU",
3451
3460
  threads: [
@@ -3486,6 +3495,20 @@ exports.Formats = [
3486
3495
  'Sharpedo', 'Shiftry', 'Skuntank', 'Slowking', 'Tauros', 'Typhlosion', 'Venomoth', 'Vileplume',
3487
3496
  ],
3488
3497
  },
3498
+ {
3499
+ name: "[Gen 4] LC",
3500
+ threads: [
3501
+ `&bullet; <a href="https://www.smogon.com/dp/articles/little_cup_guide">DPP LC Guide</a>`,
3502
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7336500/">DPP LC Viability Rankings</a>`,
3503
+ ],
3504
+ mod: 'gen4',
3505
+ searchShow: false,
3506
+ ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
3507
+ banlist: [
3508
+ 'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Yanma',
3509
+ 'Berry Juice', 'Deep Sea Tooth', 'Dragon Rage', 'Sonic Boom', 'Swagger',
3510
+ ],
3511
+ },
3489
3512
  {
3490
3513
  name: "[Gen 4] Anything Goes",
3491
3514
  mod: 'gen4',
@@ -3628,7 +3651,7 @@ exports.Formats = [
3628
3651
  'Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Zapdos', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song',
3629
3652
  'Self-Destruct', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3630
3653
  ],
3631
- unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
3654
+ unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil', 'Soundproof'],
3632
3655
  },
3633
3656
  {
3634
3657
  name: "[Gen 3] Doubles OU",
@@ -3747,7 +3770,7 @@ exports.Formats = [
3747
3770
  ],
3748
3771
  mod: 'gen1',
3749
3772
  searchShow: false,
3750
- ruleset: ['[Gen 1] OU', 'APT Clause'],
3773
+ ruleset: ['[Gen 1] OU', 'APT Clause', 'Sleep Moves Clause'],
3751
3774
  banlist: ['OU', 'UUBL'],
3752
3775
  },
3753
3776
  {
@@ -3757,7 +3780,7 @@ exports.Formats = [
3757
3780
  ],
3758
3781
  mod: 'gen1',
3759
3782
  searchShow: false,
3760
- ruleset: ['[Gen 1] UU', '!APT Clause'],
3783
+ ruleset: ['[Gen 1] UU', '!APT Clause', '!Sleep Moves Clause'],
3761
3784
  banlist: ['UU', 'NUBL'],
3762
3785
  },
3763
3786
  {
@@ -3781,6 +3804,19 @@ exports.Formats = [
3781
3804
  ruleset: ['Standard'],
3782
3805
  banlist: ['Uber'],
3783
3806
  },
3807
+ {
3808
+ name: "[Gen 1] Nintendo Cup 1997",
3809
+ threads: [
3810
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3682412/">Nintendo Cup 1997 Discussion &amp; Resources</a>`,
3811
+ ],
3812
+ mod: 'gen1jpn',
3813
+ searchShow: false,
3814
+ ruleset: [
3815
+ 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
3816
+ 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Nintendo Cup 1997 Move Legality',
3817
+ ],
3818
+ banlist: ['Uber'],
3819
+ },
3784
3820
  {
3785
3821
  name: "[Gen 1] Stadium OU",
3786
3822
  threads: [