@pkmn/sim 0.5.0 → 0.5.4

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 (75) hide show
  1. package/build/config/formats.js +356 -266
  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/aliases.js +2 -2
  6. package/build/data/aliases.js.map +1 -1
  7. package/build/data/formats-data.js +91 -92
  8. package/build/data/formats-data.js.map +1 -1
  9. package/build/data/items.js +5 -5
  10. package/build/data/items.js.map +1 -1
  11. package/build/data/learnsets.js +1 -1
  12. package/build/data/learnsets.js.map +1 -1
  13. package/build/data/mods/gen1/formats-data.js +190 -190
  14. package/build/data/mods/gen1/formats-data.js.map +1 -1
  15. package/build/data/mods/gen1/moves.js +1 -2
  16. package/build/data/mods/gen1/moves.js.map +1 -1
  17. package/build/data/mods/gen1/scripts.js +12 -0
  18. package/build/data/mods/gen1/scripts.js.map +1 -1
  19. package/build/data/mods/gen2/formats-data.js +2 -2
  20. package/build/data/mods/gen2/formats-data.js.map +1 -1
  21. package/build/data/mods/gen3/formats-data.js +12 -12
  22. package/build/data/mods/gen3/formats-data.js.map +1 -1
  23. package/build/data/mods/gen4/moves.js +22 -0
  24. package/build/data/mods/gen4/moves.js.map +1 -1
  25. package/build/data/mods/gen5/formats-data.js +15 -15
  26. package/build/data/mods/gen5/formats-data.js.map +1 -1
  27. package/build/data/mods/gen6/formats-data.js +1 -1
  28. package/build/data/mods/gen7/formats-data.js +1 -1
  29. package/build/data/mods/gen7/formats-data.js.map +1 -1
  30. package/build/data/mods/gen7/moves.js +154 -0
  31. package/build/data/mods/gen7/moves.js.map +1 -1
  32. package/build/data/moves.js +47 -20
  33. package/build/data/moves.js.map +1 -1
  34. package/build/data/pokedex.js +2 -2
  35. package/build/data/rulesets.js +48 -5
  36. package/build/data/rulesets.js.map +1 -1
  37. package/build/data/tags.js +3 -2
  38. package/build/data/tags.js.map +1 -1
  39. package/build/data/text/moves.js +1 -1
  40. package/build/data/text/moves.js.map +1 -1
  41. package/build/sim/battle-actions.js +8 -3
  42. package/build/sim/battle-actions.js.map +1 -1
  43. package/build/sim/exported-global-types.d.ts +1 -0
  44. package/build/sim/global-types.d.ts +1 -0
  45. package/build/sim/pokemon.js +1 -1
  46. package/build/sim/pokemon.js.map +1 -1
  47. package/build/sim/team-validator.js +3 -0
  48. package/build/sim/team-validator.js.map +1 -1
  49. package/config/formats.ts +363 -269
  50. package/data/abilities.ts +3 -1
  51. package/data/aliases.ts +2 -2
  52. package/data/formats-data.ts +91 -92
  53. package/data/items.ts +5 -5
  54. package/data/learnsets.ts +1 -1
  55. package/data/mods/gen1/formats-data.ts +190 -190
  56. package/data/mods/gen1/moves.ts +1 -2
  57. package/data/mods/gen1/scripts.ts +11 -0
  58. package/data/mods/gen2/formats-data.ts +2 -2
  59. package/data/mods/gen3/formats-data.ts +12 -12
  60. package/data/mods/gen4/moves.ts +21 -0
  61. package/data/mods/gen5/formats-data.ts +15 -15
  62. package/data/mods/gen6/formats-data.ts +1 -1
  63. package/data/mods/gen7/formats-data.ts +1 -1
  64. package/data/mods/gen7/moves.ts +150 -0
  65. package/data/moves.ts +46 -20
  66. package/data/pokedex.ts +2 -2
  67. package/data/rulesets.ts +44 -6
  68. package/data/tags.ts +3 -2
  69. package/data/text/moves.ts +1 -1
  70. package/package.json +1 -1
  71. package/sim/battle-actions.ts +8 -3
  72. package/sim/exported-global-types.ts +1 -0
  73. package/sim/global-types.ts +1 -0
  74. package/sim/pokemon.ts +1 -1
  75. package/sim/team-validator.ts +3 -0
@@ -80,7 +80,10 @@ exports.Formats = [
80
80
  ],
81
81
  mod: 'gen8',
82
82
  ruleset: ['Standard', 'Dynamax Clause'],
83
- banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass'],
83
+ banlist: [
84
+ 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
85
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
86
+ ],
84
87
  },
85
88
  {
86
89
  name: "[Gen 8] OU (Blitz)",
@@ -190,7 +193,7 @@ exports.Formats = [
190
193
  'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi',
191
194
  'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mew', 'Mewtwo', 'Mimikyu', 'Necrozma-Dawn-Wings',
192
195
  'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye', 'Snorlax', 'Solgaleo', 'Victini', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
193
- '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',
194
197
  ],
195
198
  },
