@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
package/config/formats.ts CHANGED
@@ -284,14 +284,6 @@ export const Formats: FormatList = [
284
284
  name: "[Gen 8] Battle Stadium Singles",
285
285
 
286
286
  mod: 'gen8',
287
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit Two Restricted'],
288
- restricted: ['Restricted Legendary'],
289
- },
290
- {
291
- name: "[Gen 8] Battle Stadium Singles Series 13",
292
-
293
- mod: 'gen8',
294
- searchShow: false,
295
287
  ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
296
288
  banlist: ['Eternatus-Eternamax'],
297
289
  unbanlist: ['Mythical', 'Restricted Legendary'],
@@ -397,11 +389,17 @@ export const Formats: FormatList = [
397
389
 
398
390
  mod: 'gen8',
399
391
  gameType: 'doubles',
400
- searchShow: false,
401
392
  ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer'],
402
393
  banlist: ['Eternatus-Eternamax'],
403
394
  unbanlist: ['Mythical', 'Restricted Legendary'],
404
395
  },
396
+ {
397
+ name: "[Gen 8] Spikemuth Cup",
398
+
399
+ mod: 'gen8',
400
+ gameType: 'doubles',
401
+ ruleset: ['Flat Rules', 'Dynamax Clause', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer'],
402
+ },
405
403
  {
406
404
  name: "[Gen 8] VGC 2021",
407
405
 
@@ -508,17 +506,7 @@ export const Formats: FormatList = [
508
506
 
509
507
  mod: 'gen8',
510
508
  ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
511
- banlist: [
512
- 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
513
- 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
514
- 'Genesect', 'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black',
515
- 'Kyurem-White', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo',
516
- 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
517
- 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
518
- 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody',
519
- 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang',
520
- 'Quick Claw', 'Baton Pass',
521
- ],
509
+ 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'],
522
510
  },
523
511
  {
524
512
  name: "[Gen 8] National Dex UU",
@@ -530,25 +518,18 @@ export const Formats: FormatList = [
530
518
 
531
519
  mod: 'gen8',
532
520
  ruleset: ['[Gen 8] National Dex'],
533
- banlist: [
534
- // National Dex OU
535
- 'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega', 'Excadrill',
536
- 'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian', 'Lopunny-Mega',
537
- 'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
538
- 'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
539
- 'ND UUBL', // National Dex UUBL
540
- 'Drizzle', 'Drought', 'Light Clay',
541
- // Slowbronite is banned so it doesn't validate on Galarian Slowbro
542
- 'Slowbronite',
543
- ],
544
- // Used to distinguish UU from below UU in the client
545
- restricted: [
546
- 'Aegislash', 'Altaria-Mega', 'Amoonguss', 'Azumarill', 'Beedrill-Mega', 'Breloom', 'Celesteela', 'Chandelure', 'Donphan', 'Dracozolt',
547
- 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape', 'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz',
548
- 'Manectric-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base', 'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee',
549
- 'Rotom-Heat', 'Rotom-Wash', 'Salamence', 'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base',
550
- 'Umbreon', 'Urshifu-Rapid-Strike',
521
+ banlist: ['ND OU', 'ND UUBL', 'Drizzle', 'Drought', 'Light Clay', 'Slowbronite'],
522
+ },
523
+ {
524
+ name: "[Gen 8] National Dex RU",
525
+ threads: [
526
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3691290/">National Dex RU</a>`,
551
527
  ],
528
+
529
+ mod: 'gen8',
530
+ searchShow: false,
531
+ ruleset: ['[Gen 8] National Dex UU'],
532
+ banlist: ['ND UU', 'ND RUBL'],
552
533
  },
553
534
  {
554
535
  name: "[Gen 8] National Dex Monotype",
@@ -587,41 +568,56 @@ export const Formats: FormatList = [
587
568
  section: "Pet Mods",
588
569
  },
589
570
  {
590
- name: "[Gen 8] Restrictions",
591
- desc: `A metagame made up of brand new Pok&eacute;mon that are made according to various random and non-random restrictions.`,
571
+ name: "[Gen 8] National Dex BH",
572
+ desc: `Balanced Hackmons with National Dex elements mixed in.`,
592
573
  threads: [
593
- `&bullet; <a href="https://www.smogon.com/forums/threads/3673824/">Restrictions</a>`,
594
- `&bullet; <a href="https://docs.google.com/spreadsheets/d/1XsplBqN8njHZJT9cTP_3i3YSFITB9WaVfNOYAbNY75M/edit?usp=sharing">Spreadsheet</a>`,
574
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3658587/">National Dex Balanced Hackmons</a>`,
595
575
  ],
596
- mod: 'restrictions',
597
- ruleset: ['Standard', 'Dynamax Clause'],
598
- banlist: ['All Pokemon', 'Past'],
599
- unbanlist: [
600
- 'Vulcaraptor', 'Parakinesis', 'Serpaint', 'Torgeist', 'Regolite', 'Polbearab', 'Centhorn', 'Donzyxote', 'Scimicobra', 'Folliclawe', 'Afloof', 'Nimbusteed',
601
- 'Aerock', 'Borassa', 'Sharm', 'Nunopod', 'Crypterid', 'Abysseil', 'Faerenheit', 'Spiriteal', 'Zoltanka', 'Flydra', 'Coracrab', 'Quadringo', 'Teslaple',
602
- 'Kapagon', 'Cyknight', 'Dirtoad', 'Crystelf', 'Rancourgar', 'Scalaron', 'Dragraceful', 'Tantrary', 'Modolith', 'Snailord', 'Arbrella', 'Draugelid',
603
- 'Cinnastar', 'Refluse', 'Kelven', 'Kodokai', 'Cindarner', 'Thucotuco', 'Sorree', 'Gembezzle', 'Winterloper', 'Agapest', 'Volvolpa', 'Punduluum', 'Wraithful',
604
- 'Panzarma', 'Krachiten', 'Cellsius', 'Borelem', 'Electangle', 'Orchile', 'Shinodori', 'Fluidrake', 'Potossum', 'Twygdrasill',
576
+ mod: 'gen8',
577
+ ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', '!Obtainable'],
578
+ banlist: [
579
+ // Pokemon
580
+ 'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Cramorant-Gorging', 'Calyrex-Shadow',
581
+ // Abilities
582
+ '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',
583
+ // Items
584
+ 'Gengarite',
585
+ // Moves
586
+ 'Chatter', 'Double Iron Bash', 'Octolock', 'Shell Smash', 'Bolt Beak', 'Belly Drum', 'Electrify', 'Court Change',
587
+ // Other
588
+ 'Comatose + Sleep Talk', 'Imprison + Transform',
605
589
  ],
590
+ onValidateSet(set) {
591
+ if (this.toID(set.ability) === 'intrepidsword' &&
592
+ !this.toID(set.species).startsWith('zacian') && this.toID(set.item) !== 'rustedsword') {
593
+ return [`${set.ability} is banned.`];
594
+ }
595
+ if (set.species === 'Zacian-Crowned' &&
596
+ (this.toID(set.item) !== 'rustedsword' || this.toID(set.ability) !== 'intrepidsword')) {
597
+ return [`${set.species} is banned.`];
598
+ }
599
+ },
600
+ onValidateTeam(team) {
601
+ let arceus = 0;
602
+ for (const set of team) {
603
+ const species = this.dex.species.get(set.species);
604
+ if (species.baseSpecies === "Arceus") arceus++;
605
+ }
606
+ if (arceus > 1) {
607
+ return [`You are limited to one Arceus forme.`, `(You have ${arceus} Arceus formes.)`];
608
+ }
609
+ },
606
610
  },
607
611
  {
608
- name: "[Gen 8] Roulettemons Random Battle",
612
+ name: "[Gen 8] JolteMons Random Battle",
613
+ 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.`,
609
614
  threads: [
610
- `&bullet; <a href="https://www.smogon.com/forums/threads/3649106/">Roulettemons</a>`,
611
- `&bullet; <a href="https://docs.google.com/spreadsheets/d/1EOA1m7JXTq7Zz0ViVI4n6lBppFjVBa4S1GqhAwkPTZQ/edit?usp=sharing">Spreadsheet</a>`,
615
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3694234/">JolteMons</a>`,
616
+ `&bullet; <a href="https://docs.google.com/spreadsheets/d/149ZlQY0bJIAqfWB_233Dvbpqs3pVSHYpIoAQQkwquls/edit?usp=sharing">Spreadsheet</a>`,
612
617
  ],
618
+ mod: 'joltemons',
613
619
  team: 'random',
614
- mod: 'roulettemons',
615
- ruleset: ['Standard NatDex'],
616
- onSwitchIn(pokemon) {
617
- this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
618
- },
619
- onChangeSet(set) {
620
- if (set.species === 'Chillyte-Mega') {
621
- set.species = 'Chillyte';
622
- set.ability = 'Grassy Surge';
623
- }
624
- },
620
+ ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Mega Data Mod', 'Z-Move Clause'],
625
621
  },
626
622
  {
627
623
  name: "[Gen 6] NEXT OU",
@@ -644,34 +640,115 @@ export const Formats: FormatList = [
644
640
  column: 2,
645
641
  },
646
642
  {
647
- name: "[Gen 8] Re-Evolution",
648
- desc: `Pok&eacute;mon gain the stat changes they would gain from evolving again.`,
643
+ name: "[Gen 8] Partners in Crime",
644
+ desc: `Doubles-based metagame where both active ally Pok&eacute;mon share abilities and moves.`,
649
645
  threads: [
650
- `&bullet; <a href="https://www.smogon.com/forums/threads/3703643/">Re-Evolution</a>`,
646
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3706080/">Partners in Crime</a>`,
651
647
  ],
652
648
 
653
- mod: 'gen8',
654
- ruleset: ['Standard OMs', 'Re-Evolution Mod', 'Evasion Abilities Clause', 'Sleep Clause Mod'],
649
+ mod: 'partnersincrime',
650
+ gameType: 'doubles',
651
+ // searchShow: false,
652
+ ruleset: ['Standard Doubles', 'Dynamax Clause'],
655
653
  banlist: [
656
- 'Calyrex-Shadow', 'Darmanitan-Galar', 'Gyarados', 'Lunala', 'Milotic', 'Naganadel', 'Solgaleo', 'Slowking-Galar', 'Urshifu-Base',
657
- 'Volcarona', 'Zacian-Crowned', 'Arena Trap', 'Moody', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
654
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin',
655
+ 'Groudon', 'Ho-Oh', 'Jirachi', 'Kyogre', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna',
656
+ 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
657
+ 'Rayquaza', 'Reshiram', 'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
658
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Bolt Beak', 'Fishious Rend', 'Shell Smash',
659
+ 'Emergency Exit', 'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard',
658
660
  ],
661
+ onBeforeSwitchIn(pokemon) {
662
+ pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
663
+ let ngas = false;
664
+ for (const poke of this.getAllActive()) {
665
+ if (this.toID(poke.ability) === ('neutralizinggas' as ID)) {
666
+ ngas = true;
667
+ break;
668
+ }
669
+ }
670
+ const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
671
+ // Abilities that must be applied before both sides trigger onSwitchIn to correctly
672
+ // handle switch-in ability-to-ability interactions, e.g. Intimidate counters
673
+ const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
674
+ 'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
675
+ 'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
676
+ ];
677
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
678
+ if (ally && ally.ability !== pokemon.ability) {
679
+ if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
680
+ NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
681
+ pokemon.m.innate = 'ability:' + ally.ability;
682
+ delete pokemon.volatiles[pokemon.m.innate];
683
+ if (!ngas || ally.getAbility().isPermanent) pokemon.addVolatile(pokemon.m.innate);
684
+ }
685
+ if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
686
+ NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
687
+ ally.m.innate = 'ability:' + pokemon.ability;
688
+ delete ally.volatiles[ally.m.innate];
689
+ if (!ngas || pokemon.getAbility().isPermanent) ally.addVolatile(ally.m.innate);
690
+ }
691
+ }
692
+ },
693
+ onSwitchInPriority: 2,
694
+ onSwitchIn(pokemon) {
695
+ let ngas = false;
696
+ for (const poke of this.getAllActive()) {
697
+ if (this.toID(poke.ability) === ('neutralizinggas' as ID)) {
698
+ ngas = true;
699
+ break;
700
+ }
701
+ }
702
+ const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
703
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
704
+ if (ally && ally.ability !== pokemon.ability) {
705
+ if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
706
+ pokemon.m.innate = 'ability:' + ally.ability;
707
+ delete pokemon.volatiles[pokemon.m.innate];
708
+ if (!ngas || ally.getAbility().isPermanent) pokemon.addVolatile(pokemon.m.innate);
709
+ }
710
+ if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
711
+ ally.m.innate = 'ability:' + pokemon.ability;
712
+ delete ally.volatiles[ally.m.innate];
713
+ if (!ngas || pokemon.getAbility().isPermanent) ally.addVolatile(ally.m.innate);
714
+ }
715
+ }
716
+ },
717
+ onSwitchOut(pokemon) {
718
+ if (pokemon.m.innate) {
719
+ pokemon.removeVolatile(pokemon.m.innate);
720
+ delete pokemon.m.innate;
721
+ }
722
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
723
+ if (ally && ally.m.innate) {
724
+ ally.removeVolatile(ally.m.innate);
725
+ delete ally.m.innate;
726
+ }
727
+ },
728
+ onFaint(pokemon) {
729
+ if (pokemon.m.innate) {
730
+ pokemon.removeVolatile(pokemon.m.innate);
731
+ delete pokemon.m.innate;
732
+ }
733
+ const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
734
+ if (ally && ally.m.innate) {
735
+ ally.removeVolatile(ally.m.innate);
736
+ delete ally.m.innate;
737
+ }
738
+ },
659
739
  },
660
740
  {
661
- name: "[Gen 8] Category Swap",
662
- desc: `All physical moves become special, and all special moves become physical.`,
741
+ name: "[Gen 8] Chimera 1v1",
742
+ desc: `One Pok&eacute;mon inherits specific traits from your entire 6-mon team, based on their order.`,
663
743
  threads: [
664
- `&bullet; <a href="https://www.smogon.com/forums/threads/3702709/">Category Swap</a>`,
744
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3661215/">Chimera 1v1</a>`,
665
745
  ],
666
746
 
667
747
  mod: 'gen8',
668
- ruleset: ['Standard OMs', 'Category Swap Mod', 'Sleep Clause Mod'],
748
+ ruleset: ['Chimera 1v1 Rule', 'Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
669
749
  banlist: [
670
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Genesect', 'Giratina',
671
- 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala',
672
- 'Magearna', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Nidoking', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
673
- 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody',
674
- 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Draco Meteor', 'Overheat',
750
+ 'Shedinja', 'Huge Power', 'Moody', 'Neutralizing Gas', 'Truant', 'Perish Body', 'Eviolite', 'Focus Sash', 'Leek', 'Light Ball',
751
+ 'Bolt Beak', 'Disable', 'Double Iron Bash', 'Fishious Rend', 'Perish Song', 'Switcheroo', 'Transform', 'Trick',
675
752
  ],
676
753
  },
677
754
 
@@ -1046,6 +1123,17 @@ export const Formats: FormatList = [
1046
1123
  ruleset: ['Standard Doubles'],
1047
1124
  banlist: ['DUber', 'Dark Void'],
1048
1125
  },
1126
+ {
1127
+ name: "[Gen 8 BDSP] Battle Festival Doubles",
1128
+ threads: [
1129
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3694269/">Battle Festival Doubles</a>`,
1130
+ ],
1131
+
1132
+ mod: 'gen8bdsp',
1133
+ gameType: 'doubles',
1134
+ searchShow: false,
1135
+ ruleset: ['Flat Rules', 'Min Source Gen = 8'],
1136
+ },
1049
1137
 
1050
1138
  // Challengeable OMs
1051
1139
  ///////////////////////////////////////////////////////////////////
@@ -2077,6 +2165,21 @@ export const Formats: FormatList = [
2077
2165
  },
2078
2166
  },
2079
2167
 
2168
+ // Randomized Format Spotlight
2169
+ ///////////////////////////////////////////////////////////////////
2170
+
2171
+ {
2172
+ section: "Randomized Format Spotlight",
2173
+ column: 2,
2174
+ },
2175
+ {
2176
+ name: "[Gen 3] Challenge Cup",
2177
+
2178
+ mod: 'gen3',
2179
+ team: 'randomCC',
2180
+ ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
2181
+ },
2182
+
2080
2183
  // Randomized Metas
2081
2184
  ///////////////////////////////////////////////////////////////////
2082
2185
 
@@ -2765,8 +2868,7 @@ export const Formats: FormatList = [
2765
2868
  'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Kyogre', 'Kyurem-White', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna',
2766
2869
  'Marshadow', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
2767
2870
  'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Tapu Lele', 'Xerneas', 'Yveltal', 'Zekrom', 'Zygarde',
2768
- 'Battle Bond', 'Shadow Tag', 'Bright Powder', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Razor Fang',
2769
- 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
2871
+ 'Battle Bond', 'Shadow Tag', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
2770
2872
  ],
2771
2873
  },
2772
2874
  {
@@ -3079,8 +3181,7 @@ export const Formats: FormatList = [
3079
3181
  'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Greninja', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White',
3080
3182
  'Lucario-Mega', 'Lugia', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye-Mega',
3081
3183
  'Salamence-Mega', 'Shaymin-Sky', 'Slowbro-Mega', 'Talonflame', 'Xerneas', 'Yveltal', 'Zekrom',
3082
- 'Shadow Tag', 'Bright Powder', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Razor Fang', 'Smooth Rock',
3083
- 'Soul Dew', 'Baton Pass',
3184
+ 'Shadow Tag', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Soul Dew', 'Baton Pass',
3084
3185
  ],
3085
3186
  },
3086
3187
  {
@@ -3364,7 +3465,7 @@ export const Formats: FormatList = [
3364
3465
  'Picked Team Size = 1', 'Max Team Size = 3',
3365
3466
  'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Accuracy Moves Clause', 'Sleep Moves Clause',
3366
3467
  ],
3367
- 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'],
3468
+ banlist: ['Uber', 'Cottonee', 'Dragonite', 'Jirachi', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Focus Band', 'Focus Sash', 'Quick Claw', 'Soul Dew', 'Perish Song'],
3368
3469
  unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
3369
3470
  },
3370
3471
  {
@@ -3662,7 +3763,7 @@ export const Formats: FormatList = [
3662
3763
  mod: 'gen3',
3663
3764
  searchShow: false,
3664
3765
  ruleset: ['Standard'],
3665
- banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Arena Trap', 'Bright Powder', 'Lax Incense', 'Baton Pass', 'Swagger'],
3766
+ banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'],
3666
3767
  },
3667
3768
  {
3668
3769
  name: "[Gen 3] NU",
@@ -3690,7 +3791,7 @@ export const Formats: FormatList = [
3690
3791
  ],
3691
3792
  banlist: [
3692
3793
  'Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Zapdos', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song',
3693
- 'Self-Destruct', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw',
3794
+ 'Self-Destruct', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3694
3795
  ],
3695
3796
  unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
3696
3797
  },
@@ -3765,7 +3866,7 @@ export const Formats: FormatList = [
3765
3866
  '[Gen 2] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3766
3867
  ],
3767
3868
  banlist: [
3768
- 'Alakazam', 'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3869
+ 'Alakazam', 'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Focus Band', 'King\'s Rock', 'Quick Claw',
3769
3870
  'Attract', 'Destiny Bond', 'Explosion', 'Perish Song', 'Present', 'Self-Destruct', 'Swagger',
3770
3871
  ],
3771
3872
  },
@@ -3837,6 +3938,20 @@ export const Formats: FormatList = [
3837
3938
  ruleset: ['[Gen 1] UU', '!APT Clause'],
3838
3939
  banlist: ['UU', 'NUBL'],
3839
3940
  },
3941
+ {
3942
+ name: "[Gen 1] 1v1",
3943
+ threads: [
3944
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8031462">RBY 1v1</a>`,
3945
+ ],
3946
+
3947
+ mod: 'gen1',
3948
+ searchShow: false,
3949
+ ruleset: [
3950
+ 'Picked Team Size = 1', 'Max Team Size = 3',
3951
+ '[Gen 1] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3952
+ ],
3953
+ banlist: ['Bind', 'Clamp', 'Explosion', 'Fire Spin', 'Self-Destruct', 'Wrap'],
3954
+ },
3840
3955
  {
3841
3956
  name: "[Gen 1] Japanese OU",
3842
3957
  desc: `Generation 1 with Japanese battle mechanics.`,
package/data/aliases.ts CHANGED
@@ -25,6 +25,7 @@ export const Aliases: {[alias: string]: string} = {
25
25
  "2v2": "[Gen 8] 2v2 Doubles",
26
26
  natdex: "[Gen 8] National Dex",
27
27
  natdexuu: "[Gen 8] National Dex UU",
28
+ natdexru: "[Gen 8] National Dex RU",
28
29
  natdexmonotype: "[Gen 8] National Dex Monotype",
29
30
  natdexag: "[Gen 8] National Dex AG",
30
31
  natdexbh: "[Gen 8] National Dex BH",
@@ -33,6 +34,7 @@ export const Aliases: {[alias: string]: string} = {
33
34
  aaa: "[Gen 8] Almost Any Ability",
34
35
  stab: "[Gen 8] STABmons",
35
36
  gg: "[Gen 8] Godly Gift",
37
+ pic: "[Gen 8] Partners in Crime",
36
38
  camo: "[Gen 8] Camomons",
37
39
  ffa: "[Gen 8] Free-For-All",
38
40
  ts: "[Gen 8] Tier Shift",
@@ -49,7 +51,7 @@ export const Aliases: {[alias: string]: string} = {
49
51
  hackmons: "[Gen 8] Pure Hackmons",
50
52
  monorandom: "[Gen 8] Monotype Random Battle",
51
53
  bf: "[Gen 7] Battle Factory",
52
- bssf: "[Gen 7] BSS Factory",
54
+ bssf: "[Gen 8] BSS Factory",
53
55
  ssb: "[Gen 8] Super Staff Bros 4",
54
56
  ssb4: "[Gen 8] Super Staff Bros 4",
55
57
  lgrandom: "[Gen 7] Let's Go Random Battle",
@@ -57,6 +59,7 @@ export const Aliases: {[alias: string]: string} = {
57
59
  gen7mono: "[Gen 7] Monotype",
58
60
  gen7ag: "[Gen 7] Anything Goes",
59
61
  gen7bss: "[Gen 7] Battle Spot Singles",
62
+ gen7bssf: "[Gen 7] BSS Factory",
60
63
  bfd: "[Gen 8 BDSP] Battle Festival Doubles",
61
64
  lgou: "[Gen 7] Let's Go OU",
62
65
  vgc20: "[Gen 8] VGC 2020",
@@ -68,8 +71,8 @@ export const Aliases: {[alias: string]: string} = {
68
71
  gen6ag: "[Gen 6] Anything Goes",
69
72
  crossevo: "[Gen 8] Cross Evolution",
70
73
  mayhem: "[Gen 8] Random Battle Mayhem",
71
- omotm: "[Gen 8] Re-Evolution",
72
- lcotm: "[Gen 8] Category Swap",
74
+ omotm: "[Gen 8] Partners in Crime",
75
+ lcotm: "[Gen 8] Chimera 1v1",
73
76
 
74
77
  // mega evos
75
78
  fabio: "Ampharos-Mega",
@@ -664,6 +667,7 @@ export const Aliases: {[alias: string]: string} = {
664
667
  tr97psychicfangs: "TR97",
665
668
  tr98liquidation: "TR98",
666
669
  tr99bodypress: "TR99",
670
+ umbrella: "Utility Umbrella",
667
671
  wp: "Weakness Policy",
668
672
 
669
673
  // pokemon