@pkmn/sim 0.5.2 → 0.5.6

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 (86) hide show
  1. package/build/config/formats.js +410 -311
  2. package/build/config/formats.js.map +1 -1
  3. package/build/data/aliases.js +4 -4
  4. package/build/data/aliases.js.map +1 -1
  5. package/build/data/formats-data.js +205 -93
  6. package/build/data/formats-data.js.map +1 -1
  7. package/build/data/learnsets.js +1 -1
  8. package/build/data/learnsets.js.map +1 -1
  9. package/build/data/mods/gen1/formats-data.js +190 -190
  10. package/build/data/mods/gen1/formats-data.js.map +1 -1
  11. package/build/data/mods/gen1/moves.js +1 -2
  12. package/build/data/mods/gen1/moves.js.map +1 -1
  13. package/build/data/mods/gen1/scripts.js +12 -0
  14. package/build/data/mods/gen1/scripts.js.map +1 -1
  15. package/build/data/mods/gen2/formats-data.js +1 -1
  16. package/build/data/mods/gen2/formats-data.js.map +1 -1
  17. package/build/data/mods/gen3/formats-data.js +13 -13
  18. package/build/data/mods/gen3/formats-data.js.map +1 -1
  19. package/build/data/mods/gen4/moves.js +22 -0
  20. package/build/data/mods/gen4/moves.js.map +1 -1
  21. package/build/data/mods/gen5/formats-data.js +173 -156
  22. package/build/data/mods/gen5/formats-data.js.map +1 -1
  23. package/build/data/mods/gen6/formats-data.js +4 -3
  24. package/build/data/mods/gen6/formats-data.js.map +1 -1
  25. package/build/data/mods/gen7/formats-data.js +3 -2
  26. package/build/data/mods/gen7/formats-data.js.map +1 -1
  27. package/build/data/mods/gen7/moves.js +154 -0
  28. package/build/data/mods/gen7/moves.js.map +1 -1
  29. package/build/data/moves.js +44 -19
  30. package/build/data/moves.js.map +1 -1
  31. package/build/data/pokedex.js +480 -11
  32. package/build/data/pokedex.js.map +1 -1
  33. package/build/data/rulesets.js +12 -1
  34. package/build/data/rulesets.js.map +1 -1
  35. package/build/data/tags.d.ts +1 -0
  36. package/build/data/tags.js +4 -3
  37. package/build/data/tags.js.map +1 -1
  38. package/build/data/text/abilities.js +4 -4
  39. package/build/data/text/abilities.js.map +1 -1
  40. package/build/data/text/moves.js +18 -18
  41. package/build/data/text/moves.js.map +1 -1
  42. package/build/sim/battle-actions.js +12 -4
  43. package/build/sim/battle-actions.js.map +1 -1
  44. package/build/sim/battle.js +23 -22
  45. package/build/sim/battle.js.map +1 -1
  46. package/build/sim/dex-formats.d.ts +1 -0
  47. package/build/sim/dex-formats.js +3 -2
  48. package/build/sim/dex-formats.js.map +1 -1
  49. package/build/sim/dex-species.js +5 -2
  50. package/build/sim/dex-species.js.map +1 -1
  51. package/build/sim/exported-global-types.d.ts +2 -0
  52. package/build/sim/global-types.d.ts +2 -0
  53. package/build/sim/index.d.ts +1 -0
  54. package/build/sim/index.js +3 -1
  55. package/build/sim/index.js.map +1 -1
  56. package/build/sim/team-validator.js +13 -0
  57. package/build/sim/team-validator.js.map +1 -1
  58. package/config/formats.ts +418 -316
  59. package/data/aliases.ts +4 -4
  60. package/data/formats-data.ts +205 -93
  61. package/data/learnsets.ts +1 -1
  62. package/data/mods/gen1/formats-data.ts +190 -190
  63. package/data/mods/gen1/moves.ts +1 -2
  64. package/data/mods/gen1/scripts.ts +11 -0
  65. package/data/mods/gen2/formats-data.ts +1 -1
  66. package/data/mods/gen3/formats-data.ts +13 -13
  67. package/data/mods/gen4/moves.ts +21 -0
  68. package/data/mods/gen5/formats-data.ts +173 -156
  69. package/data/mods/gen6/formats-data.ts +4 -3
  70. package/data/mods/gen7/formats-data.ts +3 -2
  71. package/data/mods/gen7/moves.ts +150 -0
  72. package/data/moves.ts +43 -19
  73. package/data/pokedex.ts +480 -11
  74. package/data/rulesets.ts +11 -1
  75. package/data/tags.ts +6 -3
  76. package/data/text/abilities.ts +4 -4
  77. package/data/text/moves.ts +18 -18
  78. package/package.json +2 -2
  79. package/sim/battle-actions.ts +12 -4
  80. package/sim/battle.ts +24 -23
  81. package/sim/dex-formats.ts +4 -1
  82. package/sim/dex-species.ts +5 -2
  83. package/sim/exported-global-types.ts +2 -0
  84. package/sim/global-types.ts +2 -0
  85. package/sim/index.ts +1 -0
  86. package/sim/team-validator.ts +12 -0
@@ -132,7 +132,7 @@ exports.Formats = [
132
132
  ],
133
133
  mod: 'gen8',
134
134
  ruleset: ['[Gen 8] RU'],
135
- banlist: ['RU', 'NUBL', 'Drizzle', 'Drought'],
135
+ banlist: ['RU', 'NUBL', 'Drizzle', 'Drought', 'Slush Rush'],
136
136
  },
137
137
  {
138
138
  name: "[Gen 8] PU",
@@ -193,7 +193,7 @@ exports.Formats = [
193
193
  'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi',
194
194
  'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mew', 'Mewtwo', 'Mimikyu', 'Necrozma-Dawn-Wings',
195
195
  'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye', 'Snorlax', 'Solgaleo', 'Victini', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
196
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
196
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
197
197
  ],
198
198
  },