196
199
  {
@@ -228,9 +231,9 @@ exports.Formats = [
228
231
  ruleset: ['[Gen 8] LC'],
229
232
  banlist: [
230
233
  // LC OU
231
- 'Abra', 'Archen', 'Carvanha', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey', 'Koffing',
232
- 'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard', 'Ponyta',
233
- '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',
234
237
  // LC UUBL
235
238
  'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
236
239
  ],
@@ -265,14 +268,25 @@ exports.Formats = [
265
268
  restricted: ['Restricted Legendary'],
266
269
  },
267
270
  {
268
- name: "[Gen 8] Battle Stadium Singles Series 9",
271
+ name: "[Gen 8] Battle Stadium Singles Series 12",
272
+ mod: 'gen8',
273
+ searchShow: false,
274
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit Two Restricted'],
275
+ restricted: ['Restricted Legendary'],
276
+ },
277
+ {
278
+ name: "[Gen 8] Test Your Luck!",
269
279
  threads: [
270
- `&bullet; <a href="https://www.smogon.com/forums/threads/3679374/">BSS Discussion</a>`,
271
- `&bullet; <a href="https://www.smogon.com/forums/threads/3672698/">BSS Viability Rankings</a>`,
280
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695144/">Test Your Luck! Discussion</a>`,
272
281
  ],
273
282
  mod: 'gen8',
274
- searchShow: false,
275
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
283
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Min Source Gen = 8'],
284
+ banlist: ['Azelf', 'Mesprit', 'Uxie'],
285
+ onValidateSet(set, format) {
286
+ if (set.moves.length !== 1 || this.dex.moves.get(set.moves[0]).id !== 'metronome') {
287
+ return [`${set.name || set.species} has illegal moves.`, `(${format.name} only allows the move Metronome)`];
288
+ }
289
+ },
276
290
  },
277
291
  {
278
292
  name: "[Gen 8] Custom Game",
@@ -338,6 +352,13 @@ exports.Formats = [
338
352
  ruleset: ['Standard Doubles', 'Little Cup', 'Dynamax Clause', 'Swagger Clause', 'Sleep Clause Mod'],
339
353
  banlist: ['Corsola-Galar', 'Cutiefly', 'Ponyta-Base', 'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Vulpix', 'Vulpix-Alola'],
340
354
  },
355
+ {
356
+ name: "[Gen 8] VGC 2022",
357
+ mod: 'gen8',
358
+ gameType: 'doubles',
359
+ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit Two Restricted'],
360
+ restricted: ['Restricted Legendary'],
361
+ },
341
362
  {
342
363
  name: "[Gen 8] VGC 2021 Series 11",
343
364
  threads: [
@@ -350,22 +371,6 @@ exports.Formats = [
350
371
  ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit One Restricted'],
351
372
  restricted: ['Restricted Legendary'],
352
373
  },
353
- {
354
- name: "[Gen 8] Tiny Tourney",
355
- threads: [
356
- `&bullet; <a href="https://www.smogon.com/forums/threads/3694047/">Tiny Tourney Metagame Discussion</a>`,
357
- ],
358
- mod: 'gen8',
359
- gameType: 'doubles',
360
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
361
- onValidateSet(set) {
362
- const species = this.dex.species.get(set.species);
363
- if (!species.nfe || species.prevo)
364
- return [`Non-first-stage Pok\u00e9mon cannot be used in Tiny Tourney.`];
365
- if (species.heightm > 1)
366
- return [`${species.name} is too tall to be used in Tiny Tourney.`];
367
- },
368
- },
369
374
  {
370
375
  name: "[Gen 8] VGC 2021 Series 9",
371
376
  mod: 'gen8',
@@ -471,7 +476,8 @@ exports.Formats = [
471
476
  'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
472
477
  'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Tornadus-Therian',
473
478
  'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete',
474
- 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Baton Pass',
479
+ 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Leppa Berry',
480
+ 'Razor Fang', 'Quick Claw', 'Baton Pass',
475
481
  ],
476
482
  },
477
483
  {
@@ -485,11 +491,10 @@ exports.Formats = [
485
491
  ruleset: ['[Gen 8] National Dex'],
486
492
  banlist: [
487
493
  // National Dex OU
488
- 'Blaziken', 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega',
489
- 'Excadrill', 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian',
490
- 'Lopunny-Mega', 'Magnezone', 'Mawile-Mega', 'Medicham-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior',
491
- 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini', 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona',
492
- 'Weavile', 'Zapdos-Base',
494
+ 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega', 'Excadrill',
495
+ 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian', 'Lopunny-Mega',
496
+ 'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
497
+ 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
493
498
  'ND UUBL',
494
499
  'Drizzle', 'Drought',
495
500
  // Slowbronite is banned so it doesn't validate on Galarian Slowbro
@@ -497,10 +502,12 @@ exports.Formats = [
497
502
  ],
498
503
  // Used to distinguish UU from below UU in the client
499
504
  restricted: [
500
- 'Absol-Mega', 'Aegislash', 'Alomomola', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Bisharp', 'Breloom', 'Celesteela',
501
- 'Donphan', 'Dragonite', 'Hippowdon', 'Infernape', 'Keldeo', 'Krookodile', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mew',
502
- 'Moltres-Base', 'Porygon2', 'Regieleki', 'Rotom-Heat', 'Rotom-Wash', 'Scizor', 'Skarmory', 'Slowking', 'Slowking-Galar',
503
- 'Swampert-Base', 'Tangrowth', 'Umbreon', 'Urshifu-Rapid-Strike',
505
+ 'Aegislash', 'Alakazam-Base', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Blaziken-Base', 'Breloom', 'Celesteela',
506
+ 'Chandelure', 'Donphan', 'Dracozolt', 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape',
507
+ 'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base',
508
+ 'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee', 'Rotom-Heat', 'Rotom-Wash', 'Salamence',
509
+ 'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base', 'Umbreon',
510
+ 'Urshifu-Rapid-Strike',
504
511
  ],
505
512
  },
506
513
  {
@@ -536,34 +543,62 @@ exports.Formats = [
536
543
  section: "Pet Mods",
537
544
  },
538
545
  {
539
- name: "[Gen 8] Fusion Evolution UU",
546
+ name: "[Gen 8] Alternatium",
547
+ desc: `A metagame made up of only Pok&eacute;mon with alternate forms, with all of them being separate and unique.`,
540
548
  threads: [
541
- `&bullet; <a href="https://www.smogon.com/forums/threads/3674163/">Fusion Evolution UU</a>`,
542
- ],
543
- mod: "fusionevolutionuu",
544
- searchShow: false,
545
- ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'],
546
- banlist: [
547
- 'All Pokemon', 'Lopunnite', 'Tapu Lop-Mega', 'Red Orb', 'Grousle-Primal',
549
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3683767/">Alternatium</a>`,
550
+ `&bullet; <a href="https://docs.google.com/spreadsheets/d/1bvvkPg1CrUBJFJJeuwkts8elfJcEcahGOoHm-vGBXOI/edit?usp=sharing">Spreadsheet</a>`,
548
551
  ],
552
+ mod: 'alternatium',
553
+ ruleset: ['Standard NatDex', 'Z-Move Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
554
+ banlist: ['All Pokemon', 'Past'],
549
555
  unbanlist: [
550
- 'Volquag', 'Toxalure', 'Kingtsar', 'Tanette', 'Slowton',
551
- 'Flaant', 'Umbat', 'Chomplim', 'Chomplim-Mega', 'Xotalion', 'Miemie', 'Dusking', 'Jelliswine',
552
- 'Pigapult', 'Lycanserker-Dusk', 'Tapu Lop', 'Dragontler', 'Eternabat',
553
- 'Grimmlurk', 'Manicuno-Galar', 'Yacian-Crowned', 'Cryogolem', 'Stoudrago',
554
- 'Grousle', 'Dongoro', 'Slurpum',
555
- 'Corveot', 'Corveot-Mega', 'Igglyzenta-Crowned', 'Arctres-Galar', 'Garborude', 'Noicity', 'Ferros',
556
- 'Landmaldo-Therian', 'Tentoxys-Defense', 'Strikados-Galar', 'Hooporant',
557
- 'Silvino-Bug', 'Silvino-Dark', 'Silvino-Dragon', 'Silvino-Electric', 'Silvino-Fairy', 'Silvino-Fighting',
558
- 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice',
559
- 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino',
560
- 'Silvino-Bug-Mega', 'Silvino-Dark-Mega', 'Silvino-Dragon-Mega',
561
- 'Silvino-Electric-Mega', 'Silvino-Fairy-Mega', 'Silvino-Fighting-Mega',
562
- 'Silvino-Fire-Mega', 'Silvino-Flying-Mega', 'Silvino-Ghost-Mega',
563
- 'Silvino-Grass-Mega', 'Silvino-Ground-Mega', 'Silvino-Ice-Mega',
564
- 'Silvino-Poison-Mega', 'Silvino-Psychic-Mega', 'Silvino-Rock-Mega',
565
- 'Silvino-Steel-Mega', 'Silvino-Water-Mega', 'Silvino-Mega',
556
+ 'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost',
557
+ 'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star',
558
+ 'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen',
559
+ 'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio',
560
+ 'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal',
561
+ 'Vivillon-Fancy', 'Vivillon-Spirit', 'Vivillon-Combat', 'Genesect', 'Genesect-Password', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre',
562
+ 'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow',
563
+ 'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Catastroform', 'Castform-Firestorm',
564
+ 'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo',
565
+ 'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer',
566
+ 'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath',
567
+ ],
568
+ onValidateTeam(team, format) {
569
+ const speciesTable = new Set();
570
+ for (const set of team) {
571
+ const species = this.dex.species.get(set.species);
572
+ if (speciesTable.has(species.id)) {
573
+ return [
574
+ `You are limited to one of each Pokémon by Species Clause (except for different formes).`,
575
+ `(You have more than one ${species.id}.)`,
576
+ ];
577
+ }
578
+ speciesTable.add(species.id);
579
+ }
580
+ },
581
+ },
582
+ {
583
+ name: "[Gen 8] Random Dex",
584
+ desc: `A micrometagame project consisting of 80 randomly selected fully-evolved Pok&eacute;mon.`,
585
+ threads: [
586
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3690182/">Random Dex</a>`,
566
587
  ],
588
+ mod: 'randomdex',
589
+ ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
590
+ banlist: ['All Pokemon', 'Past', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Bright Powder', 'Lax Incense', 'King\'s Rock',
591
+ 'Razor Fang', 'Kangaskhanite', 'Medichamite'],
592
+ unbanlist: ["Aerodactyl", "Arbok", "Arcanine", "Archeops", "Articuno-Galar", "Banette", "Bellossom", "Bibarel", "Boltund",
593
+ "Charizard", "Chimecho", "Clawitzer", "Coalossal", "Copperajah", "Cradily", "Cursola", "Dedenne", "Dragalge", "Drampa",
594
+ "Drednaw", "Druddigon", "Dugtrio", "Espeon", "Excadrill", "Feraligatr", "Flareon", "Florges", "Froslass", "Frosmoth",
595
+ "Girafarig", "Glaceon", "Glalie", "Golurk", "Grimmsnarl", "Hippowdon", "Hitmonchan", "Hitmonlee", "Hitmontop", "Houndoom",
596
+ "Indeedee", "Infernape", "Inteleon", "Jolteon", "Kangaskhan", "Klefki", "Komala", "Kyurem", "Landorus", "Landorus-Therian",
597
+ "Latias", "Leafeon", "Linoone", "Luvdisc", "Malamar", "Manectric", "Moltres", "Moltres-Galar", "Mr. Mime", "Obstagoon",
598
+ "Octillery", "Omastar", "Palossand", "Probopass", "Pyukumuku", "Regice", "Relicanth", "Runerigus", "Salazzle",
599
+ "Sandslash-Alola", "Sawk", "Sirfetch'd", "Spectrier", "Spinda", "Stakataka", "Stoutland", "Stunfisk-Galar", "Swellow",
600
+ "Sylveon", "Tapu Bulu", "Tapu Fini", "Tauros", "Togedemaru", "Tyrantrum", "Umbreon", "Vaporeon", "Venusaur", "Vileplume",
601
+ "Volbeat", "Whimsicott", "Zarude"],
567
602
  },
568
603
  {
569
604
  name: "[Gen 6] NEXT OU",
@@ -583,36 +618,81 @@ exports.Formats = [
583
618
  column: 2,
584
619
  },
585
620
  {
586
- name: "[Gen 8] Revelationmons",
587
- 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).`,
621
+ name: "[Gen 8] Pokebilities",
622
+ desc: `Pok&eacute;mon have all of their released abilities simultaneously.`,
588
623
  threads: [
589
- `&bullet; <a href="https://www.smogon.com/forums/threads/3692297/">Revelationmons</a>`,
624
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3679692/">Pok&eacute;bilities</a>`,
590
625
  ],
591
- mod: 'gen8',
592
- ruleset: ['Standard', 'Dynamax Clause', 'Revelationmons Mod', 'Sleep Moves Clause'],
626
+ mod: 'pokebilities',
627
+ ruleset: ['Standard', 'Dynamax Clause'],
593
628
  banlist: [
594
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult', 'Eternatus', 'Genesect',
595
- 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia',
596
- 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia',
597
- 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
598
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag',
599
- 'King\'s Rock', 'Baton Pass',
629
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Eternatus', 'Excadrill',
630
+ 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base',
631
+ 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
632
+ 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
633
+ 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zygarde-Base', 'Power Construct', 'Baton Pass',
634
+ // Moody users
635
+ 'Glalie', 'Octillery', 'Remoraid', 'Snorunt',
636
+ // Shadow Tag/Arena Trap
637
+ 'Diglett-Base', 'Dugtrio-Base', 'Gothita', 'Gothitelle', 'Gothorita', 'Trapinch', 'Wobbuffet', 'Wynaut',
600
638
  ],
601
- restricted: ['Bolt Beak', 'U-turn', 'Volt Switch'],
639
+ onBegin() {
640
+ for (const pokemon of this.getAllPokemon()) {
641
+ if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) {
642
+ continue;
643
+ }
644
+ pokemon.m.innates = Object.keys(pokemon.species.abilities)
645
+ .filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
646
+ .map(key => this.toID(pokemon.species.abilities[key]))
647
+ .filter(ability => ability !== pokemon.ability);
648
+ }
649
+ },
650
+ onSwitchInPriority: 2,
651
+ onSwitchIn(pokemon) {
652
+ if (pokemon.m.innates) {
653
+ for (const innate of pokemon.m.innates) {
654
+ pokemon.addVolatile("ability:" + innate, pokemon);
655
+ }
656
+ }
657
+ },
658
+ onAfterMega(pokemon) {
659
+ for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
660
+ pokemon.removeVolatile(innate);
661
+ }
662
+ pokemon.m.innates = undefined;
663
+ },
602
664
  },
603
665
  {
604
- name: "[Gen 8 BDSP] Balanced Hackmons",
605
- desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
666
+ name: "[Gen 8] Camomons",
667
+ desc: `Pok&eacute;mon change type to match their first two moves.`,
606
668
  threads: [
607
- `&bullet; <a href="https://www.smogon.com/forums/posts/9043074">BDSP Balanced Hackmons</a>`,
669
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3656413/">Camomons</a>`,
608
670
  ],
609
- mod: 'gen8bdsp',
610
- ruleset: ['-Nonexistent', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Moves Clause', 'Endless Battle Clause'],
671
+ mod: 'gen8',
672
+ // searchShow: false,
673
+ 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'],
611
674
  banlist: [
612
- 'Shedinja', 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Intrepid Sword',
613
- 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble',
614
- 'Wonder Guard', 'Comatose + Sleep Talk', 'Shell Smash',
675
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin',
676
+ 'Groudon', 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia',
677
+ 'Lunala', 'Marshadow', 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
678
+ 'Reuniclus', 'Shedinja', 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Volcarona', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
679
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
615
680
  ],
681
+ onModifySpeciesPriority: 2,
682
+ onModifySpecies(species, target, source, effect) {
683
+ if (!target)
684
+ return; // Chat command
685
+ if (effect && ['imposter', 'transform'].includes(effect.id))
686
+ return;
687
+ const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))];
688
+ return { ...species, types: types };
689
+ },
690
+ onSwitchIn(pokemon) {
691
+ this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
692
+ },
693
+ onAfterMega(pokemon) {
694
+ this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
695
+ },
616
696
  },
617
697
  // Other Metagames
618
698
  ///////////////////////////////////////////////////////////////////
@@ -656,6 +736,34 @@ exports.Formats = [
656
736
  }
657
737
  },
658
738
  },
739
+ {
740
+ name: "[Gen 8] Almost Any Ability",
741
+ desc: `Pok&eacute;mon have access to almost any ability.`,
742
+ threads: [
743
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
744
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
745
+ ],
746
+ mod: 'gen8',
747
+ 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'],
748
+ banlist: [
749
+ 'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina',
750
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
751
+ 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja',
752
+ 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom',
753
+ 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter',
754
+ 'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power',
755
+ 'Shadow Tag', 'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
756
+ ],
757
+ onValidateSet(set) {
758
+ // Temporary fix until battle-only is implemented properly
759
+ if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
760
+ return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
761
+ }
762
+ if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
763
+ return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
764
+ }
765
+ },
766
+ },
659
767
  {
660
768
  name: "[Gen 8] Mix and Mega",
661
769
  desc: `Mega evolve any Pok&eacute;mon with any mega stone and no limit. Boosts based on mega evolution from gen 7.`,
@@ -718,34 +826,6 @@ exports.Formats = [
718
826
  }
719
827
  },
