@pkmn/sim 0.5.26 → 0.5.28
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 +205 -169
- package/build/config/formats.js.map +1 -1
- package/build/data/abilities.js +2 -4
- package/build/data/abilities.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/items.js +5 -5
- package/build/data/items.js.map +1 -1
- package/build/data/learnsets.js +30 -28
- package/build/data/learnsets.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/gen5/formats-data.js +69 -69
- package/build/data/mods/gen5/formats-data.js.map +1 -1
- package/build/data/pokedex.js +13 -13
- package/build/data/pokedex.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/items.js +5 -5
- 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/battle.js +2 -2
- package/build/sim/battle.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 +21 -16
- package/build/sim/team-validator.js.map +1 -1
- package/config/formats.ts +206 -167
- package/data/abilities.ts +2 -4
- package/data/aliases.ts +2 -2
- package/data/conditions.ts +1 -1
- package/data/formats-data.ts +24 -25
- package/data/items.ts +5 -5
- package/data/learnsets.ts +30 -28
- 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/gen5/formats-data.ts +69 -69
- package/data/pokedex.ts +13 -13
- package/data/text/abilities.ts +321 -139
- package/data/text/items.ts +5 -5
- package/data/text/moves.ts +8 -2
- package/package.json +1 -1
- package/sim/battle-actions.ts +1 -0
- package/sim/battle.ts +2 -2
- package/sim/pokemon.ts +1 -1
- package/sim/team-validator.ts +22 -18
package/build/config/formats.js
CHANGED
|
@@ -215,7 +215,7 @@ exports.Formats = [
|
|
|
215
215
|
mod: 'gen8',
|
|
216
216
|
ruleset: ['[Gen 8] PU'],
|
|
217
217
|
banlist: [
|
|
218
|
-
'PU', 'Arctovish', 'Aurorus', 'Basculin', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton',
|
|
218
|
+
'PU', 'Arctovish', 'Aurorus', 'Basculin', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Glastrier', 'Haunter', 'Magmortar', 'Magneton',
|
|
219
219
|
'Malamar', 'Ninjask', 'Omastar', 'Rotom-Frost', 'Turtonator', 'Vanilluxe', 'Vikavolt', 'Silvally-Dragon', 'Silvally-Ground', 'Sneasel',
|
|
220
220
|
'Damp Rock', 'Grassy Seed',
|
|
221
221
|
],
|
|
@@ -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
|
],
|
|
@@ -278,7 +278,7 @@ exports.Formats = [
|
|
|
278
278
|
unbanlist: [
|
|
279
279
|
'Venusaur', 'Charizard', 'Blastoise', 'Sandslash-Base', 'Ninetales-Base', 'Arcanine', 'Alakazam', 'Tentacruel', 'Magneton', 'Cloyster',
|
|
280
280
|
'Exeggutor-Base', 'Rhydon', 'Gyarados', 'Lapras', 'Vaporeon', 'Jolteon', 'Flareon', 'Aerodactyl', 'Dragonite', 'Heracross', 'Skarmory',
|
|
281
|
-
'Tyranitar', 'Ludicolo', 'Aggron', 'Wailord', 'Altaria', 'Whiscash', 'Claydol', 'Cradily', 'Armaldo', 'Milotic', 'Salamence',
|
|
281
|
+
'Tyranitar', 'Ludicolo', 'Gardevoir', 'Aggron', 'Wailord', 'Altaria', 'Whiscash', 'Claydol', 'Cradily', 'Armaldo', 'Milotic', 'Salamence',
|
|
282
282
|
'Metagross', 'Roserade', 'Gastrodon', 'Spiritomb', 'Garchomp', 'Lucario', 'Rhyperior', 'Togekiss', 'Seismitoad', 'Archeops',
|
|
283
283
|
'Vanilluxe', 'Escavalier', 'Haxorus', 'Accelgor', 'Druddigon', 'Bouffalant', 'Hydreigon', 'Volcarona', 'Aegislash', 'Tyrantrum',
|
|
284
284
|
'Aurorus', 'Hawlucha', 'Carbink', 'Goodra', 'Gourgeist', 'Rillaboom', 'Cinderace', 'Inteleon', 'Mr. Rime', 'Dragapult',
|
|
@@ -537,7 +537,7 @@ exports.Formats = [
|
|
|
537
537
|
ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', '!Obtainable'],
|
|
538
538
|
banlist: [
|
|
539
539
|
// Pokemon
|
|
540
|
-
'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',
|
|
541
541
|
// Abilities
|
|
542
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',
|
|
543
543
|
// Items
|
|
@@ -598,117 +598,36 @@ exports.Formats = [
|
|
|
598
598
|
column: 2,
|
|
599
599
|
},
|
|
600
600
|
{
|
|
601
|
-
name: "[Gen 8]
|
|
602
|
-
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).`,
|
|
603
603
|
threads: [
|
|
604
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
604
|
+
`• <a href="https://www.smogon.com/forums/threads/3692297/">Revelationmons</a>`,
|
|
605
605
|
],
|
|
606
|
-
mod: '
|
|
607
|
-
|
|
608
|
-
// searchShow: false,
|
|
609
|
-
ruleset: ['Standard Doubles', 'Dynamax Clause'],
|
|
606
|
+
mod: 'gen8',
|
|
607
|
+
ruleset: ['Standard OMs', 'Revelationmons Mod', 'Sleep Moves Clause'],
|
|
610
608
|
banlist: [
|
|
611
|
-
'Calyrex-Ice', 'Calyrex-Shadow', '
|
|
612
|
-
'
|
|
613
|
-
'
|
|
614
|
-
'
|
|
615
|
-
'
|
|
616
|
-
'
|
|
609
|
+
'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult', 'Eternatus',
|
|
610
|
+
'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kingdra', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White',
|
|
611
|
+
'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
|
|
612
|
+
'Noivern', 'Palkia', 'Pheromosa', 'Polteageist', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Thundurus-Therian', 'Urshifu-Base',
|
|
613
|
+
'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull',
|
|
614
|
+
'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
|
|
617
615
|
],
|
|
618
|
-
|
|
619
|
-
pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
|
|
620
|
-
let ngas = false;
|
|
621
|
-
for (const poke of this.getAllActive()) {
|
|
622
|
-
if (this.toID(poke.ability) === 'neutralizinggas') {
|
|
623
|
-
ngas = true;
|
|
624
|
-
break;
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
|
|
628
|
-
// Abilities that must be applied before both sides trigger onSwitchIn to correctly
|
|
629
|
-
// handle switch-in ability-to-ability interactions, e.g. Intimidate counters
|
|
630
|
-
const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
|
|
631
|
-
'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
|
|
632
|
-
'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
|
|
633
|
-
];
|
|
634
|
-
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
635
|
-
if (ally && ally.ability !== pokemon.ability) {
|
|
636
|
-
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
|
|
637
|
-
NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
|
|
638
|
-
pokemon.m.innate = 'ability:' + ally.ability;
|
|
639
|
-
delete pokemon.volatiles[pokemon.m.innate];
|
|
640
|
-
if (!ngas || ally.getAbility().isPermanent)
|
|
641
|
-
pokemon.addVolatile(pokemon.m.innate);
|
|
642
|
-
}
|
|
643
|
-
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
|
|
644
|
-
NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
|
|
645
|
-
ally.m.innate = 'ability:' + pokemon.ability;
|
|
646
|
-
delete ally.volatiles[ally.m.innate];
|
|
647
|
-
if (!ngas || pokemon.getAbility().isPermanent)
|
|
648
|
-
ally.addVolatile(ally.m.innate);
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
},
|
|
652
|
-
onSwitchInPriority: 2,
|
|
653
|
-
onSwitchIn(pokemon) {
|
|
654
|
-
let ngas = false;
|
|
655
|
-
for (const poke of this.getAllActive()) {
|
|
656
|
-
if (this.toID(poke.ability) === 'neutralizinggas') {
|
|
657
|
-
ngas = true;
|
|
658
|
-
break;
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
|
|
662
|
-
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
663
|
-
if (ally && ally.ability !== pokemon.ability) {
|
|
664
|
-
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
|
|
665
|
-
pokemon.m.innate = 'ability:' + ally.ability;
|
|
666
|
-
delete pokemon.volatiles[pokemon.m.innate];
|
|
667
|
-
if (!ngas || ally.getAbility().isPermanent)
|
|
668
|
-
pokemon.addVolatile(pokemon.m.innate);
|
|
669
|
-
}
|
|
670
|
-
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
|
|
671
|
-
ally.m.innate = 'ability:' + pokemon.ability;
|
|
672
|
-
delete ally.volatiles[ally.m.innate];
|
|
673
|
-
if (!ngas || pokemon.getAbility().isPermanent)
|
|
674
|
-
ally.addVolatile(ally.m.innate);
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
},
|
|
678
|
-
onSwitchOut(pokemon) {
|
|
679
|
-
if (pokemon.m.innate) {
|
|
680
|
-
pokemon.removeVolatile(pokemon.m.innate);
|
|
681
|
-
delete pokemon.m.innate;
|
|
682
|
-
}
|
|
683
|
-
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
684
|
-
if (ally && ally.m.innate) {
|
|
685
|
-
ally.removeVolatile(ally.m.innate);
|
|
686
|
-
delete ally.m.innate;
|
|
687
|
-
}
|
|
688
|
-
},
|
|
689
|
-
onFaint(pokemon) {
|
|
690
|
-
if (pokemon.m.innate) {
|
|
691
|
-
pokemon.removeVolatile(pokemon.m.innate);
|
|
692
|
-
delete pokemon.m.innate;
|
|
693
|
-
}
|
|
694
|
-
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
695
|
-
if (ally && ally.m.innate) {
|
|
696
|
-
ally.removeVolatile(ally.m.innate);
|
|
697
|
-
delete ally.m.innate;
|
|
698
|
-
}
|
|
699
|
-
},
|
|
616
|
+
restricted: ['Bolt Beak', 'Close Combat', 'U-turn', 'Volt Switch'],
|
|
700
617
|
},
|
|
701
618
|
{
|
|
702
|
-
name: "[Gen 8]
|
|
703
|
-
desc: `
|
|
619
|
+
name: "[Gen 8] Tag Team Singles",
|
|
620
|
+
desc: `Bring four Pokémon to Team Preview and choose two to battle in a singles battle.`,
|
|
704
621
|
threads: [
|
|
705
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
622
|
+
`• <a href="https://www.smogon.com/forums/threads/3705415/">Tag Team Singles</a>`,
|
|
706
623
|
],
|
|
707
624
|
mod: 'gen8',
|
|
708
|
-
ruleset: ['
|
|
625
|
+
ruleset: ['Picked Team Size = 2', 'Max Team Size = 4', 'Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause'],
|
|
709
626
|
banlist: [
|
|
710
|
-
'
|
|
711
|
-
'
|
|
627
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
|
|
628
|
+
'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
|
|
629
|
+
'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
|
|
630
|
+
'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Sash', 'King\'s Rock', 'Lax Incense', 'Final Gambit',
|
|
712
631
|
],
|
|
713
632
|
},
|
|
714
633
|
// Other Metagames
|
|
@@ -744,14 +663,14 @@ exports.Formats = [
|
|
|
744
663
|
mod: 'gen8',
|
|
745
664
|
ruleset: ['Standard OMs', '!Obtainable Abilities', '2 Ability Clause', 'Sleep Moves Clause'],
|
|
746
665
|
banlist: [
|
|
747
|
-
'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus',
|
|
748
|
-
'Gengar', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White',
|
|
749
|
-
'
|
|
750
|
-
'
|
|
751
|
-
'
|
|
752
|
-
'
|
|
753
|
-
'
|
|
754
|
-
'
|
|
666
|
+
'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Genesect',
|
|
667
|
+
'Gengar', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia',
|
|
668
|
+
'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa',
|
|
669
|
+
'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja', 'Solgaleo', 'Spectrier', 'Urshifu', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas',
|
|
670
|
+
'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy',
|
|
671
|
+
'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Intrepid Sword', 'Libero', 'Magic Bounce',
|
|
672
|
+
'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout',
|
|
673
|
+
'Speed Boost', 'Unburden', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
|
|
755
674
|
],
|
|
756
675
|
},
|
|
757
676
|
{
|
|
@@ -1730,6 +1649,107 @@ exports.Formats = [
|
|
|
1730
1649
|
},
|
|
1731
1650
|
},
|
|
1732
1651
|
},
|
|
1652
|
+
{
|
|
1653
|
+
name: "[Gen 8] Partners in Crime",
|
|
1654
|
+
desc: `Doubles-based metagame where both active ally Pokémon share abilities and moves.`,
|
|
1655
|
+
threads: [
|
|
1656
|
+
`• <a href="https://www.smogon.com/forums/threads/3706080/">Partners in Crime</a>`,
|
|
1657
|
+
],
|
|
1658
|
+
mod: 'partnersincrime',
|
|
1659
|
+
gameType: 'doubles',
|
|
1660
|
+
searchShow: false,
|
|
1661
|
+
ruleset: ['Standard Doubles', 'Dynamax Clause'],
|
|
1662
|
+
banlist: [
|
|
1663
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh',
|
|
1664
|
+
'Jirachi', 'Kyogre', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
|
|
1665
|
+
'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Urshifu-Base',
|
|
1666
|
+
'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Emergency Exit',
|
|
1667
|
+
'Huge Power', 'Moody', 'Power Construct', 'Shadow Tag', 'Wimp Out', 'Wonder Guard', 'Bolt Beak', 'Fishious Rend',
|
|
1668
|
+
'Shell Smash', 'Swagger',
|
|
1669
|
+
],
|
|
1670
|
+
onBeforeSwitchIn(pokemon) {
|
|
1671
|
+
pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
|
|
1672
|
+
let ngas = false;
|
|
1673
|
+
for (const poke of this.getAllActive()) {
|
|
1674
|
+
if (this.toID(poke.ability) === 'neutralizinggas') {
|
|
1675
|
+
ngas = true;
|
|
1676
|
+
break;
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
|
|
1680
|
+
// Abilities that must be applied before both sides trigger onSwitchIn to correctly
|
|
1681
|
+
// handle switch-in ability-to-ability interactions, e.g. Intimidate counters
|
|
1682
|
+
const NEEDED_BEFORE_SWITCH_IN_ABILITIES = [
|
|
1683
|
+
'clearbody', 'competitive', 'contrary', 'defiant', 'fullmetalbody', 'hypercutter', 'innerfocus',
|
|
1684
|
+
'mirrorarmor', 'oblivious', 'owntempo', 'rattled', 'scrappy', 'simple', 'whitesmoke',
|
|
1685
|
+
];
|
|
1686
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1687
|
+
if (ally && ally.ability !== pokemon.ability) {
|
|
1688
|
+
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability)) &&
|
|
1689
|
+
NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(ally.ability))) {
|
|
1690
|
+
pokemon.m.innate = 'ability:' + ally.ability;
|
|
1691
|
+
delete pokemon.volatiles[pokemon.m.innate];
|
|
1692
|
+
if (!ngas || ally.getAbility().isPermanent)
|
|
1693
|
+
pokemon.addVolatile(pokemon.m.innate);
|
|
1694
|
+
}
|
|
1695
|
+
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability)) &&
|
|
1696
|
+
NEEDED_BEFORE_SWITCH_IN_ABILITIES.includes(this.toID(pokemon.ability))) {
|
|
1697
|
+
ally.m.innate = 'ability:' + pokemon.ability;
|
|
1698
|
+
delete ally.volatiles[ally.m.innate];
|
|
1699
|
+
if (!ngas || pokemon.getAbility().isPermanent)
|
|
1700
|
+
ally.addVolatile(ally.m.innate);
|
|
1701
|
+
}
|
|
1702
|
+
}
|
|
1703
|
+
},
|
|
1704
|
+
onSwitchInPriority: 2,
|
|
1705
|
+
onSwitchIn(pokemon) {
|
|
1706
|
+
let ngas = false;
|
|
1707
|
+
for (const poke of this.getAllActive()) {
|
|
1708
|
+
if (this.toID(poke.ability) === 'neutralizinggas') {
|
|
1709
|
+
ngas = true;
|
|
1710
|
+
break;
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas'];
|
|
1714
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1715
|
+
if (ally && ally.ability !== pokemon.ability) {
|
|
1716
|
+
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
|
|
1717
|
+
pokemon.m.innate = 'ability:' + ally.ability;
|
|
1718
|
+
delete pokemon.volatiles[pokemon.m.innate];
|
|
1719
|
+
if (!ngas || ally.getAbility().isPermanent)
|
|
1720
|
+
pokemon.addVolatile(pokemon.m.innate);
|
|
1721
|
+
}
|
|
1722
|
+
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
|
|
1723
|
+
ally.m.innate = 'ability:' + pokemon.ability;
|
|
1724
|
+
delete ally.volatiles[ally.m.innate];
|
|
1725
|
+
if (!ngas || pokemon.getAbility().isPermanent)
|
|
1726
|
+
ally.addVolatile(ally.m.innate);
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
},
|
|
1730
|
+
onSwitchOut(pokemon) {
|
|
1731
|
+
if (pokemon.m.innate) {
|
|
1732
|
+
pokemon.removeVolatile(pokemon.m.innate);
|
|
1733
|
+
delete pokemon.m.innate;
|
|
1734
|
+
}
|
|
1735
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1736
|
+
if (ally && ally.m.innate) {
|
|
1737
|
+
ally.removeVolatile(ally.m.innate);
|
|
1738
|
+
delete ally.m.innate;
|
|
1739
|
+
}
|
|
1740
|
+
},
|
|
1741
|
+
onFaint(pokemon) {
|
|
1742
|
+
if (pokemon.m.innate) {
|
|
1743
|
+
pokemon.removeVolatile(pokemon.m.innate);
|
|
1744
|
+
delete pokemon.m.innate;
|
|
1745
|
+
}
|
|
1746
|
+
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
|
|
1747
|
+
if (ally && ally.m.innate) {
|
|
1748
|
+
ally.removeVolatile(ally.m.innate);
|
|
1749
|
+
delete ally.m.innate;
|
|
1750
|
+
}
|
|
1751
|
+
},
|
|
1752
|
+
},
|
|
1733
1753
|
{
|
|
1734
1754
|
name: "[Gen 8] Pokebilities",
|
|
1735
1755
|
desc: `Pokémon have all of their released abilities simultaneously.`,
|
|
@@ -2135,10 +2155,11 @@ exports.Formats = [
|
|
|
2135
2155
|
column: 2,
|
|
2136
2156
|
},
|
|
2137
2157
|
{
|
|
2138
|
-
name: "[Gen
|
|
2139
|
-
mod: '
|
|
2140
|
-
team: '
|
|
2141
|
-
ruleset: ['
|
|
2158
|
+
name: "[Gen 7] Pick-Your-Team Random Battle",
|
|
2159
|
+
mod: 'gen7',
|
|
2160
|
+
team: 'random',
|
|
2161
|
+
ruleset: ['[Gen 7] Random Battle', 'Max Team Size = 12', 'Picked Team Size = 6', 'Team Preview'],
|
|
2162
|
+
desc: `Twelve Pokémon sets are randomly chosen, then you pick six for your team!`,
|
|
2142
2163
|
},
|
|
2143
2164
|
// Randomized Metas
|
|
2144
2165
|
///////////////////////////////////////////////////////////////////
|
|
@@ -2193,6 +2214,13 @@ exports.Formats = [
|
|
|
2193
2214
|
}
|
|
2194
2215
|
},
|
|
2195
2216
|
},
|
|
2217
|
+
{
|
|
2218
|
+
name: "[Gen 8] Battle Factory",
|
|
2219
|
+
desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`,
|
|
2220
|
+
mod: 'gen8',
|
|
2221
|
+
team: 'randomFactory',
|
|
2222
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
2223
|
+
},
|
|
2196
2224
|
{
|
|
2197
2225
|
name: "[Gen 8] BSS Factory",
|
|
2198
2226
|
desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`,
|
|
@@ -2460,41 +2488,31 @@ exports.Formats = [
|
|
|
2460
2488
|
column: 3,
|
|
2461
2489
|
},
|
|
2462
2490
|
{
|
|
2463
|
-
name: "[Gen
|
|
2491
|
+
name: "[Gen 5] Ubers",
|
|
2464
2492
|
threads: [
|
|
2465
|
-
`• <a href="https://www.smogon.com/forums/posts/
|
|
2493
|
+
`• <a href="https://www.smogon.com/forums/posts/8286278/">BW2 Ubers</a>`,
|
|
2466
2494
|
],
|
|
2467
|
-
mod: '
|
|
2495
|
+
mod: 'gen5',
|
|
2468
2496
|
// searchShow: false,
|
|
2469
|
-
ruleset: ['Standard'],
|
|
2470
|
-
banlist: ['AG'],
|
|
2497
|
+
ruleset: ['Standard', 'Sleep Clause Mod'],
|
|
2471
2498
|
},
|
|
2472
2499
|
{
|
|
2473
|
-
name: "[Gen
|
|
2500
|
+
name: "[Gen 7] PU",
|
|
2474
2501
|
threads: [
|
|
2475
|
-
`• <a href="https://www.smogon.com/
|
|
2476
|
-
`• <a href="https://www.smogon.com/forums/
|
|
2502
|
+
`• <a href="https://www.smogon.com/forums/threads/3611496/">USM PU Sample Teams</a>`,
|
|
2503
|
+
`• <a href="https://www.smogon.com/forums/threads/3614892/">USM PU Viability Rankings</a>`,
|
|
2477
2504
|
],
|
|
2478
|
-
mod: '
|
|
2505
|
+
mod: 'gen7',
|
|
2479
2506
|
// searchShow: false,
|
|
2480
|
-
ruleset: ['
|
|
2481
|
-
banlist: [
|
|
2482
|
-
'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Yanma',
|
|
2483
|
-
'Berry Juice', 'Deep Sea Tooth', 'Dragon Rage', 'Sonic Boom', 'Swagger',
|
|
2484
|
-
],
|
|
2507
|
+
ruleset: ['[Gen 7] NU'],
|
|
2508
|
+
banlist: ['NU', 'PUBL'],
|
|
2485
2509
|
},
|
|
2486
2510
|
{
|
|
2487
|
-
name: "[Gen
|
|
2488
|
-
threads: [
|
|
2489
|
-
|
|
2490
|
-
],
|
|
2491
|
-
|
|
2492
|
-
// searchShow: false,
|
|
2493
|
-
ruleset: [
|
|
2494
|
-
'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
|
|
2495
|
-
'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Nintendo Cup 1997 Move Legality',
|
|
2496
|
-
],
|
|
2497
|
-
banlist: ['Uber'],
|
|
2511
|
+
name: "[Gen 2] UUBL",
|
|
2512
|
+
threads: [`• <a href="https://www.smogon.com/forums/threads/3662389/">GSC UUBL</a>`],
|
|
2513
|
+
mod: 'gen2',
|
|
2514
|
+
ruleset: ['[Gen 2] OU'],
|
|
2515
|
+
banlist: ['OU'],
|
|
2498
2516
|
},
|
|
2499
2517
|
// Past Gens OU
|
|
2500
2518
|
///////////////////////////////////////////////////////////////////
|
|
@@ -2747,17 +2765,6 @@ exports.Formats = [
|
|
|
2747
2765
|
ruleset: ['[Gen 7] RU'],
|
|
2748
2766
|
banlist: ['RU', 'NUBL', 'Drought'],
|
|
2749
2767
|
},
|
|
2750
|
-
{
|
|
2751
|
-
name: "[Gen 7] PU",
|
|
2752
|
-
threads: [
|
|
2753
|
-
`• <a href="https://www.smogon.com/forums/threads/3611496/">USM PU Sample Teams</a>`,
|
|
2754
|
-
`• <a href="https://www.smogon.com/forums/threads/3614892/">USM PU Viability Rankings</a>`,
|
|
2755
|
-
],
|
|
2756
|
-
mod: 'gen7',
|
|
2757
|
-
searchShow: false,
|
|
2758
|
-
ruleset: ['[Gen 7] NU'],
|
|
2759
|
-
banlist: ['NU', 'PUBL'],
|
|
2760
|
-
},
|
|
2761
2768
|
{
|
|
2762
2769
|
name: "[Gen 7] LC",
|
|
2763
2770
|
threads: [
|
|
@@ -2804,10 +2811,11 @@ exports.Formats = [
|
|
|
2804
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',
|
|
2805
2812
|
],
|
|
2806
2813
|
banlist: [
|
|
2807
|
-
'Arceus', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon',
|
|
2808
|
-
'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', '
|
|
2809
|
-
'
|
|
2810
|
-
'
|
|
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',
|
|
2811
2819
|
],
|
|
2812
2820
|
},
|
|
2813
2821
|
{
|
|
@@ -3257,15 +3265,6 @@ exports.Formats = [
|
|
|
3257
3265
|
section: "B2/W2 Singles",
|
|
3258
3266
|
column: 4,
|
|
3259
3267
|
},
|
|
3260
|
-
{
|
|
3261
|
-
name: "[Gen 5] Ubers",
|
|
3262
|
-
threads: [
|
|
3263
|
-
`• <a href="https://www.smogon.com/forums/posts/8286278/">BW2 Ubers</a>`,
|
|
3264
|
-
],
|
|
3265
|
-
mod: 'gen5',
|
|
3266
|
-
searchShow: false,
|
|
3267
|
-
ruleset: ['Standard', 'Sleep Clause Mod'],
|
|
3268
|
-
},
|
|
3269
3268
|
{
|
|
3270
3269
|
name: "[Gen 5] UU",
|
|
3271
3270
|
threads: [
|
|
@@ -3446,6 +3445,16 @@ exports.Formats = [
|
|
|
3446
3445
|
section: "DPP Singles",
|
|
3447
3446
|
column: 5,
|
|
3448
3447
|
},
|
|
3448
|
+
{
|
|
3449
|
+
name: "[Gen 4] Ubers",
|
|
3450
|
+
threads: [
|
|
3451
|
+
`• <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
|
|
3452
|
+
],
|
|
3453
|
+
mod: 'gen4',
|
|
3454
|
+
searchShow: false,
|
|
3455
|
+
ruleset: ['Standard'],
|
|
3456
|
+
banlist: ['AG'],
|
|
3457
|
+
},
|
|
3449
3458
|
{
|
|
3450
3459
|
name: "[Gen 4] UU",
|
|
3451
3460
|
threads: [
|
|
@@ -3486,6 +3495,20 @@ exports.Formats = [
|
|
|
3486
3495
|
'Sharpedo', 'Shiftry', 'Skuntank', 'Slowking', 'Tauros', 'Typhlosion', 'Venomoth', 'Vileplume',
|
|
3487
3496
|
],
|
|
3488
3497
|
},
|
|
3498
|
+
{
|
|
3499
|
+
name: "[Gen 4] LC",
|
|
3500
|
+
threads: [
|
|
3501
|
+
`• <a href="https://www.smogon.com/dp/articles/little_cup_guide">DPP LC Guide</a>`,
|
|
3502
|
+
`• <a href="https://www.smogon.com/forums/posts/7336500/">DPP LC Viability Rankings</a>`,
|
|
3503
|
+
],
|
|
3504
|
+
mod: 'gen4',
|
|
3505
|
+
searchShow: false,
|
|
3506
|
+
ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
|
|
3507
|
+
banlist: [
|
|
3508
|
+
'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Yanma',
|
|
3509
|
+
'Berry Juice', 'Deep Sea Tooth', 'Dragon Rage', 'Sonic Boom', 'Swagger',
|
|
3510
|
+
],
|
|
3511
|
+
},
|
|
3489
3512
|
{
|
|
3490
3513
|
name: "[Gen 4] Anything Goes",
|
|
3491
3514
|
mod: 'gen4',
|
|
@@ -3628,7 +3651,7 @@ exports.Formats = [
|
|
|
3628
3651
|
'Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Zapdos', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song',
|
|
3629
3652
|
'Self-Destruct', 'Focus Band', 'King\'s Rock', 'Quick Claw',
|
|
3630
3653
|
],
|
|
3631
|
-
unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
|
|
3654
|
+
unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil', 'Soundproof'],
|
|
3632
3655
|
},
|
|
3633
3656
|
{
|
|
3634
3657
|
name: "[Gen 3] Doubles OU",
|
|
@@ -3747,7 +3770,7 @@ exports.Formats = [
|
|
|
3747
3770
|
],
|
|
3748
3771
|
mod: 'gen1',
|
|
3749
3772
|
searchShow: false,
|
|
3750
|
-
ruleset: ['[Gen 1] OU', 'APT Clause'],
|
|
3773
|
+
ruleset: ['[Gen 1] OU', 'APT Clause', 'Sleep Moves Clause'],
|
|
3751
3774
|
banlist: ['OU', 'UUBL'],
|
|
3752
3775
|
},
|
|
3753
3776
|
{
|
|
@@ -3757,7 +3780,7 @@ exports.Formats = [
|
|
|
3757
3780
|
],
|
|
3758
3781
|
mod: 'gen1',
|
|
3759
3782
|
searchShow: false,
|
|
3760
|
-
ruleset: ['[Gen 1] UU', '!APT Clause'],
|
|
3783
|
+
ruleset: ['[Gen 1] UU', '!APT Clause', '!Sleep Moves Clause'],
|
|
3761
3784
|
banlist: ['UU', 'NUBL'],
|
|
3762
3785
|
},
|
|
3763
3786
|
{
|
|
@@ -3781,6 +3804,19 @@ exports.Formats = [
|
|
|
3781
3804
|
ruleset: ['Standard'],
|
|
3782
3805
|
banlist: ['Uber'],
|
|
3783
3806
|
},
|
|
3807
|
+
{
|
|
3808
|
+
name: "[Gen 1] Nintendo Cup 1997",
|
|
3809
|
+
threads: [
|
|
3810
|
+
`• <a href="https://www.smogon.com/forums/threads/3682412/">Nintendo Cup 1997 Discussion & Resources</a>`,
|
|
3811
|
+
],
|
|
3812
|
+
mod: 'gen1jpn',
|
|
3813
|
+
searchShow: false,
|
|
3814
|
+
ruleset: [
|
|
3815
|
+
'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
|
|
3816
|
+
'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Nintendo Cup 1997 Move Legality',
|
|
3817
|
+
],
|
|
3818
|
+
banlist: ['Uber'],
|
|
3819
|
+
},
|
|
3784
3820
|
{
|
|
3785
3821
|
name: "[Gen 1] Stadium OU",
|
|
3786
3822
|
threads: [
|