@pkmn/sim 0.5.25 → 0.5.27
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.
- package/build/config/formats.js +195 -162
- package/build/config/formats.js.map +1 -1
- package/build/data/aliases.js +2 -2
- package/build/data/aliases.js.map +1 -1
- package/build/data/conditions.js +1 -1
- package/build/data/conditions.js.map +1 -1
- package/build/data/formats-data.js +24 -25
- package/build/data/formats-data.js.map +1 -1
- package/build/data/learnsets.js +27 -20
- package/build/data/learnsets.js.map +1 -1
- package/build/data/mods/gen1/formats-data.js +0 -5
- package/build/data/mods/gen1/formats-data.js.map +1 -1
- package/build/data/mods/gen1/moves.js +54 -22
- package/build/data/mods/gen1/moves.js.map +1 -1
- package/build/data/mods/gen2/moves.js +10 -5
- package/build/data/mods/gen2/moves.js.map +1 -1
- package/build/data/mods/gen3/formats-data.js +2 -2
- package/build/data/mods/gen3/formats-data.js.map +1 -1
- package/build/data/mods/gen3/moves.js +9 -0
- package/build/data/mods/gen3/moves.js.map +1 -1
- package/build/data/mods/gen6/formats-data.js +14 -14
- package/build/data/mods/gen6/formats-data.js.map +1 -1
- package/build/data/mods/gen7/pokedex.js +4 -5
- package/build/data/mods/gen7/pokedex.js.map +1 -1
- package/build/data/pokedex.js +14 -14
- package/build/data/pokedex.js.map +1 -1
- package/build/data/rulesets.js +1 -1
- package/build/data/rulesets.js.map +1 -1
- package/build/data/text/abilities.js +321 -139
- package/build/data/text/abilities.js.map +1 -1
- package/build/data/text/moves.js +8 -2
- package/build/data/text/moves.js.map +1 -1
- package/build/sim/battle-actions.js.map +1 -1
- package/build/sim/pokemon.js +1 -1
- package/build/sim/pokemon.js.map +1 -1
- package/build/sim/team-validator.js +30 -18
- package/build/sim/team-validator.js.map +1 -1
- package/config/formats.ts +194 -159
- package/data/aliases.ts +2 -2
- package/data/conditions.ts +1 -1
- package/data/formats-data.ts +24 -25
- package/data/learnsets.ts +27 -20
- package/data/mods/gen1/formats-data.ts +0 -5
- package/data/mods/gen1/moves.ts +54 -23
- package/data/mods/gen2/moves.ts +10 -5
- package/data/mods/gen3/formats-data.ts +2 -2
- package/data/mods/gen3/moves.ts +9 -0
- package/data/mods/gen6/formats-data.ts +14 -14
- package/data/mods/gen7/pokedex.ts +4 -5
- package/data/pokedex.ts +14 -14
- package/data/rulesets.ts +1 -1
- package/data/text/abilities.ts +321 -139
- package/data/text/moves.ts +8 -2
- package/package.json +1 -1
- package/sim/battle-actions.ts +1 -0
- package/sim/pokemon.ts +1 -1
- package/sim/team-validator.ts +31 -20
package/build/config/formats.js
CHANGED
|
@@ -134,7 +134,7 @@ exports.Formats = [
|
|
|
134
134
|
{
|
|
135
135
|
name: "[Gen 8] PU",
|
|
136
136
|
threads: [
|
|
137
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
137
|
+
`• <a href="https://www.smogon.com/forums/threads/3707179/">PU Metagame Discussion</a>`,
|
|
138
138
|
`• <a href="https://www.smogon.com/forums/threads/3676106/">PU Viability Rankings</a>`,
|
|
139
139
|
],
|
|
140
140
|
mod: 'gen8',
|
|
@@ -232,7 +232,7 @@ exports.Formats = [
|
|
|
232
232
|
// LC OU
|
|
233
233
|
'Abra', 'Carvanha', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey', 'Koffing',
|
|
234
234
|
'Larvesta', 'Magby', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Natu', 'Onix', 'Pawniard',
|
|
235
|
-
'Ponyta-Base', 'Porygon', '
|
|
235
|
+
'Ponyta-Base', 'Porygon', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt',
|
|
236
236
|
// LC UUBL
|
|
237
237
|
'Archen', 'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
|
|
238
238
|
],
|
|
@@ -268,14 +268,21 @@ exports.Formats = [
|
|
|
268
268
|
unbanlist: ['Mythical', 'Restricted Legendary'],
|
|
269
269
|
},
|
|
270
270
|
{
|
|
271
|
-
name: "[Gen 8]
|
|
271
|
+
name: "[Gen 8] Champion League",
|
|
272
272
|
threads: [
|
|
273
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
273
|
+
`• <a href="https://www.smogon.com/forums/threads/3707533/">Champion League Discussion</a>`,
|
|
274
274
|
],
|
|
275
275
|
mod: 'gen8',
|
|
276
276
|
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
|
|
277
|
-
banlist: ['All Pokemon'
|
|
278
|
-
unbanlist: [
|
|
277
|
+
banlist: ['All Pokemon'],
|
|
278
|
+
unbanlist: [
|
|
279
|
+
'Venusaur', 'Charizard', 'Blastoise', 'Sandslash-Base', 'Ninetales-Base', 'Arcanine', 'Alakazam', 'Tentacruel', 'Magneton', 'Cloyster',
|
|
280
|
+
'Exeggutor-Base', 'Rhydon', 'Gyarados', 'Lapras', 'Vaporeon', 'Jolteon', 'Flareon', 'Aerodactyl', 'Dragonite', 'Heracross', 'Skarmory',
|
|
281
|
+
'Tyranitar', 'Ludicolo', 'Gardevoir', 'Aggron', 'Wailord', 'Altaria', 'Whiscash', 'Claydol', 'Cradily', 'Armaldo', 'Milotic', 'Salamence',
|
|
282
|
+
'Metagross', 'Roserade', 'Gastrodon', 'Spiritomb', 'Garchomp', 'Lucario', 'Rhyperior', 'Togekiss', 'Seismitoad', 'Archeops',
|
|
283
|
+
'Vanilluxe', 'Escavalier', 'Haxorus', 'Accelgor', 'Druddigon', 'Bouffalant', 'Hydreigon', 'Volcarona', 'Aegislash', 'Tyrantrum',
|
|
284
|
+
'Aurorus', 'Hawlucha', 'Carbink', 'Goodra', 'Gourgeist', 'Rillaboom', 'Cinderace', 'Inteleon', 'Mr. Rime', 'Dragapult',
|
|
285
|
+
],
|
|
279
286
|
},
|
|
280
287
|
{
|
|
281
288
|
name: "[Gen 8] Custom Game",
|
|
@@ -530,7 +537,7 @@ exports.Formats = [
|
|
|
530
537
|
ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', '!Obtainable'],
|
|
531
538
|
banlist: [
|
|
532
539
|
// Pokemon
|
|
533
|
-
'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Cramorant-Gorging', 'Calyrex-Shadow',
|
|
540
|
+
'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Cramorant-Gorging', 'Calyrex-Shadow', 'Darmanitan-Galar-Zen',
|
|
534
541
|
// Abilities
|
|
535
542
|
'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
543
|
// Items
|
|
@@ -591,117 +598,35 @@ exports.Formats = [
|
|
|
591
598
|
column: 2,
|
|
592
599
|
},
|
|
593
600
|
{
|
|
594
|
-
name: "[Gen 8]
|
|
595
|
-
desc: `
|
|
601
|
+
name: "[Gen 8] Revelationmons",
|
|
602
|
+
desc: `The moves in the first slot(s) of a Pokémon's set have their types changed to match the Pokémon's type(s).`,
|
|
596
603
|
threads: [
|
|
597
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
604
|
+
`• <a href="https://www.smogon.com/forums/threads/3692297/">Revelationmons</a>`,
|
|
598
605
|
],
|
|
599
|
-
mod: '
|
|
600
|
-
|
|
601
|
-
// searchShow: false,
|
|
602
|
-
ruleset: ['Standard Doubles', 'Dynamax Clause'],
|
|
606
|
+
mod: 'gen8',
|
|
607
|
+
ruleset: ['Standard OMs', 'Revelationmons Mod', 'Sleep Moves Clause'],
|
|
603
608
|
banlist: [
|
|
604
|
-
'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', '
|
|
605
|
-
'Groudon', 'Ho-Oh', '
|
|
606
|
-
'
|
|
607
|
-
'
|
|
608
|
-
'Zamazenta', '
|
|
609
|
-
'Emergency Exit', 'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard',
|
|
609
|
+
'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult', 'Eternatus', 'Genesect',
|
|
610
|
+
'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala',
|
|
611
|
+
'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza',
|
|
612
|
+
'Reshiram', 'Solgaleo', 'Spectrier', 'Thundurus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta',
|
|
613
|
+
'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
|
|
610
614
|
],
|
|
611
|
-
|
|
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
|
-
},
|
|
615
|
+
restricted: ['Bolt Beak', 'Close Combat', 'U-turn', 'Volt Switch'],
|
|
693
616
|
},
|
|
694
617
|
{
|
|
695
|
-
name: "[Gen 8]
|
|
696
|
-
desc: `
|
|
618
|
+
name: "[Gen 8] Tag Team Singles",
|
|
619
|
+
desc: `Bring four Pokémon to Team Preview and choose two to battle in a singles battle.`,
|
|
697
620
|
threads: [
|
|
698
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
621
|
+
`• <a href="https://www.smogon.com/forums/threads/3705415/">Tag Team Singles</a>`,
|
|
699
622
|
],
|
|
700
623
|
mod: 'gen8',
|
|
701
|
-
ruleset: ['
|
|
624
|
+
ruleset: ['Picked Team Size = 2', 'Max Team Size = 4', 'Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause'],
|
|
702
625
|
banlist: [
|
|
703
|
-
'
|
|
704
|
-
'
|
|
626
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
|
|
627
|
+
'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
|
|
628
|
+
'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
|
|
629
|
+
'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Sash', 'King\'s Rock', 'Lax Incense', 'Final Gambit',
|
|
705
630
|
],
|
|
706
631
|
},
|
|
707
632
|
// Other Metagames
|
|
@@ -863,10 +788,10 @@ exports.Formats = [
|
|
|
863
788
|
mod: 'gen8',
|
|
864
789
|
ruleset: ['Standard OMs', 'Sleep Moves Clause'],
|
|
865
790
|
banlist: [
|
|
866
|
-
'Blissey', 'Calyrex-Shadow', 'Chansey', 'Crawdaunt', 'Dragapult', 'Eternatus', 'Hawlucha', 'Marowak-Alola', 'Melmetal',
|
|
867
|
-
'Nidoqueen', 'Pikachu', 'Toxapex', 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap',
|
|
868
|
-
'Moody', 'Pure Power', 'Shadow Tag', 'Swift Swim', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense',
|
|
869
|
-
'Baton Pass',
|
|
791
|
+
'Blissey', 'Calyrex-Shadow', 'Chansey', 'Crawdaunt', 'Dragapult', 'Eternatus', 'Hawlucha', 'Kyogre', 'Marowak-Alola', 'Melmetal',
|
|
792
|
+
'Nidoking', 'Nidoqueen', 'Pikachu', 'Toxapex', 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap',
|
|
793
|
+
'Huge Power', 'Moody', 'Pure Power', 'Shadow Tag', 'Swift Swim', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense',
|
|
794
|
+
'Quick Claw', 'Baton Pass',
|
|
870
795
|
],
|
|
871
796
|
onValidateTeam(team) {
|
|
872
797
|
const gods = new Set();
|
|
@@ -1723,6 +1648,107 @@ exports.Formats = [
|
|
|
1723
1648
|
},
|
|
1724
1649
|
},
|
|
1725
1650
|
},
|
|
1651
|
+
{
|
|
1652
|
+
name: "[Gen 8] Partners in Crime",
|
|
1653
|
+
desc: `Doubles-based metagame where both active ally Pokémon share abilities and moves.`,
|
|
1654
|
+
threads: [
|
|
1655
|
+
`• <a href="https://www.smogon.com/forums/threads/3706080/">Partners in Crime</a>`,
|
|
1656
|
+
],
|
|
1657
|
+
mod: 'partnersincrime',
|
|
1658
|
+
gameType: 'doubles',
|
|
1659
|
+
searchShow: false,
|
|
1660
|
+
ruleset: ['Standard Doubles', 'Dynamax Clause'],
|
|
1661
|
+
banlist: [
|
|
1662
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh',
|
|
1663
|
+
'Jirachi', 'Kyogre', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
|
|
1664
|
+
'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Urshifu-Base',
|
|
1665
|
+
'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Emergency Exit',
|
|
1666
|
+
'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard', 'Bolt Beak', 'Fishious Rend',
|
|
1667
|
+
'Shell Smash', 'Swagger',
|
|
1668
|
+
],
|
|
1669
|
+
onBeforeSwitchIn(pokemon) {
|
|
1670
|
+
pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
|
|
1671
|
+
let ngas = false;
|
|
1672
|
+
for (const poke of this.getAllActive()) {
|
|
1673
|
+
if (this.toID(poke.ability) === 'neutralizinggas') {
|
|
1674
|
+
ngas = true;
|
|
1675
|
+
break;
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
|
|
1679
|
+
// Abilities that must be applied before both sides trigger onSwitchIn to correctly
|
|
1680
|
+
// handle switch-in ability-to-ability interactions, e.g. Intimidate counters
|
|
1681
|
+
const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
|
|
1682
|
+
'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
|
|
1683
|
+
'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
|
|
1684
|
+
];
|
|
1685
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1686
|
+
if (ally && ally.ability !== pokemon.ability) {
|
|
1687
|
+
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
|
|
1688
|
+
NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
|
|
1689
|
+
pokemon.m.innate = 'ability:' + ally.ability;
|
|
1690
|
+
delete pokemon.volatiles[pokemon.m.innate];
|
|
1691
|
+
if (!ngas || ally.getAbility().isPermanent)
|
|
1692
|
+
pokemon.addVolatile(pokemon.m.innate);
|
|
1693
|
+
}
|
|
1694
|
+
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
|
|
1695
|
+
NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
|
|
1696
|
+
ally.m.innate = 'ability:' + pokemon.ability;
|
|
1697
|
+
delete ally.volatiles[ally.m.innate];
|
|
1698
|
+
if (!ngas || pokemon.getAbility().isPermanent)
|
|
1699
|
+
ally.addVolatile(ally.m.innate);
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
},
|
|
1703
|
+
onSwitchInPriority: 2,
|
|
1704
|
+
onSwitchIn(pokemon) {
|
|
1705
|
+
let ngas = false;
|
|
1706
|
+
for (const poke of this.getAllActive()) {
|
|
1707
|
+
if (this.toID(poke.ability) === 'neutralizinggas') {
|
|
1708
|
+
ngas = true;
|
|
1709
|
+
break;
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
|
|
1713
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1714
|
+
if (ally && ally.ability !== pokemon.ability) {
|
|
1715
|
+
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
|
|
1716
|
+
pokemon.m.innate = 'ability:' + ally.ability;
|
|
1717
|
+
delete pokemon.volatiles[pokemon.m.innate];
|
|
1718
|
+
if (!ngas || ally.getAbility().isPermanent)
|
|
1719
|
+
pokemon.addVolatile(pokemon.m.innate);
|
|
1720
|
+
}
|
|
1721
|
+
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
|
|
1722
|
+
ally.m.innate = 'ability:' + pokemon.ability;
|
|
1723
|
+
delete ally.volatiles[ally.m.innate];
|
|
1724
|
+
if (!ngas || pokemon.getAbility().isPermanent)
|
|
1725
|
+
ally.addVolatile(ally.m.innate);
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
},
|
|
1729
|
+
onSwitchOut(pokemon) {
|
|
1730
|
+
if (pokemon.m.innate) {
|
|
1731
|
+
pokemon.removeVolatile(pokemon.m.innate);
|
|
1732
|
+
delete pokemon.m.innate;
|
|
1733
|
+
}
|
|
1734
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1735
|
+
if (ally && ally.m.innate) {
|
|
1736
|
+
ally.removeVolatile(ally.m.innate);
|
|
1737
|
+
delete ally.m.innate;
|
|
1738
|
+
}
|
|
1739
|
+
},
|
|
1740
|
+
onFaint(pokemon) {
|
|
1741
|
+
if (pokemon.m.innate) {
|
|
1742
|
+
pokemon.removeVolatile(pokemon.m.innate);
|
|
1743
|
+
delete pokemon.m.innate;
|
|
1744
|
+
}
|
|
1745
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1746
|
+
if (ally && ally.m.innate) {
|
|
1747
|
+
ally.removeVolatile(ally.m.innate);
|
|
1748
|
+
delete ally.m.innate;
|
|
1749
|
+
}
|
|
1750
|
+
},
|
|
1751
|
+
},
|
|
1726
1752
|
{
|
|
1727
1753
|
name: "[Gen 8] Pokebilities",
|
|
1728
1754
|
desc: `Pokémon have all of their released abilities simultaneously.`,
|
|
@@ -2128,10 +2154,11 @@ exports.Formats = [
|
|
|
2128
2154
|
column: 2,
|
|
2129
2155
|
},
|
|
2130
2156
|
{
|
|
2131
|
-
name: "[Gen
|
|
2132
|
-
mod: '
|
|
2133
|
-
team: '
|
|
2134
|
-
ruleset: ['
|
|
2157
|
+
name: "[Gen 7] Pick-Your-Team Random Battle",
|
|
2158
|
+
mod: 'gen7',
|
|
2159
|
+
team: 'random',
|
|
2160
|
+
ruleset: ['[Gen 7] Random Battle', 'Max Team Size = 12', 'Picked Team Size = 6', 'Team Preview'],
|
|
2161
|
+
desc: `Twelve Pokémon sets are randomly chosen, then you pick six for your team!`,
|
|
2135
2162
|
},
|
|
2136
2163
|
// Randomized Metas
|
|
2137
2164
|
///////////////////////////////////////////////////////////////////
|
|
@@ -2186,6 +2213,13 @@ exports.Formats = [
|
|
|
2186
2213
|
}
|
|
2187
2214
|
},
|
|
2188
2215
|
},
|
|
2216
|
+
{
|
|
2217
|
+
name: "[Gen 8] Battle Factory",
|
|
2218
|
+
desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`,
|
|
2219
|
+
mod: 'gen8',
|
|
2220
|
+
team: 'randomFactory',
|
|
2221
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
2222
|
+
},
|
|
2189
2223
|
{
|
|
2190
2224
|
name: "[Gen 8] BSS Factory",
|
|
2191
2225
|
desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`,
|
|
@@ -2453,36 +2487,32 @@ exports.Formats = [
|
|
|
2453
2487
|
column: 3,
|
|
2454
2488
|
},
|
|
2455
2489
|
{
|
|
2456
|
-
name: "[Gen
|
|
2490
|
+
name: "[Gen 5] Ubers",
|
|
2457
2491
|
threads: [
|
|
2458
|
-
`• <a href="https://www.smogon.com/forums/posts/
|
|
2492
|
+
`• <a href="https://www.smogon.com/forums/posts/8286278/">BW2 Ubers</a>`,
|
|
2459
2493
|
],
|
|
2460
|
-
mod: '
|
|
2494
|
+
mod: 'gen5',
|
|
2461
2495
|
// searchShow: false,
|
|
2462
|
-
ruleset: ['Standard', '
|
|
2463
|
-
banlist: ['Wobbuffet + Leftovers'],
|
|
2496
|
+
ruleset: ['Standard', 'Sleep Clause Mod'],
|
|
2464
2497
|
},
|
|
2465
2498
|
{
|
|
2466
|
-
name: "[Gen
|
|
2499
|
+
name: "[Gen 7] PU",
|
|
2467
2500
|
threads: [
|
|
2468
|
-
`• <a href="https://www.smogon.com/forums/
|
|
2469
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
2501
|
+
`• <a href="https://www.smogon.com/forums/threads/3611496/">USM PU Sample Teams</a>`,
|
|
2502
|
+
`• <a href="https://www.smogon.com/forums/threads/3614892/">USM PU Viability Rankings</a>`,
|
|
2470
2503
|
],
|
|
2471
|
-
mod: '
|
|
2504
|
+
mod: 'gen7',
|
|
2472
2505
|
// searchShow: false,
|
|
2473
|
-
ruleset: ['[Gen
|
|
2474
|
-
banlist: ['
|
|
2475
|
-
unbanlist: ['Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
|
|
2506
|
+
ruleset: ['[Gen 7] NU'],
|
|
2507
|
+
banlist: ['NU', 'PUBL'],
|
|
2476
2508
|
},
|
|
2477
2509
|
{
|
|
2478
|
-
name: "[Gen
|
|
2479
|
-
threads: [
|
|
2480
|
-
|
|
2481
|
-
],
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
ruleset: ['[Gen 7 Let\'s Go] OU'],
|
|
2485
|
-
banlist: ['OU', 'UUBL'],
|
|
2510
|
+
name: "[Gen 2] UUBL",
|
|
2511
|
+
threads: [`• <a href="https://www.smogon.com/forums/threads/3662389/">GSC UUBL</a>`],
|
|
2512
|
+
mod: 'gen2',
|
|
2513
|
+
ruleset: ['[Gen 2] OU'],
|
|
2514
|
+
banlist: ['OU'],
|
|
2515
|
+
unbanlist: ['Mean Look + Baton Pass', 'Spider Web + Baton Pass'],
|
|
2486
2516
|
},
|
|
2487
2517
|
// Past Gens OU
|
|
2488
2518
|
///////////////////////////////////////////////////////////////////
|
|
@@ -2735,17 +2765,6 @@ exports.Formats = [
|
|
|
2735
2765
|
ruleset: ['[Gen 7] RU'],
|
|
2736
2766
|
banlist: ['RU', 'NUBL', 'Drought'],
|
|
2737
2767
|
},
|
|
2738
|
-
{
|
|
2739
|
-
name: "[Gen 7] PU",
|
|
2740
|
-
threads: [
|
|
2741
|
-
`• <a href="https://www.smogon.com/forums/threads/3611496/">USM PU Sample Teams</a>`,
|
|
2742
|
-
`• <a href="https://www.smogon.com/forums/threads/3614892/">USM PU Viability Rankings</a>`,
|
|
2743
|
-
],
|
|
2744
|
-
mod: 'gen7',
|
|
2745
|
-
searchShow: false,
|
|
2746
|
-
ruleset: ['[Gen 7] NU'],
|
|
2747
|
-
banlist: ['NU', 'PUBL'],
|
|
2748
|
-
},
|
|
2749
2768
|
{
|
|
2750
2769
|
name: "[Gen 7] LC",
|
|
2751
2770
|
threads: [
|
|
@@ -2792,10 +2811,11 @@ exports.Formats = [
|
|
|
2792
2811
|
'Obtainable', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Swagger Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause',
|
|
2793
2812
|
],
|
|
2794
2813
|
banlist: [
|
|
2795
|
-
'Arceus', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon',
|
|
2796
|
-
'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', '
|
|
2797
|
-
'
|
|
2798
|
-
'
|
|
2814
|
+
'Arceus', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon',
|
|
2815
|
+
'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', 'Mew', 'Mewtwo',
|
|
2816
|
+
'Mimikyu', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky',
|
|
2817
|
+
'Snorlax', 'Solgaleo', 'Tapu Koko', 'Xerneas', 'Yveltal', 'Zekrom', 'Moody', 'Focus Sash', 'Grass Whistle', 'Hypnosis',
|
|
2818
|
+
'Perish Song', 'Sing', 'Detect + Fightinium Z',
|
|
2799
2819
|
],
|
|
2800
2820
|
},
|
|
2801
2821
|
{
|
|
@@ -3246,24 +3266,27 @@ exports.Formats = [
|
|
|
3246
3266
|
column: 4,
|
|
3247
3267
|
},
|
|
3248
3268
|
{
|
|
3249
|
-
name: "[Gen 5]
|
|
3269
|
+
name: "[Gen 5] UU",
|
|
3250
3270
|
threads: [
|
|
3251
|
-
`• <a href="https://www.smogon.com/forums/
|
|
3271
|
+
`• <a href="https://www.smogon.com/forums/threads/3474024/">BW2 UU Viability Rankings</a>`,
|
|
3272
|
+
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
3252
3273
|
],
|
|
3253
3274
|
mod: 'gen5',
|
|
3254
3275
|
searchShow: false,
|
|
3255
|
-
ruleset: ['Standard', 'Sleep Clause Mod'],
|
|
3276
|
+
ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
|
|
3277
|
+
banlist: ['Uber', 'OU', 'UUBL', 'Arena Trap', 'Drought', 'Sand Stream', 'Snow Warning', 'Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
|
|
3256
3278
|
},
|
|
3257
3279
|
{
|
|
3258
|
-
name: "[Gen 5]
|
|
3280
|
+
name: "[Gen 5] RU",
|
|
3259
3281
|
threads: [
|
|
3260
|
-
`• <a href="https://www.smogon.com/forums/threads/3474024/">BW2 UU Viability Rankings</a>`,
|
|
3261
3282
|
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
3283
|
+
`• <a href="https://www.smogon.com/forums/threads/3473124/">BW2 RU Viability Rankings</a>`,
|
|
3262
3284
|
],
|
|
3263
3285
|
mod: 'gen5',
|
|
3264
3286
|
searchShow: false,
|
|
3265
|
-
ruleset: ['
|
|
3266
|
-
banlist: ['
|
|
3287
|
+
ruleset: ['[Gen 5] UU', 'Baton Pass Clause', '!Sleep Clause Mod', 'Sleep Moves Clause'],
|
|
3288
|
+
banlist: ['UU', 'RUBL', 'Shadow Tag', 'Shell Smash + Baton Pass'],
|
|
3289
|
+
unbanlist: ['Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
|
|
3267
3290
|
},
|
|
3268
3291
|
{
|
|
3269
3292
|
name: "[Gen 5] NU",
|
|
@@ -3581,6 +3604,16 @@ exports.Formats = [
|
|
|
3581
3604
|
section: "Past Generations",
|
|
3582
3605
|
column: 5,
|
|
3583
3606
|
},
|
|
3607
|
+
{
|
|
3608
|
+
name: "[Gen 3] Ubers",
|
|
3609
|
+
threads: [
|
|
3610
|
+
`• <a href="https://www.smogon.com/forums/posts/8286280/">ADV Ubers</a>`,
|
|
3611
|
+
],
|
|
3612
|
+
mod: 'gen3',
|
|
3613
|
+
searchShow: false,
|
|
3614
|
+
ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
|
|
3615
|
+
banlist: ['Wobbuffet + Leftovers'],
|
|
3616
|
+
},
|
|
3584
3617
|
{
|
|
3585
3618
|
name: "[Gen 3] UU",
|
|
3586
3619
|
threads: [
|
|
@@ -3618,7 +3651,7 @@ exports.Formats = [
|
|
|
3618
3651
|
'Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Zapdos', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song',
|
|
3619
3652
|
'Self-Destruct', 'Focus Band', 'King\'s Rock', 'Quick Claw',
|
|
3620
3653
|
],
|
|
3621
|
-
unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
|
|
3654
|
+
unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil', 'Soundproof'],
|
|
3622
3655
|
},
|
|
3623
3656
|
{
|
|
3624
3657
|
name: "[Gen 3] Doubles OU",
|
|
@@ -3737,7 +3770,7 @@ exports.Formats = [
|
|
|
3737
3770
|
],
|
|
3738
3771
|
mod: 'gen1',
|
|
3739
3772
|
searchShow: false,
|
|
3740
|
-
ruleset: ['[Gen 1] OU', 'APT Clause'],
|
|
3773
|
+
ruleset: ['[Gen 1] OU', 'APT Clause', 'Sleep Moves Clause'],
|
|
3741
3774
|
banlist: ['OU', 'UUBL'],
|
|
3742
3775
|
},
|
|
3743
3776
|
{
|
|
@@ -3747,7 +3780,7 @@ exports.Formats = [
|
|
|
3747
3780
|
],
|
|
3748
3781
|
mod: 'gen1',
|
|
3749
3782
|
searchShow: false,
|
|
3750
|
-
ruleset: ['[Gen 1] UU', '!APT Clause'],
|
|
3783
|
+
ruleset: ['[Gen 1] UU', '!APT Clause', '!Sleep Moves Clause'],
|
|
3751
3784
|
banlist: ['UU', 'NUBL'],
|
|
3752
3785
|
},
|
|
3753
3786
|
{
|
|
@@ -3780,7 +3813,7 @@ exports.Formats = [
|
|
|
3780
3813
|
searchShow: false,
|
|
3781
3814
|
ruleset: [
|
|
3782
3815
|
'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
|
|
3783
|
-
'Obtainable', 'Team Preview', 'Sleep Clause
|
|
3816
|
+
'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Nintendo Cup 1997 Move Legality',
|
|
3784
3817
|
],
|
|
3785
3818
|
banlist: ['Uber'],
|
|
3786
3819
|
},
|