720
828
  },
721
- {
722
- name: "[Gen 8] Almost Any Ability",
723
- desc: `Pok&eacute;mon have access to almost any ability.`,
724
- threads: [
725
- `&bullet; <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
726
- `&bullet; <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
727
- ],
728
- mod: 'gen8',
729
- 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'],
730
- banlist: [
731
- 'Archeops', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina', 'Giratina-Origin',
732
- 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
733
- 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja', 'Solgaleo', 'Spectrier',
734
- 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zeraora', 'Zygarde-Base',
735
- 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Intrepid Sword',
736
- 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout',
737
- 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
738
- ],
739
- onValidateSet(set) {
740
- // Temporary fix until battle-only is implemented properly
741
- if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
742
- return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
743
- }
744
- if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
745
- return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
746
- }
747
- },
748
- },
749
829
  {
750
830
  name: "[Gen 8] STABmons",
751
831
  desc: `Pok&eacute;mon can use any move of their typing, in addition to the moves they can normally learn.`,
@@ -781,6 +861,63 @@ exports.Formats = [
781
861
  'Rhydon', 'Scyther', 'Sneasel', 'Type: Null', 'Vulpix-Base', 'Arena Trap', 'Shadow Tag', 'Baton Pass',
782
862
  ],
783
863
  },
