@pkmn/sim 0.5.24 → 0.5.25

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 (54) hide show
  1. package/build/config/formats.js +202 -88
  2. package/build/config/formats.js.map +1 -1
  3. package/build/data/aliases.js +7 -3
  4. package/build/data/aliases.js.map +1 -1
  5. package/build/data/formats-data.js +823 -20
  6. package/build/data/formats-data.js.map +1 -1
  7. package/build/data/learnsets.js +64 -39
  8. package/build/data/learnsets.js.map +1 -1
  9. package/build/data/mods/gen2/moves.js +0 -5
  10. package/build/data/mods/gen2/moves.js.map +1 -1
  11. package/build/data/mods/gen2/rulesets.js +7 -1
  12. package/build/data/mods/gen2/rulesets.js.map +1 -1
  13. package/build/data/mods/gen3/rulesets.js +1 -1
  14. package/build/data/mods/gen3/rulesets.js.map +1 -1
  15. package/build/data/mods/gen4/rulesets.js +1 -1
  16. package/build/data/mods/gen4/rulesets.js.map +1 -1
  17. package/build/data/mods/gen5/rulesets.js +1 -1
  18. package/build/data/mods/gen5/rulesets.js.map +1 -1
  19. package/build/data/mods/gen7/rulesets.js +1 -1
  20. package/build/data/mods/gen7/rulesets.js.map +1 -1
  21. package/build/data/rulesets.js +1 -0
  22. package/build/data/rulesets.js.map +1 -1
  23. package/build/data/tags.js +26 -9
  24. package/build/data/tags.js.map +1 -1
  25. package/build/sim/battle.d.ts +1 -1
  26. package/build/sim/battle.js.map +1 -1
  27. package/build/sim/dex-conditions.d.ts +1 -0
  28. package/build/sim/dex-conditions.js.map +1 -1
  29. package/build/sim/dex-species.d.ts +5 -0
  30. package/build/sim/dex-species.js +11 -3
  31. package/build/sim/dex-species.js.map +1 -1
  32. package/build/sim/exported-global-types.d.ts +2 -0
  33. package/build/sim/global-types.d.ts +2 -0
  34. package/build/sim/team-validator.js +5 -1
  35. package/build/sim/team-validator.js.map +1 -1
  36. package/config/formats.ts +204 -89
  37. package/data/aliases.ts +7 -3
  38. package/data/formats-data.ts +823 -20
  39. package/data/learnsets.ts +64 -39
  40. package/data/mods/gen2/moves.ts +0 -5
  41. package/data/mods/gen2/rulesets.ts +8 -1
  42. package/data/mods/gen3/rulesets.ts +1 -1
  43. package/data/mods/gen4/rulesets.ts +1 -1
  44. package/data/mods/gen5/rulesets.ts +1 -1
  45. package/data/mods/gen7/rulesets.ts +1 -1
  46. package/data/rulesets.ts +1 -0
  47. package/data/tags.ts +27 -9
  48. package/package.json +2 -2
  49. package/sim/battle.ts +1 -1
  50. package/sim/dex-conditions.ts +1 -0
  51. package/sim/dex-species.ts +15 -3
  52. package/sim/exported-global-types.ts +2 -0
  53. package/sim/global-types.ts +2 -0
  54. package/sim/team-validator.ts +6 -1
