@pkmn/sim 0.4.25 → 0.5.3

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 (59) hide show
  1. package/build/config/formats.js +272 -204
  2. package/build/config/formats.js.map +1 -1
  3. package/build/data/abilities.js +5 -1
  4. package/build/data/abilities.js.map +1 -1
  5. package/build/data/formats-data.js +48 -41
  6. package/build/data/formats-data.js.map +1 -1
  7. package/build/data/items.js +26 -2
  8. package/build/data/items.js.map +1 -1
  9. package/build/data/learnsets.js +35 -1
  10. package/build/data/learnsets.js.map +1 -1
  11. package/build/data/mods/gen1/scripts.js +12 -0
  12. package/build/data/mods/gen1/scripts.js.map +1 -1
  13. package/build/data/mods/gen2/formats-data.js +2 -2
  14. package/build/data/mods/gen2/formats-data.js.map +1 -1
  15. package/build/data/mods/gen3/formats-data.js +1 -1
  16. package/build/data/mods/gen3/formats-data.js.map +1 -1
  17. package/build/data/moves.js +9 -13
  18. package/build/data/moves.js.map +1 -1
  19. package/build/data/pokedex.js +33 -0
  20. package/build/data/pokedex.js.map +1 -1
  21. package/build/data/rulesets.js +39 -5
  22. package/build/data/rulesets.js.map +1 -1
  23. package/build/data/text/items.js +4 -0
  24. package/build/data/text/items.js.map +1 -1
  25. package/build/data/text/moves.js +1 -1
  26. package/build/data/text/moves.js.map +1 -1
  27. package/build/sim/battle-actions.js +8 -3
  28. package/build/sim/battle-actions.js.map +1 -1
  29. package/build/sim/dex-formats.js +1 -1
  30. package/build/sim/dex-formats.js.map +1 -1
  31. package/build/sim/dex-species.js +4 -3
  32. package/build/sim/dex-species.js.map +1 -1
  33. package/build/sim/exported-global-types.d.ts +1 -0
  34. package/build/sim/global-types.d.ts +1 -0
  35. package/build/sim/pokemon.js +1 -1
  36. package/build/sim/pokemon.js.map +1 -1
  37. package/build/sim/team-validator.js +3 -0
  38. package/build/sim/team-validator.js.map +1 -1
  39. package/config/formats.ts +276 -205
  40. package/data/abilities.ts +3 -1
  41. package/data/formats-data.ts +48 -41
  42. package/data/items.ts +26 -2
  43. package/data/learnsets.ts +35 -1
  44. package/data/mods/gen1/scripts.ts +11 -0
  45. package/data/mods/gen2/formats-data.ts +2 -2
  46. package/data/mods/gen3/formats-data.ts +1 -1
  47. package/data/moves.ts +9 -13
  48. package/data/pokedex.ts +33 -0
  49. package/data/rulesets.ts +35 -6
  50. package/data/text/items.ts +4 -0
  51. package/data/text/moves.ts +1 -1
  52. package/package.json +1 -1
  53. package/sim/battle-actions.ts +8 -3
  54. package/sim/dex-formats.ts +1 -1
  55. package/sim/dex-species.ts +4 -3
  56. package/sim/exported-global-types.ts +1 -0
  57. package/sim/global-types.ts +1 -0
  58. package/sim/pokemon.ts +1 -1
  59. package/sim/team-validator.ts +3 -0
package/config/formats.ts CHANGED
@@ -86,7 +86,10 @@ export const Formats: FormatList = [
86
86
 
87
87
  mod: 'gen8',
88
88
  ruleset: ['Standard', 'Dynamax Clause'],
89
- banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass'],
89
+ banlist: [
90
+ 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
91
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
92
+ ],
90
93
  },