864
+ {
865
+ name: "[Gen 8] Godly Gift",
866
+ 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.`,
867
+ threads: [
868
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
869
+ ],
870
+ mod: 'gen8',
871
+ ruleset: ['Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
872
+ banlist: [
873
+ 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
874
+ 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
875
+ 'Shadow Tag', 'Baton Pass',
876
+ ],
877
+ onValidateTeam(team) {
878
+ const gods = new Set();
879
+ for (const set of team) {
880
+ let species = this.dex.species.get(set.species);
881
+ if (typeof species.battleOnly === 'string')
882
+ species = this.dex.species.get(species.battleOnly);
883
+ if (['ag', 'uber'].includes(this.toID(species.tier)) || this.toID(set.ability) === 'powerconstruct') {
884
+ gods.add(species.name);
885
+ }
886
+ }
887
+ if (gods.size > 1) {
888
+ return [`You have too many Gods.`, `(${Array.from(gods).join(', ')} are Gods.)`];
889
+ }
890
+ },
891
+ onModifySpeciesPriority: 3,
892
+ onModifySpecies(species, target, source) {
893
+ if (source || !target?.side)
894
+ return;
895
+ const god = target.side.team.find(set => {
896
+ let godSpecies = this.dex.species.get(set.species);
897
+ const validator = this.dex.formats.getRuleTable(this.dex.formats.get(`gen${this.gen}ou`));
898
+ if (this.toID(set.ability) === 'powerconstruct') {
899
+ return true;
900
+ }
901
+ if (set.item) {
902
+ const item = this.dex.items.get(set.item);
903
+ if (item.megaEvolves === set.species)
904
+ godSpecies = this.dex.species.get(item.megaStone);
905
+ }
906
+ const isBanned = validator.isBannedSpecies(godSpecies);
907
+ return isBanned;
908
+ }) || target.side.team[0];
909
+ const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
910
+ const newSpecies = this.dex.deepClone(species);
911
+ let godSpecies = this.dex.species.get(god.species);
912
+ if (godSpecies.forme === 'Crowned') {
913
+ godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
914
+ }
915
+ newSpecies.bst -= newSpecies.baseStats[stat];
916
+ newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
917
+ newSpecies.bst += newSpecies.baseStats[stat];
918
+ return newSpecies;
919
+ },
920
+ },
784
921
  {
785
922
  name: "[Gen 8] Free-For-All",
786
923
  threads: [
@@ -821,7 +958,10 @@ exports.Formats = [
821
958
  ],
822
959
  mod: 'gen8bdsp',
823
960
  ruleset: ['Standard'],
824
- banlist: ['Uber', 'Arena Trap', 'Drizzle', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Baton Pass'],
961
+ banlist: [
962
+ 'Uber', 'Arena Trap', 'Drizzle', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
963
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang', 'Baton Pass',
964
+ ],
825
965
  },
826
966
  {
827
967
  name: "[Gen 8 BDSP] Ubers",
@@ -841,6 +981,22 @@ exports.Formats = [
841
981
  ruleset: ['[Gen 8 BDSP] OU'],
842
982
  banlist: ['OU', 'UUBL'],
843
983
  },
984
+ {
985
+ name: "[Gen 8 BDSP] RU",
986
+ threads: [
987
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695563/">BDSP RU</a>`,
988
+ ],
989
+ mod: 'gen8bdsp',
990
+ ruleset: ['[Gen 8 BDSP] UU'],
991
+ banlist: ['UU', 'RUBL'],
992
+ },
993
+ {
994
+ name: "[Gen 8 BDSP] LC",
995
+ mod: 'gen8bdsp',
996
+ searchShow: false,
997
+ ruleset: ['Little Cup', 'Standard'],
998
+ banlist: ['Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Yanma', 'Baton Pass'],
999
+ },
844
1000
  {
845
1001
  name: "[Gen 8 BDSP] Monotype",
846
1002
  threads: [
@@ -862,6 +1018,14 @@ exports.Formats = [
862
1018
  searchShow: false,
863
1019
  ruleset: ['[Gen 8 BDSP] OU', '+CAP'],
864
1020
  },
1021
+ {
1022
+ name: "[Gen 8 BDSP] 3v3 Singles",
1023
+ threads: [
1024
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3695092/">BDSP 3v3 Singles</a>`,
1025
+ ],
1026
+ mod: 'gen8bdsp',
1027
+ ruleset: ['Flat Rules', 'Min Source Gen = 8'],
1028
+ },
865
1029
  {
866
1030
  name: "[Gen 8 BDSP] Doubles OU",
867
1031
  threads: [
@@ -895,96 +1059,6 @@ exports.Formats = [
895
1059
  section: "Challengeable OMs",
896
1060
  column: 2,
897
1061
  },
898
- {
899
- name: "[Gen 8] Camomons",
900
- desc: `Pok&eacute;mon change type to match their first two moves.`,
901
- threads: [
902
- `&bullet; <a href="https://www.smogon.com/forums/threads/3656413/">Camomons</a>`,
903
- ],
904
- mod: 'gen8',
905
- searchShow: false,
906
- 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'],
907
- banlist: [
908
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon',
909
- 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia', 'Lunala', 'Marshadow',
910
- 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Reuniclus', 'Shedinja',
911
- 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom',
912
- 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
913
- ],
914
- onModifySpeciesPriority: 2,
915
- onModifySpecies(species, target, source, effect) {
916
- if (!target)
917
- return; // Chat command
918
- if (effect && ['imposter', 'transform'].includes(effect.id))
919
- return;
920
- const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))];
921
- return { ...species, types: types };
922
- },
923
- onSwitchIn(pokemon) {
924
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
925
- },
926
- onAfterMega(pokemon) {
927
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
928
- },
929
- },
930
- {
931
- name: "[Gen 8] Godly Gift",
932
- 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.`,
933
- threads: [
934
- `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
935
- ],
936
- mod: 'gen8',
937
- searchShow: false,
938
- ruleset: ['Standard', 'Dynamax Clause'],
939
- banlist: [
940
- 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
941
- 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
942
- 'Shadow Tag', 'Baton Pass',
943
- ],
944
- onValidateTeam(team) {
945
- const gods = new Set();
946
- for (const set of team) {
947
- let species = this.dex.species.get(set.species);
948
- if (typeof species.battleOnly === 'string')
949
- species = this.dex.species.get(species.battleOnly);
950
- if (['ag', 'uber'].includes(this.toID(species.tier)) || this.toID(set.ability) === 'powerconstruct') {
951
- gods.add(species.name);
952
- }
953
- }
954
- if (gods.size > 1) {
955
- return [`You have too many Gods.`, `(${Array.from(gods).join(', ')} are Gods.)`];
956
- }
957
- },
958
- onModifySpeciesPriority: 3,
959
- onModifySpecies(species, target, source) {
960
- if (source || !target?.side)
961
- return;
962
- const god = target.side.team.find(set => {
963
- let godSpecies = this.dex.species.get(set.species);
964
- const validator = this.dex.formats.getRuleTable(this.dex.formats.get(`gen${this.gen}ou`));
965
- if (this.toID(set.ability) === 'powerconstruct') {
966
- return true;
967
- }
968
- if (set.item) {
969
- const item = this.dex.items.get(set.item);
970
- if (item.megaEvolves === set.species)
971
- godSpecies = this.dex.species.get(item.megaStone);
972
- }
973
- const isBanned = validator.isBannedSpecies(godSpecies);
974
- return isBanned;
975
- }) || target.side.team[0];
976
- const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
977
- const newSpecies = this.dex.deepClone(species);
978
- let godSpecies = this.dex.species.get(god.species);
979
- if (godSpecies.forme === 'Crowned') {
980
- godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
981
- }
982
- newSpecies.bst -= newSpecies.baseStats[stat];
983
- newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
984
- newSpecies.bst += newSpecies.baseStats[stat];
985
- return newSpecies;
986
- },
987
- },
988
1062
  {
989
1063
  name: "[Gen 8] Inheritance",
990
1064
  desc: `Pok&eacute;mon may use the ability and moves of another, as long as they forfeit their own learnset.`,
@@ -1990,47 +2064,37 @@ exports.Formats = [
1990
2064
  column: 3,
1991
2065
  },
1992
2066
  {
1993
- name: "[Gen 1] UU",
1994
- threads: [
1995
- `&bullet; <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
1996
- `&bullet; <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
1997
- ],
1998
- mod: 'gen1',
2067
+ name: "[Gen 2] UU",
2068
+ threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3576710/">GSC UU</a>`],
2069
+ mod: 'gen2',
1999
2070
  // searchShow: false,
2000
- ruleset: ['[Gen 1] OU'],
2071
+ ruleset: ['[Gen 2] OU'],
2001
2072
  banlist: ['OU', 'UUBL'],
2002
2073
  },
2003
2074
  {
2004
- name: "[Gen 6] 1v1",
2005
- desc: `Bring three Pok&eacute;mon to Team Preview and choose one to battle.`,
2075
+ name: "[Gen 5] NU",
2006
2076
  threads: [
2007
- `&bullet; <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
2077
+ `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2078
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
2008
2079
  ],
2009
- mod: 'gen6',
2080
+ mod: 'gen5',
2010
2081
  // searchShow: false,
2011
- ruleset: [
2012
- 'Max Team Size = 3', 'Picked Team Size = 1',
2013
- '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',
2014
- ],
2015
- banlist: [
2016
- 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
2017
- 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
2018
- 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
2019
- 'Focus Sash', 'Soul Dew', 'Perish Song',
2020
- ],
2082
+ ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
2083
+ banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
2021
2084
  },
2022
2085
  {
2023
- name: "[Gen 5] Doubles OU",
2086
+ name: "[Gen 5] LC",
2024
2087
  threads: [
2025
- `&bullet; <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
2026
- `&bullet; <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
2027
- `&bullet; <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
2088
+ `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2089
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Rankings</a>`,
2028
2090
  ],
2029
2091
  mod: 'gen5',
2030
- gameType: 'doubles',
2031
2092
  // searchShow: false,
2032
- ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
2033
- banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
2093
+ ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
2094
+ banlist: [
2095
+ 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
2096
+ 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
2097
+ ],
2034
2098
  },
2035
2099
  // Past Gens OU
2036
2100
  ///////////////////////////////////////////////////////////////////
@@ -2088,8 +2152,8 @@ exports.Formats = [
2088
2152
  `&bullet; <a href="https://www.smogon.com/forums/threads/3503019/">ADV OU Viability Rankings</a>`,
2089
2153
  ],
2090
2154
  mod: 'gen3',
2091
- ruleset: ['Standard', '3 Baton Pass Clause'],
2092
- banlist: ['Uber', 'Mr. Mime', 'Smeargle + Baton Pass', 'Sand Veil'],
2155
+ ruleset: ['Standard', 'One Boost Passer Clause'],
2156
+ banlist: ['Uber', 'Sand Veil', 'Assist', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'],
2093
2157
  },
2094
2158
  {
2095
2159
  name: "[Gen 2] OU",
@@ -2233,6 +2297,21 @@ exports.Formats = [
2233
2297
  mod: 'gen6',
2234
2298
  ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
2235
2299
  },
2300
+ {
2301
+ name: "[Gen 5] ZU",
2302
+ threads: [
2303
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8034680/">BW2 ZU</a>`,
2304
+ ],
2305
+ mod: 'gen5',
2306
+ ruleset: ['[Gen 5] PU'],
2307
+ banlist: [
2308
+ 'Audino', 'Banette', 'Beheeyem', 'Bronzor', 'Dodrio', 'Duosion', 'Dwebble', 'Ferroseed', 'Fraxure', 'Gabite', 'Golduck', 'Glalie',
2309
+ 'Huntail', 'Jumpluff', 'Klang', 'Krokorok', 'Machoke', 'Mantine', 'Maractus', 'Marowak', 'Mawile', 'Monferno', 'Murkrow', 'Natu',
2310
+ 'Omanyte', 'Purugly', 'Rampardos', 'Rapidash', 'Regigigas', 'Relicanth', 'Scraggy', 'Shiftry', 'Sneasel', 'Simisage', 'Stoutland',
2311
+ 'Stunfisk', 'Swanna', 'Swoobat', 'Tentacool', 'Torterra', 'Trubbish', 'Ursaring', 'Victreebel', 'Vileplume', 'Volbeat', 'Whirlipede',
2312
+ 'Wynaut', 'Zebstrika', 'Zweilous', 'Baton Pass',
2313
+ ],
2314
+ },
2236
2315
  // US/UM Singles
2237
2316
  ///////////////////////////////////////////////////////////////////
2238
2317
  {
@@ -2617,6 +2696,25 @@ exports.Formats = [
2617
2696
  'Soul Dew', 'Baton Pass',
2618
2697
  ],
2619
2698
  },
2699
+ {
2700
+ name: "[Gen 6] 1v1",
2701
+ desc: `Bring three Pok&eacute;mon to Team Preview and choose one to battle.`,
2702
+ threads: [
2703
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
2704
+ ],
2705
+ mod: 'gen6',
2706
+ searchShow: false,
2707
+ ruleset: [
2708
+ 'Max Team Size = 3', 'Picked Team Size = 1',
2709
+ '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',
2710
+ ],
2711
+ banlist: [
2712
+ 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
2713
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
2714
+ 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
2715
+ 'Focus Sash', 'Soul Dew', 'Perish Song',
2716
+ ],
2717
+ },
2620
2718
  {
2621
2719
  name: "[Gen 6] Anything Goes",
2622
2720
  threads: [
@@ -2637,7 +2735,7 @@ exports.Formats = [
2637
2735
  mod: 'gen6',
2638
2736
  searchShow: false,
2639
2737
  ruleset: ['[Gen 6] OU', '+CAP'],
2640
- banlist: ['Aurumoth', 'Cawmodore'],
2738
+ banlist: ['Aurumoth', 'Cawmodore', 'Crucibelle-Mega'],
2641
2739
  },
2642
2740
  {
2643
2741
  name: "[Gen 6] Battle Spot Singles",
@@ -2796,17 +2894,6 @@ exports.Formats = [
2796
2894
  banlist: ['UU', 'RUBL', 'Shadow Tag', 'Shell Smash + Baton Pass'],
2797
2895
  unbanlist: ['Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
2798
2896
  },
2799
- {
2800
- name: "[Gen 5] NU",
2801
- threads: [
2802
- `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2803
- `&bullet; <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
2804
- ],
2805
- mod: 'gen5',
2806
- searchShow: false,
2807
- ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
2808
- banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
2809
- },
2810
2897
  {
2811
2898
  name: "[Gen 5] PU",
2812
2899
  threads: [
@@ -2817,20 +2904,6 @@ exports.Formats = [
2817
2904
  ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'],
2818
2905
  banlist: ['NU', 'Combusken', 'Gothorita', 'Linoone', 'Riolu', 'Rotom-Frost', 'Simipour', 'Throh', 'Vigoroth'],
2819
2906
  },
2820
- {
2821
- name: "[Gen 5] LC",
2822
- threads: [
2823
- `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2824
- `&bullet; <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Rankings</a>`,
2825
- ],
2826
- mod: 'gen5',
2827
- searchShow: false,
2828
- ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
2829
- banlist: [
2830
- 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
2831
- 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
2832
- ],
2833
- },
2834
2907
  {
2835
2908
  name: "[Gen 5] Monotype",
2836
2909
  desc: `All the Pok&eacute;mon on a team must share a type.`,
@@ -2851,7 +2924,7 @@ exports.Formats = [
2851
2924
  searchShow: false,
2852
2925
  ruleset: [
2853
2926
  'Picked Team Size = 1', 'Max Team Size = 3',
2854
- 'Standard', 'Baton Pass Clause', 'Swagger Clause',
2927
+ 'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Accuracy Moves Clause',
2855
2928
  ],
2856
2929
  banlist: ['Uber', 'Cottonee', 'Dragonite', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Soul Dew', 'Perish Song'],
2857
2930
  unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
@@ -2878,6 +2951,19 @@ exports.Formats = [
2878
2951
  section: 'B2/W2 Doubles',
2879
2952
  column: 4,
2880
2953
  },
2954
+ {
2955
+ name: "[Gen 5] Doubles OU",
2956
+ threads: [
2957
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
2958
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
2959
+ `&bullet; <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
2960
+ ],
2961
+ mod: 'gen5',
2962
+ gameType: 'doubles',
2963
+ searchShow: false,
2964
+ ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
2965
+ banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
2966
+ },
2881
2967
  {
2882
2968
  name: "[Gen 5] VGC 2013",
2883
2969
  mod: 'gen5',
@@ -3004,7 +3090,7 @@ exports.Formats = [
3004
3090
  'Picked Team Size = 1', 'Max Team Size = 3',
3005
3091
  '[Gen 4] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3006
3092
  ],
3007
- banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
3093
+ banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Shaymin', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
3008
3094
  unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil'],
3009
3095
  },
3010
3096
  {
@@ -3078,7 +3164,7 @@ exports.Formats = [
3078
3164
  ],
3079
3165
  mod: 'gen3',
3080
3166
  searchShow: false,
3081
- ruleset: ['Standard', 'Deoxys Camouflage Clause'],
3167
+ ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
3082
3168
  banlist: ['Wobbuffet + Leftovers'],
3083
3169
  },
3084
3170
  {
@@ -3129,6 +3215,7 @@ exports.Formats = [
3129
3215
  '[Gen 3] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3130
3216
  ],
3131
3217
  banlist: ['Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song', 'Self-Destruct', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw'],
3218
+ unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
3132
3219
  },
3133
3220
  {
3134
3221
  name: "[Gen 3] Custom Game",
@@ -3155,14 +3242,6 @@ exports.Formats = [
3155
3242
  searchShow: false,
3156
3243
  ruleset: ['Standard'],
3157
3244
  },
3158
- {
3159
- name: "[Gen 2] UU",
3160
- threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3576710/">GSC UU</a>`],
3161
- mod: 'gen2',
3162
- searchShow: false,
3163
- ruleset: ['[Gen 2] OU'],
3164
- banlist: ['OU', 'UUBL'],
3165
- },
3166
3245
  {
3167
3246
  name: "[Gen 2] NU",
3168
3247
  threads: [`&bullet; <a href="https://www.smogon.com/forums/threads/3642565/">GSC NU</a>`],
@@ -3223,6 +3302,17 @@ exports.Formats = [
3223
3302
  searchShow: false,
3224
3303
  ruleset: ['Standard'],
3225
3304
  },
3305
+ {
3306
+ name: "[Gen 1] UU",
3307
+ threads: [
3308
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
3309
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
3310
+ ],
3311
+ mod: 'gen1',
3312
+ searchShow: false,
3313
+ ruleset: ['[Gen 1] OU'],
3314
+ banlist: ['OU', 'UUBL'],
3315
+ },
3226
3316
  {
3227
3317
  name: "[Gen 1] NU",
3228
3318
  threads: [