@@ -263,13 +263,6 @@ exports.Formats = [
263
263
  {
264
264
  name: "[Gen 8] Battle Stadium Singles",
265
265
  mod: 'gen8',
266
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit Two Restricted'],
267
- restricted: ['Restricted Legendary'],
268
- },
269
- {
270
- name: "[Gen 8] Battle Stadium Singles Series 13",
271
- mod: 'gen8',
272
- searchShow: false,
273
266
  ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
274
267
  banlist: ['Eternatus-Eternamax'],
275
268
  unbanlist: ['Mythical', 'Restricted Legendary'],
@@ -364,11 +357,16 @@ exports.Formats = [
364
357
  name: "[Gen 8] Battle Stadium Doubles Series 13",
365
358
  mod: 'gen8',
366
359
  gameType: 'doubles',
367
- searchShow: false,
368
360
  ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer'],
369
361
  banlist: ['Eternatus-Eternamax'],
370
362
  unbanlist: ['Mythical', 'Restricted Legendary'],
371
363
  },
364
+ {
365
+ name: "[Gen 8] Spikemuth Cup",
366
+ mod: 'gen8',
367
+ gameType: 'doubles',
368
+ ruleset: ['Flat Rules', 'Dynamax Clause', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer'],
369
+ },
372
370
  {
373
371
  name: "[Gen 8] VGC 2021",
374
372
  mod: 'gen8',
@@ -467,17 +465,7 @@ exports.Formats = [
467
465
  ],
468
466
  mod: 'gen8',
469
467
  ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
470
- banlist: [
471
- 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
472
- 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
473
- 'Genesect', 'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black',
474
- 'Kyurem-White', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo',
475
- 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
476
- 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
477
- 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody',
478
- 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang',
479
- 'Quick Claw', 'Baton Pass',
480
- ],
468
+ banlist: ['ND Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang', 'Quick Claw', 'Baton Pass'],
481
469
  },
482
470
  {
483
471
  name: "[Gen 8] National Dex UU",
@@ -488,25 +476,17 @@ exports.Formats = [
488
476
  ],
489
477
  mod: 'gen8',
490
478
  ruleset: ['[Gen 8] National Dex'],
491
- banlist: [
492
- // National Dex OU
493
- 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega', 'Excadrill',
494
- 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian', 'Lopunny-Mega',
495
- 'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
496
- 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
497
- 'ND UUBL',
498
- 'Drizzle', 'Drought', 'Light Clay',
499
- // Slowbronite is banned so it doesn't validate on Galarian Slowbro
500
- 'Slowbronite',
501
- ],
502
- // Used to distinguish UU from below UU in the client
503
- restricted: [
504
- 'Aegislash', 'Altaria-Mega', 'Amoonguss', 'Azumarill', 'Beedrill-Mega', 'Breloom', 'Celesteela', 'Chandelure', 'Donphan', 'Dracozolt',
505
- 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape', 'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz',
506
- 'Manectric-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base', 'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee',
507
- 'Rotom-Heat', 'Rotom-Wash', 'Salamence', 'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base',
508
- 'Umbreon', 'Urshifu-Rapid-Strike',
479
+ banlist: ['ND OU', 'ND UUBL', 'Drizzle', 'Drought', 'Light Clay', 'Slowbronite'],
480
+ },
481
+ {
482
+ name: "[Gen 8] National Dex RU",
483
+ threads: [
484
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3691290/">National Dex RU</a>`,
509
485
  ],
486
+ mod: 'gen8',
487
+ searchShow: false,
488
+ ruleset: ['[Gen 8] National Dex UU'],
489
+ banlist: ['ND UU', 'ND RUBL'],
510
490
  },
511
491
  {
512
492
  name: "[Gen 8] National Dex Monotype",
@@ -541,41 +521,57 @@ exports.Formats = [
541
521
  section: "Pet Mods",
542
522
  },
543
523
  {
544
- name: "[Gen 8] Restrictions",
545
- desc: `A metagame made up of brand new Pok&eacute;mon that are made according to various random and non-random restrictions.`,
524
+ name: "[Gen 8] National Dex BH",
525
+ desc: `Balanced Hackmons with National Dex elements mixed in.`,
546
526
  threads: [
547
- `&bullet; <a href="https://www.smogon.com/forums/threads/3673824/">Restrictions</a>`,
548
- `&bullet; <a href="https://docs.google.com/spreadsheets/d/1XsplBqN8njHZJT9cTP_3i3YSFITB9WaVfNOYAbNY75M/edit?usp=sharing">Spreadsheet</a>`,
527
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3658587/">National Dex Balanced Hackmons</a>`,
549
528
  ],
550
- mod: 'restrictions',
551
- ruleset: ['Standard', 'Dynamax Clause'],
552
- banlist: ['All Pokemon', 'Past'],
553
- unbanlist: [
554
- 'Vulcaraptor', 'Parakinesis', 'Serpaint', 'Torgeist', 'Regolite', 'Polbearab', 'Centhorn', 'Donzyxote', 'Scimicobra', 'Folliclawe', 'Afloof', 'Nimbusteed',
555
- 'Aerock', 'Borassa', 'Sharm', 'Nunopod', 'Crypterid', 'Abysseil', 'Faerenheit', 'Spiriteal', 'Zoltanka', 'Flydra', 'Coracrab', 'Quadringo', 'Teslaple',
556
- 'Kapagon', 'Cyknight', 'Dirtoad', 'Crystelf', 'Rancourgar', 'Scalaron', 'Dragraceful', 'Tantrary', 'Modolith', 'Snailord', 'Arbrella', 'Draugelid',
557
- 'Cinnastar', 'Refluse', 'Kelven', 'Kodokai', 'Cindarner', 'Thucotuco', 'Sorree', 'Gembezzle', 'Winterloper', 'Agapest', 'Volvolpa', 'Punduluum', 'Wraithful',
558
- 'Panzarma', 'Krachiten', 'Cellsius', 'Borelem', 'Electangle', 'Orchile', 'Shinodori', 'Fluidrake', 'Potossum', 'Twygdrasill',
529
+ mod: 'gen8',
530
+ ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', '!Obtainable'],
531
+ banlist: [
532
+ // Pokemon
533
+ 'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Cramorant-Gorging', 'Calyrex-Shadow',
534
+ // Abilities
535
+ 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Protean', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard',
536
+ // Items
537
+ 'Gengarite',
538
+ // Moves
539
+ 'Chatter', 'Double Iron Bash', 'Octolock', 'Shell Smash', 'Bolt Beak', 'Belly Drum', 'Electrify', 'Court Change',
540
+ // Other
541
+ 'Comatose + Sleep Talk', 'Imprison + Transform',
559
542
  ],
543
+ onValidateSet(set) {
544
+ if (this.toID(set.ability) === 'intrepidsword' &&
545
+ !this.toID(set.species).startsWith('zacian') && this.toID(set.item) !== 'rustedsword') {
546
+ return [`${set.ability} is banned.`];
547
+ }
548
+ if (set.species === 'Zacian-Crowned' &&
549
+ (this.toID(set.item) !== 'rustedsword' || this.toID(set.ability) !== 'intrepidsword')) {
550
+ return [`${set.species} is banned.`];
551
+ }
552
+ },
553
+ onValidateTeam(team) {
554
+ let arceus = 0;
555
+ for (const set of team) {
556
+ const species = this.dex.species.get(set.species);
557
+ if (species.baseSpecies === "Arceus")
558
+ arceus++;
559
+ }
560
+ if (arceus > 1) {
561
+ return [`You are limited to one Arceus forme.`, `(You have ${arceus} Arceus formes.)`];
562
+ }
563
+ },
560
564
  },
561
565
  {
562
- name: "[Gen 8] Roulettemons Random Battle",
566
+ name: "[Gen 8] JolteMons Random Battle",
567
+ desc: `Pok&eacute;mon, items, abilities, and moves are redesigned for OU, and new items, abilities, and moves are added, all without changing base stats.`,
563
568
  threads: [
564
- `&bullet; <a href="https://www.smogon.com/forums/threads/3649106/">Roulettemons</a>`,
565
- `&bullet; <a href="https://docs.google.com/spreadsheets/d/1EOA1m7JXTq7Zz0ViVI4n6lBppFjVBa4S1GqhAwkPTZQ/edit?usp=sharing">Spreadsheet</a>`,
569
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3694234/">JolteMons</a>`,
570
+ `&bullet; <a href="https://docs.google.com/spreadsheets/d/149ZlQY0bJIAqfWB_233Dvbpqs3pVSHYpIoAQQkwquls/edit?usp=sharing">Spreadsheet</a>`,
566
571
  ],
572
+ mod: 'joltemons',
567
573
  team: 'random',
568
- mod: 'roulettemons',
569
- ruleset: ['Standard NatDex'],
570
- onSwitchIn(pokemon) {
571
- this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
572
- },
573
- onChangeSet(set) {
574
- if (set.species === 'Chillyte-Mega') {
575
- set.species = 'Chillyte';
576
- set.ability = 'Grassy Surge';
577
- }
578
- },
574
+ ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Mega Data Mod', 'Z-Move Clause'],
579
575
  },
580
576
  {
581
577
  name: "[Gen 6] NEXT OU",
@@ -595,32 +591,117 @@ exports.Formats = [
595
591
  column: 2,
596
592
  },
597
593
  {
598
- name: "[Gen 8] Re-Evolution",
599
- desc: `Pok&eacute;mon gain the stat changes they would gain from evolving again.`,
594
+ name: "[Gen 8] Partners in Crime",
595
+ desc: `Doubles-based metagame where both active ally Pok&eacute;mon share abilities and moves.`,
600
596
  threads: [
601
- `&bullet; <a href="https://www.smogon.com/forums/threads/3703643/">Re-Evolution</a>`,
597
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3706080/">Partners in Crime</a>`,
602
598
  ],
603
- mod: 'gen8',
604
- ruleset: ['Standard OMs', 'Re-Evolution Mod', 'Evasion Abilities Clause', 'Sleep Clause Mod'],
599
+ mod: 'partnersincrime',
600
+ gameType: 'doubles',
601
+ // searchShow: false,
602
+ ruleset: ['Standard Doubles', 'Dynamax Clause'],
605
603
  banlist: [
606
- 'Calyrex-Shadow', 'Darmanitan-Galar', 'Gyarados', 'Lunala', 'Milotic', 'Naganadel', 'Solgaleo', 'Slowking-Galar', 'Urshifu-Base',
607
- 'Volcarona', 'Zacian-Crowned', 'Arena Trap', 'Moody', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
604
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin',
605
+ 'Groudon', 'Ho-Oh', 'Jirachi', 'Kyogre', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna',
606
+ 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
607
+ 'Rayquaza', 'Reshiram', 'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
608
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Bolt Beak', 'Fishious Rend', 'Shell Smash',
609
+ 'Emergency Exit', 'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard',
608
610
  ],
611
+ onBeforeSwitchIn(pokemon) {
612
+ pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
613
+ let ngas = false;
614
+ for (const poke of this.getAllActive()) {
615
+ if (this.toID(poke.ability) === 'neutralizinggas') {
616
+ ngas = true;
617
+ break;
618
+ }
619
+ }
620
+ const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
621
+ // Abilities that must be applied before both sides trigger onSwitchIn to correctly
622
+ // handle switch-in ability-to-ability interactions, e.g. Intimidate counters
623
+ const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
624
+ 'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
625
+ 'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
626
+ ];
627
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
628
+ if (ally && ally.ability !== pokemon.ability) {
629
+ if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
630
+ NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
631
+ pokemon.m.innate = 'ability:' + ally.ability;
632
+ delete pokemon.volatiles[pokemon.m.innate];
633
+ if (!ngas || ally.getAbility().isPermanent)
634
+ pokemon.addVolatile(pokemon.m.innate);
635
+ }
636
+ if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
637
+ NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
638
+ ally.m.innate = 'ability:' + pokemon.ability;
639
+ delete ally.volatiles[ally.m.innate];
640
+ if (!ngas || pokemon.getAbility().isPermanent)
641
+ ally.addVolatile(ally.m.innate);
642
+ }
643
+ }
644
+ },
645
+ onSwitchInPriority: 2,
646
+ onSwitchIn(pokemon) {
647
+ let ngas = false;
648
+ for (const poke of this.getAllActive()) {
649
+ if (this.toID(poke.ability) === 'neutralizinggas') {
650
+ ngas = true;
651
+ break;
652
+ }
653
+ }
654
+ const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
655
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
656
+ if (ally && ally.ability !== pokemon.ability) {
657
+ if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
658
+ pokemon.m.innate = 'ability:' + ally.ability;
659
+ delete pokemon.volatiles[pokemon.m.innate];
660
+ if (!ngas || ally.getAbility().isPermanent)
661
+ pokemon.addVolatile(pokemon.m.innate);
662
+ }
663
+ if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
664
+ ally.m.innate = 'ability:' + pokemon.ability;
665
+ delete ally.volatiles[ally.m.innate];
666
+ if (!ngas || pokemon.getAbility().isPermanent)
667
+ ally.addVolatile(ally.m.innate);
668
+ }
669
+ }
670
+ },
671
+ onSwitchOut(pokemon) {
672
+ if (pokemon.m.innate) {
673
+ pokemon.removeVolatile(pokemon.m.innate);
674
+ delete pokemon.m.innate;
675
+ }
676
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
677
+ if (ally && ally.m.innate) {
678
+ ally.removeVolatile(ally.m.innate);
679
+ delete ally.m.innate;
680
+ }
681
+ },
682
+ onFaint(pokemon) {
683
+ if (pokemon.m.innate) {
684
+ pokemon.removeVolatile(pokemon.m.innate);
685
+ delete pokemon.m.innate;
686
+ }
687
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
688
+ if (ally && ally.m.innate) {
689
+ ally.removeVolatile(ally.m.innate);
690
+ delete ally.m.innate;
691
+ }
692
+ },
609
693
  },
610
694
  {
611
- name: "[Gen 8] Category Swap",
612
- desc: `All physical moves become special, and all special moves become physical.`,
695
+ name: "[Gen 8] Chimera 1v1",
696
+ desc: `One Pok&eacute;mon inherits specific traits from your entire 6-mon team, based on their order.`,
613
697
  threads: [
614
- `&bullet; <a href="https://www.smogon.com/forums/threads/3702709/">Category Swap</a>`,
698
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3661215/">Chimera 1v1</a>`,
615
699
  ],
616
700
  mod: 'gen8',
617
- ruleset: ['Standard OMs', 'Category Swap Mod', 'Sleep Clause Mod'],
701
+ ruleset: ['Chimera 1v1 Rule', 'Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
618
702
  banlist: [
619
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Genesect', 'Giratina',
620
- 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala',
621
- 'Magearna', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Nidoking', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
622
- 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody',
623
- 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Draco Meteor', 'Overheat',
703
+ 'Shedinja', 'Huge Power', 'Moody', 'Neutralizing Gas', 'Truant', 'Perish Body', 'Eviolite', 'Focus Sash', 'Leek', 'Light Ball',
704
+ 'Bolt Beak', 'Disable', 'Double Iron Bash', 'Fishious Rend', 'Perish Song', 'Switcheroo', 'Transform', 'Trick',
624
705
  ],
625
706
  },
626
707
  // Other Metagames
@@ -978,6 +1059,16 @@ exports.Formats = [
978
1059
  ruleset: ['Standard Doubles'],
979
1060
  banlist: ['DUber', 'Dark Void'],
980
1061
  },
1062
+ {
1063
+ name: "[Gen 8 BDSP] Battle Festival Doubles",
1064
+ threads: [
1065
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3694269/">Battle Festival Doubles</a>`,
1066
+ ],
1067
+ mod: 'gen8bdsp',
1068
+ gameType: 'doubles',
1069
+ searchShow: false,
1070
+ ruleset: ['Flat Rules', 'Min Source Gen = 8'],
1071
+ },
981
1072
  // Challengeable OMs
982
1073
  ///////////////////////////////////////////////////////////////////
983
1074
  {
@@ -2030,6 +2121,18 @@ exports.Formats = [
2030
2121
  },
2031
2122
  },
2032
2123
  },
2124
+ // Randomized Format Spotlight
2125
+ ///////////////////////////////////////////////////////////////////
2126
+ {
2127
+ section: "Randomized Format Spotlight",
2128
+ column: 2,
2129
+ },
2130
+ {
2131
+ name: "[Gen 3] Challenge Cup",
2132
+ mod: 'gen3',
2133
+ team: 'randomCC',
2134
+ ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
2135
+ },
2033
2136
  // Randomized Metas
2034
2137
  ///////////////////////////////////////////////////////////////////
2035
2138
  {
@@ -2673,8 +2776,7 @@ exports.Formats = [
2673
2776
  'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Kyogre', 'Kyurem-White', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna',
2674
2777
  'Marshadow', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
2675
2778
  'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Tapu Lele', 'Xerneas', 'Yveltal', 'Zekrom', 'Zygarde',
2676
- 'Battle Bond', 'Shadow Tag', 'Bright Powder', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Razor Fang',
2677
- 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
2779
+ 'Battle Bond', 'Shadow Tag', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
2678
2780
  ],
2679
2781
  },
2680
2782
  {
@@ -2962,8 +3064,7 @@ exports.Formats = [
2962
3064
  'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Greninja', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White',
2963
3065
  'Lucario-Mega', 'Lugia', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye-Mega',
2964
3066
  'Salamence-Mega', 'Shaymin-Sky', 'Slowbro-Mega', 'Talonflame', 'Xerneas', 'Yveltal', 'Zekrom',
2965
- 'Shadow Tag', 'Bright Powder', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Razor Fang', 'Smooth Rock',
2966
- 'Soul Dew', 'Baton Pass',
3067
+ 'Shadow Tag', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Soul Dew', 'Baton Pass',
2967
3068
  ],
2968
3069
  },
2969
3070
  {
@@ -3222,7 +3323,7 @@ exports.Formats = [
3222
3323
  'Picked Team Size = 1', 'Max Team Size = 3',
3223
3324
  'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Accuracy Moves Clause', 'Sleep Moves Clause',
3224
3325
  ],
3225
- banlist: ['Uber', 'Cottonee', 'Dragonite', 'Jirachi', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Soul Dew', 'Perish Song'],
3326
+ banlist: ['Uber', 'Cottonee', 'Dragonite', 'Jirachi', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Focus Band', 'Focus Sash', 'Quick Claw', 'Soul Dew', 'Perish Song'],
3226
3327
  unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
3227
3328
  },
3228
3329
  {
@@ -3489,7 +3590,7 @@ exports.Formats = [
3489
3590
  mod: 'gen3',
3490
3591
  searchShow: false,
3491
3592
  ruleset: ['Standard'],
3492
- banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Arena Trap', 'Bright Powder', 'Lax Incense', 'Baton Pass', 'Swagger'],
3593
+ banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'],
3493
3594
  },
3494
3595
  {
3495
3596
  name: "[Gen 3] NU",
@@ -3515,7 +3616,7 @@ exports.Formats = [
3515
3616
  ],
3516
3617
  banlist: [
3517
3618
  'Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Zapdos', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song',
3518
- 'Self-Destruct', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw',
3619
+ 'Self-Destruct', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3519
3620
  ],
3520
3621
  unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
3521
3622
  },
@@ -3583,7 +3684,7 @@ exports.Formats = [
3583
3684
  '[Gen 2] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3584
3685
  ],
3585
3686
  banlist: [
3586
- 'Alakazam', 'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3687
+ 'Alakazam', 'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3587
3688
  'Attract', 'Destiny Bond', 'Explosion', 'Perish Song', 'Present', 'Self-Destruct', 'Swagger',
3588
3689
  ],
3589
3690
  },
@@ -3649,6 +3750,19 @@ exports.Formats = [
3649
3750
  ruleset: ['[Gen 1] UU', '!APT Clause'],
3650
3751
  banlist: ['UU', 'NUBL'],
3651
3752
  },
3753
+ {
3754
+ name: "[Gen 1] 1v1",
3755
+ threads: [
3756
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8031462">RBY 1v1</a>`,
3757
+ ],
3758
+ mod: 'gen1',
3759
+ searchShow: false,
3760
+ ruleset: [
3761
+ 'Picked Team Size = 1', 'Max Team Size = 3',
3762
+ '[Gen 1] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3763
+ ],
3764
+ banlist: ['Bind', 'Clamp', 'Explosion', 'Fire Spin', 'Self-Destruct', 'Wrap'],
3765
+ },
3652
3766
  {
3653
3767
  name: "[Gen 1] Japanese OU",
3654
3768
  desc: `Generation 1 with Japanese battle mechanics.`,