199
199
  {
@@ -217,7 +217,7 @@ exports.Formats = [
217
217
  mod: 'gen8',
218
218
  ruleset: ['[Gen 8] PU'],
219
219
  banlist: [
220
- 'PU', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
220
+ 'PU', 'Aurorus', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
221
221
  'Turtonator', 'Vanilluxe', 'Vikavolt', 'Silvally-Dragon', 'Silvally-Ground', 'Sneasel', 'Damp Rock', 'Grassy Seed',
222
222
  ],
223
223
  },
@@ -231,9 +231,9 @@ exports.Formats = [
231
231
  ruleset: ['[Gen 8] LC'],
232
232
  banlist: [
233
233
  // LC OU
234
- 'Abra', 'Archen', 'Carvanha', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey', 'Koffing',
235
- 'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard', 'Ponyta',
236
- 'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', 'Spritzee', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt', 'Vulpix',
234
+ 'Abra', 'Carvanha', 'Croagunk', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey',
235
+ 'Koffing', 'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard',
236
+ 'Ponyta', 'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt', 'Vulpix',
237
237
  // LC UUBL
238
238
  'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
239
239
  ],
@@ -264,19 +264,9 @@ exports.Formats = [
264
264
  {
265
265
  name: "[Gen 8] Battle Stadium Singles",
266
266
  mod: 'gen8',
267
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit One Restricted'],
267
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit Two Restricted'],
268
268
  restricted: ['Restricted Legendary'],
269
269
  },
270
- {
271
- name: "[Gen 8] Battle Stadium Singles Series 9",
272
- threads: [
273
- `&bullet; <a href="https://www.smogon.com/forums/threads/3679374/">BSS Discussion</a>`,
274
- `&bullet; <a href="https://www.smogon.com/forums/threads/3672698/">BSS Viability Rankings</a>`,
275
- ],
276
- mod: 'gen8',
277
- searchShow: false,
278
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
279
- },
280
270
  {
281
271
  name: "[Gen 8] Custom Game",
282
272
  mod: 'gen8',
@@ -342,35 +332,14 @@ exports.Formats = [
342
332
  banlist: ['Corsola-Galar', 'Cutiefly', 'Ponyta-Base', 'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Vulpix', 'Vulpix-Alola'],
343
333
  },
344
334
  {
345
- name: "[Gen 8] VGC 2021 Series 11",
346
- threads: [
347
- `&bullet; <a href="https://www.smogon.com/forums/threads/3677186/">VGC 2021 Series 11 Metagame Discussion</a>`,
348
- `&bullet; <a href="https://www.smogon.com/forums/threads/3693427/">VGC 2021 Series 11 Sample Teams</a>`,
349
- `&bullet; <a href="https://www.smogon.com/forums/threads/3693284/">VGC 2021 Series 11 Viability Rankings</a>`,
350
- ],
335
+ name: "[Gen 8] VGC 2022",
351
336
  mod: 'gen8',
352
337
  gameType: 'doubles',
353
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit One Restricted'],
338
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit Two Restricted'],
354
339
  restricted: ['Restricted Legendary'],
355
340
  },
356
341
  {
357
- name: "[Gen 8] Tiny Tourney",
358
- threads: [
359
- `&bullet; <a href="https://www.smogon.com/forums/threads/3694047/">Tiny Tourney Metagame Discussion</a>`,
360
- ],
361
- mod: 'gen8',
362
- gameType: 'doubles',
363
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
364
- onValidateSet(set) {
365
- const species = this.dex.species.get(set.species);
366
- if (!species.nfe || species.prevo)
367
- return [`Non-first-stage Pok\u00e9mon cannot be used in Tiny Tourney.`];
368
- if (species.heightm > 1)
369
- return [`${species.name} is too tall to be used in Tiny Tourney.`];
370
- },
371
- },
372
- {
373
- name: "[Gen 8] VGC 2021 Series 9",
342
+ name: "[Gen 8] VGC 2021",
374
343
  mod: 'gen8',
375
344
  gameType: 'doubles',
376
345
  searchShow: false,
@@ -468,13 +437,15 @@ exports.Formats = [
468
437
  mod: 'gen8',
469
438
  ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
470
439
  banlist: [
471
- 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai', 'Darmanitan-Galar',
472
- 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina',
473
- 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucario-Mega',
474
- 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
475
- 'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Tornadus-Therian',
476
- 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete',
477
- 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Baton Pass',
440
+ 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
441
+ 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
442
+ 'Genesect', 'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black',
443
+ 'Kyurem-White', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo',
444
+ 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
445
+ 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
446
+ 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody',
447
+ 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang',
448
+ 'Quick Claw', 'Baton Pass',
478
449
  ],
479
450
  },
480
451
  {
@@ -488,22 +459,25 @@ exports.Formats = [
488
459
  ruleset: ['[Gen 8] National Dex'],
489
460
  banlist: [
490
461
  // National Dex OU
491
- 'Blaziken', 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega',
492
- 'Excadrill', 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian',
493
- 'Lopunny-Mega', 'Magnezone', 'Mawile-Mega', 'Medicham-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior',
494
- 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini', 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona',
495
- 'Weavile', 'Zapdos-Base',
462
+ 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega', 'Excadrill',
463
+ 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian', 'Lopunny-Mega',
464
+ 'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
465
+ 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
496
466
  'ND UUBL',
497
467
  'Drizzle', 'Drought',
498
468
  // Slowbronite is banned so it doesn't validate on Galarian Slowbro
499
469
  'Slowbronite',
470
+ // NatDex suspect
471
+ 'Tornadus-Therian',
500
472
  ],
501
473
  // Used to distinguish UU from below UU in the client
502
474
  restricted: [
503
- 'Absol-Mega', 'Aegislash', 'Alomomola', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Bisharp', 'Breloom', 'Celesteela',
504
- 'Donphan', 'Dragonite', 'Hippowdon', 'Infernape', 'Keldeo', 'Krookodile', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mew',
505
- 'Moltres-Base', 'Porygon2', 'Regieleki', 'Rotom-Heat', 'Rotom-Wash', 'Scizor', 'Skarmory', 'Slowking', 'Slowking-Galar',
506
- 'Swampert-Base', 'Tangrowth', 'Umbreon', 'Urshifu-Rapid-Strike',
475
+ 'Aegislash', 'Alakazam-Base', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Blaziken-Base', 'Breloom', 'Celesteela',
476
+ 'Chandelure', 'Donphan', 'Dracozolt', 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape',
477
+ 'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base',
478
+ 'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee', 'Rotom-Heat', 'Rotom-Wash', 'Salamence',
479
+ 'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base', 'Umbreon',
480
+ 'Urshifu-Rapid-Strike',
507
481
  ],
508
482
  },
509
483
  {
@@ -539,33 +513,60 @@ exports.Formats = [
539
513
  section: "Pet Mods",
540
514
  },
541
515
  {
542
- name: "[Gen 8] Fusion Evolution UU",
516
+ name: "[Gen 8] Alternatium",
517
+ desc: `A metagame made up of only Pok&eacute;mon with alternate forms, with all of them being separate and unique.`,
543
518
  threads: [
544
- `&bullet; <a href="https://www.smogon.com/forums/threads/3674163/">Fusion Evolution UU</a>`,
519
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3683767/">Alternatium</a>`,
520
+ `&bullet; <a href="https://docs.google.com/spreadsheets/d/1bvvkPg1CrUBJFJJeuwkts8elfJcEcahGOoHm-vGBXOI/edit?usp=sharing">Spreadsheet</a>`,
545
521
  ],
546
- mod: "fusionevolutionuu",
547
- searchShow: false,
548
- ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'],
549
- banlist: [
550
- 'All Pokemon', 'Lopunnite', 'Tapu Lop-Mega', 'Red Orb', 'Grousle-Primal',
522
+ mod: 'alternatium',
523
+ ruleset: ['Standard NatDex', 'Z-Move Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
524
+ banlist: ['All Pokemon', 'Past'],
525
+ unbanlist: [
526
+ 'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost',
527
+ 'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star',
528
+ 'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen',
529
+ 'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio',
530
+ 'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal',
531
+ 'Vivillon-Fancy', 'Vivillon', 'Vivillon-Pokeball', 'Genesect', 'Genesect-Password', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre',
532
+ 'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow',
533
+ 'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Catastroform', 'Castform-Firestorm',
534
+ 'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo',
535
+ 'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer',
536
+ 'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath',
537
+ ],
538
+ onValidateTeam(team, format) {
539
+ const speciesTable = new Set();
540
+ for (const set of team) {
541
+ const species = this.dex.species.get(set.species);
542
+ if (speciesTable.has(species.id)) {
543
+ return [
544
+ `You are limited to one of each Pokémon by Species Clause (except for different formes).`,
545
+ `(You have more than one ${species.id}.)`,
546
+ ];
547
+ }
548
+ speciesTable.add(species.id);
549
+ }
550
+ },
551
+ },
552
+ {
553
+ name: "[Gen 8] Random Dex",
554
+ desc: `A micrometagame project consisting of 80 randomly selected fully-evolved Pok&eacute;mon.`,
555
+ threads: [
556
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3690182/">Random Dex</a>`,
551
557
  ],
558
+ mod: 'randomdex',
559
+ ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
560
+ banlist: ['All Pokemon', 'Past', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Kangaskhanite', 'Medichamite', 'Kommonium Z'],
552
561
  unbanlist: [
553
- 'Volquag', 'Toxalure', 'Kingtsar', 'Tanette', 'Slowton',
554
- 'Flaant', 'Umbat', 'Chomplim', 'Chomplim-Mega', 'Xotalion', 'Miemie', 'Dusking', 'Jelliswine',
555
- 'Pigapult', 'Lycanserker-Dusk', 'Tapu Lop', 'Dragontler', 'Eternabat',
556
- 'Grimmlurk', 'Manicuno-Galar', 'Yacian-Crowned', 'Cryogolem', 'Stoudrago',
557
- 'Grousle', 'Dongoro', 'Slurpum',
558
- 'Corveot', 'Corveot-Mega', 'Igglyzenta-Crowned', 'Arctres-Galar', 'Garborude', 'Noicity', 'Ferros',
559
- 'Landmaldo-Therian', 'Tentoxys-Defense', 'Strikados-Galar', 'Hooporant',
560
- 'Silvino-Bug', 'Silvino-Dark', 'Silvino-Dragon', 'Silvino-Electric', 'Silvino-Fairy', 'Silvino-Fighting',
561
- 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice',
562
- 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino',
563
- 'Silvino-Bug-Mega', 'Silvino-Dark-Mega', 'Silvino-Dragon-Mega',
564
- 'Silvino-Electric-Mega', 'Silvino-Fairy-Mega', 'Silvino-Fighting-Mega',
565
- 'Silvino-Fire-Mega', 'Silvino-Flying-Mega', 'Silvino-Ghost-Mega',
566
- 'Silvino-Grass-Mega', 'Silvino-Ground-Mega', 'Silvino-Ice-Mega',
567
- 'Silvino-Poison-Mega', 'Silvino-Psychic-Mega', 'Silvino-Rock-Mega',
568
- 'Silvino-Steel-Mega', 'Silvino-Water-Mega', 'Silvino-Mega',
562
+ 'Absol', 'Absol-Mega', 'Appletun', 'Articuno', 'Aurorus', 'Basculin', 'Beartic', 'Bisharp', 'Calyrex', 'Camerupt', 'Camerupt-Mega',
563
+ 'Celesteela', 'Cloyster', 'Crawdaunt', 'Cursola', 'Dedenne', 'Delibird', 'Eelektross', 'Espeon', 'Flapple', 'Flareon', 'Flygon',
564
+ 'Galvantula', 'Girafarig', 'Glaceon', 'Goodra', 'Gourgeist', 'Grimmsnarl', 'Guzzlord', 'Heliolisk', 'Hitmonchan', 'Hitmonlee',
565
+ 'Hitmontop', 'Incineroar', 'Indeedee', 'Jolteon', 'Kangaskhan', 'Kommo-o', 'Lanturn', 'Leafeon', 'Leavanny', 'Ludicolo', 'Lunatone',
566
+ 'Luvdisc', 'Machamp', 'Mandibuzz', 'Medicham', 'Nihilego', 'Palossand', 'Pidgeot', 'Pidgeot-Mega', 'Probopass', 'Pyroar', 'Sawk',
567
+ 'Sceptile', 'Sceptile-Mega', 'Scolipede', 'Shiftry', 'Simisage', 'Slowbro', 'Slowbro-Mega', 'Slowking', 'Swoobat', 'Sylveon',
568
+ 'Tapu Bulu', 'Tapu Fini', 'Tauros', 'Typhlosion', 'Umbreon', 'Ursaring', 'Vaporeon', 'Whiscash', 'Wishiwashi', 'Zebstrika', 'Absolite',
569
+ 'Pidgeotite', 'Sceptilite', 'Cameruptite', 'Slowbronite',
569
570
  ],
570
571
  },
571
572
  {
@@ -586,36 +587,134 @@ exports.Formats = [
586
587
  column: 2,
587
588
  },
588
589
  {
589
- name: "[Gen 8] Revelationmons",
590
- 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).`,
590
+ name: "[Gen 8] Trademarked",
591
+ desc: `Sacrifice your Pok&eacute;mon's ability for a status move that activates on switch-in.`,
591
592
  threads: [
592
- `&bullet; <a href="https://www.smogon.com/forums/threads/3692297/">Revelationmons</a>`,
593
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3656980/">Trademarked</a>`,
593
594
  ],
594
595
  mod: 'gen8',
595
- ruleset: ['Standard', 'Dynamax Clause', 'Revelationmons Mod', 'Sleep Moves Clause'],
596
+ // searchShow: false,
597
+ ruleset: ['Standard', 'Dynamax Clause'],
596
598
  banlist: [
597
- 'Barraskewda', 'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult',
598
- 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White',
599
- 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
600
- 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
601
- 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct',
602
- 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
599
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Kyurem-Black', 'Kyurem-White',
600
+ 'Giratina', 'Giratina-Origin', 'Genesect', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Lugia', 'Lunala', 'Magearna', 'Marowak-Alola',
601
+ 'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza',
602
+ 'Reshiram', 'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom',
603
+ 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
604
+ ],
605
+ restricted: [
606
+ 'Baneful Bunker', 'Block', 'Copycat', 'Corrosive Gas', 'Detect', 'Destiny Bond', 'Disable', 'Encore', 'Fairy Lock', 'Hypnosis', 'Ingrain',
607
+ 'Instruct', 'Lovely Kiss', 'King\'s Shield', 'Mat Block', 'Mean Look', 'Memento', 'move:Metronome', 'Obstruct', 'Octolock', 'Nature Power',
608
+ 'Parting Shot', 'Psycho Shift', 'Protect', 'Roar', 'Sing', 'Skill Swap', 'Sleep Powder', 'Sleep Talk', 'Spiky Shield', 'Spore', 'Substitute',
609
+ 'Teleport', 'Whirlwind', 'Wish', 'Yawn',
603
610
  ],
604
- restricted: ['Bolt Beak', 'U-turn', 'Volt Switch'],
611
+ onValidateTeam(team, format, teamHas) {
612
+ const problems = [];
613
+ for (const trademark in teamHas.trademarks) {
614
+ if (teamHas.trademarks[trademark] > 1) {
615
+ problems.push(`You are limited to 1 of each Trademark.`, `(You have ${teamHas.trademarks[trademark]} Pok\u00e9mon with ${trademark} as a Trademark.)`);
616
+ }
617
+ }
618
+ return problems;
619
+ },
620
+ validateSet(set, teamHas) {
621
+ const dex = this.dex;
622
+ const ability = dex.moves.get(set.ability);
623
+ if (!ability.exists) { // Not even a real move
624
+ return this.validateSet(set, teamHas);
625
+ }
626
+ // Absolute trademark bans
627
+ if (ability.category !== 'Status') {
628
+ return [`${ability.name} is not a status move, and cannot be used as a trademark.`];
629
+ }
630
+ if (ability.forceSwitch || ability.selfSwitch) {
631
+ return [
632
+ `Force-switching and self-switching moves are banned from being used as trademarks.`,
633
+ `(${ability.name} is a ${ability.forceSwitch ? 'force' : 'self'}-switching move.)`,
634
+ ];
635
+ }
636
+ const irrevokablyRestricted = [
637
+ 'Assist', 'Copycat', 'Metronome', 'Mirror Move', 'Sleep Talk',
638
+ 'Skill Swap', // Self-propagates indefinitely
639
+ ];
640
+ if (irrevokablyRestricted.includes(ability.name)) {
641
+ return [`${ability.name} cannot safely function as a trademark.`];
642
+ }
643
+ // Contingent trademark bans
644
+ if (this.ruleTable.isRestricted(`move:${ability.id}`)) {
645
+ return [`${ability.name} is restricted from being used as a trademark.`];
646
+ }
647
+ if (set.moves.map(this.toID).includes(ability.id)) {
648
+ return [`${set.name} may not use ${ability.name} as both a trademark and one of its moves simultaneously.`];
649
+ }
650
+ const customRules = this.format.customRules || [];
651
+ if (!customRules.includes('!obtainableabilities'))
652
+ customRules.push('!obtainableabilities');
653
+ const TeamValidator = require('../sim/team-validator').TeamValidator;
654
+ const validator = new TeamValidator(dex.formats.get(`${this.format.id}@@@${customRules.join(',')}`));
655
+ const moves = set.moves;
656
+ set.moves = [ability.id];
657
+ set.ability = dex.species.get(set.species).abilities['0'];
658
+ let problems = validator.validateSet(set, {}) || [];
659
+ if (problems.length)
660
+ return problems;
661
+ set.moves = moves;
662
+ set.ability = dex.species.get(set.species).abilities['0'];
663
+ problems = problems.concat(validator.validateSet(set, teamHas) || []);
664
+ set.ability = ability.id;
665
+ if (!teamHas.trademarks)
666
+ teamHas.trademarks = {};
667
+ teamHas.trademarks[ability.name] = (teamHas.trademarks[ability.name] || 0) + 1;
668
+ return problems.length ? problems : null;
669
+ },
670
+ pokemon: {
671
+ getAbility() {
672
+ const move = this.battle.dex.moves.get(this.battle.toID(this.ability));
673
+ if (!move.exists)
674
+ return Object.getPrototypeOf(this).getAbility.call(this);
675
+ return {
676
+ id: move.id,
677
+ name: move.name,
678
+ onStart(pokemon) {
679
+ this.add('-activate', pokemon, 'ability: ' + move.name);
680
+ this.actions.useMove(move, pokemon);
681
+ },
682
+ toString() {
683
+ return "";
684
+ },
685
+ };
686
+ },
687
+ },
605
688
  },
606
689
  {
607
- name: "[Gen 8 BDSP] Balanced Hackmons",
608
- desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
690
+ name: "[Gen 8] Linked",
691
+ desc: `The first two moves in a Pok&eacute;mon's moveset are used simultaneously.`,
609
692
  threads: [
610
- `&bullet; <a href="https://www.smogon.com/forums/posts/9043074">BDSP Balanced Hackmons</a>`,
693
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3660421/">Linked</a>`,
611
694
  ],
612
- mod: 'gen8bdsp',
613
- ruleset: ['-Nonexistent', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Moves Clause', 'Endless Battle Clause'],
695
+ mod: 'linked',
696
+ ruleset: ['Standard', 'Dynamax Clause'],
614
697
  banlist: [
615
- 'Shedinja', 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Intrepid Sword',
616
- 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble',
617
- 'Wonder Guard', 'Comatose + Sleep Talk', 'Shell Smash',
698
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh',
699
+ 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
700
+ 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
701
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
702
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
618
703
  ],
704
+ restricted: [
705
+ 'Baneful Bunker', 'Bounce', 'Protect', 'Detect', 'Dig', 'Dive', 'Fly', 'King\'s Shield', 'Nature\'s Madness', 'Night Shade',
706
+ 'Obstruct', 'Phantom Force', 'Seismic Toss', 'Shadow Force', 'Sky Drop', 'Spiky Shield', 'Super Fang',
707
+ ],
708
+ onValidateSet(set) {
709
+ const problems = [];
710
+ for (const [i, moveid] of set.moves.entries()) {
711
+ const move = this.dex.moves.get(moveid);
712
+ if ([0, 1].includes(i) && this.ruleTable.isRestricted(`move:${move.id}`)) {
713
+ problems.push(`${set.name || set.species}'s move ${move.name} cannot be linked.`);
714
+ }
715
+ }
716
+ return problems;
717
+ },
619
718
  },
620
719
  // Other Metagames
621
720
  ///////////////////////////////////////////////////////////////////
@@ -659,6 +758,34 @@ exports.Formats = [
659
758
  }
660
759
  },
661
760
  },
761
+ {
762
+ name: "[Gen 8] Almost Any Ability",
763
+ desc: `Pok&eacute;mon have access to almost any ability.`,
764
+ threads: [
765
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
766
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
767
+ ],
768
+ mod: 'gen8',
769
+ 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'],
770
+ banlist: [
771
+ 'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina',
772
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
773
+ 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja',
774
+ 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom',
775
+ 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter',
776
+ 'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power',
777
+ 'Shadow Tag', 'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
778
+ ],
779
+ onValidateSet(set) {
780
+ // Temporary fix until battle-only is implemented properly
781
+ if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
782
+ return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
783
+ }
784
+ if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
785
+ return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
786
+ }
787
+ },
788
+ },
662
789
  {
663
790
  name: "[Gen 8] Mix and Mega",
664
791
  desc: `Mega evolve any Pok&eacute;mon with any mega stone and no limit. Boosts based on mega evolution from gen 7.`,
@@ -676,7 +803,8 @@ exports.Formats = [
676
803
  restricted: [
677
804
  'Calyrex-Ice', 'Dialga', 'Eternatus', 'Gengar', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyurem-Black', 'Kyurem-White',
678
805
  'Lugia', 'Lunala', 'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
679
- 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zekrom', 'Zygarde-Complete',
806
+ 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu', 'Urshifu-Rapid-Strike', 'Xerneas',
807
+ 'Yveltal', 'Zekrom', 'Zygarde-Complete',
680
808
  ],
681
809
  onValidateTeam(team) {
682
810
  const itemTable = new Set();
@@ -721,49 +849,23 @@ exports.Formats = [
721
849
  }
722
850
  },
723
851
  },
724
- {
725
- name: "[Gen 8] Almost Any Ability",
726
- desc: `Pok&eacute;mon have access to almost any ability.`,
727
- threads: [
728
- `&bullet; <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
729
- `&bullet; <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
730
- ],
731
- mod: 'gen8',
732
- 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'],
733
- banlist: [
734
- 'Archeops', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina', 'Giratina-Origin',
735
- 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
736
- 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja', 'Solgaleo', 'Spectrier',
737
- 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zeraora', 'Zygarde-Base',
738
- 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Intrepid Sword',
739
- 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout',
740
- 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
741
- ],
742
- onValidateSet(set) {
743
- // Temporary fix until battle-only is implemented properly
744
- if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
745
- return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
746
- }
747
- if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
748
- return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
749
- }
750
- },
751
- },
752
852
  {
753
853
  name: "[Gen 8] STABmons",
754
854
  desc: `Pok&eacute;mon can use any move of their typing, in addition to the moves they can normally learn.`,
755
855
  threads: [
756
856
  `&bullet; <a href="https://www.smogon.com/forums/threads/3656429/">STABmons</a>`,
857
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695169/">STABmons Resources</a>`,
757
858
  ],
758
859
  mod: 'gen8',
759
- ruleset: ['Standard', 'STABmons Move Legality', 'Dynamax Clause', 'Sleep Moves Clause'],
860
+ ruleset: ['Standard', 'STABmons Move Legality', 'Dynamax Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'],
760
861
  banlist: [
761
- 'Aegislash', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Genesect',
762
- 'Garchomp', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus', 'Landorus-Therian',
763
- 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z',
764
- 'Rayquaza', 'Reshiram', 'Silvally', 'Solgaleo', 'Spectrier', 'Tapu Bulu', 'Tapu Koko', 'Thundurus-Base', 'Urshifu-Base', 'Xerneas', 'Yveltal',
765
- 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zapdos-Galar', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody',
766
- 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
862
+ 'Aegislash', 'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite',
863
+ 'Eternatus', 'Genesect', 'Garchomp', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black',
864
+ 'Kyurem-White', 'Landorus', 'Landorus-Therian', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
865
+ 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Silvally', 'Solgaleo', 'Spectrier', 'Tapu Bulu',
866
+ 'Tapu Koko', 'Thundurus-Base', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
867
+ 'Zapdos-Galar', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock',
868
+ 'Baton Pass',
767
869
  ],
768
870
  restricted: [
769
871
  'Acupressure', 'Astral Barrage', 'Belly Drum', 'Bolt Beak', 'Clangorous Soul', 'Double Iron Bash', 'Electrify', 'Extreme Speed', 'Fishious Rend',
@@ -791,11 +893,11 @@ exports.Formats = [
791
893
  `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
792
894
  ],
793
895
  mod: 'gen8',
794
- ruleset: ['Standard', 'Dynamax Clause'],
896
+ ruleset: ['Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
795
897
  banlist: [
796
- 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
898
+ 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Mantine', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
797
899
  'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
798
- 'Shadow Tag', 'Baton Pass',
900
+ 'Shadow Tag', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Baton Pass',
799
901
  ],
800
902
  onValidateTeam(team) {
801
903
  const gods = new Set();
@@ -877,7 +979,8 @@ exports.Formats = [
877
979
  name: "[Gen 8 BDSP] OU",
878
980
  threads: [
879
981
  `&bullet; <a href="https://www.smogon.com/forums/threads/3693629/">BDSP OU Metagame Discussion</a>`,
880
- `&bullet; <a href="https://www.smogon.com/forums/threads/3693620/">BDSP OU Viability List</a>`,
982
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3693721/">BDSP OU Sample Teams</a>`,
983
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3696088/">BDSP OU Viability Rankings</a>`,
881
984
  ],
882
985
  mod: 'gen8bdsp',
883
986
  ruleset: ['Standard'],
@@ -904,6 +1007,31 @@ exports.Formats = [
904
1007
  ruleset: ['[Gen 8 BDSP] OU'],
905
1008
  banlist: ['OU', 'UUBL'],
906
1009
  },
1010
+ {
1011
+ name: "[Gen 8 BDSP] RU",
1012
+ threads: [
1013
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695563/">BDSP RU</a>`,
1014
+ ],
1015
+ mod: 'gen8bdsp',
1016
+ ruleset: ['[Gen 8 BDSP] UU'],
1017
+ banlist: ['UU', 'RUBL', 'Drought'],
1018
+ },
1019
+ {
1020
+ name: "[Gen 8 BDSP] NU",
1021
+ mod: 'gen8bdsp',
1022
+ searchShow: false,
1023
+ ruleset: ['[Gen 8 BDSP] RU'],
1024
+ banlist: ['RU', 'NUBL'],
1025
+ },
1026
+ {
1027
+ name: "[Gen 8 BDSP] LC",
1028
+ threads: [
1029
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3696004/">BDSP LC</a>`,
1030
+ ],
1031
+ mod: 'gen8bdsp',
1032
+ ruleset: ['Little Cup', 'Standard'],
1033
+ banlist: ['Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', 'Moody', 'Baton Pass'],
1034
+ },
907
1035
  {
908
1036
  name: "[Gen 8 BDSP] Monotype",
909
1037
  threads: [
@@ -925,6 +1053,14 @@ exports.Formats = [
925
1053
  searchShow: false,
926
1054
  ruleset: ['[Gen 8 BDSP] OU', '+CAP'],
927
1055
  },
1056
+ {
1057
+ name: "[Gen 8 BDSP] 3v3 Singles",
1058
+ threads: [
1059
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695092/">BDSP 3v3 Singles</a>`,
1060
+ ],
1061
+ mod: 'gen8bdsp',
1062
+ ruleset: ['Flat Rules', 'Min Source Gen = 8'],
1063
+ },
928
1064
  {
929
1065
  name: "[Gen 8 BDSP] Doubles OU",
930
1066
  threads: [
@@ -968,11 +1104,11 @@ exports.Formats = [
968
1104
  searchShow: false,
969
1105
  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'],
970
1106
  banlist: [
971
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon',
972
- 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia', 'Lunala', 'Marshadow',
973
- 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Reuniclus', 'Shedinja',
974
- 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom',
975
- 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
1107
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin',
1108
+ 'Groudon', 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia',
1109
+ 'Lunala', 'Marshadow', 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
1110
+ 'Reuniclus', 'Shedinja', 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Volcarona', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
1111
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
976
1112
  ],
977
1113
  onModifySpeciesPriority: 2,
978
1114
  onModifySpecies(species, target, source, effect) {
@@ -1502,6 +1638,53 @@ exports.Formats = [
1502
1638
  }
1503
1639
  },
1504
1640
  },
1641
+ {
1642
+ name: "[Gen 8] Pokebilities",
1643
+ desc: `Pok&eacute;mon have all of their released abilities simultaneously.`,
1644
+ threads: [
1645
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3679692/">Pok&eacute;bilities</a>`,
1646
+ ],
1647
+ mod: 'pokebilities',
1648
+ searchShow: false,
1649
+ ruleset: ['Standard', 'Dynamax Clause'],
1650
+ banlist: [
1651
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Conkeldurr', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dracozolt',
1652
+ 'Eternatus', 'Excadrill', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
1653
+ 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
1654
+ 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base',
1655
+ 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zygarde-Base', 'Power Construct',
1656
+ 'Baton Pass', 'King\'s Rock',
1657
+ // Moody users
1658
+ 'Glalie', 'Octillery', 'Remoraid', 'Snorunt',
1659
+ // Shadow Tag/Arena Trap
1660
+ 'Diglett-Base', 'Dugtrio-Base', 'Gothita', 'Gothitelle', 'Gothorita', 'Trapinch', 'Wobbuffet', 'Wynaut',
1661
+ ],
1662
+ onBegin() {
1663
+ for (const pokemon of this.getAllPokemon()) {
1664
+ if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) {
1665
+ continue;
1666
+ }
1667
+ pokemon.m.innates = Object.keys(pokemon.species.abilities)
1668
+ .filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
1669
+ .map(key => this.toID(pokemon.species.abilities[key]))
1670
+ .filter(ability => ability !== pokemon.ability);
1671
+ }
1672
+ },
1673
+ onSwitchInPriority: 2,
1674
+ onSwitchIn(pokemon) {
1675
+ if (pokemon.m.innates) {
1676
+ for (const innate of pokemon.m.innates) {
1677
+ pokemon.addVolatile("ability:" + innate, pokemon);
1678
+ }
1679
+ }
1680
+ },
1681
+ onAfterMega(pokemon) {
1682
+ for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
1683
+ pokemon.removeVolatile(innate);
1684
+ }
1685
+ pokemon.m.innates = undefined;
1686
+ },
1687
+ },
1505
1688
  {
1506
1689
  name: "[Gen 8] The Loser's Game",
1507
1690
  desc: `The first player to lose all of their Pok&eacute;mon wins.`,
@@ -1624,106 +1807,6 @@ exports.Formats = [
1624
1807
  },
1625
1808
  },
1626
1809
  },
1627
- {
1628
- name: "[Gen 8] Trademarked",
1629
- desc: `Sacrifice your Pok&eacute;mon's ability for a status move that activates on switch-in.`,
1630
- threads: [
1631
- `&bullet; <a href="https://www.smogon.com/forums/threads/3656980/">Trademarked</a>`,
1632
- ],
1633
- mod: 'gen8',
1634
- searchShow: false,
1635
- ruleset: ['Standard', 'Dynamax Clause'],
1636
- banlist: [
1637
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Kyurem-Black', 'Kyurem-White',
1638
- 'Giratina', 'Giratina-Origin', 'Genesect', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
1639
- 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
1640
- 'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base',
1641
- 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
1642
- ],
1643
- restricted: [
1644
- 'Baneful Bunker', 'Block', 'Copycat', 'Corrosive Gas', 'Detect', 'Destiny Bond', 'Disable', 'Encore', 'Fairy Lock', 'Hypnosis', 'Ingrain',
1645
- 'Instruct', 'Lovely Kiss', 'King\'s Shield', 'Mat Block', 'Mean Look', 'move:Metronome', 'Obstruct', 'Octolock', 'Nature Power', 'Parting Shot',
1646
- 'Psycho Shift', 'Protect', 'Roar', 'Sing', 'Skill Swap', 'Sleep Powder', 'Sleep Talk', 'Spiky Shield', 'Spore', 'Substitute', 'Teleport',
1647
- 'Whirlwind', 'Wish', 'Yawn',
1648
- ],
1649
- onValidateTeam(team, format, teamHas) {
1650
- const problems = [];
1651
- for (const trademark in teamHas.trademarks) {
1652
- if (teamHas.trademarks[trademark] > 1) {
1653
- problems.push(`You are limited to 1 of each Trademark.`, `(You have ${teamHas.trademarks[trademark]} Pok\u00e9mon with ${trademark} as a Trademark.)`);
1654
- }
1655
- }
1656
- return problems;
1657
- },
1658
- validateSet(set, teamHas) {
1659
- const dex = this.dex;
1660
- const ability = dex.moves.get(set.ability);
1661
- if (!ability.exists) { // Not even a real move
1662
- return this.validateSet(set, teamHas);
1663
- }
1664
- // Absolute trademark bans
1665
- if (ability.category !== 'Status') {
1666
- return [`${ability.name} is not a status move, and cannot be used as a trademark.`];
1667
- }
1668
- if (ability.forceSwitch || ability.selfSwitch) {
1669
- return [
1670
- `Force-switching and self-switching moves are banned from being used as trademarks.`,
1671
- `(${ability.name} is a ${ability.forceSwitch ? 'force' : 'self'}-switching move.)`,
1672
- ];
1673
- }
1674
- const irrevokablyRestricted = [
1675
- 'Assist', 'Copycat', 'Metronome', 'Mirror Move', 'Sleep Talk',
1676
- 'Skill Swap', // Self-propagates indefinitely
1677
- ];
1678
- if (irrevokablyRestricted.includes(ability.name)) {
1679
- return [`${ability.name} cannot safely function as a trademark.`];
1680
- }
1681
- // Contingent trademark bans
1682
- if (this.ruleTable.isRestricted(`move:${ability.id}`)) {
1683
- return [`${ability.name} is restricted from being used as a trademark.`];
1684
- }
1685
- if (set.moves.map(this.toID).includes(ability.id)) {
1686
- return [`${set.name} may not use ${ability.name} as both a trademark and one of its moves simultaneously.`];
1687
- }
1688
- const customRules = this.format.customRules || [];
1689
- if (!customRules.includes('!obtainableabilities'))
1690
- customRules.push('!obtainableabilities');
1691
- const TeamValidator = require('../sim/team-validator').TeamValidator;
1692
- const validator = new TeamValidator(dex.formats.get(`${this.format.id}@@@${customRules.join(',')}`));
1693
- const moves = set.moves;
1694
- set.moves = [ability.id];
1695
- set.ability = dex.species.get(set.species).abilities['0'];
1696
- let problems = validator.validateSet(set, {}) || [];
1697
- if (problems.length)
1698
- return problems;
1699
- set.moves = moves;
1700
- set.ability = dex.species.get(set.species).abilities['0'];
1701
- problems = problems.concat(validator.validateSet(set, teamHas) || []);
1702
- set.ability = ability.id;
1703
- if (!teamHas.trademarks)
1704
- teamHas.trademarks = {};
1705
- teamHas.trademarks[ability.name] = (teamHas.trademarks[ability.name] || 0) + 1;
1706
- return problems.length ? problems : null;
1707
- },
1708
- pokemon: {
1709
- getAbility() {
1710
- const move = this.battle.dex.moves.get(this.battle.toID(this.ability));
1711
- if (!move.exists)
1712
- return Object.getPrototypeOf(this).getAbility.call(this);
1713
- return {
1714
- id: move.id,
1715
- name: move.name,
1716
- onStart(pokemon) {
1717
- this.add('-activate', pokemon, 'ability: ' + move.name);
1718
- this.actions.useMove(move, pokemon);
1719
- },
1720
- toString() {
1721
- return "";
1722
- },
1723
- };
1724
- },
1725
- },
1726
- },
1727
1810
  // Randomized Metas
1728
1811
  ///////////////////////////////////////////////////////////////////
1729
1812
  {
@@ -1831,7 +1914,8 @@ exports.Formats = [
1831
1914
  desc: `Randomized teams of level-balanced Pok&eacute;mon with absolutely any ability, moves, and item.`,
1832
1915
  mod: 'gen8',
1833
1916
  team: 'randomHC',
1834
- ruleset: ['Obtainable Formes', 'HP Percentage Mod', 'Cancel Mod'],
1917
+ ruleset: ['HP Percentage Mod', 'Cancel Mod'],
1918
+ banlist: ['Nonexistent'],
1835
1919
  },
1836
1920
  {
1837
1921
  name: "[Gen 8] Doubles Hackmons Cup",
@@ -1839,7 +1923,8 @@ exports.Formats = [
1839
1923
  gameType: 'doubles',
1840
1924
  team: 'randomHC',
1841
1925
  searchShow: false,
1842
- ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
1926
+ ruleset: ['HP Percentage Mod', 'Cancel Mod'],
1927
+ banlist: ['Nonexistent'],
1843
1928
  },
1844
1929
  {
1845
1930
  name: "[Gen 8] CAP 1v1",
@@ -1908,6 +1993,7 @@ exports.Formats = [
1908
1993
  team: 'randomHC',
1909
1994
  searchShow: false,
1910
1995
  ruleset: ['HP Percentage Mod', 'Cancel Mod'],
1996
+ banlist: ['Nonexistent'],
1911
1997
  },
1912
1998
  {
1913
1999
  name: "[Gen 7 Let's Go] Random Battle",
@@ -1974,6 +2060,7 @@ exports.Formats = [
1974
2060
  team: 'randomHC',
1975
2061
  searchShow: false,
1976
2062
  ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Team Type Preview'],
2063
+ banlist: ['Nonexistent'],
1977
2064
  onModifySpecies(species, target, source, effect) {
1978
2065
  if (!target)
1979
2066
  return;
@@ -1995,47 +2082,36 @@ exports.Formats = [
1995
2082
  column: 3,
1996
2083
  },
1997
2084
  {
1998
- name: "[Gen 1] UU",
2085
+ name: "[Gen 3] UU",
1999
2086
  threads: [
2000
- `&bullet; <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
2001
- `&bullet; <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
2087
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
2088
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
2002
2089
  ],
2003
- mod: 'gen1',
2090
+ mod: 'gen3',
2004
2091
  // searchShow: false,
2005
- ruleset: ['[Gen 1] OU'],
2006
- banlist: ['OU', 'UUBL'],
2092
+ ruleset: ['Standard', 'NFE Clause'],
2093
+ banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Baton Pass'],
2094
+ unbanlist: ['Scyther', 'Sand Veil'],
2007
2095
  },
2008
2096
  {
2009
- name: "[Gen 6] 1v1",
2010
- desc: `Bring three Pok&eacute;mon to Team Preview and choose one to battle.`,
2097
+ name: "[Gen 1] NU",
2011
2098
  threads: [
2012
- `&bullet; <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
2099
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3668913/">RBY NU Viability Rankings</a>`,
2013
2100
  ],
2014
- mod: 'gen6',
2101
+ mod: 'gen1',
2015
2102
  // searchShow: false,
2016
- ruleset: [
2017
- 'Max Team Size = 3', 'Picked Team Size = 1',
2018
- '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',
2019
- ],
2020
- banlist: [
2021
- 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
2022
- 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
2023
- 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
2024
- 'Focus Sash', 'Soul Dew', 'Perish Song',
2025
- ],
2103
+ ruleset: ['[Gen 1] UU'],
2104
+ banlist: ['UU', 'NUBL'],
2026
2105
  },
2027
2106
  {
2028
- name: "[Gen 5] Doubles OU",
2107
+ name: "[Gen 4] Ubers",
2029
2108
  threads: [
2030
- `&bullet; <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
2031
- `&bullet; <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
2032
- `&bullet; <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
2109
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
2033
2110
  ],
2034
- mod: 'gen5',
2035
- gameType: 'doubles',
2111
+ mod: 'gen4',
2036
2112
  // searchShow: false,
2037
- ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
2038
- banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
2113
+ ruleset: ['Standard'],
2114
+ banlist: ['AG'],
2039
2115
  },
2040
2116
  // Past Gens OU
2041
2117
  ///////////////////////////////////////////////////////////////////
@@ -2072,8 +2148,8 @@ exports.Formats = [
2072
2148
  `&bullet; <a href="https://www.smogon.com/forums/threads/3668699/">BW2 OU Viability Rankings</a>`,
2073
2149
  ],
2074
2150
  mod: 'gen5',
2075
- ruleset: ['Standard', 'Evasion Abilities Clause', 'Baton Pass Clause', 'Sleep Moves Clause', 'Swagger Clause'],
2076
- banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist'],
2151
+ ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Swagger Clause'],
2152
+ banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist', 'Baton Pass'],
2077
2153
  },
2078
2154
  {
2079
2155
  name: "[Gen 4] OU",
@@ -2084,7 +2160,7 @@ exports.Formats = [
2084
2160
  ],
2085
2161
  mod: 'gen4',
2086
2162
  ruleset: ['Standard'],
2087
- banlist: ['AG', 'Uber', 'Arena Trap', 'Sand Veil', 'Swinub + Snow Cloak', 'Piloswine + Snow Cloak', 'Mamoswine + Snow Cloak', 'Soul Dew', 'Baton Pass'],
2163
+ banlist: ['AG', 'Uber', 'Arena Trap', 'Sand Veil', 'Swinub + Snow Cloak', 'Piloswine + Snow Cloak', 'Mamoswine + Snow Cloak', 'Soul Dew', 'Baton Pass', 'Swagger'],
2088
2164
  },
2089
2165
  {
2090
2166
  name: "[Gen 3] OU",
@@ -2094,7 +2170,7 @@ exports.Formats = [
2094
2170
  ],
2095
2171
  mod: 'gen3',
2096
2172
  ruleset: ['Standard', 'One Boost Passer Clause'],
2097
- banlist: ['Uber', 'Sand Veil', 'Smeargle + Ingrain'],
2173
+ banlist: ['Uber', 'Sand Veil', 'Assist', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'],
2098
2174
  },
2099
2175
  {
2100
2176
  name: "[Gen 2] OU",
@@ -2238,6 +2314,15 @@ exports.Formats = [
2238
2314
  mod: 'gen6',
2239
2315
  ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
2240
2316
  },
2317
+ {
2318
+ name: "[Gen 5] ZU",
2319
+ threads: [
2320
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8034680/">BW2 ZU</a>`,
2321
+ ],
2322
+ mod: 'gen5',
2323
+ ruleset: ['[Gen 5] PU'],
2324
+ banlist: ['PU', 'Dragonair', 'Glalie', 'Machoke', 'Marowak', 'Omanyte', 'Regigigas', 'Trubbish', 'Whirlipede', 'Baton Pass'],
2325
+ },
2241
2326
  // US/UM Singles
2242
2327
  ///////////////////////////////////////////////////////////////////
2243
2328
  {
@@ -2622,6 +2707,25 @@ exports.Formats = [
2622
2707
  'Soul Dew', 'Baton Pass',
2623
2708
  ],
2624
2709
  },
2710
+ {
2711
+ name: "[Gen 6] 1v1",
2712
+ desc: `Bring three Pok&eacute;mon to Team Preview and choose one to battle.`,
2713
+ threads: [
2714
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
2715
+ ],
2716
+ mod: 'gen6',
2717
+ searchShow: false,
2718
+ ruleset: [
2719
+ 'Max Team Size = 3', 'Picked Team Size = 1',
2720
+ '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',
2721
+ ],
2722
+ banlist: [
2723
+ 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
2724
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
2725
+ 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
2726
+ 'Focus Sash', 'Soul Dew', 'Perish Song',
2727
+ ],
2728
+ },
2625
2729
  {
2626
2730
  name: "[Gen 6] Anything Goes",
2627
2731
  threads: [
@@ -2820,7 +2924,7 @@ exports.Formats = [
2820
2924
  mod: 'gen5',
2821
2925
  searchShow: false,
2822
2926
  ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'],
2823
- banlist: ['NU', 'Combusken', 'Gothorita', 'Linoone', 'Riolu', 'Rotom-Frost', 'Simipour', 'Throh', 'Vigoroth'],
2927
+ banlist: ['NU', 'PUBL'],
2824
2928
  },
2825
2929
  {
2826
2930
  name: "[Gen 5] LC",
@@ -2883,6 +2987,19 @@ exports.Formats = [
2883
2987
  section: 'B2/W2 Doubles',
2884
2988
  column: 4,
2885
2989
  },
2990
+ {
2991
+ name: "[Gen 5] Doubles OU",
2992
+ threads: [
2993
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
2994
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
2995
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
2996
+ ],
2997
+ mod: 'gen5',
2998
+ gameType: 'doubles',
2999
+ searchShow: false,
3000
+ ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
3001
+ banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
3002
+ },
2886
3003
  {
2887
3004
  name: "[Gen 5] VGC 2013",
2888
3005
  mod: 'gen5',
@@ -2933,16 +3050,6 @@ exports.Formats = [
2933
3050
  section: "DPP Singles",
2934
3051
  column: 5,
2935
3052
  },
2936
- {
2937
- name: "[Gen 4] Ubers",
2938
- threads: [
2939
- `&bullet; <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
2940
- ],
2941
- mod: 'gen4',
2942
- searchShow: false,
2943
- ruleset: ['Standard'],
2944
- banlist: ['AG'],
2945
- },
2946
3053
  {
2947
3054
  name: "[Gen 4] UU",
2948
3055
  threads: [
@@ -2953,7 +3060,7 @@ exports.Formats = [
2953
3060
  searchShow: false,
2954
3061
  ruleset: ['[Gen 4] OU'],
2955
3062
  banlist: ['OU', 'UUBL'],
2956
- unbanlist: ['Arena Trap'],
3063
+ unbanlist: ['Arena Trap', 'Swagger'],
2957
3064
  },
2958
3065
  {
2959
3066
  name: "[Gen 4] NU",
@@ -3009,8 +3116,8 @@ exports.Formats = [
3009
3116
  'Picked Team Size = 1', 'Max Team Size = 3',
3010
3117
  '[Gen 4] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3011
3118
  ],
3012
- banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
3013
- unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil'],
3119
+ banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Shaymin', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
3120
+ unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil', 'Swagger'],
3014
3121
  },
3015
3122
  {
3016
3123
  name: "[Gen 4] Anything Goes",
@@ -3041,7 +3148,7 @@ exports.Formats = [
3041
3148
  searchShow: false,
3042
3149
  ruleset: ['[Gen 4] OU'],
3043
3150
  banlist: ['Explosion'],
3044
- unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut'],
3151
+ unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut', 'Swagger'],
3045
3152
  },
3046
3153
  {
3047
3154
  name: "[Gen 4] VGC 2010",
@@ -3083,21 +3190,9 @@ exports.Formats = [
3083
3190
  ],
3084
3191
  mod: 'gen3',
3085
3192
  searchShow: false,
3086
- ruleset: ['Standard', 'Deoxys Camouflage Clause'],
3193
+ ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
3087
3194
  banlist: ['Wobbuffet + Leftovers'],
3088
3195
  },
3089
- {
3090
- name: "[Gen 3] UU",
3091
- threads: [
3092
- `&bullet; <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
3093
- `&bullet; <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
3094
- ],
3095
- mod: 'gen3',
3096
- searchShow: false,
3097
- ruleset: ['Standard', 'NFE Clause'],
3098
- banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Baton Pass'],
3099
- unbanlist: ['Scyther', 'Sand Veil'],
3100
- },
3101
3196
  {
3102
3197
  name: "[Gen 3] NU",
3103
3198
  threads: [
@@ -3186,7 +3281,10 @@ exports.Formats = [
3186
3281
  'Picked Team Size = 1', 'Max Team Size = 3',
3187
3282
  '[Gen 2] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3188
3283
  ],
3189
- banlist: ['Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Destiny Bond', 'Explosion', 'Perish Song', 'Present', 'Self-Destruct'],
3284
+ banlist: [
3285
+ 'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3286
+ 'Attract', 'Destiny Bond', 'Explosion', 'Perish Song', 'Present', 'Self-Destruct', 'Swagger',
3287
+ ],
3190
3288
  },
3191
3289
  {
3192
3290
  name: "[Gen 2] Nintendo Cup 2000",
@@ -3230,14 +3328,15 @@ exports.Formats = [
3230
3328
  ruleset: ['Standard'],
3231
3329
  },
3232
3330
  {
3233
- name: "[Gen 1] NU",
3331
+ name: "[Gen 1] UU",
3234
3332
  threads: [
3235
- `&bullet; <a href="https://www.smogon.com/forums/threads/3668913/">RBY NU Viability Rankings</a>`,
3333
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
3334
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
3236
3335
  ],
3237
3336
  mod: 'gen1',
3238
3337
  searchShow: false,
3239
- ruleset: ['[Gen 1] UU'],
3240
- banlist: ['UU', 'NUBL'],
3338
+ ruleset: ['[Gen 1] OU'],
3339
+ banlist: ['OU', 'UUBL'],
3241
3340
  },
3242
3341
  {
3243
3342
  name: "[Gen 1] Japanese OU",