91
94
  {
92
95
  name: "[Gen 8] OU (Blitz)",
@@ -141,7 +144,6 @@ export const Formats: FormatList = [
141
144
  mod: 'gen8',
142
145
  ruleset: ['[Gen 8] RU'],
143
146
  banlist: ['RU', 'NUBL', 'Drizzle', 'Drought'],
144
- unbanlist: ['Indeedee'],
145
147
  },
146
148
  {
147
149
  name: "[Gen 8] PU",
@@ -152,7 +154,7 @@ export const Formats: FormatList = [
152
154
 
153
155
  mod: 'gen8',
154
156
  ruleset: ['[Gen 8] NU'],
155
- banlist: ['NU', 'PUBL', 'Indeedee'],
157
+ banlist: ['NU', 'PUBL'],
156
158
  },
157
159
  {
158
160
  name: "[Gen 8] LC",
@@ -231,7 +233,10 @@ export const Formats: FormatList = [
231
233
 
232
234
  mod: 'gen8',
233
235
  ruleset: ['[Gen 8] PU'],
234
- banlist: ['PU', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost', 'Turtonator', 'Vikavolt', 'Silvally-Dragon', 'Silvally-Ground', 'Sneasel', 'Damp Rock', 'Grassy Seed'],
236
+ banlist: [
237
+ 'PU', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
238
+ 'Turtonator', 'Vanilluxe', 'Vikavolt', 'Silvally-Dragon', 'Silvally-Ground', 'Sneasel', 'Damp Rock', 'Grassy Seed',
239
+ ],
235
240
  },
236
241
  {
237
242
  name: "[Gen 8] LC UU",
@@ -244,9 +249,9 @@ export const Formats: FormatList = [
244
249
  ruleset: ['[Gen 8] LC'],
245
250
  banlist: [
246
251
  // LC OU
247
- 'Abra', 'Archen', 'Carvanha', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey', 'Koffing',
248
- 'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard', 'Ponyta',
249
- 'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', 'Spritzee', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt', 'Vulpix',
252
+ 'Abra', 'Carvanha', 'Croagunk', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey',
253
+ 'Koffing', 'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard',
254
+ 'Ponyta', 'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt', 'Vulpix',
250
255
  // LC UUBL
251
256
  'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
252
257
  ],
@@ -274,6 +279,7 @@ export const Formats: FormatList = [
274
279
  mod: 'gen8',
275
280
  searchShow: false,
276
281
  ruleset: ['[Gen 8] LC', '+CAP'],
282
+ banlist: ['Cawdet'],
277
283
  },
278
284
  {
279
285
  name: "[Gen 8] Battle Stadium Singles",
@@ -293,6 +299,21 @@ export const Formats: FormatList = [
293
299
  searchShow: false,
294
300
  ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
295
301
  },
302
+ {
303
+ name: "[Gen 8] Test Your Luck!",
304
+ threads: [
305
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695144/">Test Your Luck! Discussion</a>`,
306
+ ],
307
+
308
+ mod: 'gen8',
309
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Min Source Gen = 8'],
310
+ banlist: ['Azelf', 'Mesprit', 'Uxie'],
311
+ onValidateSet(set, format) {
312
+ if (set.moves.length !== 1 || this.dex.moves.get(set.moves[0]).id !== 'metronome') {
313
+ return [`${set.name || set.species} has illegal moves.`, `(${format.name} only allows the move Metronome)`];
314
+ }
315
+ },
316
+ },
296
317
  {
297
318
  name: "[Gen 8] Custom Game",
298
319
 
@@ -365,6 +386,14 @@ export const Formats: FormatList = [
365
386
  ruleset: ['Standard Doubles', 'Little Cup', 'Dynamax Clause', 'Swagger Clause', 'Sleep Clause Mod'],
366
387
  banlist: ['Corsola-Galar', 'Cutiefly', 'Ponyta-Base', 'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Vulpix', 'Vulpix-Alola'],
367
388
  },
389
+ {
390
+ name: "[Gen 8] VGC 2022",
391
+
392
+ mod: 'gen8',
393
+ gameType: 'doubles',
394
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit Two Restricted'],
395
+ restricted: ['Restricted Legendary'],
396
+ },
368
397
  {
369
398
  name: "[Gen 8] VGC 2021 Series 11",
370
399
  threads: [
@@ -506,11 +535,10 @@ export const Formats: FormatList = [
506
535
  ruleset: ['[Gen 8] National Dex'],
507
536
  banlist: [
508
537
  // National Dex OU
509
- 'Blaziken', 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega',
510
- 'Excadrill', 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian',
511
- 'Lopunny-Mega', 'Magnezone', 'Mawile-Mega', 'Medicham-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior',
512
- 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini', 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona',
513
- 'Weavile', 'Zapdos-Base',
538
+ 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega', 'Excadrill',
539
+ 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian', 'Lopunny-Mega',
540
+ 'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
541
+ 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
514
542
  'ND UUBL', // National Dex UUBL
515
543
  'Drizzle', 'Drought',
516
544
  // Slowbronite is banned so it doesn't validate on Galarian Slowbro
@@ -518,10 +546,12 @@ export const Formats: FormatList = [
518
546
  ],
519
547
  // Used to distinguish UU from below UU in the client
520
548
  restricted: [
521
- 'Absol-Mega', 'Aegislash', 'Alomomola', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Bisharp', 'Breloom', 'Celesteela',
522
- 'Donphan', 'Dragonite', 'Hippowdon', 'Infernape', 'Keldeo', 'Krookodile', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mew',
523
- 'Moltres-Base', 'Porygon2', 'Regieleki', 'Rotom-Heat', 'Rotom-Wash', 'Scizor', 'Skarmory', 'Slowking', 'Slowking-Galar',
524
- 'Swampert-Base', 'Tangrowth', 'Umbreon', 'Urshifu-Rapid-Strike',
549
+ 'Aegislash', 'Alakazam-Base', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Blaziken-Base', 'Breloom', 'Celesteela',
550
+ 'Chandelure', 'Donphan', 'Dracozolt', 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape',
551
+ 'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz', 'Manectric-Mega', 'Medicham-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base',
552
+ 'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee', 'Rotom-Heat', 'Rotom-Wash', 'Salamence',
553
+ 'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base', 'Umbreon',
554
+ 'Urshifu-Rapid-Strike',
525
555
  ],
526
556
  },
527
557
  {
@@ -614,38 +644,80 @@ export const Formats: FormatList = [
614
644
  column: 2,
615
645
  },
616
646
  {
617
- name: "[Gen 8] Revelationmons",
618
- desc: `The moves in the first slot(s) of a Pok&eacute;mon's set have their types changed to match the Pok&eacute;mon's type(s).`,
647
+ name: "[Gen 8] Pokebilities",
648
+ desc: `Pok&eacute;mon have all of their released abilities simultaneously.`,
619
649
  threads: [
620
- `&bullet; <a href="https://www.smogon.com/forums/threads/3692297/">Revelationmons</a>`,
650
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3679692/">Pok&eacute;bilities</a>`,
621
651
  ],
622
-
623
- mod: 'gen8',
624
- ruleset: ['Standard', 'Dynamax Clause', 'Revelationmons Mod'],
652
+ mod: 'pokebilities',
653
+ ruleset: ['Standard', 'Dynamax Clause'],
625
654
  banlist: [
626
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult', 'Eternatus', 'Genesect',
627
- 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia',
628
- 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia',
629
- 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
630
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag',
631
- 'King\'s Rock', 'Baton Pass',
655
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Eternatus', 'Excadrill',
656
+ 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base',
657
+ 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
658
+ 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
659
+ 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zygarde-Base', 'Power Construct', 'Baton Pass',
660
+ // Moody users
661
+ 'Glalie', 'Octillery', 'Remoraid', 'Snorunt',
662
+ // Shadow Tag/Arena Trap
663
+ 'Diglett-Base', 'Dugtrio-Base', 'Gothita', 'Gothitelle', 'Gothorita', 'Trapinch', 'Wobbuffet', 'Wynaut',
632
664
  ],
633
- restricted: ['Bolt Beak', 'U-turn', 'Volt Switch'],
665
+ onBegin() {
666
+ for (const pokemon of this.getAllPokemon()) {
667
+ if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) {
668
+ continue;
669
+ }
670
+ pokemon.m.innates = Object.keys(pokemon.species.abilities)
671
+ .filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
672
+ .map(key => this.toID(pokemon.species.abilities[key as "0" | "1" | "H" | "S"]))
673
+ .filter(ability => ability !== pokemon.ability);
674
+ }
675
+ },
676
+ onSwitchInPriority: 2,
677
+ onSwitchIn(pokemon) {
678
+ if (pokemon.m.innates) {
679
+ for (const innate of pokemon.m.innates) {
680
+ pokemon.addVolatile("ability:" + innate, pokemon);
681
+ }
682
+ }
683
+ },
684
+ onAfterMega(pokemon) {
685
+ for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
686
+ pokemon.removeVolatile(innate);
687
+ }
688
+ pokemon.m.innates = undefined;
689
+ },
634
690
  },
635
691
  {
636
- name: "[Gen 8 BDSP] Balanced Hackmons",
637
- desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
692
+ name: "[Gen 8] Camomons",
693
+ desc: `Pok&eacute;mon change type to match their first two moves.`,
638
694
  threads: [
639
- `&bullet; <a href="https://www.smogon.com/forums/posts/9043074">BDSP Balanced Hackmons</a>`,
695
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3656413/">Camomons</a>`,
640
696
  ],
641
697
 
642
- mod: 'gen8bdsp',
643
- ruleset: ['-Nonexistent', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Moves Clause', 'Endless Battle Clause'],
698
+ mod: 'gen8',
699
+ // searchShow: false,
700
+ ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Clause Mod', 'Endless Battle Clause'],
644
701
  banlist: [
645
- 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Intrepid Sword', 'Libero',
646
- 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Protean', 'Pure Power', 'Shadow Tag', 'Stakeout',
647
- 'Water Bubble', 'Wonder Guard', 'Comatose + Sleep Talk', 'Chatter', 'Shell Smash',
702
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin',
703
+ 'Groudon', 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia',
704
+ 'Lunala', 'Marshadow', 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
705
+ 'Reuniclus', 'Shedinja', 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Volcarona', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
706
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
648
707
  ],
708
+ onModifySpeciesPriority: 2,
709
+ onModifySpecies(species, target, source, effect) {
710
+ if (!target) return; // Chat command
711
+ if (effect && ['imposter', 'transform'].includes(effect.id)) return;
712
+ const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))];
713
+ return {...species, types: types};
714
+ },
715
+ onSwitchIn(pokemon) {
716
+ this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
717
+ },
718
+ onAfterMega(pokemon) {
719
+ this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
720
+ },
649
721
  },
650
722
 
651
723
  // Other Metagames
@@ -764,13 +836,13 @@ export const Formats: FormatList = [
764
836
  mod: 'gen8',
765
837
  ruleset: ['Obtainable', '!Obtainable Abilities', 'Species Clause', 'Nickname Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Moves Clause', 'Endless Battle Clause'],
766
838
  banlist: [
767
- 'Archeops', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina', 'Giratina-Origin',
768
- 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
769
- 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja', 'Solgaleo', 'Spectrier',
770
- 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zeraora', 'Zygarde-Base',
771
- 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Intrepid Sword',
772
- 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout',
773
- 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
839
+ 'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina',
840
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
841
+ 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja',
842
+ 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom',
843
+ 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter',
844
+ 'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power',
845
+ 'Shadow Tag', 'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
774
846
  ],
775
847
  onValidateSet(set) {
776
848
  // Temporary fix until battle-only is implemented properly
@@ -819,6 +891,61 @@ export const Formats: FormatList = [
819
891
  'Rhydon', 'Scyther', 'Sneasel', 'Type: Null', 'Vulpix-Base', 'Arena Trap', 'Shadow Tag', 'Baton Pass',
820
892
  ],
821
893
  },
894
+ {
895
+ name: "[Gen 8] Godly Gift",
896
+ desc: `Each Pok&eacute;mon receives one base stat from a God (AG/Uber Pok&eacute;mon) depending on its position in the team. If there is no Uber Pok&eacute;mon, it uses the Pok&eacute;mon in the first slot.`,
897
+ threads: [
898
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
899
+ ],
900
+
901
+ mod: 'gen8',
902
+ ruleset: ['Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
903
+ banlist: [
904
+ 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
905
+ 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
906
+ 'Shadow Tag', 'Baton Pass',
907
+ ],
908
+ onValidateTeam(team) {
909
+ const gods = new Set<string>();
910
+ for (const set of team) {
911
+ let species = this.dex.species.get(set.species);
912
+ if (typeof species.battleOnly === 'string') species = this.dex.species.get(species.battleOnly);
913
+ if (['ag', 'uber'].includes(this.toID(species.tier)) || this.toID(set.ability) === 'powerconstruct') {
914
+ gods.add(species.name);
915
+ }
916
+ }
917
+ if (gods.size > 1) {
918
+ return [`You have too many Gods.`, `(${Array.from(gods).join(', ')} are Gods.)`];
919
+ }
920
+ },
921
+ onModifySpeciesPriority: 3,
922
+ onModifySpecies(species, target, source) {
923
+ if (source || !target?.side) return;
924
+ const god = target.side.team.find(set => {
925
+ let godSpecies = this.dex.species.get(set.species);
926
+ const validator = this.dex.formats.getRuleTable(this.dex.formats.get(`gen${this.gen}ou`));
927
+ if (this.toID(set.ability) === 'powerconstruct') {
928
+ return true;
929
+ }
930
+ if (set.item) {
931
+ const item = this.dex.items.get(set.item);
932
+ if (item.megaEvolves === set.species) godSpecies = this.dex.species.get(item.megaStone);
933
+ }
934
+ const isBanned = validator.isBannedSpecies(godSpecies);
935
+ return isBanned;
936
+ }) || target.side.team[0];
937
+ const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
938
+ const newSpecies = this.dex.deepClone(species);
939
+ let godSpecies = this.dex.species.get(god.species);
940
+ if (godSpecies.forme === 'Crowned') {
941
+ godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
942
+ }
943
+ newSpecies.bst -= newSpecies.baseStats[stat];
944
+ newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
945
+ newSpecies.bst += newSpecies.baseStats[stat];
946
+ return newSpecies;
947
+ },
948
+ },
822
949
  {
823
950
  name: "[Gen 8] Free-For-All",
824
951
  threads: [
@@ -862,7 +989,10 @@ export const Formats: FormatList = [
862
989
 
863
990
  mod: 'gen8bdsp',
864
991
  ruleset: ['Standard'],
865
- banlist: ['Uber', 'Arena Trap', 'Drizzle', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Baton Pass'],
992
+ banlist: [
993
+ 'Uber', 'Arena Trap', 'Drizzle', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
994
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang', 'Baton Pass',
995
+ ],
866
996
  },
867
997
  {
868
998
  name: "[Gen 8 BDSP] Ubers",
@@ -877,13 +1007,20 @@ export const Formats: FormatList = [
877
1007
  {
878
1008
  name: "[Gen 8 BDSP] UU",
879
1009
  threads: [
880
- `&bullet; <a href="https://www.smogon.com/forums/threads/3694299/">BDSP UU</a>`,
1010
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3694307/">BDSP UU</a>`,
881
1011
  ],
882
1012
 
883
1013
  mod: 'gen8bdsp',
884
1014
  ruleset: ['[Gen 8 BDSP] OU'],
885
1015
  banlist: ['OU', 'UUBL'],
886
1016
  },
1017
+ {
1018
+ name: "[Gen 8 BDSP] RU",
1019
+
1020
+ mod: 'gen8bdsp',
1021
+ ruleset: ['[Gen 8 BDSP] UU'],
1022
+ banlist: ['UU', 'RUBL'],
1023
+ },
887
1024
  {
888
1025
  name: "[Gen 8 BDSP] Monotype",
889
1026
  threads: [
@@ -897,6 +1034,25 @@ export const Formats: FormatList = [
897
1034
  'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass',
898
1035
  ],
899
1036
  },
1037
+ {
1038
+ name: "[Gen 8 BDSP] CAP",
1039
+ threads: [
1040
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3694238/">BDSP CAP</a>`,
1041
+ ],
1042
+
1043
+ mod: 'gen8bdsp',
1044
+ searchShow: false,
1045
+ ruleset: ['[Gen 8 BDSP] OU', '+CAP'],
1046
+ },
1047
+ {
1048
+ name: "[Gen 8 BDSP] 3v3 Singles",
1049
+ threads: [
1050
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695092/">BDSP 3v3 Singles</a>`,
1051
+ ],
1052
+
1053
+ mod: 'gen8bdsp',
1054
+ ruleset: ['Flat Rules', 'Min Source Gen = 8'],
1055
+ },
900
1056
  {
901
1057
  name: "[Gen 8 BDSP] Doubles OU",
902
1058
  threads: [
@@ -916,8 +1072,7 @@ export const Formats: FormatList = [
916
1072
 
917
1073
  mod: 'gen8bdsp',
918
1074
  gameType: 'doubles',
919
- // VGC Timer is temporary
920
- ruleset: ['Flat Rules', 'Min Source Gen = 8', 'VGC Timer'],
1075
+ ruleset: ['Flat Rules', 'Min Source Gen = 8'],
921
1076
  },
922
1077
  {
923
1078
  name: "[Gen 8 BDSP] Pure Hackmons",
@@ -934,92 +1089,6 @@ export const Formats: FormatList = [
934
1089
  section: "Challengeable OMs",
935
1090
  column: 2,
936
1091
  },
937
- {
938
- name: "[Gen 8] Camomons",
939
- desc: `Pok&eacute;mon change type to match their first two moves.`,
940
- threads: [
941
- `&bullet; <a href="https://www.smogon.com/forums/threads/3656413/">Camomons</a>`,
942
- ],
943
-
944
- mod: 'gen8',
945
- searchShow: false,
946
- ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Clause Mod', 'Endless Battle Clause'],
947
- banlist: [
948
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon',
949
- 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia', 'Lunala', 'Marshadow',
950
- 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Shedinja', 'Slowking-Galar', 'Solgaleo',
951
- 'Tornadus-Therian', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base',
952
- 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
953
- ],
954
- onModifySpeciesPriority: 2,
955
- onModifySpecies(species, target, source, effect) {
956
- if (!target) return; // Chat command
957
- if (effect && ['imposter', 'transform'].includes(effect.id)) return;
958
- const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))];
959
- return {...species, types: types};
960
- },
961
- onSwitchIn(pokemon) {
962
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
963
- },
964
- onAfterMega(pokemon) {
965
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
966
- },
967
- },
968
- {
969
- name: "[Gen 8] Godly Gift",
970
- desc: `Each Pok&eacute;mon receives one base stat from a God (AG/Uber Pok&eacute;mon) depending on its position in the team. If there is no Uber Pok&eacute;mon, it uses the Pok&eacute;mon in the first slot.`,
971
- threads: [
972
- `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
973
- ],
974
-
975
- mod: 'gen8',
976
- searchShow: false,
977
- ruleset: ['Standard', 'Dynamax Clause'],
978
- banlist: [
979
- 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex', 'Zacian', 'Zacian-Crowned',
980
- 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power', 'Shadow Tag', 'Baton Pass',
981
- ],
982
- onValidateTeam(team) {
983
- const gods = new Set<string>();
984
- for (const set of team) {
985
- let species = this.dex.species.get(set.species);
986
- if (typeof species.battleOnly === 'string') species = this.dex.species.get(species.battleOnly);
987
- if (['ag', 'uber'].includes(this.toID(species.tier)) || this.toID(set.ability) === 'powerconstruct') {
988
- gods.add(species.name);
989
- }
990
- }
991
- if (gods.size > 1) {
992
- return [`You have too many Gods.`, `(${Array.from(gods).join(', ')} are Gods.)`];
993
- }
994
- },
995
- onModifySpeciesPriority: 3,
996
- onModifySpecies(species, target, source) {
997
- if (source || !target?.side) return;
998
- const god = target.side.team.find(set => {
999
- let godSpecies = this.dex.species.get(set.species);
1000
- const validator = this.dex.formats.getRuleTable(this.dex.formats.get(`gen${this.gen}ou`));
1001
- if (this.toID(set.ability) === 'powerconstruct') {
1002
- return true;
1003
- }
1004
- if (set.item) {
1005
- const item = this.dex.items.get(set.item);
1006
- if (item.megaEvolves === set.species) godSpecies = this.dex.species.get(item.megaStone);
1007
- }
1008
- const isBanned = validator.isBannedSpecies(godSpecies);
1009
- return isBanned;
1010
- }) || target.side.team[0];
1011
- const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
1012
- const newSpecies = this.dex.deepClone(species);
1013
- let godSpecies = this.dex.species.get(god.species);
1014
- if (godSpecies.forme === 'Crowned') {
1015
- godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
1016
- }
1017
- newSpecies.bst -= newSpecies.baseStats[stat];
1018
- newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
1019
- newSpecies.bst += newSpecies.baseStats[stat];
1020
- return newSpecies;
1021
- },
1022
- },
1023
1092
  {
1024
1093
  name: "[Gen 8] Inheritance",
1025
1094
  desc: `Pok&eacute;mon may use the ability and moves of another, as long as they forfeit their own learnset.`,
@@ -2039,50 +2108,40 @@ export const Formats: FormatList = [
2039
2108
  column: 3,
2040
2109
  },
2041
2110
  {
2042
- name: "[Gen 1] UU",
2043
- threads: [
2044
- `&bullet; <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
2045
- `&bullet; <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
2046
- ],
2111
+ name: "[Gen 2] UU",
2112
+ threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3576710/">GSC UU</a>`],
2047
2113
 
2048
- mod: 'gen1',
2114
+ mod: 'gen2',
2049
2115
  // searchShow: false,
2050
- ruleset: ['[Gen 1] OU'],
2116
+ ruleset: ['[Gen 2] OU'],
2051
2117
  banlist: ['OU', 'UUBL'],
2052
2118
  },
2053
2119
  {
2054
- name: "[Gen 6] 1v1",
2055
- desc: `Bring three Pok&eacute;mon to Team Preview and choose one to battle.`,
2120
+ name: "[Gen 5] NU",
2056
2121
  threads: [
2057
- `&bullet; <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
2122
+ `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2123
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
2058
2124
  ],
2059
2125
 
2060
- mod: 'gen6',
2126
+ mod: 'gen5',
2061
2127
  // searchShow: false,
2062
- ruleset: [
2063
- 'Max Team Size = 3', 'Picked Team Size = 1',
2064
- 'Obtainable', 'Nickname Clause', 'Moody Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Swagger Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview',
2065
- ],
2066
- banlist: [
2067
- 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
2068
- 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
2069
- 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
2070
- 'Focus Sash', 'Soul Dew', 'Perish Song',
2071
- ],
2128
+ ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
2129
+ banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
2072
2130
  },
2073
2131
  {
2074
- name: "[Gen 5] Doubles OU",
2132
+ name: "[Gen 5] LC",
2075
2133
  threads: [
2076
- `&bullet; <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
2077
- `&bullet; <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
2078
- `&bullet; <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
2134
+ `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2135
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Rankings</a>`,
2079
2136
  ],
2080
2137
 
2081
2138
  mod: 'gen5',
2082
- gameType: 'doubles',
2083
2139
  // searchShow: false,
2084
- ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
2085
- banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
2140
+ ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
2141
+ banlist: [
2142
+ 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
2143
+ 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
2144
+ ],
2086
2145
  },
2087
2146
 
2088
2147
  // Past Gens OU
@@ -2147,8 +2206,8 @@ export const Formats: FormatList = [
2147
2206
  ],
2148
2207
 
2149
2208
  mod: 'gen3',
2150
- ruleset: ['Standard', '3 Baton Pass Clause'],
2151
- banlist: ['Uber', 'Mr. Mime', 'Smeargle + Baton Pass', 'Sand Veil'],
2209
+ ruleset: ['Standard', 'One Boost Passer Clause'],
2210
+ banlist: ['Uber', 'Sand Veil', 'Assist', 'Smeargle + Ingrain'],
2152
2211
  },
2153
2212
  {
2154
2213
  name: "[Gen 2] OU",
@@ -2397,7 +2456,8 @@ export const Formats: FormatList = [
2397
2456
  'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Kyogre', 'Kyurem-White', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna',
2398
2457
  'Marshadow', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
2399
2458
  'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Tapu Lele', 'Xerneas', 'Yveltal', 'Zekrom', 'Zygarde',
2400
- 'Battle Bond', 'Shadow Tag', 'Damp Rock', 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
2459
+ 'Battle Bond', 'Shadow Tag', 'Bright Powder', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Razor Fang',
2460
+ 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
2401
2461
  ],
2402
2462
  },
2403
2463
  {
@@ -2714,6 +2774,26 @@ export const Formats: FormatList = [
2714
2774
  'Soul Dew', 'Baton Pass',
2715
2775
  ],
2716
2776
  },
2777
+ {
2778
+ name: "[Gen 6] 1v1",
2779
+ desc: `Bring three Pok&eacute;mon to Team Preview and choose one to battle.`,
2780
+ threads: [
2781
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
2782
+ ],
2783
+
2784
+ mod: 'gen6',
2785
+ searchShow: false,
2786
+ ruleset: [
2787
+ 'Max Team Size = 3', 'Picked Team Size = 1',
2788
+ 'Obtainable', 'Nickname Clause', 'Moody Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Swagger Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview',
2789
+ ],
2790
+ banlist: [
2791
+ 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
2792
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
2793
+ 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
2794
+ 'Focus Sash', 'Soul Dew', 'Perish Song',
2795
+ ],
2796
+ },
2717
2797
  {
2718
2798
  name: "[Gen 6] Anything Goes",
2719
2799
  threads: [
@@ -2736,7 +2816,7 @@ export const Formats: FormatList = [
2736
2816
  mod: 'gen6',
2737
2817
  searchShow: false,
2738
2818
  ruleset: ['[Gen 6] OU', '+CAP'],
2739
- banlist: ['Aurumoth', 'Cawmodore'],
2819
+ banlist: ['Aurumoth', 'Cawmodore', 'Crucibelle-Mega'],
2740
2820
  },
2741
2821
  {
2742
2822
  name: "[Gen 6] Battle Spot Singles",
@@ -2912,18 +2992,6 @@ export const Formats: FormatList = [
2912
2992
  banlist: ['UU', 'RUBL', 'Shadow Tag', 'Shell Smash + Baton Pass'],
2913
2993
  unbanlist: ['Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
2914
2994
  },
2915
- {
2916
- name: "[Gen 5] NU",
2917
- threads: [
2918
- `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2919
- `&bullet; <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
2920
- ],
2921
-
2922
- mod: 'gen5',
2923
- searchShow: false,
2924
- ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
2925
- banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
2926
- },
2927
2995
  {
2928
2996
  name: "[Gen 5] PU",
2929
2997
  threads: [
@@ -2935,21 +3003,6 @@ export const Formats: FormatList = [
2935
3003
  ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'],
2936
3004
  banlist: ['NU', 'Combusken', 'Gothorita', 'Linoone', 'Riolu', 'Rotom-Frost', 'Simipour', 'Throh', 'Vigoroth'],
2937
3005
  },
2938
- {
2939
- name: "[Gen 5] LC",
2940
- threads: [
2941
- `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2942
- `&bullet; <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Rankings</a>`,
2943
- ],
2944
-
2945
- mod: 'gen5',
2946
- searchShow: false,
2947
- ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
2948
- banlist: [
2949
- 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
2950
- 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
2951
- ],
2952
- },
2953
3006
  {
2954
3007
  name: "[Gen 5] Monotype",
2955
3008
  desc: `All the Pok&eacute;mon on a team must share a type.`,
@@ -2972,9 +3025,9 @@ export const Formats: FormatList = [
2972
3025
  searchShow: false,
2973
3026
  ruleset: [
2974
3027
  'Picked Team Size = 1', 'Max Team Size = 3',
2975
- 'Standard', 'Baton Pass Clause', 'Swagger Clause',
3028
+ 'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Accuracy Moves Clause',
2976
3029
  ],
2977
- banlist: ['Uber', 'Cottonee', 'Dragonite', 'Kyurem-Black', 'Togekiss', 'Whimsicott', 'Victini', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Soul Dew', 'Perish Song'],
3030
+ banlist: ['Uber', 'Cottonee', 'Dragonite', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Soul Dew', 'Perish Song'],
2978
3031
  unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
2979
3032
  },
2980
3033
  {
@@ -3003,6 +3056,20 @@ export const Formats: FormatList = [
3003
3056
  section: 'B2/W2 Doubles',
3004
3057
  column: 4,
3005
3058
  },
3059
+ {
3060
+ name: "[Gen 5] Doubles OU",
3061
+ threads: [
3062
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
3063
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
3064
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
3065
+ ],
3066
+
3067
+ mod: 'gen5',
3068
+ gameType: 'doubles',
3069
+ searchShow: false,
3070
+ ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
3071
+ banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
3072
+ },
3006
3073
  {
3007
3074
  name: "[Gen 5] VGC 2013",
3008
3075
 
@@ -3142,7 +3209,7 @@ export const Formats: FormatList = [
3142
3209
  'Picked Team Size = 1', 'Max Team Size = 3',
3143
3210
  '[Gen 4] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3144
3211
  ],
3145
- banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
3212
+ banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Shaymin', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
3146
3213
  unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil'],
3147
3214
  },
3148
3215
  {
@@ -3282,6 +3349,7 @@ export const Formats: FormatList = [
3282
3349
  '[Gen 3] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3283
3350
  ],
3284
3351
  banlist: ['Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song', 'Self-Destruct', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw'],
3352
+ unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
3285
3353
  },
3286
3354
  {
3287
3355
  name: "[Gen 3] Custom Game",
@@ -3311,15 +3379,6 @@ export const Formats: FormatList = [
3311
3379
  searchShow: false,
3312
3380
  ruleset: ['Standard'],
3313
3381
  },
3314
- {
3315
- name: "[Gen 2] UU",
3316
- threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3576710/">GSC UU</a>`],
3317
-
3318
- mod: 'gen2',
3319
- searchShow: false,
3320
- ruleset: ['[Gen 2] OU'],
3321
- banlist: ['OU', 'UUBL'],
3322
- },
3323
3382
  {
3324
3383
  name: "[Gen 2] NU",
3325
3384
  threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3642565/">GSC NU</a>`],
@@ -3386,6 +3445,18 @@ export const Formats: FormatList = [
3386
3445
  searchShow: false,
3387
3446
  ruleset: ['Standard'],
3388
3447
  },
3448
+ {
3449
+ name: "[Gen 1] UU",
3450
+ threads: [
3451
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
3452
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
3453
+ ],
3454
+
3455
+ mod: 'gen1',
3456
+ searchShow: false,
3457
+ ruleset: ['[Gen 1] OU'],
3458
+ banlist: ['OU', 'UUBL'],
3459
+ },
3389
3460
  {
3390
3461
  name: "[Gen 1] NU",
3391
3462
  threads: [